diff --git a/API_Twitter/tweetInfosFunctions.php b/API_Twitter/tweetInfosFunctions.php index 177343e060ecd073cbc83d3678c2a37cff5dd35e..569f9ff8f48e5d8456af04d1f469daeb0185504a 100644 --- a/API_Twitter/tweetInfosFunctions.php +++ b/API_Twitter/tweetInfosFunctions.php @@ -36,8 +36,19 @@ function getTweetOfUserByScreenName($screenName, $count) { function getNbLikesOfUserByScreenName($screenName, $count) { $response = getTweetsOfUserByScreenName($screenName, $count); + // Les retweets n'ont aucun likes + foreach ($response as $tweet) { + if ($tweet->favorite_count == 0) { + $count++; + } + }; + + $response = getTweetsOfUserByScreenName($screenName, $count); $likes = []; foreach ($response as $tweet) { + if ($tweet->favorite_count == 0) { + continue; + } $likes[] = $tweet->favorite_count; } return $likes; @@ -53,37 +64,37 @@ function getNbRetweetsOfUserByScreenName($screenName, $count) { return $retweets; } -$res = getTweetOfUserByScreenName('BTS_twt', 10); -echo '<pre>'; -print_r($res); -echo '</pre>'; +// $res = getTweetOfUserByScreenName('BTS_twt', 10); +// echo '<pre>'; +// print_r($res); +// echo '</pre>'; -$likeMoyen = 0; -for ($i=0; $i<count($res); $i++){ - $likeMoyen += $res[$i]['favorite_count']; -} +// $likeMoyen = 0; +// for ($i=0; $i<count($res); $i++){ +// $likeMoyen += $res[$i]['favorite_count']; +// } -echo 'Nombre de likes moyen :'. $likeMoyen/count($res); +// echo 'Nombre de likes moyen :'. $likeMoyen/count($res); -$retweetMoyen = 0; -for ($i=0; $i<count($res); $i++){ - $retweetMoyen += $res[$i]['retweet_count']; -} +// $retweetMoyen = 0; +// for ($i=0; $i<count($res); $i++){ +// $retweetMoyen += $res[$i]['retweet_count']; +// } -print "\n".'Nombre de retweet moyen :'. $retweetMoyen/count($res); +// print "\n".'Nombre de retweet moyen :'. $retweetMoyen/count($res); -print "\n".'Nombre de tweets dun user :'. getNbTweetsByScreenName("BTS_twt"); +// print "\n".'Nombre de tweets dun user :'. getNbTweetsByScreenName("BTS_twt"); -$L = getNbLikesOfUserByScreenName('BTS_twt', 10); -echo '<pre>'; -print_r($L); -echo '</pre>'; +// $L = getNbLikesOfUserByScreenName('BTS_twt', 10); +// echo '<pre>'; +// print_r($L); +// echo '</pre>'; -$L = getNbRetweetsOfUserByScreenName('BTS_twt', 10); -echo '<pre>'; -print_r($L); -echo '</pre>'; +// $L = getNbRetweetsOfUserByScreenName('BTS_twt', 10); +// echo '<pre>'; +// print_r($L); +// echo '</pre>'; diff --git a/graphs/fichierJSON.json b/graphs/fichierJSON.json new file mode 100644 index 0000000000000000000000000000000000000000..c13f21ee76b8b244d6db5d06d79f6fb16a3f7a30 --- /dev/null +++ b/graphs/fichierJSON.json @@ -0,0 +1,53 @@ +{ + "chart": { + "caption": "Total footfall in Bakersfield Central", + "subCaption": "Last week", + "xAxisName": "Day", + "yAxisName": "No. of Visitors", + "lineThickness": "2", + "theme": "fusion" + }, + "data": [ + { + "label": "1", + "value": "15123" + }, + { + "label": "Tue", + "value": "14233" + }, + { + "label": "Wed", + "value": "23507" + }, + { + "label": "Thu", + "value": "9110" + }, + { + "label": "Fri", + "value": "15529" + }, + { + "label": "Sat", + "value": "20803" + }, + { + "label": "Sun", + "value": "19202" + } + ], + "trendlines": [ + { + "line": [ + { + "startvalue": "18500", + "color": "#1aaf5d", + "displayvalue": "Average{br}weekly{br}footfall", + "valueOnRight": "1", + "thickness": "2" + } + ] + } + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/css/fusiondesign.css b/graphs/fusioncharts-suite-xt/assets/css/fusiondesign.css new file mode 100755 index 0000000000000000000000000000000000000000..1facf235f6483f212a5e4c524be279163c248642 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/css/fusiondesign.css @@ -0,0 +1,16213 @@ +html { + font-size: 62.5% +} + +@font-face { + font-family: baseCodeRegular; + font-style: normal; + font-weight: 300; + src: url(../fonts/sourcecodepro-regular.ttf) format("truetype"), url(../fonts/sourcecodepro-regular.eot) format("eot"), url(../fonts/sourcecodepro-regular.woff2) format("woff2"), url(../fonts/sourcecodepro-regular.woff) format("woff") +} + +@font-face { + font-family: basefontLight; + font-style: normal; + font-weight: 300; + src: url(../fonts/sourcesanspro-light-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-light-webfont.eot) format("eot"), url(../fonts/sourcesanspro-light-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-light-webfont.woff) format("woff") +} + +@font-face { + font-family: basefontLightItalic; + font-style: normal; + font-weight: 300; + src: url(../fonts/sourcesanspro-lightit-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-lightit-webfont.eot) format("eot"), url(../fonts/sourcesanspro-lightit-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-lightit-webfont.woff) format("woff") +} + +@font-face { + font-family: basefontRegular; + font-style: normal; + font-weight: 400; + src: url(../fonts/sourcesanspro-regular-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-regular-webfont.eot) format("eot") +} + +@font-face { + font-family: basefontSemiBold; + font-style: normal; + font-weight: 600; + src: url(../fonts/sourcesanspro-semibold-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-semibold-webfont.eot) format("eot"), url(../fonts/sourcesanspro-semibold-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-semibold-webfont.woff) format("woff") +} + +@font-face { + font-family: basefontSemiBoldItalic; + font-style: normal; + font-weight: 700; + src: url(../fonts/sourcesanspro-semiboldit-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-semiboldit-webfont.eot) format("eot"), url(../fonts/sourcesanspro-semiboldit-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-semiboldit-webfont.woff) format("woff") +} + +@font-face { + font-family: basefontBold; + font-style: normal; + font-weight: 700; + src: url(../fonts/sourcesanspro-bold-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-bold-webfont.eot) format("eot"), url(../fonts/sourcesanspro-bold-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-bold-webfont.woff) format("woff") +} + +@font-face { + font-family: basefontBoldItalic; + font-style: normal; + font-weight: 700; + src: url(../fonts/sourcesanspro-boldit-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-boldit-webfont.eot) format("eot"), url(../fonts/sourcesanspro-boldit-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-boldit-webfont.woff) format("woff") +} + +@font-face { + font-family: basefontItalic; + font-style: normal; + font-weight: 700; + src: url(../fonts/sourcesanspro-it-webfont.ttf) format("truetype"), url(../fonts/sourcesanspro-it-webfont.eot) format("eot"), url(../fonts/sourcesanspro-it-webfont.woff2) format("woff2"), url(../fonts/sourcesanspro-it-webfont.woff) format("woff") +} + +.grad-1 { + background: #6753ec; + background: linear-gradient(127.11deg, #6753ec, #3d28be) +} + +.grad-2 { + background: #02d5cc; + background: linear-gradient(132.8deg, #02d5cc, #0cbbb4 45.93%, #257976) +} + +.grad-3 { + background: #eff274; + background: linear-gradient(131.12deg, #eff274, #f8b648) +} + +.grad-4 { + background: #5d4edc; + background: linear-gradient(90deg, #5d4edc, #00cfc6) +} + +.grad-5 { + background: #b3e6ff; + background: linear-gradient(132.49deg, #b3e6ff, #b0defc 19%, #a9caf5 48%, #9ca8e8 82%, #9594e1) +} + +.grad-6 { + background: #261f5c; + background: linear-gradient(140.02deg, #261f5c, #1fa377) +} + +.grad-7 { + background: #0af; + background: linear-gradient(311.91deg, #0af, #c750cf) +} + +.grad-8 { + background: #2cc7c0; + background: linear-gradient(90deg, #2cc7c0, #59d99d) +} + +.grad-9 { + background: #1c194f; + background: linear-gradient(135deg, #1c194f, #301759 25.28%, #09428d 80.37%, #0d9583) +} + +.grad-10 { + background: #31194f; + background: linear-gradient(135deg, #31194f, #3b1d6e 27.67%, #09578d 81.24%, #09578d 81.25%, #202d7e) +} + +.grad-11 { + background: #520a44; + background: linear-gradient(135deg, #520a44, #150d53 39.26%, #2d1d7b 78.39%, #5b4b7c) +} + +.grad-12 { + background: hsla(0, 0%, 100%, .5); + background: linear-gradient(180deg, hsla(0, 0%, 100%, .5), #f2f2f2) +} + +.grad-13 { + background: hsla(0, 0%, 100%, .5); + background: linear-gradient(180deg, hsla(0, 0%, 100%, .5), #f8fafc) +} + +.grad-14 { + background: #22166a; + background: linear-gradient(149.74deg, #22166a, #7e44b6 73.12%, #d18989) +} + +.grad-15 { + background: #300158; + background: linear-gradient(135deg, #300158, #241568 28.82%, #12509e 55.23%, #68d1bc) +} + +.grad-16 { + background: #22166a; + background: linear-gradient(141.38deg, #22166a, #914086 58.94%, #ecd4a0) +} + +.grad-17 { + background: #26155e; + background: linear-gradient(131.97deg, #26155e, #823da5) +} + +.banner-bg-1 { + background: #300158; + background: linear-gradient(155.26deg, #300158, #241568 28.82%, #12509e 60.55%, #34b1c7 82.92%, #9de0d5) +} + +.banner-bg-2 { + background: #22166a; + background: linear-gradient(141.38deg, #22166a, #914086 58.94%, #ecd4a0) +} + +.banner-bg-3 { + background: #300158; + background: linear-gradient(135deg, #300158, #241568 28.82%, #12509e 55.23%, #68d1bc) +} + +.banner-bg-4 { + background: #22166a; + background: linear-gradient(149.74deg, #22166a, #7e44b6 73.12%, #d18989) +} + +.banner-bg-5 { + background: #111e72; + background: linear-gradient(135.33deg, #111e72, #531980) +} + +.stripe-plb { + background: #2d0065; + background: linear-gradient(135deg, #2d0065, #371471 27.85%, #093f8d 69.94%, #2f41ad) +} + +.stripe-bp { + background: #5d0336; + background: linear-gradient(135deg, #5d0336, #080046 39.26%, #1f0e72 78.39%, #403558) +} + +.card-teal-grad .fc_select, +.card-teal-grad>.card-header, +.card-teal .fc_select, +.teal-grad { + background: #2a51a3; + background: linear-gradient(135deg, #2a51a3, #36c1d1) +} + +.card-purple-grad .fc_select, +.card-purple-grad>.card-header, +.card-purple .fc_select, +.purple-grad { + background: #7466db; + background: linear-gradient(134.72deg, #7466db, #d0a9e2) +} + +.card-navyblue-grad .fc_select, +.card-navyblue-grad>.card-header, +.card-navyblue .fc_select, +.navyblue-grad { + background: #70cee6; + background: linear-gradient(315deg, #70cee6, #12298e) +} + +.white { + background-color: #fff +} + +.black { + background-color: #313131 +} + +.base-primary { + background-color: #212344 +} + +.base-accent { + background-color: #16d3c0 +} + +.blue { + background-color: #43ccfe +} + +.purple { + background-color: #6957da +} + +.orchid { + background-color: #dd5ec7 +} + +.yellow { + background-color: #fab73a +} + +.green { + background-color: #48b884 +} + +.red { + background-color: #f64f4b +} + +.bg-light-purple { + background-color: #f8f9fd +} + +@font-face { + font-family: fusion-icon; + src: url(../fonts/fusion-icon.eot); + src: url(../fonts/fusion-icon.eot#iefix) format("embedded-opentype"), url(../fonts/fusion-icon.ttf) format("truetype"), url(../fonts/fusion-icon.woff) format("woff"), url(../images/fusion-icon.svg#fusion-icon) format("svg"); + font-weight: 400; + font-style: normal +} + +i { + font-family: fusion-icon !important; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.fc_fusioncharts:before { + content: "\E947" +} + +.fc_facebook:before { + content: "\E94C" +} + +.fc_twitter:before { + content: "\E94D" +} + +.fc_Angular:before { + content: "\E94E" +} + +.fc_angular4:before { + content: "\E94F" +} + +.fc_backbone:before { + content: "\E950" +} + +.fc_django:before { + content: "\E951" +} + +.fc_ember:before { + content: "\E952" +} + +.fc_java:before { + content: "\E953" +} + +.fc_jQuery:before { + content: "\E954" +} + +.fc_JS:before { + content: "\E955" +} + +.fc_net:before { + content: "\E956" +} + +.fc_php:before { + content: "\E957" +} + +.fc_python:before { + content: "\E958" +} + +.fc_React:before { + content: "\E959" +} + +.fc_ruby_on_rails:before { + content: "\E95A" +} + +.fc_vue:before { + content: "\E95B" +} + +.fc_responsive:before { + content: "\E946" +} + +.fc_combination_chart:before { + content: "\E943" +} + +.fc_easay:before { + content: "\E944" +} + +.fc_export:before { + content: "\E945" +} + +.fc_indicator_right:before { + content: "\E941" +} + +.fc_lock:before { + content: "\E942" +} + +.fc_bower:before { + content: "\E936" +} + +.fc_cost_monitor:before { + content: "\E937" +} + +.fc_cross_covered:before { + content: "\E938" +} + +.fc_distribution:before { + content: "\E939" +} + +.fc_js:before { + content: "\E93A" +} + +.fc_npm_n:before { + content: "\E93B" +} + +.fc_npm:before { + content: "\E93C" +} + +.fc_planning:before { + content: "\E93D" +} + +.fc_test_result:before { + content: "\E93E" +} + +.fc_area_charts:before { + content: "\E900" +} + +.fc_bar_charts:before { + content: "\E901" +} + +.fc_chart_gallery:before { + content: "\E902" +} + +.fc_checkmark:before { + content: "\E903" +} + +.fc_close:before { + content: "\E904" +} + +.fc_code:before { + content: "\E905" +} + +.fc_column_chart:before { + content: "\E906" +} + +.fc_console:before { + content: "\E907" +} + +.fc_dashboard:before { + content: "\E908" +} + +.fc_download:before { + content: "\E909" +} + +.fc_dropdown:before { + content: "\E90A" +} + +.fc_Edit:before { + content: "\E90B" +} + +.fc_expand:before { + content: "\E90C" +} + +.fc_eye:before { + content: "\E90D" +} + +.fc_features_gallery:before { + content: "\E90E" +} + +.fc_fire:before { + content: "\E90F" +} + +.fc_flask:before { + content: "\E910" +} + +.fc_frontend:before { + content: "\E911" +} + +.fc_fullscreen:before { + content: "\E912" +} + +.fc_gauges:before { + content: "\E913" +} + +.fc_github:before { + content: "\E914" +} + +.fc_globe_with_location:before { + content: "\E915" +} + +.fc_integrate:before { + content: "\E916" +} + +.fc_keymetrics_in_apps:before { + content: "\E917" +} + +.fc_kpi:before { + content: "\E918" +} + +.fc_line_chart:before { + content: "\E919" +} + +.fc_link_to_new_page:before { + content: "\E91A" +} + +.fc_location:before { + content: "\E91B" +} + +.fc_luncher:before { + content: "\E91C" +} + +.fc_menu:before { + content: "\E91D" +} + +.fc_monitor_climate:before { + content: "\E91E" +} + +.fc_monitor_process:before { + content: "\E91F" +} + +.fc_next:before { + content: "\E920" +} + +.fc_performance_charts:before { + content: "\E92D" +} + +.fc_pie_chart:before { + content: "\E92E" +} + +.fc_reports:before { + content: "\E92F" +} + +.fc_select:before { + content: "\E930" +} + +.fc_share:before { + content: "\E931" +} + +.fc_themes:before { + content: "\E932" +} + +.fc_timer:before { + content: "\E933" +} + +.fc_value_pointer:before { + content: "\E934" +} + +.fc_visual_customisation:before { + content: "\E935" +} + +.fc_autorenew:before { + content: "\E863" +} + +.fc_timeline:before { + content: "\E92C" +} + +.fc_demo:before { + content: "\E922" +} + +.fc_api:before { + content: "A" +} + +.fc_edit:before { + content: "\E923" +} + +.fc_bar:before { + content: "\E924" +} + +.fc_angular:before { + content: "\E925" +} + +.fc_error:before { + content: "\E000" +} + +.fc_add:before { + content: "\E145" +} + +.fc_copy:before { + content: "\E14D" +} + +.fc_link:before { + content: "\E157" +} + +.fc_envelop:before { + content: "\E159" +} + +.fc_widgets:before { + content: "\E1BD" +} + +.fc_headset_mic:before { + content: "\E311" +} + +.fc_keyboard_arrow_down:before { + content: "\E313" +} + +.fc_keyboard_arrow_left:before { + content: "\E314" +} + +.fc_keyboard_arrow_right:before { + content: "\E315" +} + +.fc_keyboard_arrow_up:before { + content: "\E316" +} + +.fc_arrow_back_long:before { + content: "\E317" +} + +.fc_device_hub:before { + content: "\E335" +} + +.fc_flip:before { + content: "\E3E8" +} + +.fc_bookmark:before { + content: "\E431" +} + +.fc_arrow_back:before { + content: "\E5C4" +} + +.fc_arrow_forward:before { + content: "\E5C8" +} + +.fc_close_light:before { + content: "\E5CD" +} + +.fc_done:before { + content: "\E876" +} + +.fc_help:before { + content: "\E887" +} + +.fc_home:before { + content: "\E88A" +} + +.fc_thumb_down:before { + content: "\E8DB" +} + +.fc_thumb_up:before { + content: "\E8DC" +} + +.fc_color:before { + content: "\E926" +} + +.fc_jquery:before { + content: "\E927" +} + +.fc_open_book:before { + content: "\E928" +} + +.fc_react:before { + content: "\E929" +} + +.fc_search:before { + content: "\E92A" +} + +.fc_spaceship:before { + content: "\E92B" +} + +.fc_bullhorn:before { + content: "\E93F" +} + +.fc_stack:before { + content: "\E940" +} + +.fc_cog:before { + content: "\E994" +} + +.fc_bug:before { + content: "\E999" +} + +.fc_gift:before { + content: "\E99F" +} + +.fc_happy:before { + content: "\E9DF" +} + +.fc_smile:before { + content: "\E9E1" +} + +.fc_sad:before { + content: "\E9E5" +} + +.fc_blocked:before { + content: "\EA0E" +} + +.icon-account-manager, +.icon-account-manager\:regular, +.icon-chart-suite, +.icon-chart-suite\:regular, +.icon-chart-support, +.icon-chart-support\:regular, +.icon-core-team, +.icon-core-team\:regular, +.icon-premium-support, +.icon-premium-support\:regular, +.icon-unlimited-support, +.icon-unlimited-support\:regular { + background-repeat: no-repeat +} + +.icon-account-manager, +.icon-account-manager\:regular { + background-image: url(../images/features-icons.png) +} + +.icon-chart-suite, +.icon-chart-suite\:regular { + background-image: url(../images/features-icons.png) +} + +.icon-chart-support, +.icon-chart-support\:regular { + background-image: url(../images/features-icons.png) +} + +.icon-core-team, +.icon-core-team\:regular { + background-image: url(../images/features-icons.png) +} + +.icon-premium-support, +.icon-premium-support\:regular { + background-image: url(../images/features-icons.png) +} + +.icon-unlimited-support, +.icon-unlimited-support\:regular { + background-image: url(../images/features-icons.png) +} + +.icon-account-manager, +.icon-account-manager\:regular { + background-image: url(../images/features-icons.svg); + background-position: 0 0 +} + +.icon-account-manager-dims { + width: 56px; + height: 52px +} + +.icon-chart-suite, +.icon-chart-suite\:regular { + background-image: url(../images/features-icons.svg); + background-position: 0 -52px +} + +.icon-chart-suite-dims { + width: 56px; + height: 52px +} + +.icon-chart-support, +.icon-chart-support\:regular { + background-image: url(../images/features-icons.svg); + background-position: 0 -104px +} + +.icon-chart-support-dims { + width: 56px; + height: 52px +} + +.icon-core-team, +.icon-core-team\:regular { + background-image: url(../images/features-icons.svg); + background-position: 0 -156px +} + +.icon-core-team-dims { + width: 56px; + height: 52px +} + +.icon-premium-support, +.icon-premium-support\:regular { + background-image: url(../images/features-icons.svg); + background-position: 0 -208px +} + +.icon-premium-support-dims { + width: 56px; + height: 52px +} + +.icon-unlimited-support, +.icon-unlimited-support\:regular { + background-image: url(../images/features-icons.svg); + background-position: 0 -260px +} + +.icon-unlimited-support-dims { + width: 56px; + height: 52px +} + +.fc-application-websites, +.fc-application-websites\:regular { + background-image: url(../images/appicons.png) +} + +.fc-bower, +.fc-bower\:regular { + background-image: url(../images/appicons.png) +} + +.fc-git, +.fc-git\:regular { + background-image: url(../images/appicons.png) +} + +.fc-npm, +.fc-npm\:regular { + background-image: url(../images/appicons.png) +} + +.fc-oem-websites, +.fc-oem-websites\:regular { + background-image: url(../images/appicons.png) +} + +.fc-saas-websites, +.fc-saas-websites\:regular { + background-image: url(../images/appicons.png) +} + +.fc-application-websites, +.fc-application-websites\:regular, +.fc-bower, +.fc-bower\:regular, +.fc-git, +.fc-git\:regular, +.fc-npm, +.fc-npm\:regular, +.fc-oem-websites, +.fc-oem-websites\:regular, +.fc-saas-websites, +.fc-saas-websites\:regular { + background-repeat: no-repeat +} + +.fc-application-websites, +.fc-application-websites\:regular { + background-image: url(../images/appicons.svg); + background-position: 0 0 +} + +.fc-application-websites-dims { + width: 60px; + height: 55px +} + +.fc-bower, +.fc-bower\:regular { + background-image: url(../images/appicons.svg); + background-position: 0 -55px +} + +.fc-bower-dims { + width: 60px; + height: 60px +} + +.fc-git, +.fc-git\:regular { + background-image: url(../images/appicons.svg); + background-position: 0 -115px +} + +.fc-git-dims { + width: 60px; + height: 60px +} + +.fc-npm, +.fc-npm\:regular { + background-image: url(../images/appicons.svg); + background-position: 0 -175px +} + +.fc-npm-dims { + width: 60px; + height: 60px +} + +.fc-oem-websites, +.fc-oem-websites\:regular { + background-image: url(../images/appicons.svg); + background-position: 0 -235px +} + +.fc-oem-websites-dims { + width: 60px; + height: 55px +} + +.fc-saas-websites, +.fc-saas-websites\:regular { + background-image: url(../images/appicons.svg); + background-position: 0 -290px +} + +.fc-saas-websites-dims { + width: 60px; + height: 55px +} + +:root { + --blue: #43ccfe; + --purple: #6957da; + --orchid: #dd5ec7; + --red: #f64f4b; + --yellow: #fab73a; + --green: #48b884; + --white: #fff; + --gray: #5a5b75; + --gray-dark: #22263b; + --primary: #59d99d; + --secondary: #6957da; + --success: #48b884; + --info: #43ccfe; + --warning: #fab73a; + --danger: #f64f4b; + --light: #f8f9fa; + --dark: #22263b; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 800px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --breakpoint-xxl: 1440px; + --breakpoint-exl: 1600px; + --font-family-sans-serif: "basefontRegular", "Helvetica Neue", Arial, sans-serif; + --font-family-monospace: "baseCodeRegular", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace +} + +*, +:after, +:before { + box-sizing: border-box +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent +} + +@-ms-viewport { + width: device-width +} + +article, +aside, +dialog, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block +} + +body { + margin: 0; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + font-size: 1.6rem; + font-weight: 400; + line-height: 1.5; + color: #434456; + text-align: left; + background-color: #fff +} + +body, +html { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + min-height: 100%; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +[tabindex="-1"]:focus { + outline: 0 !important +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: .5rem +} + +p { + margin-top: 0; + margin-bottom: 1rem +} + +@media (min-width:800px) { + p { + font-size: calc(14px + ((1.2 * (100vw - 800px)) / 799)); + line-height: calc(28px + ((1.4 * (100vw - 800px)) / 799)) + } +} + +@media (max-width:991.98px) { + p { + font-size: calc(14px + ((0 * (100vw - 800px)) / 799)); + line-height: calc(28px + ((0 * (100vw - 800px)) / 799)) + } +} + +abbr[data-original-title], +abbr[title] { + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0 +} + +address { + font-style: normal; + line-height: inherit +} + +address, +dl, +ol, +ul { + margin-bottom: 1rem +} + +dl, +ol, +ul { + margin-top: 0 +} + +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0 +} + +dt { + font-weight: 600 +} + +dd { + margin-bottom: .5rem; + margin-left: 0 +} + +blockquote { + margin: 0 0 1rem +} + +dfn { + font-style: italic +} + +b, +strong { + font-weight: bolder +} + +small { + font-size: 80% +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline +} + +sub { + bottom: -.25em +} + +sup { + top: -.5em +} + +a { + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects +} + +a, +a:hover { + color: #6957da +} + +a:hover { + text-decoration: underline +} + +a:not([href]):not([tabindex]), +a:not([href]):not([tabindex]):focus, +a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none +} + +a:not([href]):not([tabindex]):focus { + outline: 0 +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar +} + +figure { + margin: 0 0 1rem +} + +img { + vertical-align: middle; + border-style: none +} + +svg:not(:root) { + overflow: hidden +} + +table { + border-collapse: collapse +} + +caption { + padding-top: .75rem; + padding-bottom: .75rem; + color: #9f9fb9; + text-align: left; + caption-side: bottom +} + +th { + text-align: inherit +} + +label { + display: inline-block; + margin-bottom: .5rem +} + +button { + border-radius: 0 +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color +} + +button, +input, +optgroup, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit +} + +button, +input { + overflow: visible +} + +button, +select { + text-transform: none +} + +[type=reset], +[type=submit], +button, +html [type=button] { + -webkit-appearance: button +} + +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + padding: 0; + border-style: none +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=date], +input[type=datetime-local], +input[type=month], +input[type=time] { + -webkit-appearance: listbox +} + +textarea { + overflow: auto; + resize: vertical +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0 +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal +} + +progress { + vertical-align: baseline +} + +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: none +} + +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button +} + +output { + display: inline-block +} + +summary { + display: list-item; + cursor: pointer +} + +template { + display: none +} + +[hidden] { + display: none !important +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + margin-bottom: .5rem; + font-family: inherit; + line-height: 1.25; + color: #212344 +} + +.bold, +.h5, +.h6 { + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif +} + +.h1, +h1 { + font-size: 30px; + font-size: 3rem; + font-weight: 400 +} + +@media (min-width:800px) { + .h1, + h1 { + font-size: calc(35px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(44px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (min-width:1200px) { + .h1, + h1 { + font-size: calc(38px + ((5 * (100vw - 1600px)) / 1200)); + line-height: calc(50px + ((10 * (100vw - 1600px)) / 1200)) + } +} + +@media (min-width:1600px) { + .h1, + h1 { + font-size: calc(48px + ((5 * (100vw - 1900px)) / 1600)); + line-height: calc(56px + ((10 * (100vw - 1900px)) / 1600)) + } +} + +.h2, +h2 { + font-size: 26px; + font-size: 2.6rem; + font-weight: 400 +} + +@media (min-width:800px) { + .h2, + h2 { + font-size: calc(27px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(42px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (min-width:1200px) { + .h2, + h2 { + font-size: calc(30px + ((5 * (100vw - 1600px)) / 1200)); + line-height: calc(42px + ((10 * (100vw - 1600px)) / 1200)) + } +} + +@media (min-width:1600px) { + .h2, + h2 { + font-size: calc(33px + ((5 * (100vw - 1600px)) / 1599)); + line-height: calc(42px + ((10 * (100vw - 1600px)) / 1599)) + } +} + +@media (max-width:1599.98px) { + .h2+p, + h2+p { + font-size: calc(16px + ((1 * (100vw - 1600px)) / 1599)); + line-height: calc(24px + ((1 * (100vw - 1600px)) / 1599)) + } +} + +@media (min-width:1440px) { + .h2+p, + h2+p { + font-size: calc(18px + ((1 * (100vw - 1600px)) / 1599)); + line-height: calc(26px + ((1 * (100vw - 1600px)) / 1599)) + } +} + +.h3, +h3 { + font-size: 18px; + font-size: 1.8rem; + font-weight: 400 +} + +@media (min-width:800px) { + .h3, + h3 { + font-size: calc(22px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(31px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (max-width:991.98px) { + .h3, + h3 { + font-size: calc(21px + ((0* (100vw - 800px)) / 799)); + line-height: calc(30px + ((0 * (100vw - 800px)) / 799)) + } +} + +.h4, +h4 { + font-size: 16px; + font-size: 1.6rem; + font-weight: 400 +} + +@media (min-width:800px) { + .h4, + h4 { + font-size: calc(19px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(24px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (max-width:991.98px) { + .h4, + h4 { + font-size: calc(18px + ((0 * (100vw - 800px)) / 799)); + line-height: calc(23px + ((0 * (100vw - 800px)) / 799)) + } +} + +.h5, +h5 { + font-size: 14px; + font-size: 1.4rem; + font-weight: 400 +} + +@media (min-width:800px) { + .h5, + h5 { + font-size: calc(14px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(16px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (max-width:1199.98px) { + .h5, + h5 { + font-size: calc(16px + ((0 * (100vw - 800px)) / 799)) !important; + line-height: calc(20px + ((0 * (100vw - 800px)) / 799)) + } +} + +.h6, +h6 { + font-size: 12px; + font-size: 1.2rem; + font-weight: 600 +} + +@media (min-width:800px) { + .h6, + h6 { + font-size: calc(12px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(14px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (max-width:1199.98px) { + .h6, + h6 { + font-size: calc(14px + ((0 * (100vw - 800px)) / 799)) !important; + line-height: calc(18px + ((0 * (100vw - 800px)) / 799)) + } +} + +.lead { + font-size: 1.6rem; + font-weight: 300 +} + +@media (min-width:800px) { + .lead { + font-size: calc(16px + ((1.2 * (100vw - 800px)) / 799)); + line-height: calc(28px + ((1.4 * (100vw - 800px)) / 799)) + } +} + +@media (max-width:991.98px) { + .lead { + font-size: calc(16px + ((0 * (100vw - 800px)) / 799)); + line-height: calc(28px + ((0 * (100vw - 800px)) / 799)) + } +} + +.display-1 { + font-size: 22px; + font-size: 2.2rem; + font-weight: 400; + line-height: 1.25 +} + +@media (min-width:800px) { + .display-1 { + font-size: calc(32px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(40px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (min-width:1200px) { + .display-1 { + font-size: calc(36px + ((5 * (100vw - 1200px)) / 1170)); + line-height: calc(48px + ((10 * (100vw - 1200px)) / 1170)) + } +} + +@media (min-width:1600px) { + .display-1 { + font-size: calc(42px + ((5 * (100vw - 1600px)) / 1400)); + line-height: calc(54px + ((10 * (100vw - 1600px)) / 1400)) + } +} + +.display-1.semibold { + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif +} + +.display-2 { + font-size: 28px; + font-size: 2.8rem; + font-weight: 400; + line-height: 1.25 +} + +@media (min-width:800px) { + .display-2 { + font-size: calc(36px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(44px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (min-width:1200px) { + .display-2 { + font-size: calc(42px + ((5 * (100vw - 1200px)) / 1170)); + line-height: calc(55px + ((10 * (100vw - 1200px)) / 1170)) + } +} + +@media (min-width:1600px) { + .display-2 { + font-size: calc(48px + ((5 * (100vw - 1600px)) / 1400)); + line-height: calc(60px + ((10 * (100vw - 1600px)) / 1400)) + } +} + +.display-3 { + font-size: 34px; + font-size: 3.4rem; + font-weight: 400; + line-height: 1.25 +} + +@media (min-width:800px) { + .display-3 { + font-size: calc(40px + ((5 * (100vw - 800px)) / 799)); + line-height: calc(55px + ((10 * (100vw - 800px)) / 799)) + } +} + +@media (min-width:1200px) { + .display-3 { + font-size: calc(46px + ((5 * (100vw - 1200px)) / 992)); + line-height: calc(60px + ((10 * (100vw - 1200px)) / 992)) + } +} + +@media (min-width:1600px) { + .display-3 { + font-size: calc(52px + ((5 * (100vw - 1600px)) / 1400)); + line-height: calc(66px + ((10 * (100vw - 1600px)) / 1400)) + } +} + +.caption, +caption { + font-size: 14px; + font-size: 1.4rem; + font-weight: 400; + line-height: 1.5 +} + +.legend, +legend { + font-size: 12px; + font-size: 1.2rem; + font-weight: 400; + line-height: 1.5 +} + +.short-description { + font-size: 15px; + font-size: 1.5rem +} + +@media (min-width:992px) { + .short-description { + font-size: 16px; + font-size: 1.6rem + } +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(49, 49, 49, .05) +} + +.small, +small { + font-size: 80%; + font-weight: 400 +} + +.ext-small { + font-size: 70%; + font-weight: 400 +} + +.mark, +mark { + padding: .2em; + background-color: #fcf8e3 +} + +.list-inline, +.list-unstyled { + padding-left: 0; + list-style: none +} + +.list-inline-item { + display: inline-block +} + +.list-inline-item:not(:last-child) { + margin-right: .5rem +} + +.checked-list { + list-style: none; + padding: 0; + margin: 0 +} + +.checked-list li { + margin-top: 2rem; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + font-size: 16px; + font-size: 1.6rem; + padding-left: 38px +} + +.checked-list li:first-child { + margin-top: 0 +} + +.checked-list li i { + display: block; + float: left; + width: 24px; + height: 24px; + margin-left: -38px; + font-size: 24px; + font-size: 2.4rem; + color: #bcbccf +} + +.checked-list.checked-list-sm li { + font-size: 14px; + font-size: 1.4rem; + line-height: 1.7; + padding-left: 25px +} + +.checked-list.checked-list-sm li i { + font-size: 20px; + font-size: 2rem; + margin-left: -25px +} + +.checked-list.checked-list-lg li { + font-size: 20px; + font-size: 2rem +} + +.dotted-list { + list-style: none; + padding: 0; + margin: 0 +} + +.dotted-list li { + margin-top: 2rem; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + font-size: 16px; + font-size: 1.6rem; + padding-left: 38px +} + +.dotted-list li:first-child { + margin-top: 0 +} + +.dotted-list li:before { + content: ""; + width: 1rem; + height: 1rem; + display: block; + float: left; + border-radius: 50%; + background-color: #73748c; + margin-left: -20px; + margin-top: 6px +} + +.dotted-list.dotted-list-lg, +.dotted-list.dotted-list-sm { + font-size: 14px; + font-size: 1.4rem; + line-height: 1.7; + padding-left: 25px +} + +.feature-list { + padding-left: 50px +} + +.feature-list li { + margin-bottom: 2rem; + color: #73748c +} + +.feature-list li .icon-img { + width: 50px; + height: 50px; + display: block; + float: left; + margin-left: -60px; + margin-top: -10px; + transform: scale(1.1) +} + +.feature-list li:after { + content: ""; + display: table; + clear: both +} + +.initialism { + font-size: 90%; + text-transform: uppercase +} + +.blockquote { + margin-bottom: 1rem; + font-size: 2rem +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #5a5b75 +} + +.blockquote-footer:before { + content: "\2014 \A0" +} + +.kbd, +kbd { + opacity: .8; + background-color: #063732 +} + +.kbd, +kbd, +pre { + height: auto; + width: auto; + border-radius: 2px +} + +pre { + font-size: 16px; + font-size: 1.6rem; + background-color: #f8f8f8; + color: #4a4a4a; + padding: 20px +} + +.curly-braces-text:after, +.curly-braces-text:before { + display: inline-block; + width: 10px; + height: auto; + vertical-align: middle +} + +.curly-braces-text:before { + content:"{" +} + +.curly-braces-text:after { + content: "}" +} + +.img-fluid, +.img-thumbnail { + max-width: 100%; + height: auto +} + +.img-thumbnail { + padding: .25rem; + background-color: #fff; + border: 1px solid #8786a4; + border-radius: .5rem; + box-shadow: 0 1px 2px rgba(49, 49, 49, .075) +} + +.figure { + display: inline-block +} + +.figure-img { + margin-bottom: .5rem; + line-height: 1 +} + +.figure-caption { + font-size: 90%; + color: #5a5b75 +} + +code { + font-size: 87.5%; + color: #dd5ec7; + word-break: break-word +} + +a>code { + color: inherit +} + +kbd { + padding: .2rem .8rem; + font-size: 87.5%; + color: #fff; + background-color: #063732; + border-radius: .2rem; + box-shadow: inset 0 -.1rem 0 rgba(49, 49, 49, .25) +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 600; + box-shadow: none +} + +pre { + display: block; + font-size: 87.5%; + color: #191c2b +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +@media (min-width:576px) { + .container { + max-width: 540px + } +} + +@media (min-width:800px) { + .container { + max-width: 752px + } +} + +@media (min-width:992px) { + .container { + max-width: 960px + } +} + +@media (min-width:1200px) { + .container { + max-width: 1140px + } +} + +@media (min-width:1440px) { + .container { + max-width: 1400px + } +} + +@media (min-width:1600px) { + .container { + max-width: 1560px + } +} + +.container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +.row { + display: flex; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px +} + +.no-gutters { + margin-right: 0; + margin-left: 0 +} + +.no-gutters>.col, +.no-gutters>[class*=col-] { + padding-right: 0; + padding-left: 0 +} + +.col, +.col-1, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-10, +.col-11, +.col-12, +.col-auto, +.col-exl, +.col-exl-1, +.col-exl-2, +.col-exl-3, +.col-exl-4, +.col-exl-5, +.col-exl-6, +.col-exl-7, +.col-exl-8, +.col-exl-9, +.col-exl-10, +.col-exl-11, +.col-exl-12, +.col-exl-auto, +.col-lg, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-auto, +.col-md, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-auto, +.col-sm, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-auto, +.col-xl, +.col-xl-1, +.col-xl-2, +.col-xl-3, +.col-xl-4, +.col-xl-5, +.col-xl-6, +.col-xl-7, +.col-xl-8, +.col-xl-9, +.col-xl-10, +.col-xl-11, +.col-xl-12, +.col-xl-auto, +.col-xxl, +.col-xxl-1, +.col-xxl-2, +.col-xxl-3, +.col-xxl-4, +.col-xxl-5, +.col-xxl-6, +.col-xxl-7, +.col-xxl-8, +.col-xxl-9, +.col-xxl-10, +.col-xxl-11, +.col-xxl-12, +.col-xxl-auto { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px +} + +.col { + flex-basis: 0; + flex-grow: 1; + max-width: 100% +} + +.col-auto { + flex: 0 0 auto; + width: auto; + max-width: none +} + +.col-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% +} + +.col-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% +} + +.col-3 { + flex: 0 0 25%; + max-width: 25% +} + +.col-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% +} + +.col-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% +} + +.col-6 { + flex: 0 0 50%; + max-width: 50% +} + +.col-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% +} + +.col-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% +} + +.col-9 { + flex: 0 0 75%; + max-width: 75% +} + +.col-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% +} + +.col-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% +} + +.col-12 { + flex: 0 0 100%; + max-width: 100% +} + +.order-first { + order: -1 +} + +.order-last { + order: 13 +} + +.order-0 { + order: 0 +} + +.order-1 { + order: 1 +} + +.order-2 { + order: 2 +} + +.order-3 { + order: 3 +} + +.order-4 { + order: 4 +} + +.order-5 { + order: 5 +} + +.order-6 { + order: 6 +} + +.order-7 { + order: 7 +} + +.order-8 { + order: 8 +} + +.order-9 { + order: 9 +} + +.order-10 { + order: 10 +} + +.order-11 { + order: 11 +} + +.order-12 { + order: 12 +} + +.offset-1 { + margin-left: 8.33333% +} + +.offset-2 { + margin-left: 16.66667% +} + +.offset-3 { + margin-left: 25% +} + +.offset-4 { + margin-left: 33.33333% +} + +.offset-5 { + margin-left: 41.66667% +} + +.offset-6 { + margin-left: 50% +} + +.offset-7 { + margin-left: 58.33333% +} + +.offset-8 { + margin-left: 66.66667% +} + +.offset-9 { + margin-left: 75% +} + +.offset-10 { + margin-left: 83.33333% +} + +.offset-11 { + margin-left: 91.66667% +} + +@media (min-width:576px) { + .col-sm { + flex-basis: 0; + flex-grow: 1; + max-width: 100% + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-sm-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% + } + .col-sm-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% + } + .col-sm-3 { + flex: 0 0 25%; + max-width: 25% + } + .col-sm-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% + } + .col-sm-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% + } + .col-sm-6 { + flex: 0 0 50%; + max-width: 50% + } + .col-sm-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% + } + .col-sm-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% + } + .col-sm-9 { + flex: 0 0 75%; + max-width: 75% + } + .col-sm-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% + } + .col-sm-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% + } + .col-sm-12 { + flex: 0 0 100%; + max-width: 100% + } + .order-sm-first { + order: -1 + } + .order-sm-last { + order: 13 + } + .order-sm-0 { + order: 0 + } + .order-sm-1 { + order: 1 + } + .order-sm-2 { + order: 2 + } + .order-sm-3 { + order: 3 + } + .order-sm-4 { + order: 4 + } + .order-sm-5 { + order: 5 + } + .order-sm-6 { + order: 6 + } + .order-sm-7 { + order: 7 + } + .order-sm-8 { + order: 8 + } + .order-sm-9 { + order: 9 + } + .order-sm-10 { + order: 10 + } + .order-sm-11 { + order: 11 + } + .order-sm-12 { + order: 12 + } + .offset-sm-0 { + margin-left: 0 + } + .offset-sm-1 { + margin-left: 8.33333% + } + .offset-sm-2 { + margin-left: 16.66667% + } + .offset-sm-3 { + margin-left: 25% + } + .offset-sm-4 { + margin-left: 33.33333% + } + .offset-sm-5 { + margin-left: 41.66667% + } + .offset-sm-6 { + margin-left: 50% + } + .offset-sm-7 { + margin-left: 58.33333% + } + .offset-sm-8 { + margin-left: 66.66667% + } + .offset-sm-9 { + margin-left: 75% + } + .offset-sm-10 { + margin-left: 83.33333% + } + .offset-sm-11 { + margin-left: 91.66667% + } +} + +@media (min-width:800px) { + .col-md { + flex-basis: 0; + flex-grow: 1; + max-width: 100% + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-md-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% + } + .col-md-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% + } + .col-md-3 { + flex: 0 0 25%; + max-width: 25% + } + .col-md-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% + } + .col-md-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% + } + .col-md-6 { + flex: 0 0 50%; + max-width: 50% + } + .col-md-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% + } + .col-md-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% + } + .col-md-9 { + flex: 0 0 75%; + max-width: 75% + } + .col-md-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% + } + .col-md-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% + } + .col-md-12 { + flex: 0 0 100%; + max-width: 100% + } + .order-md-first { + order: -1 + } + .order-md-last { + order: 13 + } + .order-md-0 { + order: 0 + } + .order-md-1 { + order: 1 + } + .order-md-2 { + order: 2 + } + .order-md-3 { + order: 3 + } + .order-md-4 { + order: 4 + } + .order-md-5 { + order: 5 + } + .order-md-6 { + order: 6 + } + .order-md-7 { + order: 7 + } + .order-md-8 { + order: 8 + } + .order-md-9 { + order: 9 + } + .order-md-10 { + order: 10 + } + .order-md-11 { + order: 11 + } + .order-md-12 { + order: 12 + } + .offset-md-0 { + margin-left: 0 + } + .offset-md-1 { + margin-left: 8.33333% + } + .offset-md-2 { + margin-left: 16.66667% + } + .offset-md-3 { + margin-left: 25% + } + .offset-md-4 { + margin-left: 33.33333% + } + .offset-md-5 { + margin-left: 41.66667% + } + .offset-md-6 { + margin-left: 50% + } + .offset-md-7 { + margin-left: 58.33333% + } + .offset-md-8 { + margin-left: 66.66667% + } + .offset-md-9 { + margin-left: 75% + } + .offset-md-10 { + margin-left: 83.33333% + } + .offset-md-11 { + margin-left: 91.66667% + } +} + +@media (min-width:992px) { + .col-lg { + flex-basis: 0; + flex-grow: 1; + max-width: 100% + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-lg-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% + } + .col-lg-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% + } + .col-lg-3 { + flex: 0 0 25%; + max-width: 25% + } + .col-lg-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% + } + .col-lg-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% + } + .col-lg-6 { + flex: 0 0 50%; + max-width: 50% + } + .col-lg-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% + } + .col-lg-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% + } + .col-lg-9 { + flex: 0 0 75%; + max-width: 75% + } + .col-lg-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% + } + .col-lg-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% + } + .col-lg-12 { + flex: 0 0 100%; + max-width: 100% + } + .order-lg-first { + order: -1 + } + .order-lg-last { + order: 13 + } + .order-lg-0 { + order: 0 + } + .order-lg-1 { + order: 1 + } + .order-lg-2 { + order: 2 + } + .order-lg-3 { + order: 3 + } + .order-lg-4 { + order: 4 + } + .order-lg-5 { + order: 5 + } + .order-lg-6 { + order: 6 + } + .order-lg-7 { + order: 7 + } + .order-lg-8 { + order: 8 + } + .order-lg-9 { + order: 9 + } + .order-lg-10 { + order: 10 + } + .order-lg-11 { + order: 11 + } + .order-lg-12 { + order: 12 + } + .offset-lg-0 { + margin-left: 0 + } + .offset-lg-1 { + margin-left: 8.33333% + } + .offset-lg-2 { + margin-left: 16.66667% + } + .offset-lg-3 { + margin-left: 25% + } + .offset-lg-4 { + margin-left: 33.33333% + } + .offset-lg-5 { + margin-left: 41.66667% + } + .offset-lg-6 { + margin-left: 50% + } + .offset-lg-7 { + margin-left: 58.33333% + } + .offset-lg-8 { + margin-left: 66.66667% + } + .offset-lg-9 { + margin-left: 75% + } + .offset-lg-10 { + margin-left: 83.33333% + } + .offset-lg-11 { + margin-left: 91.66667% + } +} + +@media (min-width:1200px) { + .col-xl { + flex-basis: 0; + flex-grow: 1; + max-width: 100% + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-xl-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% + } + .col-xl-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% + } + .col-xl-3 { + flex: 0 0 25%; + max-width: 25% + } + .col-xl-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% + } + .col-xl-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% + } + .col-xl-6 { + flex: 0 0 50%; + max-width: 50% + } + .col-xl-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% + } + .col-xl-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% + } + .col-xl-9 { + flex: 0 0 75%; + max-width: 75% + } + .col-xl-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% + } + .col-xl-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% + } + .col-xl-12 { + flex: 0 0 100%; + max-width: 100% + } + .order-xl-first { + order: -1 + } + .order-xl-last { + order: 13 + } + .order-xl-0 { + order: 0 + } + .order-xl-1 { + order: 1 + } + .order-xl-2 { + order: 2 + } + .order-xl-3 { + order: 3 + } + .order-xl-4 { + order: 4 + } + .order-xl-5 { + order: 5 + } + .order-xl-6 { + order: 6 + } + .order-xl-7 { + order: 7 + } + .order-xl-8 { + order: 8 + } + .order-xl-9 { + order: 9 + } + .order-xl-10 { + order: 10 + } + .order-xl-11 { + order: 11 + } + .order-xl-12 { + order: 12 + } + .offset-xl-0 { + margin-left: 0 + } + .offset-xl-1 { + margin-left: 8.33333% + } + .offset-xl-2 { + margin-left: 16.66667% + } + .offset-xl-3 { + margin-left: 25% + } + .offset-xl-4 { + margin-left: 33.33333% + } + .offset-xl-5 { + margin-left: 41.66667% + } + .offset-xl-6 { + margin-left: 50% + } + .offset-xl-7 { + margin-left: 58.33333% + } + .offset-xl-8 { + margin-left: 66.66667% + } + .offset-xl-9 { + margin-left: 75% + } + .offset-xl-10 { + margin-left: 83.33333% + } + .offset-xl-11 { + margin-left: 91.66667% + } +} + +@media (min-width:1440px) { + .col-xxl { + flex-basis: 0; + flex-grow: 1; + max-width: 100% + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-xxl-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% + } + .col-xxl-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% + } + .col-xxl-3 { + flex: 0 0 25%; + max-width: 25% + } + .col-xxl-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% + } + .col-xxl-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% + } + .col-xxl-6 { + flex: 0 0 50%; + max-width: 50% + } + .col-xxl-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% + } + .col-xxl-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% + } + .col-xxl-9 { + flex: 0 0 75%; + max-width: 75% + } + .col-xxl-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% + } + .col-xxl-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% + } + .col-xxl-12 { + flex: 0 0 100%; + max-width: 100% + } + .order-xxl-first { + order: -1 + } + .order-xxl-last { + order: 13 + } + .order-xxl-0 { + order: 0 + } + .order-xxl-1 { + order: 1 + } + .order-xxl-2 { + order: 2 + } + .order-xxl-3 { + order: 3 + } + .order-xxl-4 { + order: 4 + } + .order-xxl-5 { + order: 5 + } + .order-xxl-6 { + order: 6 + } + .order-xxl-7 { + order: 7 + } + .order-xxl-8 { + order: 8 + } + .order-xxl-9 { + order: 9 + } + .order-xxl-10 { + order: 10 + } + .order-xxl-11 { + order: 11 + } + .order-xxl-12 { + order: 12 + } + .offset-xxl-0 { + margin-left: 0 + } + .offset-xxl-1 { + margin-left: 8.33333% + } + .offset-xxl-2 { + margin-left: 16.66667% + } + .offset-xxl-3 { + margin-left: 25% + } + .offset-xxl-4 { + margin-left: 33.33333% + } + .offset-xxl-5 { + margin-left: 41.66667% + } + .offset-xxl-6 { + margin-left: 50% + } + .offset-xxl-7 { + margin-left: 58.33333% + } + .offset-xxl-8 { + margin-left: 66.66667% + } + .offset-xxl-9 { + margin-left: 75% + } + .offset-xxl-10 { + margin-left: 83.33333% + } + .offset-xxl-11 { + margin-left: 91.66667% + } +} + +@media (min-width:1600px) { + .col-exl { + flex-basis: 0; + flex-grow: 1; + max-width: 100% + } + .col-exl-auto { + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-exl-1 { + flex: 0 0 8.33333%; + max-width: 8.33333% + } + .col-exl-2 { + flex: 0 0 16.66667%; + max-width: 16.66667% + } + .col-exl-3 { + flex: 0 0 25%; + max-width: 25% + } + .col-exl-4 { + flex: 0 0 33.33333%; + max-width: 33.33333% + } + .col-exl-5 { + flex: 0 0 41.66667%; + max-width: 41.66667% + } + .col-exl-6 { + flex: 0 0 50%; + max-width: 50% + } + .col-exl-7 { + flex: 0 0 58.33333%; + max-width: 58.33333% + } + .col-exl-8 { + flex: 0 0 66.66667%; + max-width: 66.66667% + } + .col-exl-9 { + flex: 0 0 75%; + max-width: 75% + } + .col-exl-10 { + flex: 0 0 83.33333%; + max-width: 83.33333% + } + .col-exl-11 { + flex: 0 0 91.66667%; + max-width: 91.66667% + } + .col-exl-12 { + flex: 0 0 100%; + max-width: 100% + } + .order-exl-first { + order: -1 + } + .order-exl-last { + order: 13 + } + .order-exl-0 { + order: 0 + } + .order-exl-1 { + order: 1 + } + .order-exl-2 { + order: 2 + } + .order-exl-3 { + order: 3 + } + .order-exl-4 { + order: 4 + } + .order-exl-5 { + order: 5 + } + .order-exl-6 { + order: 6 + } + .order-exl-7 { + order: 7 + } + .order-exl-8 { + order: 8 + } + .order-exl-9 { + order: 9 + } + .order-exl-10 { + order: 10 + } + .order-exl-11 { + order: 11 + } + .order-exl-12 { + order: 12 + } + .offset-exl-0 { + margin-left: 0 + } + .offset-exl-1 { + margin-left: 8.33333% + } + .offset-exl-2 { + margin-left: 16.66667% + } + .offset-exl-3 { + margin-left: 25% + } + .offset-exl-4 { + margin-left: 33.33333% + } + .offset-exl-5 { + margin-left: 41.66667% + } + .offset-exl-6 { + margin-left: 50% + } + .offset-exl-7 { + margin-left: 58.33333% + } + .offset-exl-8 { + margin-left: 66.66667% + } + .offset-exl-9 { + margin-left: 75% + } + .offset-exl-10 { + margin-left: 83.33333% + } + .offset-exl-11 { + margin-left: 91.66667% + } +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + background-color: transparent +} + +.table td, +.table th { + padding: .75rem; + vertical-align: top; + border-top: 1px solid #8786a4 +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #8786a4 +} + +.table tbody+tbody { + border-top: 2px solid #8786a4 +} + +.table .table { + background-color: #fff +} + +.table-sm td, +.table-sm th { + padding: .3rem +} + +.table-bordered, +.table-bordered td, +.table-bordered th { + border: 1px solid #8786a4 +} + +.table-bordered thead td, +.table-bordered thead th { + border-bottom-width: 2px +} + +.table-borderless tbody+tbody, +.table-borderless td, +.table-borderless th, +.table-borderless thead th { + border: 0 +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(49, 49, 49, .05) +} + +.table-hover tbody tr:hover { + background-color: rgba(49, 49, 49, .075) +} + +.table-primary, +.table-primary>td, +.table-primary>th { + background-color: #d1f4e4 +} + +.table-hover .table-primary:hover, +.table-hover .table-primary:hover>td, +.table-hover .table-primary:hover>th { + background-color: #bcefd8 +} + +.table-secondary, +.table-secondary>td, +.table-secondary>th { + background-color: #d5d0f5 +} + +.table-hover .table-secondary:hover, +.table-hover .table-secondary:hover>td, +.table-hover .table-secondary:hover>th { + background-color: #c2bbf1 +} + +.table-success, +.table-success>td, +.table-success>th { + background-color: #ccebdd +} + +.table-hover .table-success:hover, +.table-hover .table-success:hover>td, +.table-hover .table-success:hover>th { + background-color: #bae4d1 +} + +.table-info, +.table-info>td, +.table-info>th { + background-color: #caf1ff +} + +.table-hover .table-info:hover, +.table-hover .table-info:hover>td, +.table-hover .table-info:hover>th { + background-color: #b1eaff +} + +.table-warning, +.table-warning>td, +.table-warning>th { + background-color: #feebc8 +} + +.table-hover .table-warning:hover, +.table-hover .table-warning:hover>td, +.table-hover .table-warning:hover>th { + background-color: #fee2af +} + +.table-danger, +.table-danger>td, +.table-danger>th { + background-color: #fccecd +} + +.table-hover .table-danger:hover, +.table-hover .table-danger:hover>td, +.table-hover .table-danger:hover>th { + background-color: #fbb6b5 +} + +.table-light, +.table-light>td, +.table-light>th { + background-color: #fdfdfe +} + +.table-hover .table-light:hover, +.table-hover .table-light:hover>td, +.table-hover .table-light:hover>th { + background-color: #ececf6 +} + +.table-dark, +.table-dark>td, +.table-dark>th { + background-color: #c1c2c8 +} + +.table-hover .table-dark:hover, +.table-hover .table-dark:hover>td, +.table-hover .table-dark:hover>th { + background-color: #b3b5bc +} + +.table-active, +.table-active>td, +.table-active>th { + background-color: rgba(49, 49, 49, .075) +} + +.table-hover .table-active:hover, +.table-hover .table-active:hover>td, +.table-hover .table-active:hover>th { + background-color: rgba(36, 36, 36, .075) +} + +.table .thead-dark th { + color: #fff; + background-color: #22263b; + border-color: #272c43 +} + +.table .thead-light th { + color: #434456; + background-color: #9f9fb9; + border-color: #8786a4 +} + +.table-dark { + color: #fff; + background-color: #22263b +} + +.table-dark td, +.table-dark th, +.table-dark thead th { + border-color: #272c43 +} + +.table-dark.table-bordered { + border: 0 +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: hsla(0, 0%, 100%, .05) +} + +.table-dark.table-hover tbody tr:hover { + background-color: hsla(0, 0%, 100%, .075) +} + +@media (max-width:575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive-sm>.table-bordered { + border: 0 + } +} + +@media (max-width:799.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive-md>.table-bordered { + border: 0 + } +} + +@media (max-width:991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive-lg>.table-bordered { + border: 0 + } +} + +@media (max-width:1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive-xl>.table-bordered { + border: 0 + } +} + +@media (max-width:1439.98px) { + .table-responsive-xxl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive-xxl>.table-bordered { + border: 0 + } +} + +@media (max-width:1599.98px) { + .table-responsive-exl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive-exl>.table-bordered { + border: 0 + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar +} + +.table-responsive>.table-bordered { + border: 0 +} + +.table-rounded-corner { + border-radius: .6rem +} + +.table-rounded-corner table { + margin-bottom: 0 +} + +.table-ext td, +.table-ext th { + padding: 2rem 5rem +} + +.table-ext td, +.table-ext th, +.table-ext thead th { + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif +} + +.form-control { + display: block; + width: 100%; + padding: 1.1rem 1.55rem; + font-size: 14px; + line-height: 1.5; + color: #434456; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #dadae4; + border-radius: .5rem; + transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out +} + +@media screen and (prefers-reduced-motion:reduce) { + .form-control { + transition: none + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0 +} + +.form-control:focus { + color: #434456; + background-color: #fff; + border-color: #c1f1da; + outline: 0; + box-shadow: inset 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.form-control::placeholder { + color: #5a5b75; + opacity: 1 +} + +.form-control:disabled, +.form-control[readonly] { + background-color: #9f9fb9; + opacity: 1 +} + +select.form-control:not([size]):not([multiple]) { + height: calc(4.6rem + 2px) +} + +select.form-control:focus::-ms-value { + color: #434456; + background-color: #fff +} + +.form-control-file, +.form-control-range { + display: block; + width: 100% +} + +.col-form-label { + padding-top: calc(1.1rem + 1px); + padding-bottom: calc(1.1rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5 +} + +.col-form-label-lg { + padding-top: calc(1.2rem + 1px); + padding-bottom: calc(1.2rem + 1px); + font-size: 2rem; + line-height: 2 +} + +.col-form-label-sm { + padding-top: calc(.9rem + 1px); + padding-bottom: calc(.9rem + 1px); + font-size: 1.3rem; + line-height: 1 +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 1.1rem; + padding-bottom: 1.1rem; + margin-bottom: 0; + line-height: 1.5; + color: #434456; + background-color: transparent; + border: solid transparent; + border-width: 1px 0 +} + +.form-control-plaintext.form-control-lg, +.form-control-plaintext.form-control-sm, +.input-group-lg>.form-control-plaintext.form-control, +.input-group-lg>.input-group-append>.form-control-plaintext.btn, +.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text, +.input-group-lg>.input-group-prepend>.form-control-plaintext.btn, +.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text, +.input-group-sm>.form-control-plaintext.form-control, +.input-group-sm>.input-group-append>.form-control-plaintext.btn, +.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text, +.input-group-sm>.input-group-prepend>.form-control-plaintext.btn, +.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text { + padding-right: 0; + padding-left: 0 +} + +.form-control-sm, +.input-group-sm>.form-control, +.input-group-sm>.input-group-append>.btn, +.input-group-sm>.input-group-append>.input-group-text, +.input-group-sm>.input-group-prepend>.btn, +.input-group-sm>.input-group-prepend>.input-group-text { + padding: .9rem 1.2rem; + font-size: 1.3rem; + line-height: 1; + border-radius: .2rem +} + +.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]), +.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]), +.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]), +.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]), +.input-group-sm>select.form-control:not([size]):not([multiple]), +select.form-control-sm:not([size]):not([multiple]) { + height: calc(3.1rem + 2px) +} + +.form-control-lg, +.input-group-lg>.form-control, +.input-group-lg>.input-group-append>.btn, +.input-group-lg>.input-group-append>.input-group-text, +.input-group-lg>.input-group-prepend>.btn, +.input-group-lg>.input-group-prepend>.input-group-text { + padding: 1.2rem 2.4rem; + font-size: 2rem; + line-height: 2; + border-radius: .3rem +} + +.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]), +.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]), +.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]), +.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]), +.input-group-lg>select.form-control:not([size]):not([multiple]), +select.form-control-lg:not([size]):not([multiple]) { + height: calc(6.4rem + 2px) +} + +.form-group { + margin-bottom: 1.8rem +} + +.form-text { + display: block; + margin-top: .25rem +} + +.form-row { + display: flex; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px +} + +.form-row>.col, +.form-row>[class*=col-] { + padding-right: 5px; + padding-left: 5px +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem +} + +.form-check-input { + position: absolute; + margin-top: .3rem; + margin-left: -1.25rem +} + +.form-check-input:disabled~.form-check-label { + color: #9f9fb9 +} + +.form-check-label { + margin-bottom: 0 +} + +.form-check-inline { + display: inline-flex; + align-items: center; + padding-left: 0; + margin-right: .75rem +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: .3125rem; + margin-left: 0 +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: .25rem; + font-size: 80%; + color: #48b884; + font-style: italic +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(72, 184, 132, .8); + border-radius: .2rem +} + +.custom-select.is-valid, +.form-control.is-valid, +.was-validated .custom-select:valid, +.was-validated .form-control:valid { + border-color: #48b884 +} + +.custom-select.is-valid:focus, +.form-control.is-valid:focus, +.was-validated .custom-select:valid:focus, +.was-validated .form-control:valid:focus { + border-color: #48b884; + box-shadow: 0 0 0 .2rem rgba(72, 184, 132, .25) +} + +.custom-select.is-valid~.valid-feedback, +.custom-select.is-valid~.valid-tooltip, +.form-control.is-valid~.valid-feedback, +.form-control.is-valid~.valid-tooltip, +.was-validated .custom-select:valid~.valid-feedback, +.was-validated .custom-select:valid~.valid-tooltip, +.was-validated .form-control:valid~.valid-feedback, +.was-validated .form-control:valid~.valid-tooltip { + display: block +} + +.form-check-input.is-valid~.form-check-label, +.was-validated .form-check-input:valid~.form-check-label { + color: #48b884 +} + +.form-check-input.is-valid~.valid-feedback, +.form-check-input.is-valid~.valid-tooltip, +.was-validated .form-check-input:valid~.valid-feedback, +.was-validated .form-check-input:valid~.valid-tooltip { + display: block +} + +.custom-control-input.is-valid~.custom-control-label, +.was-validated .custom-control-input:valid~.custom-control-label { + color: #48b884 +} + +.custom-control-input.is-valid~.custom-control-label:before, +.was-validated .custom-control-input:valid~.custom-control-label:before { + background-color: #a4dcc2 +} + +.custom-control-input.is-valid~.valid-feedback, +.custom-control-input.is-valid~.valid-tooltip, +.was-validated .custom-control-input:valid~.valid-feedback, +.was-validated .custom-control-input:valid~.valid-tooltip { + display: block +} + +.custom-control-input.is-valid:checked~.custom-control-label:before, +.was-validated .custom-control-input:valid:checked~.custom-control-label:before { + background: #6dc69d linear-gradient(180deg, #83cfab, #6dc69d) repeat-x +} + +.custom-control-input.is-valid:focus~.custom-control-label:before, +.was-validated .custom-control-input:valid:focus~.custom-control-label:before { + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(72, 184, 132, .25) +} + +.custom-file-input.is-valid~.custom-file-label, +.was-validated .custom-file-input:valid~.custom-file-label { + border-color: #48b884 +} + +.custom-file-input.is-valid~.custom-file-label:before, +.was-validated .custom-file-input:valid~.custom-file-label:before { + border-color: inherit +} + +.custom-file-input.is-valid~.valid-feedback, +.custom-file-input.is-valid~.valid-tooltip, +.was-validated .custom-file-input:valid~.valid-feedback, +.was-validated .custom-file-input:valid~.valid-tooltip { + display: block +} + +.custom-file-input.is-valid:focus~.custom-file-label, +.was-validated .custom-file-input:valid:focus~.custom-file-label { + box-shadow: 0 0 0 .2rem rgba(72, 184, 132, .25) +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: .25rem; + font-size: 80%; + color: #f64f4b; + font-style: italic +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(246, 79, 75, .8); + border-radius: .2rem +} + +.custom-select.is-invalid, +.form-control.is-invalid, +.was-validated .custom-select:invalid, +.was-validated .form-control:invalid { + border-color: #f64f4b +} + +.custom-select.is-invalid:focus, +.form-control.is-invalid:focus, +.was-validated .custom-select:invalid:focus, +.was-validated .form-control:invalid:focus { + border-color: #f64f4b; + box-shadow: 0 0 0 .2rem rgba(246, 79, 75, .25) +} + +.custom-select.is-invalid~.invalid-feedback, +.custom-select.is-invalid~.invalid-tooltip, +.form-control.is-invalid~.invalid-feedback, +.form-control.is-invalid~.invalid-tooltip, +.was-validated .custom-select:invalid~.invalid-feedback, +.was-validated .custom-select:invalid~.invalid-tooltip, +.was-validated .form-control:invalid~.invalid-feedback, +.was-validated .form-control:invalid~.invalid-tooltip { + display: block +} + +.form-check-input.is-invalid~.form-check-label, +.was-validated .form-check-input:invalid~.form-check-label { + color: #f64f4b +} + +.form-check-input.is-invalid~.invalid-feedback, +.form-check-input.is-invalid~.invalid-tooltip, +.was-validated .form-check-input:invalid~.invalid-feedback, +.was-validated .form-check-input:invalid~.invalid-tooltip { + display: block +} + +.custom-control-input.is-invalid~.custom-control-label, +.was-validated .custom-control-input:invalid~.custom-control-label { + color: #f64f4b +} + +.custom-control-input.is-invalid~.custom-control-label:before, +.was-validated .custom-control-input:invalid~.custom-control-label:before { + background-color: #fcc6c4 +} + +.custom-control-input.is-invalid~.invalid-feedback, +.custom-control-input.is-invalid~.invalid-tooltip, +.was-validated .custom-control-input:invalid~.invalid-feedback, +.was-validated .custom-control-input:invalid~.invalid-tooltip { + display: block +} + +.custom-control-input.is-invalid:checked~.custom-control-label:before, +.was-validated .custom-control-input:invalid:checked~.custom-control-label:before { + background: #f87e7c linear-gradient(180deg, #f9928f, #f87e7c) repeat-x +} + +.custom-control-input.is-invalid:focus~.custom-control-label:before, +.was-validated .custom-control-input:invalid:focus~.custom-control-label:before { + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(246, 79, 75, .25) +} + +.custom-file-input.is-invalid~.custom-file-label, +.was-validated .custom-file-input:invalid~.custom-file-label { + border-color: #f64f4b +} + +.custom-file-input.is-invalid~.custom-file-label:before, +.was-validated .custom-file-input:invalid~.custom-file-label:before { + border-color: inherit +} + +.custom-file-input.is-invalid~.invalid-feedback, +.custom-file-input.is-invalid~.invalid-tooltip, +.was-validated .custom-file-input:invalid~.invalid-feedback, +.was-validated .custom-file-input:invalid~.invalid-tooltip { + display: block +} + +.custom-file-input.is-invalid:focus~.custom-file-label, +.was-validated .custom-file-input:invalid:focus~.custom-file-label { + box-shadow: 0 0 0 .2rem rgba(246, 79, 75, .25) +} + +.form-inline { + display: flex; + flex-flow: row wrap; + align-items: center +} + +.form-inline .form-check { + width: 100% +} + +@media (min-width:576px) { + .form-inline label { + justify-content: center + } + .form-inline .form-group, + .form-inline label { + display: flex; + align-items: center; + margin-bottom: 0 + } + .form-inline .form-group { + flex: 0 0 auto; + flex-flow: row wrap + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + .form-inline .form-control-plaintext { + display: inline-block + } + .form-inline .custom-select, + .form-inline .input-group { + width: auto + } + .form-inline .form-check { + display: flex; + align-items: center; + justify-content: center; + width: auto; + padding-left: 0 + } + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: .25rem; + margin-left: 0 + } + .form-inline .custom-control { + align-items: center; + justify-content: center + } + .form-inline .custom-control-label { + margin-bottom: 0 + } +} + +.form-group { + position: relative +} + +.form-group label.label-overlay { + position: absolute; + z-index: 1; + top: 0; + left: 0; + padding: 0; + color: #9f9fb9; + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + margin-bottom: 0; + margin: 1.1rem 1.55rem; + transition: all .35s ease +} + +.form-group label.label-overlay.active { + font-size: 12px; + padding: 0; + background-color: #fff; + margin: -.9rem 1.6rem 0; + transition: all .35s ease +} + +.custom-select { + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none +} + +.optional-text { + display: none; + position: absolute; + z-index: 1; + right: 1.6rem; + top: .8rem; + color: #9f9fb9; + font-style: italic; + transition: all .35s ease +} + +.optional-text.active { + display: block; + transition: all .35s ease +} + +.custom-select { + padding-left: 1.6rem !important; + -webkit-appearance: none +} + +input:-webkit-autofill, +select:-webkit-autofill, +textarea:-webkit-autofill { + background-color: none +} + +.coupon-wrapper { + transition: all .35s ease +} + +input:-webkit-autofill, +select:-webkit-autofill, +textarea:-webkit-autofill { + background-color: #fff +} + +.btn { + display: inline-block; + line-height: 1; + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif; + text-transform: uppercase; + text-align: center; + white-space: nowrap; + vertical-align: middle; + user-select: none; + border: 1px solid transparent; + font-size: 15px; + font-size: 1.5rem; + padding: 1.1rem 1.55rem; + line-height: 1.5; + border-radius: .5rem; + transition: all .35s ease +} + +@media screen and (prefers-reduced-motion:reduce) { + .btn { + transition: none + } +} + +.btn i { + margin-top: -.4rem +} + +.btn:focus, +.btn:hover { + text-decoration: none +} + +.btn.focus, +.btn:focus { + outline: 0; + box-shadow: none +} + +.btn.disabled, +.btn:disabled { + opacity: .6 +} + +.btn:not(:disabled):not(.disabled) { + cursor: pointer +} + +.btn:not(:disabled):not(.disabled).active, +.btn:not(:disabled):not(.disabled):active { + background-image: none; + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125) +} + +.btn:not(:disabled):not(.disabled).active:focus, +.btn:not(:disabled):not(.disabled):active:focus { + box-shadow: 0 0 0 .2rem rgba(89, 217, 157, .25), inset 0 3px 5px rgba(49, 49, 49, .125) +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none +} + +.btn-primary, +.btn-transparent { + color: #191c2b; + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x; + border-color: #59d99d; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-primary:hover, +.btn-transparent:hover { + color: #191c2b; + background: #3ad28b linear-gradient(180deg, #57d99c, #3ad28b) repeat-x; + border-color: #30d085 +} + +.btn-primary.focus, +.btn-primary:focus, +.btn-transparent:focus, +.focus.btn-transparent { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(89, 217, 157, .5) +} + +.btn-primary.disabled, +.btn-primary:disabled, +.btn-transparent:disabled, +.disabled.btn-transparent { + color: #191c2b; + background-color: #59d99d; + border-color: #59d99d +} + +.btn-primary:not(:disabled):not(.disabled).active, +.btn-primary:not(:disabled):not(.disabled):active, +.btn-transparent:not(:disabled):not(.disabled).active, +.btn-transparent:not(:disabled):not(.disabled):active, +.show>.btn-primary.dropdown-toggle, +.show>.dropdown-toggle.btn-transparent { + color: #191c2b; + background-color: #30d085; + background-image: none; + border-color: #2dc57e +} + +.btn-primary:not(:disabled):not(.disabled).active:focus, +.btn-primary:not(:disabled):not(.disabled):active:focus, +.btn-transparent:not(:disabled):not(.disabled).active:focus, +.btn-transparent:not(:disabled):not(.disabled):active:focus, +.show>.btn-primary.dropdown-toggle:focus, +.show>.dropdown-toggle.btn-transparent:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(89, 217, 157, .5) +} + +.btn-secondary { + color: #fff; + background: #6957da linear-gradient(180deg, #8070e0, #6957da) repeat-x; + border-color: #6957da; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-secondary:hover { + color: #fff; + background: #4d38d3 linear-gradient(180deg, #6856da, #4d38d3) repeat-x; + border-color: #442ed0 +} + +.btn-secondary.focus, +.btn-secondary:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(105, 87, 218, .5) +} + +.btn-secondary.disabled, +.btn-secondary:disabled { + color: #fff; + background-color: #6957da; + border-color: #6957da +} + +.btn-secondary:not(:disabled):not(.disabled).active, +.btn-secondary:not(:disabled):not(.disabled):active, +.show>.btn-secondary.dropdown-toggle { + color: #fff; + background-color: #442ed0; + background-image: none; + border-color: #412cc6 +} + +.btn-secondary:not(:disabled):not(.disabled).active:focus, +.btn-secondary:not(:disabled):not(.disabled):active:focus, +.show>.btn-secondary.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(105, 87, 218, .5) +} + +.btn-success { + color: #fff; + background: #48b884 linear-gradient(180deg, #63c396, #48b884) repeat-x; + border-color: #48b884; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-success:hover { + color: #fff; + background: #3d9d70 linear-gradient(180deg, #5aac86, #3d9d70) repeat-x; + border-color: #39946a +} + +.btn-success.focus, +.btn-success:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(72, 184, 132, .5) +} + +.btn-success.disabled, +.btn-success:disabled { + color: #fff; + background-color: #48b884; + border-color: #48b884 +} + +.btn-success:not(:disabled):not(.disabled).active, +.btn-success:not(:disabled):not(.disabled):active, +.show>.btn-success.dropdown-toggle { + color: #fff; + background-color: #39946a; + background-image: none; + border-color: #368b63 +} + +.btn-success:not(:disabled):not(.disabled).active:focus, +.btn-success:not(:disabled):not(.disabled):active:focus, +.show>.btn-success.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(72, 184, 132, .5) +} + +.btn-info { + color: #191c2b; + background: #43ccfe linear-gradient(180deg, #5fd4fe, #43ccfe) repeat-x; + border-color: #43ccfe; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-info:hover { + color: #191c2b; + background: #1dc2fe linear-gradient(180deg, #3fcbfe, #1dc2fe) repeat-x; + border-color: #10befe +} + +.btn-info.focus, +.btn-info:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(67, 204, 254, .5) +} + +.btn-info.disabled, +.btn-info:disabled { + color: #191c2b; + background-color: #43ccfe; + border-color: #43ccfe +} + +.btn-info:not(:disabled):not(.disabled).active, +.btn-info:not(:disabled):not(.disabled):active, +.show>.btn-info.dropdown-toggle { + color: #fff; + background-color: #10befe; + background-image: none; + border-color: #04bbfe +} + +.btn-info:not(:disabled):not(.disabled).active:focus, +.btn-info:not(:disabled):not(.disabled):active:focus, +.show>.btn-info.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(67, 204, 254, .5) +} + +.btn-warning { + color: #191c2b; + background: #fab73a linear-gradient(180deg, #fbc258, #fab73a) repeat-x; + border-color: #fab73a; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-warning:hover { + color: #191c2b; + background: #f9a915 linear-gradient(180deg, #fab638, #f9a915) repeat-x; + border-color: #f9a508 +} + +.btn-warning.focus, +.btn-warning:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(250, 183, 58, .5) +} + +.btn-warning.disabled, +.btn-warning:disabled { + color: #191c2b; + background-color: #fab73a; + border-color: #fab73a +} + +.btn-warning:not(:disabled):not(.disabled).active, +.btn-warning:not(:disabled):not(.disabled):active, +.show>.btn-warning.dropdown-toggle { + color: #191c2b; + background-color: #f9a508; + background-image: none; + border-color: #ee9d06 +} + +.btn-warning:not(:disabled):not(.disabled).active:focus, +.btn-warning:not(:disabled):not(.disabled):active:focus, +.show>.btn-warning.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(250, 183, 58, .5) +} + +.btn-danger { + color: #fff; + background: #f64f4b linear-gradient(180deg, #f76966, #f64f4b) repeat-x; + border-color: #f64f4b; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-danger:hover { + color: #fff; + background: #f42b27 linear-gradient(180deg, #f64b47, #f42b27) repeat-x; + border-color: #f4201a +} + +.btn-danger.focus, +.btn-danger:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(246, 79, 75, .5) +} + +.btn-danger.disabled, +.btn-danger:disabled { + color: #fff; + background-color: #f64f4b; + border-color: #f64f4b +} + +.btn-danger:not(:disabled):not(.disabled).active, +.btn-danger:not(:disabled):not(.disabled):active, +.show>.btn-danger.dropdown-toggle { + color: #fff; + background-color: #f4201a; + background-image: none; + border-color: #f3140e +} + +.btn-danger:not(:disabled):not(.disabled).active:focus, +.btn-danger:not(:disabled):not(.disabled):active:focus, +.show>.btn-danger.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(246, 79, 75, .5) +} + +.btn-light { + color: #191c2b; + background: #f8f9fa linear-gradient(180deg, #f9fafb, #f8f9fa) repeat-x; + border-color: #f8f9fa; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-light:hover { + color: #191c2b; + background: #e2e6ea linear-gradient(180deg, #e6eaed, #e2e6ea) repeat-x; + border-color: #dae0e5 +} + +.btn-light.focus, +.btn-light:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.btn-light.disabled, +.btn-light:disabled { + color: #191c2b; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light:not(:disabled):not(.disabled).active, +.btn-light:not(:disabled):not(.disabled):active, +.show>.btn-light.dropdown-toggle { + color: #191c2b; + background-color: #dae0e5; + background-image: none; + border-color: #d3d9df +} + +.btn-light:not(:disabled):not(.disabled).active:focus, +.btn-light:not(:disabled):not(.disabled):active:focus, +.show>.btn-light.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.btn-dark { + color: #fff; + background: #22263b linear-gradient(180deg, #434758, #22263b) repeat-x; + border-color: #22263b; + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-dark:hover { + color: #fff; + background: #141623 linear-gradient(180deg, #373944, #141623) repeat-x; + border-color: #0f111b +} + +.btn-dark.focus, +.btn-dark:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(34, 38, 59, .5) +} + +.btn-dark.disabled, +.btn-dark:disabled { + color: #fff; + background-color: #22263b; + border-color: #22263b +} + +.btn-dark:not(:disabled):not(.disabled).active, +.btn-dark:not(:disabled):not(.disabled):active, +.show>.btn-dark.dropdown-toggle { + color: #fff; + background-color: #0f111b; + background-image: none; + border-color: #0b0c13 +} + +.btn-dark:not(:disabled):not(.disabled).active:focus, +.btn-dark:not(:disabled):not(.disabled):active:focus, +.show>.btn-dark.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(34, 38, 59, .5) +} + +.btn-primary-grad { + color: #fff; + border: none; + background: #2cc7c0; + background: linear-gradient(90deg, #2cc7c0, #59d99d); + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-primary-grad:hover { + color: #fff; + background: #25a8a2; + background: linear-gradient(90deg, #25a8a2, #3ad28b) +} + +.btn-primary-grad.focus, +.btn-primary-grad:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(44, 199, 192, .5) +} + +.btn-primary-grad.disabled, +.btn-primary-grad:disabled { + color: #191c2b; + background-color: #2cc7c0 +} + +.btn-primary-grad:not(:disabled):not(.disabled).active, +.btn-primary-grad:not(:disabled):not(.disabled):active, +.show>.btn-primary-grad.dropdown-toggle { + color: #fff; + background-color: #239d98; + background-image: none +} + +.btn-primary-grad:not(:disabled):not(.disabled).active:focus, +.btn-primary-grad:not(:disabled):not(.disabled):active:focus, +.show>.btn-primary-grad.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(44, 199, 192, .5) +} + +.btn-secondary-grad { + color: #fff; + border: none; + background: #7365f5; + background: linear-gradient(90deg, #7365f5, #5f74de); + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075) +} + +.btn-secondary-grad:hover { + color: #fff; + background: #5241f3; + background: linear-gradient(90deg, #5241f3, #3f58d7) +} + +.btn-secondary-grad.focus, +.btn-secondary-grad:focus { + box-shadow: inset 0 1px 0 hsla(0, 0%, 100%, .15), 0 1px 1px rgba(49, 49, 49, .075), 0 0 0 .2rem rgba(115, 101, 245, .5) +} + +.btn-secondary-grad.disabled, +.btn-secondary-grad:disabled { + color: #fff; + background-color: #7365f5 +} + +.btn-secondary-grad:not(:disabled):not(.disabled).active, +.btn-secondary-grad:not(:disabled):not(.disabled):active, +.show>.btn-secondary-grad.dropdown-toggle { + color: #fff; + background-color: #4735f2; + background-image: none +} + +.btn-secondary-grad:not(:disabled):not(.disabled).active:focus, +.btn-secondary-grad:not(:disabled):not(.disabled):active:focus, +.show>.btn-secondary-grad.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(115, 101, 245, .5) +} + +.btn-outline-primary { + color: #59d99d; + background-color: transparent; + background-image: none; + border-color: #59d99d +} + +.btn-outline-primary:hover { + color: #191c2b; + background-color: #59d99d; + border-color: #59d99d +} + +.btn-outline-primary.focus, +.btn-outline-primary:focus { + box-shadow: 0 0 0 .2rem rgba(89, 217, 157, .5) +} + +.btn-outline-primary.disabled, +.btn-outline-primary:disabled { + color: #59d99d; + background-color: transparent +} + +.btn-outline-primary:not(:disabled):not(.disabled).active, +.btn-outline-primary:not(:disabled):not(.disabled):active, +.show>.btn-outline-primary.dropdown-toggle { + color: #191c2b; + background-color: #59d99d; + border-color: #59d99d +} + +.btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-primary.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(89, 217, 157, .5) +} + +.btn-outline-secondary { + color: #6957da; + background-color: transparent; + background-image: none; + border-color: #6957da +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #6957da; + border-color: #6957da +} + +.btn-outline-secondary.focus, +.btn-outline-secondary:focus { + box-shadow: 0 0 0 .2rem rgba(105, 87, 218, .5) +} + +.btn-outline-secondary.disabled, +.btn-outline-secondary:disabled { + color: #6957da; + background-color: transparent +} + +.btn-outline-secondary:not(:disabled):not(.disabled).active, +.btn-outline-secondary:not(:disabled):not(.disabled):active, +.show>.btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6957da; + border-color: #6957da +} + +.btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-secondary.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(105, 87, 218, .5) +} + +.btn-outline-success { + color: #48b884; + background-color: transparent; + background-image: none; + border-color: #48b884 +} + +.btn-outline-success:hover { + color: #fff; + background-color: #48b884; + border-color: #48b884 +} + +.btn-outline-success.focus, +.btn-outline-success:focus { + box-shadow: 0 0 0 .2rem rgba(72, 184, 132, .5) +} + +.btn-outline-success.disabled, +.btn-outline-success:disabled { + color: #48b884; + background-color: transparent +} + +.btn-outline-success:not(:disabled):not(.disabled).active, +.btn-outline-success:not(:disabled):not(.disabled):active, +.show>.btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #48b884; + border-color: #48b884 +} + +.btn-outline-success:not(:disabled):not(.disabled).active:focus, +.btn-outline-success:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-success.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(72, 184, 132, .5) +} + +.btn-outline-info { + color: #43ccfe; + background-color: transparent; + background-image: none; + border-color: #43ccfe +} + +.btn-outline-info:hover { + color: #191c2b; + background-color: #43ccfe; + border-color: #43ccfe +} + +.btn-outline-info.focus, +.btn-outline-info:focus { + box-shadow: 0 0 0 .2rem rgba(67, 204, 254, .5) +} + +.btn-outline-info.disabled, +.btn-outline-info:disabled { + color: #43ccfe; + background-color: transparent +} + +.btn-outline-info:not(:disabled):not(.disabled).active, +.btn-outline-info:not(:disabled):not(.disabled):active, +.show>.btn-outline-info.dropdown-toggle { + color: #191c2b; + background-color: #43ccfe; + border-color: #43ccfe +} + +.btn-outline-info:not(:disabled):not(.disabled).active:focus, +.btn-outline-info:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-info.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(67, 204, 254, .5) +} + +.btn-outline-warning { + color: #fab73a; + background-color: transparent; + background-image: none; + border-color: #fab73a +} + +.btn-outline-warning:hover { + color: #191c2b; + background-color: #fab73a; + border-color: #fab73a +} + +.btn-outline-warning.focus, +.btn-outline-warning:focus { + box-shadow: 0 0 0 .2rem rgba(250, 183, 58, .5) +} + +.btn-outline-warning.disabled, +.btn-outline-warning:disabled { + color: #fab73a; + background-color: transparent +} + +.btn-outline-warning:not(:disabled):not(.disabled).active, +.btn-outline-warning:not(:disabled):not(.disabled):active, +.show>.btn-outline-warning.dropdown-toggle { + color: #191c2b; + background-color: #fab73a; + border-color: #fab73a +} + +.btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-warning.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(250, 183, 58, .5) +} + +.btn-outline-danger { + color: #f64f4b; + background-color: transparent; + background-image: none; + border-color: #f64f4b +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #f64f4b; + border-color: #f64f4b +} + +.btn-outline-danger.focus, +.btn-outline-danger:focus { + box-shadow: 0 0 0 .2rem rgba(246, 79, 75, .5) +} + +.btn-outline-danger.disabled, +.btn-outline-danger:disabled { + color: #f64f4b; + background-color: transparent +} + +.btn-outline-danger:not(:disabled):not(.disabled).active, +.btn-outline-danger:not(:disabled):not(.disabled):active, +.show>.btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #f64f4b; + border-color: #f64f4b +} + +.btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-danger.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(246, 79, 75, .5) +} + +.btn-outline-light { + color: #f8f9fa; + background-color: transparent; + background-image: none; + border-color: #f8f9fa +} + +.btn-outline-light:hover { + color: #191c2b; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light.focus, +.btn-outline-light:focus { + box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.btn-outline-light.disabled, +.btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent +} + +.btn-outline-light:not(:disabled):not(.disabled).active, +.btn-outline-light:not(:disabled):not(.disabled):active, +.show>.btn-outline-light.dropdown-toggle { + color: #191c2b; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light:not(:disabled):not(.disabled).active:focus, +.btn-outline-light:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-light.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(248, 249, 250, .5) +} + +.btn-outline-dark { + color: #22263b; + background-color: transparent; + background-image: none; + border-color: #22263b +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #22263b; + border-color: #22263b +} + +.btn-outline-dark.focus, +.btn-outline-dark:focus { + box-shadow: 0 0 0 .2rem rgba(34, 38, 59, .5) +} + +.btn-outline-dark.disabled, +.btn-outline-dark:disabled { + color: #22263b; + background-color: transparent +} + +.btn-outline-dark:not(:disabled):not(.disabled).active, +.btn-outline-dark:not(:disabled):not(.disabled):active, +.show>.btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #22263b; + border-color: #22263b +} + +.btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, +.show>.btn-outline-dark.dropdown-toggle:focus { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125), 0 0 0 .2rem rgba(34, 38, 59, .5) +} + +.btn-link { + font-weight: 400 +} + +.btn-link, +.btn-link:hover { + color: #6957da; + background-color: transparent +} + +.btn-link.focus, +.btn-link:focus, +.btn-link:hover { + text-decoration: underline; + border-color: transparent +} + +.btn-link.focus, +.btn-link:focus { + box-shadow: none +} + +.btn-link.disabled, +.btn-link:disabled { + color: #5a5b75; + opacity: .6; + cursor: not-allowed +} + +.btn-group-lg>.btn, +.btn-lg { + font-size: 15px; + font-size: 1.5rem; + padding: 1.2rem 2.4rem; + line-height: 2; + border-radius: .3rem +} + +.btn-group-lg>.btn i, +.btn-lg i { + font-size: 16px; + font-size: 1.6rem; + margin-top: -.5rem +} + +.btn-group-sm>.btn, +.btn-sm { + font-size: 13px; + font-size: 1.3rem; + padding: .9rem 1.2rem; + line-height: 1; + border-radius: .2rem +} + +.btn-group-sm>.btn i, +.btn-sm i { + font-size: 14px; + font-size: 1.4rem; + margin-top: -.4rem +} + +.btn-tertiary { + font-size: 13px; + font-size: 1.3rem; + padding: .9rem 1.2rem; + line-height: 1; + border-radius: .2rem; + color: #6957da; + padding-left: 0; + border: none; + box-shadow: none +} + +.btn-tertiary:hover:after { + right: -13px +} + +.btn-transparent { + border: none; + background: transparent; + box-shadow: none +} + +.btn-transparent.black { + color: #000 +} + +.btn-transparent.white { + color: #fff +} + +.btn-transparent:hover { + border: none; + background: transparent; + box-shadow: none +} + +.btn-transparent:active { + outline: none +} + +.btn-icon-left { + padding: 1.1rem .75rem +} + +.btn-icon-left i { + padding-right: 8px +} + +.btn-group-sm>.btn-icon-left.btn, +.btn-icon-left.btn-sm { + padding: .9rem .8rem +} + +.btn-group-sm>.btn-icon-left.btn i, +.btn-icon-left.btn-sm i { + padding-right: 0 +} + +.btn-group-lg>.btn-icon-left.btn, +.btn-icon-left.btn-lg { + padding: 1.2rem 1.6rem +} + +.btn-group-lg>.btn-icon-left.btn i, +.btn-icon-left.btn-lg i { + padding-right: 8px +} + +.btn-animation-left { + padding: 1.1rem 1.55rem; + padding-left: .05rem +} + +.btn-animation-left i { + transition: all .35s ease; + opacity: 0; + padding-right: 0 +} + +@media screen and (prefers-reduced-motion:reduce) { + .btn-animation-left i { + transition: none + } +} + +.btn-animation-left.btn-lg, +.btn-group-lg>.btn-animation-left.btn { + padding: 1.2rem 2.4rem; + padding-left: .4rem +} + +.btn-animation-left.btn-sm, +.btn-group-sm>.btn-animation-left.btn { + padding: .9rem 1.2rem; + padding-left: 0 +} + +.btn-animation-left:hover { + padding: 1.1rem .35rem +} + +.btn-animation-left:hover i { + opacity: 1; + padding-right: 8px +} + +.btn-animation-left:hover.btn-lg, +.btn-group-lg>.btn-animation-left.btn:hover { + padding: 1.2rem 1rem +} + +.btn-animation-left:hover.btn-sm, +.btn-group-sm>.btn-animation-left.btn:hover { + padding: .9rem .6rem +} + +.btn-animation-left:hover.btn-sm i, +.btn-group-sm>.btn-animation-left.btn:hover i { + padding-right: 0 +} + +.btn-animation-right { + padding: 1.1rem 1.55rem; + padding-right: .05rem +} + +.btn-animation-right i { + transition: all .35s ease; + opacity: 0; + padding-left: 0 +} + +@media screen and (prefers-reduced-motion:reduce) { + .btn-animation-right i { + transition: none + } +} + +.btn-animation-right.btn-lg, +.btn-group-lg>.btn-animation-right.btn { + padding: 1.2rem 2.4rem; + padding-right: .4rem +} + +.btn-animation-right.btn-sm, +.btn-group-sm>.btn-animation-right.btn { + padding: .9rem 1.2rem; + padding-right: 0 +} + +.btn-animation-right:hover { + padding: 1.1rem .35rem +} + +.btn-animation-right:hover i { + opacity: 1; + padding-left: 8px +} + +.btn-animation-right:hover.btn-lg, +.btn-group-lg>.btn-animation-right.btn:hover { + padding: 1.2rem 1rem +} + +.btn-animation-right:hover.btn-sm, +.btn-group-sm>.btn-animation-right.btn:hover { + padding: .9rem .6rem +} + +.btn-animation-right:hover.btn-sm i, +.btn-group-sm>.btn-animation-right.btn:hover i { + padding-left: 0 +} + +.btn-icon-right { + padding: 1.1rem .75rem +} + +.btn-icon-right i { + padding-left: 8px +} + +.btn-group-sm>.btn-icon-right.btn, +.btn-icon-right.btn-sm { + padding: .9rem .8rem +} + +.btn-group-sm>.btn-icon-right.btn i, +.btn-icon-right.btn-sm i { + padding-left: 0 +} + +.btn-group-lg>.btn-icon-right.btn, +.btn-icon-right.btn-lg { + padding: 1.2rem 1.6rem +} + +.btn-group-lg>.btn-icon-right.btn i, +.btn-icon-right.btn-lg i { + padding-left: 8px +} + +.btn-block { + display: block; + width: 100% +} + +.btn-block+.btn-block { + margin-top: .5rem +} + +input[type=button].btn-block, +input[type=reset].btn-block, +input[type=submit].btn-block { + width: 100% +} + +.btn-light, +.btn-light.disabled, +.btn-light:disabled, +.btn-light:hover { + color: #6957da +} + +.btn-outline-primary.disabled, +.btn-outline-primary:disabled, +.btn-outline-primary:hover, +.btn-primary, +.btn-primary-grad, +.btn-primary-grad.disabled, +.btn-primary-grad:disabled, +.btn-primary-grad:hover, +.btn-primary.disabled, +.btn-primary:disabled, +.btn-primary:hover, +.btn-transparent, +.btn-transparent:disabled, +.btn-transparent:hover, +.disabled.btn-transparent { + color: #fff +} + +.btn-shadow { + box-shadow: 0 4px 6px 0 rgba(50, 50, 93, .11) +} + +.tree-container ul { + list-style: none +} + +.tree-container i { + height: 16px; + width: 16px; + font-size: 12px; + text-align: center; + line-height: 16px; + color: #9b9cb0 +} + +.tree-container .first-branch { + padding-bottom: 10px; + border-bottom: 1px solid #efefef +} + +.fc-tree-leaf, +.tree-view { + position: relative +} + +.fc-tree-leaf li, +.fc-tree-leaf ul, +.tree-view li, +.tree-view ul { + padding-left: 0; + list-style: none; + list-style-type: none +} + +.fc-tree-leaf .title-container, +.tree-view .title-container { + display: flex; + background: #fff; + z-index: 999; + position: relative; + overflow: hidden; + align-items: center +} + +.fc-tree-leaf .tree-child-leaves, +.tree-view .tree-child-leaves { + display: block; + margin-left: 15px +} + +.fc-tree-leaf .tree-expando, +.tree-view .tree-expando { + cursor: pointer; + float: left; + position: relative; + text-align: center; + transition: all .7s +} + +.fc-tree-leaf .tree-expando.expanded, +.tree-view .tree-expando.expanded { + transform: rotate(90deg); + transition: all .7s +} + +.fc-tree-leaf .fc-tree-leaf-text, +.tree-view .fc-tree-leaf-text { + cursor: pointer; + float: left; + margin-left: 5px; + width: 100%; + transition: all .3s +} + +.fc-tree-leaf .fc-tree-leaf-text:hover, +.tree-view .fc-tree-leaf-text:hover { + transition: all .3s +} + +.fc-tree-leaf .tree-child-leaves, +.tree-view .tree-child-leaves { + position: relative; + z-index: 90 +} + +.fc-tree-leaf .fc-tree-leaf-content, +.tree-view .fc-tree-leaf-content { + position: relative; + overflow: hidden; + z-index: 99 +} + +.fade { + transition: opacity .15s linear +} + +@media screen and (prefers-reduced-motion:reduce) { + .fade { + transition: none + } +} + +.fade:not(.show) { + opacity: 0 +} + +.collapse:not(.show) { + display: none +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height .35s ease +} + +@media screen and (prefers-reduced-motion:reduce) { + .collapsing { + transition: none + } +} + +.dropdown, +.dropup { + position: relative +} + +.dropdown-toggle:after { + display: inline-block; + width: 0; + height: 0; + margin-left: .2125em; + vertical-align: .2125em; + content: ""; + border-top: .25em solid; + border-right: .25em solid transparent; + border-bottom: 0; + border-left: .25em solid transparent +} + +.dropdown-toggle:empty:after { + margin-left: 0 +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 1.25rem 0; + margin: .125rem 0 0; + font-size: 1.6rem; + color: #434456; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(49, 49, 49, .06); + border-radius: .5rem; + box-shadow: 0 3px 18px 0 rgba(67, 68, 86, .1) +} + +.dropdown-menu:before { + border-bottom: 8px solid #fff; + top: -7px; + z-index: 999 +} + +.dropdown-menu:after, +.dropdown-menu:before { + content: ""; + display: block; + position: absolute; + height: 0; + width: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 11px +} + +.dropdown-menu:after { + border-bottom: 8px solid #73748c; + top: -8px; + z-index: 998 +} + +.dropup .dropdown-menu { + margin-top: 0; + margin-bottom: .125rem +} + +.dropup .dropdown-toggle:after { + display: inline-block; + width: 0; + height: 0; + margin-left: .2125em; + vertical-align: .2125em; + content: ""; + border-top: 0; + border-right: .25em solid transparent; + border-bottom: .25em solid; + border-left: .25em solid transparent +} + +.dropup .dropdown-toggle:empty:after { + margin-left: 0 +} + +.dropright .dropdown-menu { + margin-top: 0; + margin-left: .125rem +} + +.dropright .dropdown-toggle:after { + display: inline-block; + width: 0; + height: 0; + margin-left: .2125em; + vertical-align: .2125em; + content: ""; + border-top: .25em solid transparent; + border-right: 0; + border-bottom: .25em solid transparent; + border-left: .25em solid +} + +.dropright .dropdown-toggle:empty:after { + margin-left: 0 +} + +.dropright .dropdown-toggle:after { + vertical-align: 0 +} + +.dropleft .dropdown-menu { + margin-top: 0; + margin-right: .125rem +} + +.dropleft .dropdown-toggle:after { + display: inline-block; + width: 0; + height: 0; + margin-left: .2125em; + vertical-align: .2125em; + content: ""; + display: none +} + +.dropleft .dropdown-toggle:before { + display: inline-block; + width: 0; + height: 0; + margin-right: .2125em; + vertical-align: .2125em; + content: ""; + border-top: .25em solid transparent; + border-right: .25em solid; + border-bottom: .25em solid transparent +} + +.dropleft .dropdown-toggle:empty:after { + margin-left: 0 +} + +.dropleft .dropdown-toggle:before { + vertical-align: 0 +} + +.dropdown-divider { + height: 0; + margin: .5rem 0; + overflow: hidden; + border-top: 1px solid #9f9fb9 +} + +.dropdown-item { + display: block; + width: 100%; + padding: .65rem 2.4rem; + clear: both; + font-size: 14px; + font-size: 1.4rem; + font-weight: 400; + color: #191c2b; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0 +} + +.dropdown-item:focus, +.dropdown-item:hover { + color: #10121b; + text-decoration: none; + background: #fff linear-gradient(180deg, #fff, #fff) repeat-x +} + +.dropdown-item.active, +.dropdown-item:active { + color: #fff; + text-decoration: none; + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x +} + +.dropdown-item.disabled, +.dropdown-item:disabled { + color: #5a5b75; + background-color: transparent; + background-image: none +} + +.dropdown-item:hover { + color: #191c2b; + position: relative; + padding: .55rem 2.3rem; + border: 1px solid rgba(49, 49, 49, .06); + border-radius: -1.5rem; + box-shadow: 0 3px 10px 0 rgba(67, 68, 86, .1) +} + +.dropdown-menu.show { + display: block +} + +.dropdown-header { + display: block; + padding: 1.25rem 2.4rem; + margin-bottom: 0; + font-size: 1.3rem; + color: #5a5b75; + white-space: nowrap +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle +} + +.btn-group-vertical>.btn, +.btn-group>.btn { + position: relative; + flex: 0 1 auto +} + +.btn-group-vertical>.btn.active, +.btn-group-vertical>.btn:active, +.btn-group-vertical>.btn:focus, +.btn-group-vertical>.btn:hover, +.btn-group>.btn.active, +.btn-group>.btn:active, +.btn-group>.btn:focus, +.btn-group>.btn:hover { + z-index: 1 +} + +.btn-group-vertical .btn+.btn, +.btn-group-vertical .btn+.btn-group, +.btn-group-vertical .btn-group+.btn, +.btn-group-vertical .btn-group+.btn-group, +.btn-group .btn+.btn, +.btn-group .btn+.btn-group, +.btn-group .btn-group+.btn, +.btn-group .btn-group+.btn-group { + margin-left: -1px +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start +} + +.btn-toolbar .input-group { + width: auto +} + +.btn-group>.btn:first-child { + margin-left: 0 +} + +.btn-group>.btn-group:not(:last-child)>.btn, +.btn-group>.btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group>.btn-group:not(:first-child)>.btn, +.btn-group>.btn:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.dropdown-toggle-split { + padding-right: 1.1625rem; + padding-left: 1.1625rem +} + +.dropdown-toggle-split:after, +.dropright .dropdown-toggle-split:after, +.dropup .dropdown-toggle-split:after { + margin-left: 0 +} + +.dropleft .dropdown-toggle-split:before { + margin-right: 0 +} + +.btn-group-sm>.btn+.dropdown-toggle-split, +.btn-sm+.dropdown-toggle-split { + padding-right: .9rem; + padding-left: .9rem +} + +.btn-group-lg>.btn+.dropdown-toggle-split, +.btn-lg+.dropdown-toggle-split { + padding-right: 1.8rem; + padding-left: 1.8rem +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(49, 49, 49, .125) +} + +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center +} + +.btn-group-vertical .btn, +.btn-group-vertical .btn-group { + width: 100% +} + +.btn-group-vertical>.btn+.btn, +.btn-group-vertical>.btn+.btn-group, +.btn-group-vertical>.btn-group+.btn, +.btn-group-vertical>.btn-group+.btn-group { + margin-top: -1px; + margin-left: 0 +} + +.btn-group-vertical>.btn-group:not(:last-child)>.btn, +.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical>.btn-group:not(:first-child)>.btn, +.btn-group-vertical>.btn:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.btn-group-toggle>.btn, +.btn-group-toggle>.btn-group>.btn { + margin-bottom: 0 +} + +.btn-group-toggle>.btn-group>.btn input[type=checkbox], +.btn-group-toggle>.btn-group>.btn input[type=radio], +.btn-group-toggle>.btn input[type=checkbox], +.btn-group-toggle>.btn input[type=radio] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100% +} + +.input-group>.custom-file, +.input-group>.custom-select, +.input-group>.form-control { + position: relative; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0 +} + +.input-group>.custom-file:focus, +.input-group>.custom-select:focus, +.input-group>.form-control:focus { + z-index: 3 +} + +.input-group>.custom-file+.custom-file, +.input-group>.custom-file+.custom-select, +.input-group>.custom-file+.form-control, +.input-group>.custom-select+.custom-file, +.input-group>.custom-select+.custom-select, +.input-group>.custom-select+.form-control, +.input-group>.form-control+.custom-file, +.input-group>.form-control+.custom-select, +.input-group>.form-control+.form-control { + margin-left: -1px +} + +.input-group>.custom-select:not(:last-child), +.input-group>.form-control:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group>.custom-select:not(:first-child), +.input-group>.form-control:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group>.custom-file { + display: flex; + align-items: center +} + +.input-group>.custom-file:not(:last-child) .custom-file-label, +.input-group>.custom-file:not(:last-child) .custom-file-label:after { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group>.custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group-append, +.input-group-prepend { + display: flex +} + +.input-group-append .btn, +.input-group-prepend .btn { + position: relative; + z-index: 2 +} + +.input-group-append .btn+.btn, +.input-group-append .btn+.input-group-text, +.input-group-append .input-group-text+.btn, +.input-group-append .input-group-text+.input-group-text, +.input-group-prepend .btn+.btn, +.input-group-prepend .btn+.input-group-text, +.input-group-prepend .input-group-text+.btn, +.input-group-prepend .input-group-text+.input-group-text { + margin-left: -1px +} + +.input-group-prepend { + margin-right: -1px +} + +.input-group-append { + margin-left: -1px +} + +.input-group-text { + display: flex; + align-items: center; + padding: 1.1rem 1.55rem; + margin-bottom: 0; + font-size: 1.6rem; + font-weight: 400; + line-height: 1.5; + color: #434456; + text-align: center; + white-space: nowrap; + background-color: #9f9fb9; + border: 1px solid #dadae4; + border-radius: .5rem +} + +.input-group-text input[type=checkbox], +.input-group-text input[type=radio] { + margin-top: 0 +} + +.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle), +.input-group>.input-group-append:last-child>.input-group-text:not(:last-child), +.input-group>.input-group-append:not(:last-child)>.btn, +.input-group>.input-group-append:not(:last-child)>.input-group-text, +.input-group>.input-group-prepend>.btn, +.input-group>.input-group-prepend>.input-group-text { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group>.input-group-append>.btn, +.input-group>.input-group-append>.input-group-text, +.input-group>.input-group-prepend:first-child>.btn:not(:first-child), +.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child), +.input-group>.input-group-prepend:not(:first-child)>.btn, +.input-group>.input-group-prepend:not(:first-child)>.input-group-text { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem +} + +.custom-control-inline { + display: inline-flex; + margin-right: 1rem +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0 +} + +.custom-control-input:checked~.custom-control-label:before { + color: #fff; + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x; + box-shadow: none +} + +.custom-control-input:focus~.custom-control-label:before { + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.custom-control-input:active~.custom-control-label:before { + color: #fff; + background-color: #eafaf3; + box-shadow: none +} + +.custom-control-input:disabled~.custom-control-label { + color: #5a5b75 +} + +.custom-control-input:disabled~.custom-control-label:before { + background-color: #9f9fb9 +} + +.custom-control-label { + position: relative; + margin-bottom: 0 +} + +.custom-control-label:before { + pointer-events: none; + user-select: none; + background-color: #8786a4; + box-shadow: inset 0 .25rem .25rem rgba(49, 49, 49, .1) +} + +.custom-control-label:after, +.custom-control-label:before { + position: absolute; + top: .25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: "" +} + +.custom-control-label:after { + background-repeat: no-repeat; + background-position: 50%; + background-size: 50% 50% +} + +.custom-checkbox .custom-control-label:before { + border-radius: .5rem +} + +.custom-checkbox .custom-control-input:checked~.custom-control-label:before { + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x +} + +.custom-checkbox .custom-control-input:checked~.custom-control-label:after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") +} + +.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before { + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x; + box-shadow: none +} + +.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E") +} + +.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before { + background-color: rgba(89, 217, 157, .5) +} + +.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before { + background-color: rgba(89, 217, 157, .5) +} + +.custom-radio .custom-control-label:before { + border-radius: 50% +} + +.custom-radio .custom-control-input:checked~.custom-control-label:before { + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x +} + +.custom-radio .custom-control-input:checked~.custom-control-label:after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E") +} + +.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before { + background-color: rgba(89, 217, 157, .5) +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(4.6rem + 2px); + padding: .375rem 1.75rem .375rem .75rem; + line-height: 1.5; + color: #434456; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%2322263b' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center; + background-size: 8px 10px; + border: 1px solid #dadae4; + border-radius: .5rem; + appearance: none +} + +.custom-select:focus { + border-color: #c1f1da; + outline: 0; + box-shadow: inset 0 1px 2px rgba(49, 49, 49, .075), 0 0 5px rgba(193, 241, 218, .5) +} + +.custom-select:focus::-ms-value { + color: #434456; + background-color: #fff +} + +.custom-select[multiple], +.custom-select[size]:not([size="1"]) { + height: auto; + padding-right: .75rem; + background-image: none +} + +.custom-select:disabled { + color: #5a5b75; + background-color: #9f9fb9 +} + +.custom-select::-ms-expand { + opacity: 0 +} + +.custom-select-sm { + height: calc(3.1rem + 2px); + font-size: 75% +} + +.custom-select-lg, +.custom-select-sm { + padding-top: .375rem; + padding-bottom: .375rem +} + +.custom-select-lg { + height: calc(6.4rem + 2px); + font-size: 125% +} + +.custom-file { + display: inline-block; + margin-bottom: 0 +} + +.custom-file, +.custom-file-input { + position: relative; + width: 100%; + height: calc(4.6rem + 2px) +} + +.custom-file-input { + z-index: 2; + margin: 0; + opacity: 0 +} + +.custom-file-input:focus~.custom-file-label { + border-color: #c1f1da; + box-shadow: 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.custom-file-input:focus~.custom-file-label:after { + border-color: #c1f1da +} + +.custom-file-input:lang(en)~.custom-file-label:after { + content: "Browse" +} + +.custom-file-label { + left: 0; + z-index: 1; + height: calc(4.6rem + 2px); + background-color: #fff; + border: 1px solid #dadae4; + border-radius: .5rem; + box-shadow: inset 0 1px 1px rgba(49, 49, 49, .075) +} + +.custom-file-label, +.custom-file-label:after { + position: absolute; + top: 0; + right: 0; + padding: 1.1rem 1.55rem; + line-height: 1.5; + color: #434456 +} + +.custom-file-label:after { + bottom: 0; + z-index: 3; + display: block; + height: 4.6rem; + content: "Browse"; + background: #9f9fb9 linear-gradient(180deg, #adadc4, #9f9fb9) repeat-x; + border-left: 1px solid #dadae4; + border-radius: 0 .5rem .5rem 0 +} + +.custom-range { + width: 100%; + padding-left: 0; + background-color: transparent; + appearance: none +} + +.custom-range:focus { + outline: none +} + +.custom-range::-moz-focus-outer { + border: 0 +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -.25rem; + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x; + border: 0; + border-radius: 1rem; + box-shadow: 0 .1rem .25rem rgba(49, 49, 49, .1); + appearance: none +} + +.custom-range::-webkit-slider-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.custom-range::-webkit-slider-thumb:active { + background: #eafaf3 linear-gradient(180deg, #edfbf5, #eafaf3) repeat-x +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: .5rem; + color: transparent; + cursor: pointer; + background-color: #8786a4; + border-color: transparent; + border-radius: 1rem; + box-shadow: inset 0 .25rem .25rem rgba(49, 49, 49, .1) +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x; + border: 0; + border-radius: 1rem; + box-shadow: 0 .1rem .25rem rgba(49, 49, 49, .1); + appearance: none +} + +.custom-range::-moz-range-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.custom-range::-moz-range-thumb:active { + background: #eafaf3 linear-gradient(180deg, #edfbf5, #eafaf3) repeat-x +} + +.custom-range::-moz-range-track { + width: 100%; + height: .5rem; + color: transparent; + cursor: pointer; + background-color: #8786a4; + border-color: transparent; + border-radius: 1rem; + box-shadow: inset 0 .25rem .25rem rgba(49, 49, 49, .1) +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x; + border: 0; + border-radius: 1rem; + box-shadow: 0 .1rem .25rem rgba(49, 49, 49, .1); + appearance: none +} + +.custom-range::-ms-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.custom-range::-ms-thumb:active { + background: #eafaf3 linear-gradient(180deg, #edfbf5, #eafaf3) repeat-x +} + +.custom-range::-ms-track { + width: 100%; + height: .5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: .5rem; + box-shadow: inset 0 .25rem .25rem rgba(49, 49, 49, .1) +} + +.custom-range::-ms-fill-lower, +.custom-range::-ms-fill-upper { + background-color: #8786a4; + border-radius: 1rem +} + +.custom-range::-ms-fill-upper { + margin-right: 15px +} + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.nav-link { + display: block; + padding: .8rem 2.4rem +} + +.nav-link:focus, +.nav-link:hover { + text-decoration: none +} + +.nav-link.disabled { + color: #5a5b75 +} + +.nav-tabs { + border-bottom: 1px solid #8786a4 +} + +.nav-tabs .nav-item { + margin-bottom: -1px +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + outline: none +} + +.nav-tabs .nav-link:focus, +.nav-tabs .nav-link:hover { + border-color: #9f9fb9 #9f9fb9 #8786a4; + outline: none +} + +.nav-tabs .nav-link.disabled { + color: #5a5b75; + background-color: transparent; + border-color: transparent +} + +.nav-tabs .nav-item.show .nav-link, +.nav-tabs .nav-link.active { + color: #434456; + background-color: #fff; + border-color: #8786a4 #8786a4 #fff; + outline: none +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.nav-pills { + margin-bottom: 40px +} + +.nav-pills .nav-link { + color: #5a5b75; + border-radius: .5rem +} + +.nav-pills .nav-link:visited { + color: #5a5b75 +} + +.nav-pills .nav-link i { + margin-top: -.4rem; + font-size: 18px; + font-size: 1.8rem; + margin-right: 5px; + color: #686980 +} + +.nav-pills .nav-link:active, +.nav-pills .nav-link:hover { + color: #6957da +} + +.nav-pills .nav-link:active i, +.nav-pills .nav-link:hover i { + color: #fff +} + +.nav-pills .nav-link.active, +.nav-pills .show>.nav-link { + color: #191c2b; + background-color: #fff; + box-shadow: 0 4px 18px 1px rgba(161, 166, 181, .1) +} + +.nav-pills .nav-link.active i, +.nav-pills .show>.nav-link i { + color: #fff; + color: transparent; + -webkit-background-clip: text; + background-clip: text +} + +.vertical-nav .nav-link { + min-width: 50%; + text-align: left; + padding: 6px 16px !important; + display: flex; + align-items: center; + color: #686980; + font-size: 14px; + transition: all .1s ease-in-out; + margin-bottom: 10px !important +} + +.vertical-nav .nav-link.active { + color: #fff !important; + line-height: 20px; + box-shadow: 0 4px 9px 0 rgba(23, 28, 33, .06); + background-color: #6957da !important; + border-radius: 4px +} + +.vertical-nav .nav-link.active span { + background-color: #a296e9 +} + +.vertical-nav .nav-link span { + display: inline-block; + height: 32px; + width: 32px; + background-color: rgba(104, 105, 128, .43); + border-radius: 2.24px; + box-shadow: 0 5px 13px 0 rgba(62, 57, 107, .04); + margin-right: 13px +} + +.vertical-nav .nav-link span i { + font-size: 32px !important; + color: #fff !important +} + +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center +} + +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center +} + +.tab-content>.tab-pane { + display: none +} + +.tab-content>.active { + display: block +} + +.nav-center { + justify-content: center; + flex-direction: row +} + +.navbar { + position: relative; + padding: .5rem 1rem +} + +.navbar, +.navbar>.container, +.navbar>.container-fluid { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between +} + +.navbar-brand { + display: inline-block; + padding-top: .5rem; + padding-bottom: .5rem; + margin-right: 1rem; + font-size: 2rem; + line-height: inherit; + white-space: nowrap +} + +.navbar-brand:focus, +.navbar-brand:hover { + text-decoration: none +} + +.navbar-nav { + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif; + font-weight: 600; + font-size: 16px; + font-size: 1.6rem; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0 +} + +@media (min-width:992px) { + .navbar-nav .dropdown .dropdown-menu { + padding: 1rem 0 + } + .navbar-nav .dropdown:hover .dropdown-menu { + display: block + } +} + +.navbar-nav .Explore .dropdown-menu a:last-child { + border-top: 2px solid #fff; + background-color: #f3f7fb +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; + box-shadow: none; + border: none; + padding: 0 +} + +.navbar-nav .dropdown-menu:after, +.navbar-nav .dropdown-menu:before { + display: none +} + +@media (min-width:992px) { + .navbar-nav .dropdown-menu { + padding: 0; + box-shadow: 0 3px 18px 0 rgba(67, 68, 86, .1); + border: 1px solid rgba(49, 49, 49, .06) + } + .navbar-nav .dropdown-menu:before { + border-bottom: 8px solid #fff; + top: -7px; + z-index: 999 + } + .navbar-nav .dropdown-menu:after, + .navbar-nav .dropdown-menu:before { + content: ""; + display: block; + position: absolute; + height: 0; + width: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 44% + } + .navbar-nav .dropdown-menu:after { + border-bottom: 8px solid #cbcbd9; + top: -8px; + z-index: 998 + } +} + +.navbar-nav .dropdown-menu .dropdown-item { + padding: 1rem; + font-size: 15px; + font-size: 1.5rem; + line-height: 1.6; + color: #5a5b75; + white-space: normal; + min-width: 200px; + transition: all .05s ease +} + +@media (min-width:992px) { + .navbar-nav .dropdown-menu .dropdown-item { + padding: 1rem 2.4rem + } +} + +.navbar-nav .dropdown-menu .dropdown-item i { + font-size: 20px; + font-size: 2rem; + opacity: 1; + margin-right: 10px; + vertical-align: bottom; + float: left; + padding: 1rem; + border-radius: 50%; + box-shadow: 0 2px 4px 0 rgba(62, 57, 107, .13); + background-color: #fff +} + +.navbar-nav .dropdown-menu .dropdown-item:hover { + color: #6957da; + position: relative; + border: none; + box-shadow: none; + background: rgba(62, 57, 107, .03); + transition: all .05s ease +} + +@media (min-width:992px) { + .navbar-nav .dropdown-menu .dropdown-item:hover i { + opacity: 1; + background: linear-gradient(315deg, #43e695, #3bb2b8); + color: #fff !important + } +} + +.navbar-nav .dropdown-menu .dropdown-item.active, +.navbar-nav .dropdown-menu .dropdown-item:active { + background-color: #fff +} + +.navbar-nav .dropdown-menu .dropdown-item .link-info-wrapper { + padding-left: 55px; + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif +} + +.navbar-nav .dropdown-menu .dropdown-item .link-info-wrapper .info { + display: block; + line-height: 1.1; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + color: #73748c +} + +.navbar-text { + display: inline-block; + padding-top: .8rem; + padding-bottom: .8rem +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; + background-color: #fff; + padding: 4rem .4rem 2rem 2rem; + position: absolute; + top: 10px; + right: 10px; + width: 95%; + max-width: 350px; + border-radius: .5rem +} + +@media (max-width:799.98px) { + .navbar-collapse { + max-width: 404px + } +} + +.navbar-collapse .navbar-nav { + padding-right: 1.6rem +} + +.navbar-toggler { + padding: .25rem .75rem; + font-size: 2rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + position: absolute; + right: 1rem +} + +.navbar-toggler:focus, +.navbar-toggler:hover { + text-decoration: none; + color: #fff +} + +.navbar-toggler:not(:disabled):not(.disabled) { + cursor: pointer +} + +.navbar-toggler:focus { + outline: none +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat 50%; + background-size: 100% 100% +} + +@media (max-width:575.98px) { + .navbar-expand-sm>.container, + .navbar-expand-sm>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:576px) { + .navbar-expand-sm { + flex-flow: row nowrap; + justify-content: flex-start + } + .navbar-expand-sm .navbar-nav { + flex-direction: row + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-sm .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem + } + .navbar-expand-sm .navbar-nav .nav-item.active a { + position: relative + } + .navbar-expand-sm .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px + } + .navbar-expand-sm .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important + } + .navbar-expand-sm>.container, + .navbar-expand-sm>.container-fluid { + flex-wrap: nowrap + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none + } + .navbar-expand-sm .navbar-toggler { + display: none + } + .navbar-expand-sm .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width:799.98px) { + .navbar-expand-md>.container, + .navbar-expand-md>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:800px) { + .navbar-expand-md { + flex-flow: row nowrap; + justify-content: flex-start + } + .navbar-expand-md .navbar-nav { + flex-direction: row + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-md .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem + } + .navbar-expand-md .navbar-nav .nav-item.active a { + position: relative + } + .navbar-expand-md .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px + } + .navbar-expand-md .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important + } + .navbar-expand-md>.container, + .navbar-expand-md>.container-fluid { + flex-wrap: nowrap + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none + } + .navbar-expand-md .navbar-toggler { + display: none + } + .navbar-expand-md .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width:991.98px) { + .navbar-expand-lg>.container, + .navbar-expand-lg>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start + } + .navbar-expand-lg .navbar-nav { + flex-direction: row + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-lg .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem + } + .navbar-expand-lg .navbar-nav .nav-item.active a { + position: relative + } + .navbar-expand-lg .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px + } + .navbar-expand-lg .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important + } + .navbar-expand-lg>.container, + .navbar-expand-lg>.container-fluid { + flex-wrap: nowrap + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none + } + .navbar-expand-lg .navbar-toggler { + display: none + } + .navbar-expand-lg .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width:1199.98px) { + .navbar-expand-xl>.container, + .navbar-expand-xl>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:1200px) { + .navbar-expand-xl { + flex-flow: row nowrap; + justify-content: flex-start + } + .navbar-expand-xl .navbar-nav { + flex-direction: row + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-xl .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem + } + .navbar-expand-xl .navbar-nav .nav-item.active a { + position: relative + } + .navbar-expand-xl .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px + } + .navbar-expand-xl .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important + } + .navbar-expand-xl>.container, + .navbar-expand-xl>.container-fluid { + flex-wrap: nowrap + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none + } + .navbar-expand-xl .navbar-toggler { + display: none + } + .navbar-expand-xl .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width:1439.98px) { + .navbar-expand-xxl>.container, + .navbar-expand-xxl>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:1440px) { + .navbar-expand-xxl { + flex-flow: row nowrap; + justify-content: flex-start + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-xxl .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem + } + .navbar-expand-xxl .navbar-nav .nav-item.active a { + position: relative + } + .navbar-expand-xxl .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px + } + .navbar-expand-xxl .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important + } + .navbar-expand-xxl>.container, + .navbar-expand-xxl>.container-fluid { + flex-wrap: nowrap + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none + } + .navbar-expand-xxl .navbar-toggler { + display: none + } + .navbar-expand-xxl .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width:1599.98px) { + .navbar-expand-exl>.container, + .navbar-expand-exl>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:1600px) { + .navbar-expand-exl { + flex-flow: row nowrap; + justify-content: flex-start + } + .navbar-expand-exl .navbar-nav { + flex-direction: row + } + .navbar-expand-exl .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-exl .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-exl .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem + } + .navbar-expand-exl .navbar-nav .nav-item.active a { + position: relative + } + .navbar-expand-exl .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px + } + .navbar-expand-exl .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important + } + .navbar-expand-exl>.container, + .navbar-expand-exl>.container-fluid { + flex-wrap: nowrap + } + .navbar-expand-exl .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none + } + .navbar-expand-exl .navbar-toggler { + display: none + } + .navbar-expand-exl .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +.navbar-expand { + flex-flow: row nowrap; + justify-content: flex-start +} + +.navbar-expand>.container, +.navbar-expand>.container-fluid { + padding-right: 0; + padding-left: 0 +} + +.navbar-expand .navbar-nav { + flex-direction: row +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute +} + +.navbar-expand .navbar-nav .dropdown-menu-right { + right: 0; + left: auto +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 1.2rem; + padding-left: 1.2rem +} + +.navbar-expand .navbar-nav .nav-item.active a { + position: relative +} + +.navbar-expand .navbar-nav .nav-item.active a:after { + content: ""; + display: block; + width: 24px; + height: 3px; + margin: 0 auto; + background-color: #59d99d; + border-radius: 2px; + position: absolute; + left: 50%; + bottom: -11px; + margin-left: -12px +} + +.navbar-expand .navbar-nav .nav-item:first-child .dropdown-menu { + min-width: 300px; + left: -100% !important +} + +.navbar-expand>.container, +.navbar-expand>.container-fluid { + flex-wrap: nowrap +} + +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; + background-color: transparent; + padding: initial; + position: relative; + top: auto; + right: auto; + width: auto; + max-width: none; + border-top: none +} + +.navbar-expand .navbar-toggler { + display: none +} + +.navbar-expand .dropup .dropdown-menu { + top: auto; + bottom: 100% +} + +.navbar-light { + box-shadow: 0 10px 40px 0 rgba(62, 57, 107, .07) +} + +.navbar-light .navbar-brand, +.navbar-light .navbar-brand:focus, +.navbar-light .navbar-brand:hover { + color: rgba(49, 49, 49, .9) +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(49, 49, 49, .6) +} + +.navbar-light .navbar-nav .nav-link:focus, +.navbar-light .navbar-nav .nav-link:hover { + color: rgba(49, 49, 49, .9) +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(49, 49, 49, .3) +} + +.navbar-light .navbar-nav .active>.nav-link, +.navbar-light .navbar-nav .nav-link.active, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .show>.nav-link { + color: rgba(49, 49, 49, .9) +} + +.navbar-light .navbar-toggler { + color: rgba(49, 49, 49, .6) +} + +.navbar-light .navbar-toggler-icon { + position: relative; + z-index: 1200 +} + +.navbar-light .navbar-toggler-icon, +.navbar-light .navbar-toggler.collapsed .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(49, 49, 49, 0.6)' stroke-width='3' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-light .navbar-text { + color: rgba(49, 49, 49, .6) +} + +.navbar-light .navbar-text a, +.navbar-light .navbar-text a:focus, +.navbar-light .navbar-text a:hover { + color: rgba(49, 49, 49, .9) +} + +.navbar-transparent .navbar-brand, +.navbar-transparent .navbar-brand:focus, +.navbar-transparent .navbar-brand:hover { + color: #fff +} + +.navbar-transparent .navbar-nav .nav-link { + color: rgba(49, 49, 49, .6) +} + +@media (min-width:992px) { + .navbar-transparent .navbar-nav .nav-link { + color: #fff + } +} + +.navbar-transparent .navbar-nav .nav-link:focus, +.navbar-transparent .navbar-nav .nav-link:hover { + color: rgba(49, 49, 49, .9) +} + +@media (min-width:992px) { + .navbar-transparent .navbar-nav .nav-link:focus, + .navbar-transparent .navbar-nav .nav-link:hover { + color: #fff + } +} + +.navbar-transparent .navbar-nav .nav-link.disabled { + color: hsla(0, 0%, 100%, .25) +} + +.navbar-transparent .navbar-nav .active>.nav-link, +.navbar-transparent .navbar-nav .nav-link.active, +.navbar-transparent .navbar-nav .nav-link.show, +.navbar-transparent .navbar-nav .show>.nav-link { + color: rgba(49, 49, 49, .9) +} + +@media (min-width:992px) { + .navbar-transparent .navbar-nav .active>.nav-link, + .navbar-transparent .navbar-nav .nav-link.active, + .navbar-transparent .navbar-nav .nav-link.show, + .navbar-transparent .navbar-nav .show>.nav-link { + color: #fff + } +} + +.navbar-transparent .navbar-toggler { + color: #fff +} + +.navbar-transparent .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(49, 49, 49, 0.6)' stroke-width='3' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); + position: relative; + z-index: 1200 +} + +.navbar-transparent .navbar-toggler.collapsed .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-transparent .navbar-text, +.navbar-transparent .navbar-text a, +.navbar-transparent .navbar-text a:focus, +.navbar-transparent .navbar-text a:hover { + color: #fff +} + +.navbar-transparent .navbar-collapse { + box-shadow: none +} + +.navbar-dark .navbar-brand, +.navbar-dark .navbar-brand:focus, +.navbar-dark .navbar-brand:hover { + color: #fff +} + +.navbar-dark .navbar-nav .nav-link { + color: hsla(0, 0%, 100%, .5) +} + +.navbar-dark .navbar-nav .nav-link:focus, +.navbar-dark .navbar-nav .nav-link:hover { + color: hsla(0, 0%, 100%, .75) +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: hsla(0, 0%, 100%, .25) +} + +.navbar-dark .navbar-nav .active>.nav-link, +.navbar-dark .navbar-nav .nav-link.active, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .show>.nav-link { + color: #fff +} + +.navbar-dark .navbar-toggler { + color: hsla(0, 0%, 100%, .5) +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-dark .navbar-text { + color: hsla(0, 0%, 100%, .5) +} + +.navbar-dark .navbar-text a, +.navbar-dark .navbar-text a:focus, +.navbar-dark .navbar-text a:hover { + color: #fff +} + +@media (min-width:992px) { + #navbar .dropdown-menu { + left: -45% + } +} + +@media (max-width:991.98px) { + #navbar .dropdown-menu { + padding-left: 3.1rem + } +} + +.card { + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 0 solid rgba(49, 49, 49, .125); + border-radius: .5rem +} + +.card>hr { + margin-right: 0; + margin-left: 0 +} + +.card>.list-group:first-child .list-group-item:first-child { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem +} + +.card>.list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem +} + +.card-body { + flex: 1 1 auto; + padding: 2.4rem +} + +.card-body.card-body-cropped { + overflow: hidden; + margin: 3rem; + padding: 0; + max-height: 93px +} + +@media (min-width:576px) { + .card-body.card-body-cropped { + max-height: 93px + } +} + +@media (min-width:800px) { + .card-body.card-body-cropped { + max-height: 93px + } +} + +@media (min-width:992px) { + .card-body.card-body-cropped { + max-height: 98px + } +} + +@media (min-width:1200px) { + .card-body.card-body-cropped { + max-height: 82px + } +} + +@media (min-width:1600px) { + .card-body.card-body-cropped { + max-height: 83px + } +} + +.card-title { + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif; + font-weight: 600; + font-size: 15px; + font-size: 1.5rem; + line-height: 1.5 !important; + margin-bottom: 2.4rem; + color: #212344 +} + +.card-title+.card-subtitle { + margin-top: -2rem; + margin-bottom: 0 +} + +.card-text { + color: #686980 +} + +.card-text, +.card-text p { + font-size: 14px; + font-size: 1.4rem; + line-height: 1.5 +} + +.card-text:last-child { + margin-bottom: 0 +} + +.card-link:hover { + text-decoration: none +} + +.card-link+.card-link { + margin-left: 2.4rem +} + +.card-header { + padding: 2.4rem; + margin-bottom: 0 +} + +.card-header:first-child { + border-radius: 0.5rem 0.5rem 0 0 +} + +.card-header+.list-group .list-group-item:first-child { + border-top: 0 +} + +.card-footer { + padding: 2.4rem +} + +.card-footer:last-child { + border-radius: 0 0 0.5rem 0.5rem +} + +.card-header-tabs { + margin-bottom: -2.4rem; + border-bottom: 0 +} + +.card-header-pills, +.card-header-tabs { + margin-right: -1.2rem; + margin-left: -1.2rem +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem +} + +.card-img { + width: 100%; + border-radius: 0.5rem +} + +.card-img-top { + width: 100%; + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: 0.5rem; + border-bottom-left-radius: 0.5rem +} + +.card-deck { + display: flex; + flex-direction: column +} + +.card-deck .card { + margin-bottom: 15px +} + +@media (min-width:576px) { + .card-deck { + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px + } + .card-deck .card { + display: flex; + flex: 1 0 0%; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px + } +} + +.card-group { + display: flex; + flex-direction: column +} + +.card-group>.card { + margin-bottom: 15px +} + +@media (min-width:576px) { + .card-group { + flex-flow: row wrap + } + .card-group>.card { + flex: 1 0 0%; + margin-bottom: 0 + } + .card-group>.card+.card { + margin-left: 0; + border-left: 0 + } + .card-group>.card:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + .card-group>.card:first-child .card-header, + .card-group>.card:first-child .card-img-top { + border-top-right-radius: 0 + } + .card-group>.card:first-child .card-footer, + .card-group>.card:first-child .card-img-bottom { + border-bottom-right-radius: 0 + } + .card-group>.card:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + .card-group>.card:last-child .card-header, + .card-group>.card:last-child .card-img-top { + border-top-left-radius: 0 + } + .card-group>.card:last-child .card-footer, + .card-group>.card:last-child .card-img-bottom { + border-bottom-left-radius: 0 + } + .card-group>.card:only-child { + border-radius: .5rem + } + .card-group>.card:only-child .card-header, + .card-group>.card:only-child .card-img-top { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem + } + .card-group>.card:only-child .card-footer, + .card-group>.card:only-child .card-img-bottom { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem + } + .card-group>.card:not(:first-child):not(:last-child):not(:only-child), + .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer, + .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header, + .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, + .card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top { + border-radius: 0 + } +} + +.card-columns .card { + margin-bottom: 2.4rem +} + +@media (min-width:576px) { + .card-columns { + column-count: 3; + column-gap: 1.25rem + } + .card-columns .card { + display: inline-block; + width: 100% + } +} + +.card { + position: relative; + overflow: hidden +} + +.card.card-bordered { + border: 1px solid rgba(105, 87, 218, .06) +} + +.card .card-header .card-heading-wrapper { + display: flex; + align-items: flex-start; + width: 100% +} + +.card .card-header .card-heading-wrapper:after { + display: block; + clear: both; + content: "" +} + +.card .card-header .card-heading-wrapper .card-title { + flex: 1 +} + +.card .card-header .card-heading-wrapper .card-icon { + margin-right: 1rem !important; + width: 50px; + height: 50px; + background: url("http://via.placeholder.com/50x50") no-repeat 0 0 +} + +.card .card-header .card-heading-wrapper .float-right, +.card .card-header .card-heading-wrapper img { + margin-right: 1rem !important +} + +.card .card-header .card-heading-wrapper .card-title { + font-size: 19px; + font-size: 1.9rem; + line-height: 1.22; + margin-bottom: 3rem +} + +.card .card-header .card-heading-wrapper .card-title+.card-icon, +.card .card-header .card-heading-wrapper .card-title+.float-right, +.card .card-header .card-heading-wrapper .card-title+img { + margin-right: 0 !important; + margin-left: 1rem !important +} + +.card .card-header .card-heading-wrapper .card-title.bold { + font-family: basefontSemiBold, Helvetica Neue, Arial, sans-serif +} + +.card .card-header .card-heading-wrapper p { + font-size: 16px; + font-size: 1.6rem; + line-height: 1.5 +} + +.card .card-header .card-heading-wrapper p.small { + font-size: 14px; + font-size: 1.4rem; + line-height: 1.3 +} + +.card .card-header .ext-lg { + font-family: inherit; + font-size: 38px; + font-size: 3.8rem; + line-height: 1 +} + +.card .card-body .card-title:after { + display: block; + clear: both; + content: "" +} + +.card .card-body .card-title .align-left { + max-width: 70%; + float: left +} + +.card .card-body .card-title .align-right { + max-width: 30%; + float: right +} + +.card hr.dashed { + border-top-style: dashed +} + +.card hr.hr-lg { + border-top-width: 2px +} + +.card .card-footer .btn { + min-width: 125px +} + +.card .list-group-item { + padding: .75rem 3rem +} + +.card .overlay { + position: absolute; + bottom: -20px; + z-index: 2; + width: 100%; + margin-left: -3rem; + padding: 3rem; + opacity: 0; + background: linear-gradient(180deg, rgba(248, 250, 253, 0), rgba(253, 253, 254, .96) 27.32%, #fff); + transition: all .5s; + overflow: hidden +} + +.card .overlay a { + text-decoration: none; + font-size: 14px; + font-size: 1.4rem +} + +.card:hover .overlay { + bottom: 0; + opacity: 1; + transition: all .5s +} + +.card .badge { + position: absolute; + right: 3rem; + top: 3rem +} + +.card.card-lg-gutter { + margin-right: 19px; + margin-left: 19px +} + +.card.card-sm-gutter { + margin-right: 7px; + margin-left: 7px +} + +.card-teal-grad>.card-header { + color: #fff +} + +.card-teal-grad>.card-header a { + color: #fff; + text-decoration: underline +} + +.card-teal-grad>.card-header h1, +.card-teal-grad>.card-header h2, +.card-teal-grad>.card-header h3, +.card-teal-grad>.card-header h4, +.card-teal-grad>.card-header h5, +.card-teal-grad>.card-header h6 { + color: #fff +} + +.card-teal-grad .fc_select { + -webkit-background-clip: text; + -webkit-text-fill-color: transparent +} + +.card-purple-grad>.card-header, +.card-teal-grad>.card-text, +.card-teal-grad>.card-title { + color: #fff +} + +.card-purple-grad>.card-header a { + color: #fff; + text-decoration: underline +} + +.card-purple-grad>.card-header h1, +.card-purple-grad>.card-header h2, +.card-purple-grad>.card-header h3, +.card-purple-grad>.card-header h4, +.card-purple-grad>.card-header h5, +.card-purple-grad>.card-header h6 { + color: #fff +} + +.card-purple-grad .fc_select { + -webkit-background-clip: text; + -webkit-text-fill-color: transparent +} + +.card-navyblue-grad>.card-header, +.card-purple-grad>.card-text, +.card-purple-grad>.card-title { + color: #fff +} + +.card-navyblue-grad>.card-header a { + color: #fff; + text-decoration: underline +} + +.card-navyblue-grad>.card-header h1, +.card-navyblue-grad>.card-header h2, +.card-navyblue-grad>.card-header h3, +.card-navyblue-grad>.card-header h4, +.card-navyblue-grad>.card-header h5, +.card-navyblue-grad>.card-header h6 { + color: #fff +} + +.card-navyblue-grad .fc_select { + -webkit-background-clip: text; + -webkit-text-fill-color: transparent +} + +.card-navyblue-grad>.card-text, +.card-navyblue-grad>.card-title { + color: #fff +} + +.card-navyblue .fc_select, +.card-purple .fc_select, +.card-teal .fc_select { + -webkit-background-clip: text; + -webkit-text-fill-color: transparent +} + +a.block { + text-decoration: none !important +} + +a.block .card.shadow:hover { + box-shadow: 0 10px 14px 0 rgba(33, 35, 68, .05) !important +} + +a.block .card-title { + color: #191c2b +} + +.card-hover, +.card-hover:hover { + transition: all .2s ease +} + +.card-hover:hover { + transform: translateY(-4px) +} + +a.card { + text-decoration: none +} + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: .75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #9f9fb9; + border-radius: .5rem +} + +.breadcrumb-item+.breadcrumb-item { + padding-left: .5rem +} + +.breadcrumb-item+.breadcrumb-item:before { + display: inline-block; + padding-right: .5rem; + color: #5a5b75; + content: "/" +} + +.breadcrumb-item+.breadcrumb-item:hover:before { + text-decoration: underline; + text-decoration: none +} + +.breadcrumb-item.active { + color: #5a5b75 +} + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + border-radius: .5rem +} + +.page-link { + position: relative; + display: block; + padding: .5rem .75rem; + margin-left: -1px; + line-height: 1.25; + color: #6957da; + background-color: #fff; + border: 1px solid #8786a4 +} + +.page-link:hover { + z-index: 2; + color: #6957da; + text-decoration: none; + background-color: #9f9fb9; + border-color: #8786a4 +} + +.page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 .2rem rgba(89, 217, 157, .25) +} + +.page-link:not(:disabled):not(.disabled) { + cursor: pointer +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: .5rem; + border-bottom-left-radius: .5rem +} + +.page-item:last-child .page-link { + border-top-right-radius: .5rem; + border-bottom-right-radius: .5rem +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #59d99d; + border-color: #59d99d +} + +.page-item.disabled .page-link { + color: #5a5b75; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #8786a4 +} + +.pagination-lg .page-link { + padding: .75rem 1.5rem; + font-size: 2rem; + line-height: 2 +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: .3rem; + border-bottom-left-radius: .3rem +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: .3rem; + border-bottom-right-radius: .3rem +} + +.pagination-sm .page-link { + padding: .25rem .5rem; + font-size: 1.3rem; + line-height: 1 +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: .2rem; + border-bottom-left-radius: .2rem +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: .2rem; + border-bottom-right-radius: .2rem +} + +.badge { + display: inline-block; + padding: .25em .4em; + font-size: 75%; + font-weight: 600; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 4px +} + +.badge:empty { + display: none +} + +.btn .badge { + position: relative; + top: -1px +} + +.badge-pill { + padding-right: .6em; + padding-left: .6em; + border-radius: 10rem +} + +.badge-primary { + color: #191c2b; + background-color: #59d99d +} + +.badge-primary[href]:focus, +.badge-primary[href]:hover { + color: #191c2b; + text-decoration: none; + background-color: #30d085 +} + +.badge-secondary { + color: #fff; + background-color: #6957da +} + +.badge-secondary[href]:focus, +.badge-secondary[href]:hover { + color: #fff; + text-decoration: none; + background-color: #442ed0 +} + +.badge-success { + color: #fff; + background-color: #48b884 +} + +.badge-success[href]:focus, +.badge-success[href]:hover { + color: #fff; + text-decoration: none; + background-color: #39946a +} + +.badge-info { + color: #191c2b; + background-color: #43ccfe +} + +.badge-info[href]:focus, +.badge-info[href]:hover { + color: #191c2b; + text-decoration: none; + background-color: #10befe +} + +.badge-warning { + color: #191c2b; + background-color: #fab73a +} + +.badge-warning[href]:focus, +.badge-warning[href]:hover { + color: #191c2b; + text-decoration: none; + background-color: #f9a508 +} + +.badge-danger { + color: #fff; + background-color: #f64f4b +} + +.badge-danger[href]:focus, +.badge-danger[href]:hover { + color: #fff; + text-decoration: none; + background-color: #f4201a +} + +.badge-light { + color: #191c2b; + background-color: #f8f9fa +} + +.badge-light[href]:focus, +.badge-light[href]:hover { + color: #191c2b; + text-decoration: none; + background-color: #dae0e5 +} + +.badge-dark { + color: #fff; + background-color: #22263b +} + +.badge-dark[href]:focus, +.badge-dark[href]:hover { + color: #fff; + text-decoration: none; + background-color: #0f111b +} + +.badge-primary-border { + border: 1px solid #2bbb77; + color: #2bbb77; + background: #acecce +} + +.badge-secondary-border { + border: 1px solid #3d29bb; + color: #3d29bb; + background: #b4abec +} + +.badge-success-border { + border: 1px solid #32815d; + color: #32815d; + background: #91d5b5 +} + +.badge-info-border { + border: 1px solid #01b3f3; + color: #01b3f3; + background: #a8e8ff +} + +.badge-warning-border { + border: 1px solid #e29506; + color: #e29506; + background: #fddb9d +} + +.badge-danger-border { + border: 1px solid #e9110c; + color: #e9110c; + background: #fbaeac +} + +.badge-light-border { + border: 1px solid #cbd3da; + color: #cbd3da; + background: #fff +} + +.badge-dark-border { + border: 1px solid #06070a; + color: #06070a; + background: #47507c +} + +.badge-primary { + color: #fff +} + +.accordion-trigger { + background: #d3d3d3; + border: 1px solid; + color: #000; + display: block; + font-weight: 700; + padding: 10px; + text-decoration: none +} + +.accordion-trigger.is-selected { + background: #add8e6 +} + +.accordion-trigger:before { + content: "+"; + display: inline-block; + width: 15px +} + +.accordion-trigger.is-selected:before { + content: "\2013" +} + +.accordion-panel { + max-height: 1000px; + transform-origin: top; + transition: all .8s ease; + visibility: visible +} + +.accordion-panel.is-hidden { + max-height: 0; + overflow: hidden; + transition: all .8s ease; + visibility: hidden +} + +.accordion-panel__inner { + padding: 10px +} + +.jumbotron { + padding: 6rem 0; + margin-bottom: 0; + background-color: #9f9fb9 +} + +@media (min-width:576px) { + .jumbotron { + padding: 12rem 0 + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0 +} + +.jumbotron-fluid .banner-header, +.jumbotron .banner-header { + margin-bottom: 40px +} + +@media (min-width:992px) { + .jumbotron-fluid .banner-header, + .jumbotron .banner-header { + max-width: 90% + } +} + +.jumbotron-fluid .lead, +.jumbotron .lead { + font-family: baseCodeRegular, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + font-size: 18px; + font-size: 1.8rem; + margin-bottom: 70px +} + +@media (min-width:992px) { + .jumbotron-fluid .lead, + .jumbotron .lead { + max-width: 90% + } +} + +.alert { + position: relative; + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: .5rem +} + +.alert-heading { + color: inherit +} + +.alert-link { + font-weight: 600 +} + +.alert-dismissible { + padding-right: 4.9rem +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: .75rem 1.25rem; + color: inherit +} + +.alert-primary { + color: #468869; + background: #def7eb linear-gradient(180deg, #e3f8ee, #def7eb) repeat-x; + border-color: #d1f4e4 +} + +.alert-primary hr { + border-top-color: #bcefd8 +} + +.alert-primary .alert-link { + color: #35664f +} + +.alert-secondary { + color: #4e4589; + background: #e1ddf8 linear-gradient(180deg, #e6e2f9, #e1ddf8) repeat-x; + border-color: #d5d0f5 +} + +.alert-secondary hr { + border-top-color: #c2bbf1 +} + +.alert-secondary .alert-link { + color: #3b3467 +} + +.alert-success { + color: #3d775c; + background: #daf1e6 linear-gradient(180deg, #e0f3ea, #daf1e6) repeat-x; + border-color: #ccebdd +} + +.alert-success hr { + border-top-color: #bae4d1 +} + +.alert-success .alert-link { + color: #2c5542 +} + +.alert-info { + color: #3a829c; + background: #d9f5ff linear-gradient(180deg, #dff7ff, #d9f5ff) repeat-x; + border-color: #caf1ff +} + +.alert-info hr { + border-top-color: #b1eaff +} + +.alert-info .alert-link { + color: #2c6377 +} + +.alert-warning { + color: #9a7736; + background: #fef1d8 linear-gradient(180deg, #fef3de, #fef1d8) repeat-x; + border-color: #feebc8 +} + +.alert-warning hr { + border-top-color: #fee2af +} + +.alert-warning .alert-link { + color: #745a29 +} + +.alert-danger { + color: #97413f; + background: #fddcdb linear-gradient(180deg, #fde1e0, #fddcdb) repeat-x; + border-color: #fccecd +} + +.alert-danger hr { + border-top-color: #fbb6b5 +} + +.alert-danger .alert-link { + color: #733230 +} + +.alert-light { + color: #98999a; + background: #fefefe linear-gradient(180deg, #fefefe, #fefefe) repeat-x; + border-color: #fdfdfe +} + +.alert-light hr { + border-top-color: #ececf6 +} + +.alert-light .alert-link { + color: #7e8081 +} + +.alert-dark { + color: #292b36; + background: #d3d4d8 linear-gradient(180deg, #dadade, #d3d4d8) repeat-x; + border-color: #c1c2c8 +} + +.alert-dark hr { + border-top-color: #b3b5bc +} + +.alert-dark .alert-link { + color: #131419 +} + +@keyframes progress-bar-stripes { + 0% { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 1.2rem; + background-color: #9f9fb9; + border-radius: .5rem; + box-shadow: inset 0 .1rem .1rem rgba(49, 49, 49, .1) +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #59d99d; + transition: width .6s ease +} + +@media screen and (prefers-reduced-motion:reduce) { + .progress-bar { + transition: none + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, hsla(0, 0%, 100%, .15) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, .15) 0, hsla(0, 0%, 100%, .15) 75%, transparent 0, transparent); + background-size: 1rem 1rem +} + +.progress-bar-animated { + animation: progress-bar-stripes 1s linear infinite +} + +.media { + display: flex; + align-items: flex-start +} + +.media-body { + flex: 1 +} + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0 +} + +.list-group-item-action { + width: 100%; + color: #434456; + text-align: inherit +} + +.list-group-item-action:focus, +.list-group-item-action:hover { + color: #434456; + text-decoration: none; + background-color: #f8f9fa +} + +.list-group-item-action:active { + color: #434456; + background-color: #9f9fb9 +} + +.list-group-item { + position: relative; + display: block; + padding: .75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(49, 49, 49, .125) +} + +.list-group-item:first-child { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem +} + +.list-group-item:focus, +.list-group-item:hover { + z-index: 1; + text-decoration: none +} + +.list-group-item.disabled, +.list-group-item:disabled { + color: #5a5b75; + background-color: #fff +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #59d99d; + border-color: #59d99d +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0 +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0 +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0 +} + +.list-group-item-primary { + color: #468869; + background-color: #d1f4e4 +} + +.list-group-item-primary.list-group-item-action:focus, +.list-group-item-primary.list-group-item-action:hover { + color: #468869; + background-color: #bcefd8 +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #468869; + border-color: #468869 +} + +.list-group-item-secondary { + color: #4e4589; + background-color: #d5d0f5 +} + +.list-group-item-secondary.list-group-item-action:focus, +.list-group-item-secondary.list-group-item-action:hover { + color: #4e4589; + background-color: #c2bbf1 +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #4e4589; + border-color: #4e4589 +} + +.list-group-item-success { + color: #3d775c; + background-color: #ccebdd +} + +.list-group-item-success.list-group-item-action:focus, +.list-group-item-success.list-group-item-action:hover { + color: #3d775c; + background-color: #bae4d1 +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #3d775c; + border-color: #3d775c +} + +.list-group-item-info { + color: #3a829c; + background-color: #caf1ff +} + +.list-group-item-info.list-group-item-action:focus, +.list-group-item-info.list-group-item-action:hover { + color: #3a829c; + background-color: #b1eaff +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #3a829c; + border-color: #3a829c +} + +.list-group-item-warning { + color: #9a7736; + background-color: #feebc8 +} + +.list-group-item-warning.list-group-item-action:focus, +.list-group-item-warning.list-group-item-action:hover { + color: #9a7736; + background-color: #fee2af +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #9a7736; + border-color: #9a7736 +} + +.list-group-item-danger { + color: #97413f; + background-color: #fccecd +} + +.list-group-item-danger.list-group-item-action:focus, +.list-group-item-danger.list-group-item-action:hover { + color: #97413f; + background-color: #fbb6b5 +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #97413f; + border-color: #97413f +} + +.list-group-item-light { + color: #98999a; + background-color: #fdfdfe +} + +.list-group-item-light.list-group-item-action:focus, +.list-group-item-light.list-group-item-action:hover { + color: #98999a; + background-color: #ececf6 +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #98999a; + border-color: #98999a +} + +.list-group-item-dark { + color: #292b36; + background-color: #c1c2c8 +} + +.list-group-item-dark.list-group-item-action:focus, +.list-group-item-dark.list-group-item-action:hover { + color: #292b36; + background-color: #b3b5bc +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #292b36; + border-color: #292b36 +} + +.close { + float: right; + font-size: 2.4rem; + font-weight: 600; + line-height: 1; + color: #313131; + text-shadow: 0 1px 0 #fff; + opacity: .5 +} + +.close:focus, +.close:hover { + color: #313131; + text-decoration: none; + opacity: .75 +} + +.close:not(:disabled):not(.disabled) { + cursor: pointer +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none +} + +.modal, +.modal-open { + overflow: hidden +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + outline: 0 +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto +} + +.modal-dialog { + position: relative; + width: auto; + margin: .5rem; + pointer-events: none +} + +.modal.fade .modal-dialog { + transition: transform .3s ease-out; + transform: translateY(-25%) +} + +@media screen and (prefers-reduced-motion:reduce) { + .modal.fade .modal-dialog { + transition: none + } +} + +.modal.show .modal-dialog { + transform: translate(0) +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem) +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 0 solid rgba(49, 49, 49, .2); + border-radius: .3rem; + box-shadow: 0 .25rem .5rem rgba(49, 49, 49, .2); + outline: 0 +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #f8f9fd +} + +.modal-backdrop.fade { + opacity: 0 +} + +.modal-backdrop.show { + opacity: .96 +} + +.modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 2.5rem 2.5rem 0; + border-bottom: 0 solid #9f9fb9; + border-top-left-radius: .3rem; + border-top-right-radius: .3rem +} + +.modal-header .close { + padding: 2.5rem; + margin: -2.5rem -2.5rem -2.5rem auto; + font-weight: 300; + font-size: 4rem +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5 +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 0 2.5rem 2.5rem +} + +.modal-footer { + display: flex; + align-items: center; + justify-content: flex-end; + padding: 2.5rem; + border-top: 0 solid #9f9fb9 +} + +.modal-footer>:not(:first-child) { + margin-left: .25rem +} + +.modal-footer>:not(:last-child) { + margin-right: .25rem +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll +} + +@media (min-width:576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem) + } + .modal-content { + box-shadow: 0 .5rem 1rem rgba(49, 49, 49, .2) + } + .modal-sm { + max-width: 300px + } +} + +@media (min-width:992px) { + .modal-lg { + max-width: 1000px + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 1.3rem; + word-wrap: break-word; + opacity: 0 +} + +.tooltip.show { + opacity: .9 +} + +.tooltip .arrow { + position: absolute; + display: block; + width: .8rem; + height: .4rem +} + +.tooltip .arrow:before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid +} + +.bs-tooltip-auto[x-placement^=top], +.bs-tooltip-top { + padding: .4rem 0 +} + +.bs-tooltip-auto[x-placement^=top] .arrow, +.bs-tooltip-top .arrow { + bottom: 0 +} + +.bs-tooltip-auto[x-placement^=top] .arrow:before, +.bs-tooltip-top .arrow:before { + top: 0; + border-width: .4rem .4rem 0; + border-top-color: #313131 +} + +.bs-tooltip-auto[x-placement^=right], +.bs-tooltip-right { + padding: 0 .4rem +} + +.bs-tooltip-auto[x-placement^=right] .arrow, +.bs-tooltip-right .arrow { + left: 0; + width: .4rem; + height: .8rem +} + +.bs-tooltip-auto[x-placement^=right] .arrow:before, +.bs-tooltip-right .arrow:before { + right: 0; + border-width: .4rem .4rem .4rem 0; + border-right-color: #313131 +} + +.bs-tooltip-auto[x-placement^=bottom], +.bs-tooltip-bottom { + padding: .4rem 0 +} + +.bs-tooltip-auto[x-placement^=bottom] .arrow, +.bs-tooltip-bottom .arrow { + top: 0 +} + +.bs-tooltip-auto[x-placement^=bottom] .arrow:before, +.bs-tooltip-bottom .arrow:before { + bottom: 0; + border-width: 0 .4rem .4rem; + border-bottom-color: #313131 +} + +.bs-tooltip-auto[x-placement^=left], +.bs-tooltip-left { + padding: 0 .4rem +} + +.bs-tooltip-auto[x-placement^=left] .arrow, +.bs-tooltip-left .arrow { + right: 0; + width: .4rem; + height: .8rem +} + +.bs-tooltip-auto[x-placement^=left] .arrow:before, +.bs-tooltip-left .arrow:before { + left: 0; + border-width: .4rem 0 .4rem .4rem; + border-left-color: #313131 +} + +.tooltip-inner { + max-width: 200px; + padding: .25rem .5rem; + color: #fff; + text-align: center; + background-color: #313131; + border-radius: .5rem +} + +.popover { + top: 0; + left: 0; + z-index: 1060; + max-width: 276px; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 1.3rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(49, 49, 49, .2); + border-radius: .3rem; + box-shadow: 0 .25rem .5rem rgba(49, 49, 49, .2) +} + +.popover, +.popover .arrow { + position: absolute; + display: block +} + +.popover .arrow { + width: 1rem; + height: .5rem; + margin: 0 .3rem +} + +.popover .arrow:after, +.popover .arrow:before { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid +} + +.bs-popover-auto[x-placement^=top], +.bs-popover-top { + margin-bottom: .5rem +} + +.bs-popover-auto[x-placement^=top] .arrow, +.bs-popover-top .arrow { + bottom: calc((.5rem + 1px) * -1) +} + +.bs-popover-auto[x-placement^=top] .arrow:after, +.bs-popover-auto[x-placement^=top] .arrow:before, +.bs-popover-top .arrow:after, +.bs-popover-top .arrow:before { + border-width: .5rem .5rem 0 +} + +.bs-popover-auto[x-placement^=top] .arrow:before, +.bs-popover-top .arrow:before { + bottom: 0; + border-top-color: rgba(49, 49, 49, .25) +} + +.bs-popover-auto[x-placement^=top] .arrow:after, +.bs-popover-top .arrow:after { + bottom: 1px; + border-top-color: #fff +} + +.bs-popover-auto[x-placement^=right], +.bs-popover-right { + margin-left: .5rem +} + +.bs-popover-auto[x-placement^=right] .arrow, +.bs-popover-right .arrow { + left: calc((.5rem + 1px) * -1); + width: .5rem; + height: 1rem; + margin: .3rem 0 +} + +.bs-popover-auto[x-placement^=right] .arrow:after, +.bs-popover-auto[x-placement^=right] .arrow:before, +.bs-popover-right .arrow:after, +.bs-popover-right .arrow:before { + border-width: .5rem .5rem .5rem 0 +} + +.bs-popover-auto[x-placement^=right] .arrow:before, +.bs-popover-right .arrow:before { + left: 0; + border-right-color: rgba(49, 49, 49, .25) +} + +.bs-popover-auto[x-placement^=right] .arrow:after, +.bs-popover-right .arrow:after { + left: 1px; + border-right-color: #fff +} + +.bs-popover-auto[x-placement^=bottom], +.bs-popover-bottom { + margin-top: .5rem +} + +.bs-popover-auto[x-placement^=bottom] .arrow, +.bs-popover-bottom .arrow { + top: calc((.5rem + 1px) * -1) +} + +.bs-popover-auto[x-placement^=bottom] .arrow:after, +.bs-popover-auto[x-placement^=bottom] .arrow:before, +.bs-popover-bottom .arrow:after, +.bs-popover-bottom .arrow:before { + border-width: 0 .5rem .5rem +} + +.bs-popover-auto[x-placement^=bottom] .arrow:before, +.bs-popover-bottom .arrow:before { + top: 0; + border-bottom-color: rgba(49, 49, 49, .25) +} + +.bs-popover-auto[x-placement^=bottom] .arrow:after, +.bs-popover-bottom .arrow:after { + top: 1px; + border-bottom-color: #fff +} + +.bs-popover-auto[x-placement^=bottom] .popover-header:before, +.bs-popover-bottom .popover-header:before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7 +} + +.bs-popover-auto[x-placement^=left], +.bs-popover-left { + margin-right: .5rem +} + +.bs-popover-auto[x-placement^=left] .arrow, +.bs-popover-left .arrow { + right: calc((.5rem + 1px) * -1); + width: .5rem; + height: 1rem; + margin: .3rem 0 +} + +.bs-popover-auto[x-placement^=left] .arrow:after, +.bs-popover-auto[x-placement^=left] .arrow:before, +.bs-popover-left .arrow:after, +.bs-popover-left .arrow:before { + border-width: .5rem 0 .5rem .5rem +} + +.bs-popover-auto[x-placement^=left] .arrow:before, +.bs-popover-left .arrow:before { + right: 0; + border-left-color: rgba(49, 49, 49, .25) +} + +.bs-popover-auto[x-placement^=left] .arrow:after, +.bs-popover-left .arrow:after { + right: 1px; + border-left-color: #fff +} + +.popover-header { + padding: .5rem .75rem; + margin-bottom: 0; + font-size: 1.6rem; + color: #212344; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(.3rem - 1px); + border-top-right-radius: calc(.3rem - 1px) +} + +.popover-header:empty { + display: none +} + +.popover-body { + padding: .5rem .75rem; + color: #434456 +} + +.carousel { + position: relative +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden +} + +.carousel-item { + position: relative; + display: none; + align-items: center; + width: 100%; + transition: transform .6s ease; + backface-visibility: hidden; + perspective: 1000px +} + +@media screen and (prefers-reduced-motion:reduce) { + .carousel-item { + transition: none + } +} + +.carousel-item-next, +.carousel-item-prev, +.carousel-item.active { + display: block +} + +.carousel-item-next, +.carousel-item-prev { + position: absolute; + top: 0 +} + +.carousel-item-next.carousel-item-left, +.carousel-item-prev.carousel-item-right { + transform: translateX(0) +} + +@supports (transform-style:preserve-3d) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + transform: translateZ(0) + } +} + +.active.carousel-item-right, +.carousel-item-next { + transform: translateX(100%) +} + +@supports (transform-style:preserve-3d) { + .active.carousel-item-right, + .carousel-item-next { + transform: translate3d(100%, 0, 0) + } +} + +.active.carousel-item-left, +.carousel-item-prev { + transform: translateX(-100%) +} + +@supports (transform-style:preserve-3d) { + .active.carousel-item-left, + .carousel-item-prev { + transform: translate3d(-100%, 0, 0) + } +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-duration: .6s; + transition-property: opacity +} + +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right, +.carousel-fade .carousel-item.active { + opacity: 1 +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + opacity: 0 +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-prev, +.carousel-fade .carousel-item-next, +.carousel-fade .carousel-item-prev, +.carousel-fade .carousel-item.active { + transform: translateX(0) +} + +@supports (transform-style:preserve-3d) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-prev, + .carousel-fade .carousel-item-next, + .carousel-fade .carousel-item-prev, + .carousel-fade .carousel-item.active { + transform: translateZ(0) + } +} + +.carousel-control-next, +.carousel-control-prev { + position: absolute; + top: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: .5 +} + +.carousel-control-next:focus, +.carousel-control-next:hover, +.carousel-control-prev:focus, +.carousel-control-prev:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9 +} + +.carousel-control-prev { + left: 0; + background: linear-gradient(90deg, rgba(49, 49, 49, .25), rgba(49, 49, 49, .001)) +} + +.carousel-control-next { + right: 0; + background: linear-gradient(270deg, rgba(49, 49, 49, .25), rgba(49, 49, 49, .001)) +} + +.carousel-control-next-icon, +.carousel-control-prev-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat 50%; + background-size: 100% 100% +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E") +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E") +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: flex; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none +} + +.carousel-indicators li { + position: relative; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: hsla(0, 0%, 100%, .5) +} + +.carousel-indicators li:before { + top: -10px +} + +.carousel-indicators li:after, +.carousel-indicators li:before { + position: absolute; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: "" +} + +.carousel-indicators li:after { + bottom: -10px +} + +.carousel-indicators .active { + background-color: #fff +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center +} + +.align-baseline { + vertical-align: baseline !important +} + +.align-top { + vertical-align: top !important +} + +.align-middle { + vertical-align: middle !important +} + +.align-bottom { + vertical-align: bottom !important +} + +.align-text-bottom { + vertical-align: text-bottom !important +} + +.align-text-top { + vertical-align: text-top !important +} + +.bg-primary { + background-color: #59d99d !important +} + +a.bg-primary:focus, +a.bg-primary:hover, +button.bg-primary:focus, +button.bg-primary:hover { + background-color: #30d085 !important +} + +.bg-secondary { + background-color: #6957da !important +} + +a.bg-secondary:focus, +a.bg-secondary:hover, +button.bg-secondary:focus, +button.bg-secondary:hover { + background-color: #442ed0 !important +} + +.bg-success { + background-color: #48b884 !important +} + +a.bg-success:focus, +a.bg-success:hover, +button.bg-success:focus, +button.bg-success:hover { + background-color: #39946a !important +} + +.bg-info { + background-color: #43ccfe !important +} + +a.bg-info:focus, +a.bg-info:hover, +button.bg-info:focus, +button.bg-info:hover { + background-color: #10befe !important +} + +.bg-warning { + background-color: #fab73a !important +} + +a.bg-warning:focus, +a.bg-warning:hover, +button.bg-warning:focus, +button.bg-warning:hover { + background-color: #f9a508 !important +} + +.bg-danger { + background-color: #f64f4b !important +} + +a.bg-danger:focus, +a.bg-danger:hover, +button.bg-danger:focus, +button.bg-danger:hover { + background-color: #f4201a !important +} + +.bg-light { + background-color: #f8f9fa !important +} + +a.bg-light:focus, +a.bg-light:hover, +button.bg-light:focus, +button.bg-light:hover { + background-color: #dae0e5 !important +} + +.bg-dark { + background-color: #22263b !important +} + +a.bg-dark:focus, +a.bg-dark:hover, +button.bg-dark:focus, +button.bg-dark:hover { + background-color: #0f111b !important +} + +.bg-gradient-primary { + background: #59d99d linear-gradient(180deg, #72dfac, #59d99d) repeat-x !important +} + +.bg-gradient-secondary { + background: #6957da linear-gradient(180deg, #8070e0, #6957da) repeat-x !important +} + +.bg-gradient-success { + background: #48b884 linear-gradient(180deg, #63c396, #48b884) repeat-x !important +} + +.bg-gradient-info { + background: #43ccfe linear-gradient(180deg, #5fd4fe, #43ccfe) repeat-x !important +} + +.bg-gradient-warning { + background: #fab73a linear-gradient(180deg, #fbc258, #fab73a) repeat-x !important +} + +.bg-gradient-danger { + background: #f64f4b linear-gradient(180deg, #f76966, #f64f4b) repeat-x !important +} + +.bg-gradient-light { + background: #f8f9fa linear-gradient(180deg, #f9fafb, #f8f9fa) repeat-x !important +} + +.bg-gradient-dark { + background: #22263b linear-gradient(180deg, #434758, #22263b) repeat-x !important +} + +.bg-white { + background-color: #fff !important +} + +.bg-transparent { + background-color: transparent !important +} + +.border { + border: 1px solid #e9e9ef !important +} + +.border-top { + border-top: 1px solid #e9e9ef !important +} + +.border-right { + border-right: 1px solid #e9e9ef !important +} + +.border-bottom { + border-bottom: 1px solid #e9e9ef !important +} + +.border-left { + border-left: 1px solid #e9e9ef !important +} + +.border-0 { + border: 0 !important +} + +.border-top-0 { + border-top: 0 !important +} + +.border-right-0 { + border-right: 0 !important +} + +.border-bottom-0 { + border-bottom: 0 !important +} + +.border-left-0 { + border-left: 0 !important +} + +.border-primary { + border-color: #59d99d !important +} + +.border-secondary { + border-color: #6957da !important +} + +.border-success { + border-color: #48b884 !important +} + +.border-info { + border-color: #43ccfe !important +} + +.border-warning { + border-color: #fab73a !important +} + +.border-danger { + border-color: #f64f4b !important +} + +.border-light { + border-color: #f8f9fa !important +} + +.border-dark { + border-color: #22263b !important +} + +.border-white { + border-color: #fff !important +} + +.rounded { + border-radius: .5rem !important +} + +.rounded-top { + border-top-left-radius: .5rem !important +} + +.rounded-right, +.rounded-top { + border-top-right-radius: .5rem !important +} + +.rounded-bottom, +.rounded-right { + border-bottom-right-radius: .5rem !important +} + +.rounded-bottom, +.rounded-left { + border-bottom-left-radius: .5rem !important +} + +.rounded-left { + border-top-left-radius: .5rem !important +} + +.rounded-circle { + border-radius: 50% !important +} + +.rounded-0 { + border-radius: 0 !important +} + +.clearfix:after { + display: block; + clear: both; + content: "" +} + +.d-none { + display: none !important +} + +.d-inline { + display: inline !important +} + +.d-inline-block { + display: inline-block !important +} + +.d-block { + display: block !important +} + +.d-table { + display: table !important +} + +.d-table-row { + display: table-row !important +} + +.d-table-cell { + display: table-cell !important +} + +.d-flex { + display: flex !important +} + +.d-inline-flex { + display: inline-flex !important +} + +@media (min-width:576px) { + .d-sm-none { + display: none !important + } + .d-sm-inline { + display: inline !important + } + .d-sm-inline-block { + display: inline-block !important + } + .d-sm-block { + display: block !important + } + .d-sm-table { + display: table !important + } + .d-sm-table-row { + display: table-row !important + } + .d-sm-table-cell { + display: table-cell !important + } + .d-sm-flex { + display: flex !important + } + .d-sm-inline-flex { + display: inline-flex !important + } +} + +@media (min-width:800px) { + .d-md-none { + display: none !important + } + .d-md-inline { + display: inline !important + } + .d-md-inline-block { + display: inline-block !important + } + .d-md-block { + display: block !important + } + .d-md-table { + display: table !important + } + .d-md-table-row { + display: table-row !important + } + .d-md-table-cell { + display: table-cell !important + } + .d-md-flex { + display: flex !important + } + .d-md-inline-flex { + display: inline-flex !important + } +} + +@media (min-width:992px) { + .d-lg-none { + display: none !important + } + .d-lg-inline { + display: inline !important + } + .d-lg-inline-block { + display: inline-block !important + } + .d-lg-block { + display: block !important + } + .d-lg-table { + display: table !important + } + .d-lg-table-row { + display: table-row !important + } + .d-lg-table-cell { + display: table-cell !important + } + .d-lg-flex { + display: flex !important + } + .d-lg-inline-flex { + display: inline-flex !important + } +} + +@media (min-width:1200px) { + .d-xl-none { + display: none !important + } + .d-xl-inline { + display: inline !important + } + .d-xl-inline-block { + display: inline-block !important + } + .d-xl-block { + display: block !important + } + .d-xl-table { + display: table !important + } + .d-xl-table-row { + display: table-row !important + } + .d-xl-table-cell { + display: table-cell !important + } + .d-xl-flex { + display: flex !important + } + .d-xl-inline-flex { + display: inline-flex !important + } +} + +@media (min-width:1440px) { + .d-xxl-none { + display: none !important + } + .d-xxl-inline { + display: inline !important + } + .d-xxl-inline-block { + display: inline-block !important + } + .d-xxl-block { + display: block !important + } + .d-xxl-table { + display: table !important + } + .d-xxl-table-row { + display: table-row !important + } + .d-xxl-table-cell { + display: table-cell !important + } + .d-xxl-flex { + display: flex !important + } + .d-xxl-inline-flex { + display: inline-flex !important + } +} + +@media (min-width:1600px) { + .d-exl-none { + display: none !important + } + .d-exl-inline { + display: inline !important + } + .d-exl-inline-block { + display: inline-block !important + } + .d-exl-block { + display: block !important + } + .d-exl-table { + display: table !important + } + .d-exl-table-row { + display: table-row !important + } + .d-exl-table-cell { + display: table-cell !important + } + .d-exl-flex { + display: flex !important + } + .d-exl-inline-flex { + display: inline-flex !important + } +} + +@media print { + .d-print-none { + display: none !important + } + .d-print-inline { + display: inline !important + } + .d-print-inline-block { + display: inline-block !important + } + .d-print-block { + display: block !important + } + .d-print-table { + display: table !important + } + .d-print-table-row { + display: table-row !important + } + .d-print-table-cell { + display: table-cell !important + } + .d-print-flex { + display: flex !important + } + .d-print-inline-flex { + display: inline-flex !important + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden +} + +.embed-responsive:before { + display: block; + content: "" +} + +.embed-responsive .embed-responsive-item, +.embed-responsive embed, +.embed-responsive iframe, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0 +} + +.embed-responsive-21by9:before { + padding-top: 42.85714% +} + +.embed-responsive-16by9:before { + padding-top: 56.25% +} + +.embed-responsive-4by3:before { + padding-top: 75% +} + +.embed-responsive-1by1:before { + padding-top: 100% +} + +.flex-row { + flex-direction: row !important +} + +.flex-column { + flex-direction: column !important +} + +.flex-row-reverse { + flex-direction: row-reverse !important +} + +.flex-column-reverse { + flex-direction: column-reverse !important +} + +.flex-wrap { + flex-wrap: wrap !important +} + +.flex-nowrap { + flex-wrap: nowrap !important +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important +} + +.flex-fill { + flex: 1 1 auto !important +} + +.flex-grow-0 { + flex-grow: 0 !important +} + +.flex-grow-1 { + flex-grow: 1 !important +} + +.flex-shrink-0 { + flex-shrink: 0 !important +} + +.flex-shrink-1 { + flex-shrink: 1 !important +} + +.justify-content-start { + justify-content: flex-start !important +} + +.justify-content-end { + justify-content: flex-end !important +} + +.justify-content-center { + justify-content: center !important +} + +.justify-content-between { + justify-content: space-between !important +} + +.justify-content-around { + justify-content: space-around !important +} + +.align-items-start { + align-items: flex-start !important +} + +.align-items-end { + align-items: flex-end !important +} + +.align-items-center { + align-items: center !important +} + +.align-items-baseline { + align-items: baseline !important +} + +.align-items-stretch { + align-items: stretch !important +} + +.align-content-start { + align-content: flex-start !important +} + +.align-content-end { + align-content: flex-end !important +} + +.align-content-center { + align-content: center !important +} + +.align-content-between { + align-content: space-between !important +} + +.align-content-around { + align-content: space-around !important +} + +.align-content-stretch { + align-content: stretch !important +} + +.align-self-auto { + align-self: auto !important +} + +.align-self-start { + align-self: flex-start !important +} + +.align-self-end { + align-self: flex-end !important +} + +.align-self-center { + align-self: center !important +} + +.align-self-baseline { + align-self: baseline !important +} + +.align-self-stretch { + align-self: stretch !important +} + +@media (min-width:576px) { + .flex-sm-row { + flex-direction: row !important + } + .flex-sm-column { + flex-direction: column !important + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important + } + .flex-sm-wrap { + flex-wrap: wrap !important + } + .flex-sm-nowrap { + flex-wrap: nowrap !important + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important + } + .flex-sm-fill { + flex: 1 1 auto !important + } + .flex-sm-grow-0 { + flex-grow: 0 !important + } + .flex-sm-grow-1 { + flex-grow: 1 !important + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important + } + .justify-content-sm-start { + justify-content: flex-start !important + } + .justify-content-sm-end { + justify-content: flex-end !important + } + .justify-content-sm-center { + justify-content: center !important + } + .justify-content-sm-between { + justify-content: space-between !important + } + .justify-content-sm-around { + justify-content: space-around !important + } + .align-items-sm-start { + align-items: flex-start !important + } + .align-items-sm-end { + align-items: flex-end !important + } + .align-items-sm-center { + align-items: center !important + } + .align-items-sm-baseline { + align-items: baseline !important + } + .align-items-sm-stretch { + align-items: stretch !important + } + .align-content-sm-start { + align-content: flex-start !important + } + .align-content-sm-end { + align-content: flex-end !important + } + .align-content-sm-center { + align-content: center !important + } + .align-content-sm-between { + align-content: space-between !important + } + .align-content-sm-around { + align-content: space-around !important + } + .align-content-sm-stretch { + align-content: stretch !important + } + .align-self-sm-auto { + align-self: auto !important + } + .align-self-sm-start { + align-self: flex-start !important + } + .align-self-sm-end { + align-self: flex-end !important + } + .align-self-sm-center { + align-self: center !important + } + .align-self-sm-baseline { + align-self: baseline !important + } + .align-self-sm-stretch { + align-self: stretch !important + } +} + +@media (min-width:800px) { + .flex-md-row { + flex-direction: row !important + } + .flex-md-column { + flex-direction: column !important + } + .flex-md-row-reverse { + flex-direction: row-reverse !important + } + .flex-md-column-reverse { + flex-direction: column-reverse !important + } + .flex-md-wrap { + flex-wrap: wrap !important + } + .flex-md-nowrap { + flex-wrap: nowrap !important + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important + } + .flex-md-fill { + flex: 1 1 auto !important + } + .flex-md-grow-0 { + flex-grow: 0 !important + } + .flex-md-grow-1 { + flex-grow: 1 !important + } + .flex-md-shrink-0 { + flex-shrink: 0 !important + } + .flex-md-shrink-1 { + flex-shrink: 1 !important + } + .justify-content-md-start { + justify-content: flex-start !important + } + .justify-content-md-end { + justify-content: flex-end !important + } + .justify-content-md-center { + justify-content: center !important + } + .justify-content-md-between { + justify-content: space-between !important + } + .justify-content-md-around { + justify-content: space-around !important + } + .align-items-md-start { + align-items: flex-start !important + } + .align-items-md-end { + align-items: flex-end !important + } + .align-items-md-center { + align-items: center !important + } + .align-items-md-baseline { + align-items: baseline !important + } + .align-items-md-stretch { + align-items: stretch !important + } + .align-content-md-start { + align-content: flex-start !important + } + .align-content-md-end { + align-content: flex-end !important + } + .align-content-md-center { + align-content: center !important + } + .align-content-md-between { + align-content: space-between !important + } + .align-content-md-around { + align-content: space-around !important + } + .align-content-md-stretch { + align-content: stretch !important + } + .align-self-md-auto { + align-self: auto !important + } + .align-self-md-start { + align-self: flex-start !important + } + .align-self-md-end { + align-self: flex-end !important + } + .align-self-md-center { + align-self: center !important + } + .align-self-md-baseline { + align-self: baseline !important + } + .align-self-md-stretch { + align-self: stretch !important + } +} + +@media (min-width:992px) { + .flex-lg-row { + flex-direction: row !important + } + .flex-lg-column { + flex-direction: column !important + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important + } + .flex-lg-wrap { + flex-wrap: wrap !important + } + .flex-lg-nowrap { + flex-wrap: nowrap !important + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important + } + .flex-lg-fill { + flex: 1 1 auto !important + } + .flex-lg-grow-0 { + flex-grow: 0 !important + } + .flex-lg-grow-1 { + flex-grow: 1 !important + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important + } + .justify-content-lg-start { + justify-content: flex-start !important + } + .justify-content-lg-end { + justify-content: flex-end !important + } + .justify-content-lg-center { + justify-content: center !important + } + .justify-content-lg-between { + justify-content: space-between !important + } + .justify-content-lg-around { + justify-content: space-around !important + } + .align-items-lg-start { + align-items: flex-start !important + } + .align-items-lg-end { + align-items: flex-end !important + } + .align-items-lg-center { + align-items: center !important + } + .align-items-lg-baseline { + align-items: baseline !important + } + .align-items-lg-stretch { + align-items: stretch !important + } + .align-content-lg-start { + align-content: flex-start !important + } + .align-content-lg-end { + align-content: flex-end !important + } + .align-content-lg-center { + align-content: center !important + } + .align-content-lg-between { + align-content: space-between !important + } + .align-content-lg-around { + align-content: space-around !important + } + .align-content-lg-stretch { + align-content: stretch !important + } + .align-self-lg-auto { + align-self: auto !important + } + .align-self-lg-start { + align-self: flex-start !important + } + .align-self-lg-end { + align-self: flex-end !important + } + .align-self-lg-center { + align-self: center !important + } + .align-self-lg-baseline { + align-self: baseline !important + } + .align-self-lg-stretch { + align-self: stretch !important + } +} + +@media (min-width:1200px) { + .flex-xl-row { + flex-direction: row !important + } + .flex-xl-column { + flex-direction: column !important + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important + } + .flex-xl-wrap { + flex-wrap: wrap !important + } + .flex-xl-nowrap { + flex-wrap: nowrap !important + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important + } + .flex-xl-fill { + flex: 1 1 auto !important + } + .flex-xl-grow-0 { + flex-grow: 0 !important + } + .flex-xl-grow-1 { + flex-grow: 1 !important + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important + } + .justify-content-xl-start { + justify-content: flex-start !important + } + .justify-content-xl-end { + justify-content: flex-end !important + } + .justify-content-xl-center { + justify-content: center !important + } + .justify-content-xl-between { + justify-content: space-between !important + } + .justify-content-xl-around { + justify-content: space-around !important + } + .align-items-xl-start { + align-items: flex-start !important + } + .align-items-xl-end { + align-items: flex-end !important + } + .align-items-xl-center { + align-items: center !important + } + .align-items-xl-baseline { + align-items: baseline !important + } + .align-items-xl-stretch { + align-items: stretch !important + } + .align-content-xl-start { + align-content: flex-start !important + } + .align-content-xl-end { + align-content: flex-end !important + } + .align-content-xl-center { + align-content: center !important + } + .align-content-xl-between { + align-content: space-between !important + } + .align-content-xl-around { + align-content: space-around !important + } + .align-content-xl-stretch { + align-content: stretch !important + } + .align-self-xl-auto { + align-self: auto !important + } + .align-self-xl-start { + align-self: flex-start !important + } + .align-self-xl-end { + align-self: flex-end !important + } + .align-self-xl-center { + align-self: center !important + } + .align-self-xl-baseline { + align-self: baseline !important + } + .align-self-xl-stretch { + align-self: stretch !important + } +} + +@media (min-width:1440px) { + .flex-xxl-row { + flex-direction: row !important + } + .flex-xxl-column { + flex-direction: column !important + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important + } + .flex-xxl-wrap { + flex-wrap: wrap !important + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important + } + .flex-xxl-fill { + flex: 1 1 auto !important + } + .flex-xxl-grow-0 { + flex-grow: 0 !important + } + .flex-xxl-grow-1 { + flex-grow: 1 !important + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important + } + .justify-content-xxl-start { + justify-content: flex-start !important + } + .justify-content-xxl-end { + justify-content: flex-end !important + } + .justify-content-xxl-center { + justify-content: center !important + } + .justify-content-xxl-between { + justify-content: space-between !important + } + .justify-content-xxl-around { + justify-content: space-around !important + } + .align-items-xxl-start { + align-items: flex-start !important + } + .align-items-xxl-end { + align-items: flex-end !important + } + .align-items-xxl-center { + align-items: center !important + } + .align-items-xxl-baseline { + align-items: baseline !important + } + .align-items-xxl-stretch { + align-items: stretch !important + } + .align-content-xxl-start { + align-content: flex-start !important + } + .align-content-xxl-end { + align-content: flex-end !important + } + .align-content-xxl-center { + align-content: center !important + } + .align-content-xxl-between { + align-content: space-between !important + } + .align-content-xxl-around { + align-content: space-around !important + } + .align-content-xxl-stretch { + align-content: stretch !important + } + .align-self-xxl-auto { + align-self: auto !important + } + .align-self-xxl-start { + align-self: flex-start !important + } + .align-self-xxl-end { + align-self: flex-end !important + } + .align-self-xxl-center { + align-self: center !important + } + .align-self-xxl-baseline { + align-self: baseline !important + } + .align-self-xxl-stretch { + align-self: stretch !important + } +} + +@media (min-width:1600px) { + .flex-exl-row { + flex-direction: row !important + } + .flex-exl-column { + flex-direction: column !important + } + .flex-exl-row-reverse { + flex-direction: row-reverse !important + } + .flex-exl-column-reverse { + flex-direction: column-reverse !important + } + .flex-exl-wrap { + flex-wrap: wrap !important + } + .flex-exl-nowrap { + flex-wrap: nowrap !important + } + .flex-exl-wrap-reverse { + flex-wrap: wrap-reverse !important + } + .flex-exl-fill { + flex: 1 1 auto !important + } + .flex-exl-grow-0 { + flex-grow: 0 !important + } + .flex-exl-grow-1 { + flex-grow: 1 !important + } + .flex-exl-shrink-0 { + flex-shrink: 0 !important + } + .flex-exl-shrink-1 { + flex-shrink: 1 !important + } + .justify-content-exl-start { + justify-content: flex-start !important + } + .justify-content-exl-end { + justify-content: flex-end !important + } + .justify-content-exl-center { + justify-content: center !important + } + .justify-content-exl-between { + justify-content: space-between !important + } + .justify-content-exl-around { + justify-content: space-around !important + } + .align-items-exl-start { + align-items: flex-start !important + } + .align-items-exl-end { + align-items: flex-end !important + } + .align-items-exl-center { + align-items: center !important + } + .align-items-exl-baseline { + align-items: baseline !important + } + .align-items-exl-stretch { + align-items: stretch !important + } + .align-content-exl-start { + align-content: flex-start !important + } + .align-content-exl-end { + align-content: flex-end !important + } + .align-content-exl-center { + align-content: center !important + } + .align-content-exl-between { + align-content: space-between !important + } + .align-content-exl-around { + align-content: space-around !important + } + .align-content-exl-stretch { + align-content: stretch !important + } + .align-self-exl-auto { + align-self: auto !important + } + .align-self-exl-start { + align-self: flex-start !important + } + .align-self-exl-end { + align-self: flex-end !important + } + .align-self-exl-center { + align-self: center !important + } + .align-self-exl-baseline { + align-self: baseline !important + } + .align-self-exl-stretch { + align-self: stretch !important + } +} + +.float-left { + float: left !important +} + +.float-right { + float: right !important +} + +.float-none { + float: none !important +} + +@media (min-width:576px) { + .float-sm-left { + float: left !important + } + .float-sm-right { + float: right !important + } + .float-sm-none { + float: none !important + } +} + +@media (min-width:800px) { + .float-md-left { + float: left !important + } + .float-md-right { + float: right !important + } + .float-md-none { + float: none !important + } +} + +@media (min-width:992px) { + .float-lg-left { + float: left !important + } + .float-lg-right { + float: right !important + } + .float-lg-none { + float: none !important + } +} + +@media (min-width:1200px) { + .float-xl-left { + float: left !important + } + .float-xl-right { + float: right !important + } + .float-xl-none { + float: none !important + } +} + +@media (min-width:1440px) { + .float-xxl-left { + float: left !important + } + .float-xxl-right { + float: right !important + } + .float-xxl-none { + float: none !important + } +} + +@media (min-width:1600px) { + .float-exl-left { + float: left !important + } + .float-exl-right { + float: right !important + } + .float-exl-none { + float: none !important + } +} + +.position-static { + position: static !important +} + +.position-relative { + position: relative !important +} + +.position-absolute { + position: absolute !important +} + +.position-fixed { + position: fixed !important +} + +.position-sticky { + position: sticky !important +} + +.fixed-top { + top: 0 +} + +.fixed-bottom, +.fixed-top { + position: fixed; + right: 0; + left: 0; + z-index: 1030 +} + +.fixed-bottom { + bottom: 0 +} + +@supports (position:sticky) { + .sticky-top { + position: sticky; + top: 0; + z-index: 1020 + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0 +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal +} + +.shadow-sm { + box-shadow: 0 2px 10px 0 rgba(33, 35, 68, .05) !important +} + +.shadow { + box-shadow: 0 6px 14px 0 rgba(33, 35, 68, .05) !important +} + +.card-hover:hover, +.shadow-lg { + box-shadow: 0 10px 14px 0 rgba(33, 35, 68, .05) !important +} + +.shadow-none { + box-shadow: none !important +} + +.w-25 { + width: 25% !important +} + +.w-50 { + width: 50% !important +} + +.w-75 { + width: 75% !important +} + +.w-100 { + width: 100% !important +} + +.h-25 { + height: 25% !important +} + +.h-50 { + height: 50% !important +} + +.h-75 { + height: 75% !important +} + +.h-100 { + height: 100% !important +} + +.mw-100 { + max-width: 100% !important +} + +.mh-100 { + max-height: 100% !important +} + +.m-0 { + margin: 0 !important +} + +.mt-0, +.my-0 { + margin-top: 0 !important +} + +.mr-0, +.mx-0 { + margin-right: 0 !important +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important +} + +.ml-0, +.mx-0 { + margin-left: 0 !important +} + +.m-1 { + margin: 1rem !important +} + +.mt-1, +.my-1 { + margin-top: 1rem !important +} + +.mr-1, +.mx-1 { + margin-right: 1rem !important +} + +.mb-1, +.my-1 { + margin-bottom: 1rem !important +} + +.ml-1, +.mx-1 { + margin-left: 1rem !important +} + +.m-2 { + margin: 2rem !important +} + +.mt-2, +.my-2 { + margin-top: 2rem !important +} + +.mr-2, +.mx-2 { + margin-right: 2rem !important +} + +.mb-2, +.my-2 { + margin-bottom: 2rem !important +} + +.ml-2, +.mx-2 { + margin-left: 2rem !important +} + +.m-3 { + margin: 3rem !important +} + +.mt-3, +.my-3 { + margin-top: 3rem !important +} + +.mr-3, +.mx-3 { + margin-right: 3rem !important +} + +.mb-3, +.my-3 { + margin-bottom: 3rem !important +} + +.ml-3, +.mx-3 { + margin-left: 3rem !important +} + +.m-4 { + margin: 4rem !important +} + +.mt-4, +.my-4 { + margin-top: 4rem !important +} + +.mr-4, +.mx-4 { + margin-right: 4rem !important +} + +.mb-4, +.my-4 { + margin-bottom: 4rem !important +} + +.ml-4, +.mx-4 { + margin-left: 4rem !important +} + +.m-5 { + margin: 5rem !important +} + +.mt-5, +.my-5 { + margin-top: 5rem !important +} + +.mr-5, +.mx-5 { + margin-right: 5rem !important +} + +.mb-5, +.my-5 { + margin-bottom: 5rem !important +} + +.ml-5, +.mx-5 { + margin-left: 5rem !important +} + +.m-6 { + margin: 6rem !important +} + +.mt-6, +.my-6 { + margin-top: 6rem !important +} + +.mr-6, +.mx-6 { + margin-right: 6rem !important +} + +.mb-6, +.my-6 { + margin-bottom: 6rem !important +} + +.ml-6, +.mx-6 { + margin-left: 6rem !important +} + +.m-7 { + margin: 7rem !important +} + +.mt-7, +.my-7 { + margin-top: 7rem !important +} + +.mr-7, +.mx-7 { + margin-right: 7rem !important +} + +.mb-7, +.my-7 { + margin-bottom: 7rem !important +} + +.ml-7, +.mx-7 { + margin-left: 7rem !important +} + +.m-8 { + margin: 8rem !important +} + +.mt-8, +.my-8 { + margin-top: 8rem !important +} + +.mr-8, +.mx-8 { + margin-right: 8rem !important +} + +.mb-8, +.my-8 { + margin-bottom: 8rem !important +} + +.ml-8, +.mx-8 { + margin-left: 8rem !important +} + +.m-9 { + margin: 9rem !important +} + +.mt-9, +.my-9 { + margin-top: 9rem !important +} + +.mr-9, +.mx-9 { + margin-right: 9rem !important +} + +.mb-9, +.my-9 { + margin-bottom: 9rem !important +} + +.ml-9, +.mx-9 { + margin-left: 9rem !important +} + +.m-10 { + margin: 10rem !important +} + +.mt-10, +.my-10 { + margin-top: 10rem !important +} + +.mr-10, +.mx-10 { + margin-right: 10rem !important +} + +.mb-10, +.my-10 { + margin-bottom: 10rem !important +} + +.ml-10, +.mx-10 { + margin-left: 10rem !important +} + +.m-11 { + margin: 11rem !important +} + +.mt-11, +.my-11 { + margin-top: 11rem !important +} + +.mr-11, +.mx-11 { + margin-right: 11rem !important +} + +.mb-11, +.my-11 { + margin-bottom: 11rem !important +} + +.ml-11, +.mx-11 { + margin-left: 11rem !important +} + +.m-12 { + margin: 12rem !important +} + +.mt-12, +.my-12 { + margin-top: 12rem !important +} + +.mr-12, +.mx-12 { + margin-right: 12rem !important +} + +.mb-12, +.my-12 { + margin-bottom: 12rem !important +} + +.ml-12, +.mx-12 { + margin-left: 12rem !important +} + +.m-13 { + margin: 13rem !important +} + +.mt-13, +.my-13 { + margin-top: 13rem !important +} + +.mr-13, +.mx-13 { + margin-right: 13rem !important +} + +.mb-13, +.my-13 { + margin-bottom: 13rem !important +} + +.ml-13, +.mx-13 { + margin-left: 13rem !important +} + +.p-0 { + padding: 0 !important +} + +.pt-0, +.py-0 { + padding-top: 0 !important +} + +.pr-0, +.px-0 { + padding-right: 0 !important +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important +} + +.pl-0, +.px-0 { + padding-left: 0 !important +} + +.p-1 { + padding: 1rem !important +} + +.pt-1, +.py-1 { + padding-top: 1rem !important +} + +.pr-1, +.px-1 { + padding-right: 1rem !important +} + +.pb-1, +.py-1 { + padding-bottom: 1rem !important +} + +.pl-1, +.px-1 { + padding-left: 1rem !important +} + +.p-2 { + padding: 2rem !important +} + +.pt-2, +.py-2 { + padding-top: 2rem !important +} + +.pr-2, +.px-2 { + padding-right: 2rem !important +} + +.pb-2, +.py-2 { + padding-bottom: 2rem !important +} + +.pl-2, +.px-2 { + padding-left: 2rem !important +} + +.p-3 { + padding: 3rem !important +} + +.pt-3, +.py-3 { + padding-top: 3rem !important +} + +.pr-3, +.px-3 { + padding-right: 3rem !important +} + +.pb-3, +.py-3 { + padding-bottom: 3rem !important +} + +.pl-3, +.px-3 { + padding-left: 3rem !important +} + +.p-4 { + padding: 4rem !important +} + +.pt-4, +.py-4 { + padding-top: 4rem !important +} + +.pr-4, +.px-4 { + padding-right: 4rem !important +} + +.pb-4, +.py-4 { + padding-bottom: 4rem !important +} + +.pl-4, +.px-4 { + padding-left: 4rem !important +} + +.p-5 { + padding: 5rem !important +} + +.pt-5, +.py-5 { + padding-top: 5rem !important +} + +.pr-5, +.px-5 { + padding-right: 5rem !important +} + +.pb-5, +.py-5 { + padding-bottom: 5rem !important +} + +.pl-5, +.px-5 { + padding-left: 5rem !important +} + +.p-6 { + padding: 6rem !important +} + +.pt-6, +.py-6 { + padding-top: 6rem !important +} + +.pr-6, +.px-6 { + padding-right: 6rem !important +} + +.pb-6, +.py-6 { + padding-bottom: 6rem !important +} + +.pl-6, +.px-6 { + padding-left: 6rem !important +} + +.p-7 { + padding: 7rem !important +} + +.pt-7, +.py-7 { + padding-top: 7rem !important +} + +.pr-7, +.px-7 { + padding-right: 7rem !important +} + +.pb-7, +.py-7 { + padding-bottom: 7rem !important +} + +.pl-7, +.px-7 { + padding-left: 7rem !important +} + +.p-8 { + padding: 8rem !important +} + +.pt-8, +.py-8 { + padding-top: 8rem !important +} + +.pr-8, +.px-8 { + padding-right: 8rem !important +} + +.pb-8, +.py-8 { + padding-bottom: 8rem !important +} + +.pl-8, +.px-8 { + padding-left: 8rem !important +} + +.p-9 { + padding: 9rem !important +} + +.pt-9, +.py-9 { + padding-top: 9rem !important +} + +.pr-9, +.px-9 { + padding-right: 9rem !important +} + +.pb-9, +.py-9 { + padding-bottom: 9rem !important +} + +.pl-9, +.px-9 { + padding-left: 9rem !important +} + +.p-10 { + padding: 10rem !important +} + +.pt-10, +.py-10 { + padding-top: 10rem !important +} + +.pr-10, +.px-10 { + padding-right: 10rem !important +} + +.pb-10, +.py-10 { + padding-bottom: 10rem !important +} + +.pl-10, +.px-10 { + padding-left: 10rem !important +} + +.p-11 { + padding: 11rem !important +} + +.pt-11, +.py-11 { + padding-top: 11rem !important +} + +.pr-11, +.px-11 { + padding-right: 11rem !important +} + +.pb-11, +.py-11 { + padding-bottom: 11rem !important +} + +.pl-11, +.px-11 { + padding-left: 11rem !important +} + +.p-12 { + padding: 12rem !important +} + +.pt-12, +.py-12 { + padding-top: 12rem !important +} + +.pr-12, +.px-12 { + padding-right: 12rem !important +} + +.pb-12, +.py-12 { + padding-bottom: 12rem !important +} + +.pl-12, +.px-12 { + padding-left: 12rem !important +} + +.p-13 { + padding: 13rem !important +} + +.pt-13, +.py-13 { + padding-top: 13rem !important +} + +.pr-13, +.px-13 { + padding-right: 13rem !important +} + +.pb-13, +.py-13 { + padding-bottom: 13rem !important +} + +.pl-13, +.px-13 { + padding-left: 13rem !important +} + +.m-auto { + margin: auto !important +} + +.mt-auto, +.my-auto { + margin-top: auto !important +} + +.mr-auto, +.mx-auto { + margin-right: auto !important +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important +} + +.ml-auto, +.mx-auto { + margin-left: auto !important +} + +@media (min-width:576px) { + .m-sm-0 { + margin: 0 !important + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important + } + .m-sm-1 { + margin: 1rem !important + } + .mt-sm-1, + .my-sm-1 { + margin-top: 1rem !important + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 1rem !important + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 1rem !important + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 1rem !important + } + .m-sm-2 { + margin: 2rem !important + } + .mt-sm-2, + .my-sm-2 { + margin-top: 2rem !important + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 2rem !important + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 2rem !important + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 2rem !important + } + .m-sm-3 { + margin: 3rem !important + } + .mt-sm-3, + .my-sm-3 { + margin-top: 3rem !important + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 3rem !important + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 3rem !important + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 3rem !important + } + .m-sm-4 { + margin: 4rem !important + } + .mt-sm-4, + .my-sm-4 { + margin-top: 4rem !important + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 4rem !important + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 4rem !important + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 4rem !important + } + .m-sm-5 { + margin: 5rem !important + } + .mt-sm-5, + .my-sm-5 { + margin-top: 5rem !important + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 5rem !important + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 5rem !important + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 5rem !important + } + .m-sm-6 { + margin: 6rem !important + } + .mt-sm-6, + .my-sm-6 { + margin-top: 6rem !important + } + .mr-sm-6, + .mx-sm-6 { + margin-right: 6rem !important + } + .mb-sm-6, + .my-sm-6 { + margin-bottom: 6rem !important + } + .ml-sm-6, + .mx-sm-6 { + margin-left: 6rem !important + } + .m-sm-7 { + margin: 7rem !important + } + .mt-sm-7, + .my-sm-7 { + margin-top: 7rem !important + } + .mr-sm-7, + .mx-sm-7 { + margin-right: 7rem !important + } + .mb-sm-7, + .my-sm-7 { + margin-bottom: 7rem !important + } + .ml-sm-7, + .mx-sm-7 { + margin-left: 7rem !important + } + .m-sm-8 { + margin: 8rem !important + } + .mt-sm-8, + .my-sm-8 { + margin-top: 8rem !important + } + .mr-sm-8, + .mx-sm-8 { + margin-right: 8rem !important + } + .mb-sm-8, + .my-sm-8 { + margin-bottom: 8rem !important + } + .ml-sm-8, + .mx-sm-8 { + margin-left: 8rem !important + } + .m-sm-9 { + margin: 9rem !important + } + .mt-sm-9, + .my-sm-9 { + margin-top: 9rem !important + } + .mr-sm-9, + .mx-sm-9 { + margin-right: 9rem !important + } + .mb-sm-9, + .my-sm-9 { + margin-bottom: 9rem !important + } + .ml-sm-9, + .mx-sm-9 { + margin-left: 9rem !important + } + .m-sm-10 { + margin: 10rem !important + } + .mt-sm-10, + .my-sm-10 { + margin-top: 10rem !important + } + .mr-sm-10, + .mx-sm-10 { + margin-right: 10rem !important + } + .mb-sm-10, + .my-sm-10 { + margin-bottom: 10rem !important + } + .ml-sm-10, + .mx-sm-10 { + margin-left: 10rem !important + } + .m-sm-11 { + margin: 11rem !important + } + .mt-sm-11, + .my-sm-11 { + margin-top: 11rem !important + } + .mr-sm-11, + .mx-sm-11 { + margin-right: 11rem !important + } + .mb-sm-11, + .my-sm-11 { + margin-bottom: 11rem !important + } + .ml-sm-11, + .mx-sm-11 { + margin-left: 11rem !important + } + .m-sm-12 { + margin: 12rem !important + } + .mt-sm-12, + .my-sm-12 { + margin-top: 12rem !important + } + .mr-sm-12, + .mx-sm-12 { + margin-right: 12rem !important + } + .mb-sm-12, + .my-sm-12 { + margin-bottom: 12rem !important + } + .ml-sm-12, + .mx-sm-12 { + margin-left: 12rem !important + } + .m-sm-13 { + margin: 13rem !important + } + .mt-sm-13, + .my-sm-13 { + margin-top: 13rem !important + } + .mr-sm-13, + .mx-sm-13 { + margin-right: 13rem !important + } + .mb-sm-13, + .my-sm-13 { + margin-bottom: 13rem !important + } + .ml-sm-13, + .mx-sm-13 { + margin-left: 13rem !important + } + .p-sm-0 { + padding: 0 !important + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important + } + .p-sm-1 { + padding: 1rem !important + } + .pt-sm-1, + .py-sm-1 { + padding-top: 1rem !important + } + .pr-sm-1, + .px-sm-1 { + padding-right: 1rem !important + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 1rem !important + } + .pl-sm-1, + .px-sm-1 { + padding-left: 1rem !important + } + .p-sm-2 { + padding: 2rem !important + } + .pt-sm-2, + .py-sm-2 { + padding-top: 2rem !important + } + .pr-sm-2, + .px-sm-2 { + padding-right: 2rem !important + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 2rem !important + } + .pl-sm-2, + .px-sm-2 { + padding-left: 2rem !important + } + .p-sm-3 { + padding: 3rem !important + } + .pt-sm-3, + .py-sm-3 { + padding-top: 3rem !important + } + .pr-sm-3, + .px-sm-3 { + padding-right: 3rem !important + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 3rem !important + } + .pl-sm-3, + .px-sm-3 { + padding-left: 3rem !important + } + .p-sm-4 { + padding: 4rem !important + } + .pt-sm-4, + .py-sm-4 { + padding-top: 4rem !important + } + .pr-sm-4, + .px-sm-4 { + padding-right: 4rem !important + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 4rem !important + } + .pl-sm-4, + .px-sm-4 { + padding-left: 4rem !important + } + .p-sm-5 { + padding: 5rem !important + } + .pt-sm-5, + .py-sm-5 { + padding-top: 5rem !important + } + .pr-sm-5, + .px-sm-5 { + padding-right: 5rem !important + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 5rem !important + } + .pl-sm-5, + .px-sm-5 { + padding-left: 5rem !important + } + .p-sm-6 { + padding: 6rem !important + } + .pt-sm-6, + .py-sm-6 { + padding-top: 6rem !important + } + .pr-sm-6, + .px-sm-6 { + padding-right: 6rem !important + } + .pb-sm-6, + .py-sm-6 { + padding-bottom: 6rem !important + } + .pl-sm-6, + .px-sm-6 { + padding-left: 6rem !important + } + .p-sm-7 { + padding: 7rem !important + } + .pt-sm-7, + .py-sm-7 { + padding-top: 7rem !important + } + .pr-sm-7, + .px-sm-7 { + padding-right: 7rem !important + } + .pb-sm-7, + .py-sm-7 { + padding-bottom: 7rem !important + } + .pl-sm-7, + .px-sm-7 { + padding-left: 7rem !important + } + .p-sm-8 { + padding: 8rem !important + } + .pt-sm-8, + .py-sm-8 { + padding-top: 8rem !important + } + .pr-sm-8, + .px-sm-8 { + padding-right: 8rem !important + } + .pb-sm-8, + .py-sm-8 { + padding-bottom: 8rem !important + } + .pl-sm-8, + .px-sm-8 { + padding-left: 8rem !important + } + .p-sm-9 { + padding: 9rem !important + } + .pt-sm-9, + .py-sm-9 { + padding-top: 9rem !important + } + .pr-sm-9, + .px-sm-9 { + padding-right: 9rem !important + } + .pb-sm-9, + .py-sm-9 { + padding-bottom: 9rem !important + } + .pl-sm-9, + .px-sm-9 { + padding-left: 9rem !important + } + .p-sm-10 { + padding: 10rem !important + } + .pt-sm-10, + .py-sm-10 { + padding-top: 10rem !important + } + .pr-sm-10, + .px-sm-10 { + padding-right: 10rem !important + } + .pb-sm-10, + .py-sm-10 { + padding-bottom: 10rem !important + } + .pl-sm-10, + .px-sm-10 { + padding-left: 10rem !important + } + .p-sm-11 { + padding: 11rem !important + } + .pt-sm-11, + .py-sm-11 { + padding-top: 11rem !important + } + .pr-sm-11, + .px-sm-11 { + padding-right: 11rem !important + } + .pb-sm-11, + .py-sm-11 { + padding-bottom: 11rem !important + } + .pl-sm-11, + .px-sm-11 { + padding-left: 11rem !important + } + .p-sm-12 { + padding: 12rem !important + } + .pt-sm-12, + .py-sm-12 { + padding-top: 12rem !important + } + .pr-sm-12, + .px-sm-12 { + padding-right: 12rem !important + } + .pb-sm-12, + .py-sm-12 { + padding-bottom: 12rem !important + } + .pl-sm-12, + .px-sm-12 { + padding-left: 12rem !important + } + .p-sm-13 { + padding: 13rem !important + } + .pt-sm-13, + .py-sm-13 { + padding-top: 13rem !important + } + .pr-sm-13, + .px-sm-13 { + padding-right: 13rem !important + } + .pb-sm-13, + .py-sm-13 { + padding-bottom: 13rem !important + } + .pl-sm-13, + .px-sm-13 { + padding-left: 13rem !important + } + .m-sm-auto { + margin: auto !important + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important + } +} + +@media (min-width:800px) { + .m-md-0 { + margin: 0 !important + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important + } + .m-md-1 { + margin: 1rem !important + } + .mt-md-1, + .my-md-1 { + margin-top: 1rem !important + } + .mr-md-1, + .mx-md-1 { + margin-right: 1rem !important + } + .mb-md-1, + .my-md-1 { + margin-bottom: 1rem !important + } + .ml-md-1, + .mx-md-1 { + margin-left: 1rem !important + } + .m-md-2 { + margin: 2rem !important + } + .mt-md-2, + .my-md-2 { + margin-top: 2rem !important + } + .mr-md-2, + .mx-md-2 { + margin-right: 2rem !important + } + .mb-md-2, + .my-md-2 { + margin-bottom: 2rem !important + } + .ml-md-2, + .mx-md-2 { + margin-left: 2rem !important + } + .m-md-3 { + margin: 3rem !important + } + .mt-md-3, + .my-md-3 { + margin-top: 3rem !important + } + .mr-md-3, + .mx-md-3 { + margin-right: 3rem !important + } + .mb-md-3, + .my-md-3 { + margin-bottom: 3rem !important + } + .ml-md-3, + .mx-md-3 { + margin-left: 3rem !important + } + .m-md-4 { + margin: 4rem !important + } + .mt-md-4, + .my-md-4 { + margin-top: 4rem !important + } + .mr-md-4, + .mx-md-4 { + margin-right: 4rem !important + } + .mb-md-4, + .my-md-4 { + margin-bottom: 4rem !important + } + .ml-md-4, + .mx-md-4 { + margin-left: 4rem !important + } + .m-md-5 { + margin: 5rem !important + } + .mt-md-5, + .my-md-5 { + margin-top: 5rem !important + } + .mr-md-5, + .mx-md-5 { + margin-right: 5rem !important + } + .mb-md-5, + .my-md-5 { + margin-bottom: 5rem !important + } + .ml-md-5, + .mx-md-5 { + margin-left: 5rem !important + } + .m-md-6 { + margin: 6rem !important + } + .mt-md-6, + .my-md-6 { + margin-top: 6rem !important + } + .mr-md-6, + .mx-md-6 { + margin-right: 6rem !important + } + .mb-md-6, + .my-md-6 { + margin-bottom: 6rem !important + } + .ml-md-6, + .mx-md-6 { + margin-left: 6rem !important + } + .m-md-7 { + margin: 7rem !important + } + .mt-md-7, + .my-md-7 { + margin-top: 7rem !important + } + .mr-md-7, + .mx-md-7 { + margin-right: 7rem !important + } + .mb-md-7, + .my-md-7 { + margin-bottom: 7rem !important + } + .ml-md-7, + .mx-md-7 { + margin-left: 7rem !important + } + .m-md-8 { + margin: 8rem !important + } + .mt-md-8, + .my-md-8 { + margin-top: 8rem !important + } + .mr-md-8, + .mx-md-8 { + margin-right: 8rem !important + } + .mb-md-8, + .my-md-8 { + margin-bottom: 8rem !important + } + .ml-md-8, + .mx-md-8 { + margin-left: 8rem !important + } + .m-md-9 { + margin: 9rem !important + } + .mt-md-9, + .my-md-9 { + margin-top: 9rem !important + } + .mr-md-9, + .mx-md-9 { + margin-right: 9rem !important + } + .mb-md-9, + .my-md-9 { + margin-bottom: 9rem !important + } + .ml-md-9, + .mx-md-9 { + margin-left: 9rem !important + } + .m-md-10 { + margin: 10rem !important + } + .mt-md-10, + .my-md-10 { + margin-top: 10rem !important + } + .mr-md-10, + .mx-md-10 { + margin-right: 10rem !important + } + .mb-md-10, + .my-md-10 { + margin-bottom: 10rem !important + } + .ml-md-10, + .mx-md-10 { + margin-left: 10rem !important + } + .m-md-11 { + margin: 11rem !important + } + .mt-md-11, + .my-md-11 { + margin-top: 11rem !important + } + .mr-md-11, + .mx-md-11 { + margin-right: 11rem !important + } + .mb-md-11, + .my-md-11 { + margin-bottom: 11rem !important + } + .ml-md-11, + .mx-md-11 { + margin-left: 11rem !important + } + .m-md-12 { + margin: 12rem !important + } + .mt-md-12, + .my-md-12 { + margin-top: 12rem !important + } + .mr-md-12, + .mx-md-12 { + margin-right: 12rem !important + } + .mb-md-12, + .my-md-12 { + margin-bottom: 12rem !important + } + .ml-md-12, + .mx-md-12 { + margin-left: 12rem !important + } + .m-md-13 { + margin: 13rem !important + } + .mt-md-13, + .my-md-13 { + margin-top: 13rem !important + } + .mr-md-13, + .mx-md-13 { + margin-right: 13rem !important + } + .mb-md-13, + .my-md-13 { + margin-bottom: 13rem !important + } + .ml-md-13, + .mx-md-13 { + margin-left: 13rem !important + } + .p-md-0 { + padding: 0 !important + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important + } + .p-md-1 { + padding: 1rem !important + } + .pt-md-1, + .py-md-1 { + padding-top: 1rem !important + } + .pr-md-1, + .px-md-1 { + padding-right: 1rem !important + } + .pb-md-1, + .py-md-1 { + padding-bottom: 1rem !important + } + .pl-md-1, + .px-md-1 { + padding-left: 1rem !important + } + .p-md-2 { + padding: 2rem !important + } + .pt-md-2, + .py-md-2 { + padding-top: 2rem !important + } + .pr-md-2, + .px-md-2 { + padding-right: 2rem !important + } + .pb-md-2, + .py-md-2 { + padding-bottom: 2rem !important + } + .pl-md-2, + .px-md-2 { + padding-left: 2rem !important + } + .p-md-3 { + padding: 3rem !important + } + .pt-md-3, + .py-md-3 { + padding-top: 3rem !important + } + .pr-md-3, + .px-md-3 { + padding-right: 3rem !important + } + .pb-md-3, + .py-md-3 { + padding-bottom: 3rem !important + } + .pl-md-3, + .px-md-3 { + padding-left: 3rem !important + } + .p-md-4 { + padding: 4rem !important + } + .pt-md-4, + .py-md-4 { + padding-top: 4rem !important + } + .pr-md-4, + .px-md-4 { + padding-right: 4rem !important + } + .pb-md-4, + .py-md-4 { + padding-bottom: 4rem !important + } + .pl-md-4, + .px-md-4 { + padding-left: 4rem !important + } + .p-md-5 { + padding: 5rem !important + } + .pt-md-5, + .py-md-5 { + padding-top: 5rem !important + } + .pr-md-5, + .px-md-5 { + padding-right: 5rem !important + } + .pb-md-5, + .py-md-5 { + padding-bottom: 5rem !important + } + .pl-md-5, + .px-md-5 { + padding-left: 5rem !important + } + .p-md-6 { + padding: 6rem !important + } + .pt-md-6, + .py-md-6 { + padding-top: 6rem !important + } + .pr-md-6, + .px-md-6 { + padding-right: 6rem !important + } + .pb-md-6, + .py-md-6 { + padding-bottom: 6rem !important + } + .pl-md-6, + .px-md-6 { + padding-left: 6rem !important + } + .p-md-7 { + padding: 7rem !important + } + .pt-md-7, + .py-md-7 { + padding-top: 7rem !important + } + .pr-md-7, + .px-md-7 { + padding-right: 7rem !important + } + .pb-md-7, + .py-md-7 { + padding-bottom: 7rem !important + } + .pl-md-7, + .px-md-7 { + padding-left: 7rem !important + } + .p-md-8 { + padding: 8rem !important + } + .pt-md-8, + .py-md-8 { + padding-top: 8rem !important + } + .pr-md-8, + .px-md-8 { + padding-right: 8rem !important + } + .pb-md-8, + .py-md-8 { + padding-bottom: 8rem !important + } + .pl-md-8, + .px-md-8 { + padding-left: 8rem !important + } + .p-md-9 { + padding: 9rem !important + } + .pt-md-9, + .py-md-9 { + padding-top: 9rem !important + } + .pr-md-9, + .px-md-9 { + padding-right: 9rem !important + } + .pb-md-9, + .py-md-9 { + padding-bottom: 9rem !important + } + .pl-md-9, + .px-md-9 { + padding-left: 9rem !important + } + .p-md-10 { + padding: 10rem !important + } + .pt-md-10, + .py-md-10 { + padding-top: 10rem !important + } + .pr-md-10, + .px-md-10 { + padding-right: 10rem !important + } + .pb-md-10, + .py-md-10 { + padding-bottom: 10rem !important + } + .pl-md-10, + .px-md-10 { + padding-left: 10rem !important + } + .p-md-11 { + padding: 11rem !important + } + .pt-md-11, + .py-md-11 { + padding-top: 11rem !important + } + .pr-md-11, + .px-md-11 { + padding-right: 11rem !important + } + .pb-md-11, + .py-md-11 { + padding-bottom: 11rem !important + } + .pl-md-11, + .px-md-11 { + padding-left: 11rem !important + } + .p-md-12 { + padding: 12rem !important + } + .pt-md-12, + .py-md-12 { + padding-top: 12rem !important + } + .pr-md-12, + .px-md-12 { + padding-right: 12rem !important + } + .pb-md-12, + .py-md-12 { + padding-bottom: 12rem !important + } + .pl-md-12, + .px-md-12 { + padding-left: 12rem !important + } + .p-md-13 { + padding: 13rem !important + } + .pt-md-13, + .py-md-13 { + padding-top: 13rem !important + } + .pr-md-13, + .px-md-13 { + padding-right: 13rem !important + } + .pb-md-13, + .py-md-13 { + padding-bottom: 13rem !important + } + .pl-md-13, + .px-md-13 { + padding-left: 13rem !important + } + .m-md-auto { + margin: auto !important + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important + } +} + +@media (min-width:992px) { + .m-lg-0 { + margin: 0 !important + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important + } + .m-lg-1 { + margin: 1rem !important + } + .mt-lg-1, + .my-lg-1 { + margin-top: 1rem !important + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 1rem !important + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 1rem !important + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 1rem !important + } + .m-lg-2 { + margin: 2rem !important + } + .mt-lg-2, + .my-lg-2 { + margin-top: 2rem !important + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 2rem !important + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 2rem !important + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 2rem !important + } + .m-lg-3 { + margin: 3rem !important + } + .mt-lg-3, + .my-lg-3 { + margin-top: 3rem !important + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 3rem !important + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 3rem !important + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 3rem !important + } + .m-lg-4 { + margin: 4rem !important + } + .mt-lg-4, + .my-lg-4 { + margin-top: 4rem !important + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 4rem !important + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 4rem !important + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 4rem !important + } + .m-lg-5 { + margin: 5rem !important + } + .mt-lg-5, + .my-lg-5 { + margin-top: 5rem !important + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 5rem !important + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 5rem !important + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 5rem !important + } + .m-lg-6 { + margin: 6rem !important + } + .mt-lg-6, + .my-lg-6 { + margin-top: 6rem !important + } + .mr-lg-6, + .mx-lg-6 { + margin-right: 6rem !important + } + .mb-lg-6, + .my-lg-6 { + margin-bottom: 6rem !important + } + .ml-lg-6, + .mx-lg-6 { + margin-left: 6rem !important + } + .m-lg-7 { + margin: 7rem !important + } + .mt-lg-7, + .my-lg-7 { + margin-top: 7rem !important + } + .mr-lg-7, + .mx-lg-7 { + margin-right: 7rem !important + } + .mb-lg-7, + .my-lg-7 { + margin-bottom: 7rem !important + } + .ml-lg-7, + .mx-lg-7 { + margin-left: 7rem !important + } + .m-lg-8 { + margin: 8rem !important + } + .mt-lg-8, + .my-lg-8 { + margin-top: 8rem !important + } + .mr-lg-8, + .mx-lg-8 { + margin-right: 8rem !important + } + .mb-lg-8, + .my-lg-8 { + margin-bottom: 8rem !important + } + .ml-lg-8, + .mx-lg-8 { + margin-left: 8rem !important + } + .m-lg-9 { + margin: 9rem !important + } + .mt-lg-9, + .my-lg-9 { + margin-top: 9rem !important + } + .mr-lg-9, + .mx-lg-9 { + margin-right: 9rem !important + } + .mb-lg-9, + .my-lg-9 { + margin-bottom: 9rem !important + } + .ml-lg-9, + .mx-lg-9 { + margin-left: 9rem !important + } + .m-lg-10 { + margin: 10rem !important + } + .mt-lg-10, + .my-lg-10 { + margin-top: 10rem !important + } + .mr-lg-10, + .mx-lg-10 { + margin-right: 10rem !important + } + .mb-lg-10, + .my-lg-10 { + margin-bottom: 10rem !important + } + .ml-lg-10, + .mx-lg-10 { + margin-left: 10rem !important + } + .m-lg-11 { + margin: 11rem !important + } + .mt-lg-11, + .my-lg-11 { + margin-top: 11rem !important + } + .mr-lg-11, + .mx-lg-11 { + margin-right: 11rem !important + } + .mb-lg-11, + .my-lg-11 { + margin-bottom: 11rem !important + } + .ml-lg-11, + .mx-lg-11 { + margin-left: 11rem !important + } + .m-lg-12 { + margin: 12rem !important + } + .mt-lg-12, + .my-lg-12 { + margin-top: 12rem !important + } + .mr-lg-12, + .mx-lg-12 { + margin-right: 12rem !important + } + .mb-lg-12, + .my-lg-12 { + margin-bottom: 12rem !important + } + .ml-lg-12, + .mx-lg-12 { + margin-left: 12rem !important + } + .m-lg-13 { + margin: 13rem !important + } + .mt-lg-13, + .my-lg-13 { + margin-top: 13rem !important + } + .mr-lg-13, + .mx-lg-13 { + margin-right: 13rem !important + } + .mb-lg-13, + .my-lg-13 { + margin-bottom: 13rem !important + } + .ml-lg-13, + .mx-lg-13 { + margin-left: 13rem !important + } + .p-lg-0 { + padding: 0 !important + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important + } + .p-lg-1 { + padding: 1rem !important + } + .pt-lg-1, + .py-lg-1 { + padding-top: 1rem !important + } + .pr-lg-1, + .px-lg-1 { + padding-right: 1rem !important + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 1rem !important + } + .pl-lg-1, + .px-lg-1 { + padding-left: 1rem !important + } + .p-lg-2 { + padding: 2rem !important + } + .pt-lg-2, + .py-lg-2 { + padding-top: 2rem !important + } + .pr-lg-2, + .px-lg-2 { + padding-right: 2rem !important + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 2rem !important + } + .pl-lg-2, + .px-lg-2 { + padding-left: 2rem !important + } + .p-lg-3 { + padding: 3rem !important + } + .pt-lg-3, + .py-lg-3 { + padding-top: 3rem !important + } + .pr-lg-3, + .px-lg-3 { + padding-right: 3rem !important + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 3rem !important + } + .pl-lg-3, + .px-lg-3 { + padding-left: 3rem !important + } + .p-lg-4 { + padding: 4rem !important + } + .pt-lg-4, + .py-lg-4 { + padding-top: 4rem !important + } + .pr-lg-4, + .px-lg-4 { + padding-right: 4rem !important + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 4rem !important + } + .pl-lg-4, + .px-lg-4 { + padding-left: 4rem !important + } + .p-lg-5 { + padding: 5rem !important + } + .pt-lg-5, + .py-lg-5 { + padding-top: 5rem !important + } + .pr-lg-5, + .px-lg-5 { + padding-right: 5rem !important + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 5rem !important + } + .pl-lg-5, + .px-lg-5 { + padding-left: 5rem !important + } + .p-lg-6 { + padding: 6rem !important + } + .pt-lg-6, + .py-lg-6 { + padding-top: 6rem !important + } + .pr-lg-6, + .px-lg-6 { + padding-right: 6rem !important + } + .pb-lg-6, + .py-lg-6 { + padding-bottom: 6rem !important + } + .pl-lg-6, + .px-lg-6 { + padding-left: 6rem !important + } + .p-lg-7 { + padding: 7rem !important + } + .pt-lg-7, + .py-lg-7 { + padding-top: 7rem !important + } + .pr-lg-7, + .px-lg-7 { + padding-right: 7rem !important + } + .pb-lg-7, + .py-lg-7 { + padding-bottom: 7rem !important + } + .pl-lg-7, + .px-lg-7 { + padding-left: 7rem !important + } + .p-lg-8 { + padding: 8rem !important + } + .pt-lg-8, + .py-lg-8 { + padding-top: 8rem !important + } + .pr-lg-8, + .px-lg-8 { + padding-right: 8rem !important + } + .pb-lg-8, + .py-lg-8 { + padding-bottom: 8rem !important + } + .pl-lg-8, + .px-lg-8 { + padding-left: 8rem !important + } + .p-lg-9 { + padding: 9rem !important + } + .pt-lg-9, + .py-lg-9 { + padding-top: 9rem !important + } + .pr-lg-9, + .px-lg-9 { + padding-right: 9rem !important + } + .pb-lg-9, + .py-lg-9 { + padding-bottom: 9rem !important + } + .pl-lg-9, + .px-lg-9 { + padding-left: 9rem !important + } + .p-lg-10 { + padding: 10rem !important + } + .pt-lg-10, + .py-lg-10 { + padding-top: 10rem !important + } + .pr-lg-10, + .px-lg-10 { + padding-right: 10rem !important + } + .pb-lg-10, + .py-lg-10 { + padding-bottom: 10rem !important + } + .pl-lg-10, + .px-lg-10 { + padding-left: 10rem !important + } + .p-lg-11 { + padding: 11rem !important + } + .pt-lg-11, + .py-lg-11 { + padding-top: 11rem !important + } + .pr-lg-11, + .px-lg-11 { + padding-right: 11rem !important + } + .pb-lg-11, + .py-lg-11 { + padding-bottom: 11rem !important + } + .pl-lg-11, + .px-lg-11 { + padding-left: 11rem !important + } + .p-lg-12 { + padding: 12rem !important + } + .pt-lg-12, + .py-lg-12 { + padding-top: 12rem !important + } + .pr-lg-12, + .px-lg-12 { + padding-right: 12rem !important + } + .pb-lg-12, + .py-lg-12 { + padding-bottom: 12rem !important + } + .pl-lg-12, + .px-lg-12 { + padding-left: 12rem !important + } + .p-lg-13 { + padding: 13rem !important + } + .pt-lg-13, + .py-lg-13 { + padding-top: 13rem !important + } + .pr-lg-13, + .px-lg-13 { + padding-right: 13rem !important + } + .pb-lg-13, + .py-lg-13 { + padding-bottom: 13rem !important + } + .pl-lg-13, + .px-lg-13 { + padding-left: 13rem !important + } + .m-lg-auto { + margin: auto !important + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important + } +} + +@media (min-width:1200px) { + .m-xl-0 { + margin: 0 !important + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important + } + .m-xl-1 { + margin: 1rem !important + } + .mt-xl-1, + .my-xl-1 { + margin-top: 1rem !important + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 1rem !important + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 1rem !important + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 1rem !important + } + .m-xl-2 { + margin: 2rem !important + } + .mt-xl-2, + .my-xl-2 { + margin-top: 2rem !important + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 2rem !important + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 2rem !important + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 2rem !important + } + .m-xl-3 { + margin: 3rem !important + } + .mt-xl-3, + .my-xl-3 { + margin-top: 3rem !important + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 3rem !important + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 3rem !important + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 3rem !important + } + .m-xl-4 { + margin: 4rem !important + } + .mt-xl-4, + .my-xl-4 { + margin-top: 4rem !important + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 4rem !important + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 4rem !important + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 4rem !important + } + .m-xl-5 { + margin: 5rem !important + } + .mt-xl-5, + .my-xl-5 { + margin-top: 5rem !important + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 5rem !important + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 5rem !important + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 5rem !important + } + .m-xl-6 { + margin: 6rem !important + } + .mt-xl-6, + .my-xl-6 { + margin-top: 6rem !important + } + .mr-xl-6, + .mx-xl-6 { + margin-right: 6rem !important + } + .mb-xl-6, + .my-xl-6 { + margin-bottom: 6rem !important + } + .ml-xl-6, + .mx-xl-6 { + margin-left: 6rem !important + } + .m-xl-7 { + margin: 7rem !important + } + .mt-xl-7, + .my-xl-7 { + margin-top: 7rem !important + } + .mr-xl-7, + .mx-xl-7 { + margin-right: 7rem !important + } + .mb-xl-7, + .my-xl-7 { + margin-bottom: 7rem !important + } + .ml-xl-7, + .mx-xl-7 { + margin-left: 7rem !important + } + .m-xl-8 { + margin: 8rem !important + } + .mt-xl-8, + .my-xl-8 { + margin-top: 8rem !important + } + .mr-xl-8, + .mx-xl-8 { + margin-right: 8rem !important + } + .mb-xl-8, + .my-xl-8 { + margin-bottom: 8rem !important + } + .ml-xl-8, + .mx-xl-8 { + margin-left: 8rem !important + } + .m-xl-9 { + margin: 9rem !important + } + .mt-xl-9, + .my-xl-9 { + margin-top: 9rem !important + } + .mr-xl-9, + .mx-xl-9 { + margin-right: 9rem !important + } + .mb-xl-9, + .my-xl-9 { + margin-bottom: 9rem !important + } + .ml-xl-9, + .mx-xl-9 { + margin-left: 9rem !important + } + .m-xl-10 { + margin: 10rem !important + } + .mt-xl-10, + .my-xl-10 { + margin-top: 10rem !important + } + .mr-xl-10, + .mx-xl-10 { + margin-right: 10rem !important + } + .mb-xl-10, + .my-xl-10 { + margin-bottom: 10rem !important + } + .ml-xl-10, + .mx-xl-10 { + margin-left: 10rem !important + } + .m-xl-11 { + margin: 11rem !important + } + .mt-xl-11, + .my-xl-11 { + margin-top: 11rem !important + } + .mr-xl-11, + .mx-xl-11 { + margin-right: 11rem !important + } + .mb-xl-11, + .my-xl-11 { + margin-bottom: 11rem !important + } + .ml-xl-11, + .mx-xl-11 { + margin-left: 11rem !important + } + .m-xl-12 { + margin: 12rem !important + } + .mt-xl-12, + .my-xl-12 { + margin-top: 12rem !important + } + .mr-xl-12, + .mx-xl-12 { + margin-right: 12rem !important + } + .mb-xl-12, + .my-xl-12 { + margin-bottom: 12rem !important + } + .ml-xl-12, + .mx-xl-12 { + margin-left: 12rem !important + } + .m-xl-13 { + margin: 13rem !important + } + .mt-xl-13, + .my-xl-13 { + margin-top: 13rem !important + } + .mr-xl-13, + .mx-xl-13 { + margin-right: 13rem !important + } + .mb-xl-13, + .my-xl-13 { + margin-bottom: 13rem !important + } + .ml-xl-13, + .mx-xl-13 { + margin-left: 13rem !important + } + .p-xl-0 { + padding: 0 !important + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important + } + .p-xl-1 { + padding: 1rem !important + } + .pt-xl-1, + .py-xl-1 { + padding-top: 1rem !important + } + .pr-xl-1, + .px-xl-1 { + padding-right: 1rem !important + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 1rem !important + } + .pl-xl-1, + .px-xl-1 { + padding-left: 1rem !important + } + .p-xl-2 { + padding: 2rem !important + } + .pt-xl-2, + .py-xl-2 { + padding-top: 2rem !important + } + .pr-xl-2, + .px-xl-2 { + padding-right: 2rem !important + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 2rem !important + } + .pl-xl-2, + .px-xl-2 { + padding-left: 2rem !important + } + .p-xl-3 { + padding: 3rem !important + } + .pt-xl-3, + .py-xl-3 { + padding-top: 3rem !important + } + .pr-xl-3, + .px-xl-3 { + padding-right: 3rem !important + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 3rem !important + } + .pl-xl-3, + .px-xl-3 { + padding-left: 3rem !important + } + .p-xl-4 { + padding: 4rem !important + } + .pt-xl-4, + .py-xl-4 { + padding-top: 4rem !important + } + .pr-xl-4, + .px-xl-4 { + padding-right: 4rem !important + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 4rem !important + } + .pl-xl-4, + .px-xl-4 { + padding-left: 4rem !important + } + .p-xl-5 { + padding: 5rem !important + } + .pt-xl-5, + .py-xl-5 { + padding-top: 5rem !important + } + .pr-xl-5, + .px-xl-5 { + padding-right: 5rem !important + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 5rem !important + } + .pl-xl-5, + .px-xl-5 { + padding-left: 5rem !important + } + .p-xl-6 { + padding: 6rem !important + } + .pt-xl-6, + .py-xl-6 { + padding-top: 6rem !important + } + .pr-xl-6, + .px-xl-6 { + padding-right: 6rem !important + } + .pb-xl-6, + .py-xl-6 { + padding-bottom: 6rem !important + } + .pl-xl-6, + .px-xl-6 { + padding-left: 6rem !important + } + .p-xl-7 { + padding: 7rem !important + } + .pt-xl-7, + .py-xl-7 { + padding-top: 7rem !important + } + .pr-xl-7, + .px-xl-7 { + padding-right: 7rem !important + } + .pb-xl-7, + .py-xl-7 { + padding-bottom: 7rem !important + } + .pl-xl-7, + .px-xl-7 { + padding-left: 7rem !important + } + .p-xl-8 { + padding: 8rem !important + } + .pt-xl-8, + .py-xl-8 { + padding-top: 8rem !important + } + .pr-xl-8, + .px-xl-8 { + padding-right: 8rem !important + } + .pb-xl-8, + .py-xl-8 { + padding-bottom: 8rem !important + } + .pl-xl-8, + .px-xl-8 { + padding-left: 8rem !important + } + .p-xl-9 { + padding: 9rem !important + } + .pt-xl-9, + .py-xl-9 { + padding-top: 9rem !important + } + .pr-xl-9, + .px-xl-9 { + padding-right: 9rem !important + } + .pb-xl-9, + .py-xl-9 { + padding-bottom: 9rem !important + } + .pl-xl-9, + .px-xl-9 { + padding-left: 9rem !important + } + .p-xl-10 { + padding: 10rem !important + } + .pt-xl-10, + .py-xl-10 { + padding-top: 10rem !important + } + .pr-xl-10, + .px-xl-10 { + padding-right: 10rem !important + } + .pb-xl-10, + .py-xl-10 { + padding-bottom: 10rem !important + } + .pl-xl-10, + .px-xl-10 { + padding-left: 10rem !important + } + .p-xl-11 { + padding: 11rem !important + } + .pt-xl-11, + .py-xl-11 { + padding-top: 11rem !important + } + .pr-xl-11, + .px-xl-11 { + padding-right: 11rem !important + } + .pb-xl-11, + .py-xl-11 { + padding-bottom: 11rem !important + } + .pl-xl-11, + .px-xl-11 { + padding-left: 11rem !important + } + .p-xl-12 { + padding: 12rem !important + } + .pt-xl-12, + .py-xl-12 { + padding-top: 12rem !important + } + .pr-xl-12, + .px-xl-12 { + padding-right: 12rem !important + } + .pb-xl-12, + .py-xl-12 { + padding-bottom: 12rem !important + } + .pl-xl-12, + .px-xl-12 { + padding-left: 12rem !important + } + .p-xl-13 { + padding: 13rem !important + } + .pt-xl-13, + .py-xl-13 { + padding-top: 13rem !important + } + .pr-xl-13, + .px-xl-13 { + padding-right: 13rem !important + } + .pb-xl-13, + .py-xl-13 { + padding-bottom: 13rem !important + } + .pl-xl-13, + .px-xl-13 { + padding-left: 13rem !important + } + .m-xl-auto { + margin: auto !important + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important + } +} + +@media (min-width:1440px) { + .m-xxl-0 { + margin: 0 !important + } + .mt-xxl-0, + .my-xxl-0 { + margin-top: 0 !important + } + .mr-xxl-0, + .mx-xxl-0 { + margin-right: 0 !important + } + .mb-xxl-0, + .my-xxl-0 { + margin-bottom: 0 !important + } + .ml-xxl-0, + .mx-xxl-0 { + margin-left: 0 !important + } + .m-xxl-1 { + margin: 1rem !important + } + .mt-xxl-1, + .my-xxl-1 { + margin-top: 1rem !important + } + .mr-xxl-1, + .mx-xxl-1 { + margin-right: 1rem !important + } + .mb-xxl-1, + .my-xxl-1 { + margin-bottom: 1rem !important + } + .ml-xxl-1, + .mx-xxl-1 { + margin-left: 1rem !important + } + .m-xxl-2 { + margin: 2rem !important + } + .mt-xxl-2, + .my-xxl-2 { + margin-top: 2rem !important + } + .mr-xxl-2, + .mx-xxl-2 { + margin-right: 2rem !important + } + .mb-xxl-2, + .my-xxl-2 { + margin-bottom: 2rem !important + } + .ml-xxl-2, + .mx-xxl-2 { + margin-left: 2rem !important + } + .m-xxl-3 { + margin: 3rem !important + } + .mt-xxl-3, + .my-xxl-3 { + margin-top: 3rem !important + } + .mr-xxl-3, + .mx-xxl-3 { + margin-right: 3rem !important + } + .mb-xxl-3, + .my-xxl-3 { + margin-bottom: 3rem !important + } + .ml-xxl-3, + .mx-xxl-3 { + margin-left: 3rem !important + } + .m-xxl-4 { + margin: 4rem !important + } + .mt-xxl-4, + .my-xxl-4 { + margin-top: 4rem !important + } + .mr-xxl-4, + .mx-xxl-4 { + margin-right: 4rem !important + } + .mb-xxl-4, + .my-xxl-4 { + margin-bottom: 4rem !important + } + .ml-xxl-4, + .mx-xxl-4 { + margin-left: 4rem !important + } + .m-xxl-5 { + margin: 5rem !important + } + .mt-xxl-5, + .my-xxl-5 { + margin-top: 5rem !important + } + .mr-xxl-5, + .mx-xxl-5 { + margin-right: 5rem !important + } + .mb-xxl-5, + .my-xxl-5 { + margin-bottom: 5rem !important + } + .ml-xxl-5, + .mx-xxl-5 { + margin-left: 5rem !important + } + .m-xxl-6 { + margin: 6rem !important + } + .mt-xxl-6, + .my-xxl-6 { + margin-top: 6rem !important + } + .mr-xxl-6, + .mx-xxl-6 { + margin-right: 6rem !important + } + .mb-xxl-6, + .my-xxl-6 { + margin-bottom: 6rem !important + } + .ml-xxl-6, + .mx-xxl-6 { + margin-left: 6rem !important + } + .m-xxl-7 { + margin: 7rem !important + } + .mt-xxl-7, + .my-xxl-7 { + margin-top: 7rem !important + } + .mr-xxl-7, + .mx-xxl-7 { + margin-right: 7rem !important + } + .mb-xxl-7, + .my-xxl-7 { + margin-bottom: 7rem !important + } + .ml-xxl-7, + .mx-xxl-7 { + margin-left: 7rem !important + } + .m-xxl-8 { + margin: 8rem !important + } + .mt-xxl-8, + .my-xxl-8 { + margin-top: 8rem !important + } + .mr-xxl-8, + .mx-xxl-8 { + margin-right: 8rem !important + } + .mb-xxl-8, + .my-xxl-8 { + margin-bottom: 8rem !important + } + .ml-xxl-8, + .mx-xxl-8 { + margin-left: 8rem !important + } + .m-xxl-9 { + margin: 9rem !important + } + .mt-xxl-9, + .my-xxl-9 { + margin-top: 9rem !important + } + .mr-xxl-9, + .mx-xxl-9 { + margin-right: 9rem !important + } + .mb-xxl-9, + .my-xxl-9 { + margin-bottom: 9rem !important + } + .ml-xxl-9, + .mx-xxl-9 { + margin-left: 9rem !important + } + .m-xxl-10 { + margin: 10rem !important + } + .mt-xxl-10, + .my-xxl-10 { + margin-top: 10rem !important + } + .mr-xxl-10, + .mx-xxl-10 { + margin-right: 10rem !important + } + .mb-xxl-10, + .my-xxl-10 { + margin-bottom: 10rem !important + } + .ml-xxl-10, + .mx-xxl-10 { + margin-left: 10rem !important + } + .m-xxl-11 { + margin: 11rem !important + } + .mt-xxl-11, + .my-xxl-11 { + margin-top: 11rem !important + } + .mr-xxl-11, + .mx-xxl-11 { + margin-right: 11rem !important + } + .mb-xxl-11, + .my-xxl-11 { + margin-bottom: 11rem !important + } + .ml-xxl-11, + .mx-xxl-11 { + margin-left: 11rem !important + } + .m-xxl-12 { + margin: 12rem !important + } + .mt-xxl-12, + .my-xxl-12 { + margin-top: 12rem !important + } + .mr-xxl-12, + .mx-xxl-12 { + margin-right: 12rem !important + } + .mb-xxl-12, + .my-xxl-12 { + margin-bottom: 12rem !important + } + .ml-xxl-12, + .mx-xxl-12 { + margin-left: 12rem !important + } + .m-xxl-13 { + margin: 13rem !important + } + .mt-xxl-13, + .my-xxl-13 { + margin-top: 13rem !important + } + .mr-xxl-13, + .mx-xxl-13 { + margin-right: 13rem !important + } + .mb-xxl-13, + .my-xxl-13 { + margin-bottom: 13rem !important + } + .ml-xxl-13, + .mx-xxl-13 { + margin-left: 13rem !important + } + .p-xxl-0 { + padding: 0 !important + } + .pt-xxl-0, + .py-xxl-0 { + padding-top: 0 !important + } + .pr-xxl-0, + .px-xxl-0 { + padding-right: 0 !important + } + .pb-xxl-0, + .py-xxl-0 { + padding-bottom: 0 !important + } + .pl-xxl-0, + .px-xxl-0 { + padding-left: 0 !important + } + .p-xxl-1 { + padding: 1rem !important + } + .pt-xxl-1, + .py-xxl-1 { + padding-top: 1rem !important + } + .pr-xxl-1, + .px-xxl-1 { + padding-right: 1rem !important + } + .pb-xxl-1, + .py-xxl-1 { + padding-bottom: 1rem !important + } + .pl-xxl-1, + .px-xxl-1 { + padding-left: 1rem !important + } + .p-xxl-2 { + padding: 2rem !important + } + .pt-xxl-2, + .py-xxl-2 { + padding-top: 2rem !important + } + .pr-xxl-2, + .px-xxl-2 { + padding-right: 2rem !important + } + .pb-xxl-2, + .py-xxl-2 { + padding-bottom: 2rem !important + } + .pl-xxl-2, + .px-xxl-2 { + padding-left: 2rem !important + } + .p-xxl-3 { + padding: 3rem !important + } + .pt-xxl-3, + .py-xxl-3 { + padding-top: 3rem !important + } + .pr-xxl-3, + .px-xxl-3 { + padding-right: 3rem !important + } + .pb-xxl-3, + .py-xxl-3 { + padding-bottom: 3rem !important + } + .pl-xxl-3, + .px-xxl-3 { + padding-left: 3rem !important + } + .p-xxl-4 { + padding: 4rem !important + } + .pt-xxl-4, + .py-xxl-4 { + padding-top: 4rem !important + } + .pr-xxl-4, + .px-xxl-4 { + padding-right: 4rem !important + } + .pb-xxl-4, + .py-xxl-4 { + padding-bottom: 4rem !important + } + .pl-xxl-4, + .px-xxl-4 { + padding-left: 4rem !important + } + .p-xxl-5 { + padding: 5rem !important + } + .pt-xxl-5, + .py-xxl-5 { + padding-top: 5rem !important + } + .pr-xxl-5, + .px-xxl-5 { + padding-right: 5rem !important + } + .pb-xxl-5, + .py-xxl-5 { + padding-bottom: 5rem !important + } + .pl-xxl-5, + .px-xxl-5 { + padding-left: 5rem !important + } + .p-xxl-6 { + padding: 6rem !important + } + .pt-xxl-6, + .py-xxl-6 { + padding-top: 6rem !important + } + .pr-xxl-6, + .px-xxl-6 { + padding-right: 6rem !important + } + .pb-xxl-6, + .py-xxl-6 { + padding-bottom: 6rem !important + } + .pl-xxl-6, + .px-xxl-6 { + padding-left: 6rem !important + } + .p-xxl-7 { + padding: 7rem !important + } + .pt-xxl-7, + .py-xxl-7 { + padding-top: 7rem !important + } + .pr-xxl-7, + .px-xxl-7 { + padding-right: 7rem !important + } + .pb-xxl-7, + .py-xxl-7 { + padding-bottom: 7rem !important + } + .pl-xxl-7, + .px-xxl-7 { + padding-left: 7rem !important + } + .p-xxl-8 { + padding: 8rem !important + } + .pt-xxl-8, + .py-xxl-8 { + padding-top: 8rem !important + } + .pr-xxl-8, + .px-xxl-8 { + padding-right: 8rem !important + } + .pb-xxl-8, + .py-xxl-8 { + padding-bottom: 8rem !important + } + .pl-xxl-8, + .px-xxl-8 { + padding-left: 8rem !important + } + .p-xxl-9 { + padding: 9rem !important + } + .pt-xxl-9, + .py-xxl-9 { + padding-top: 9rem !important + } + .pr-xxl-9, + .px-xxl-9 { + padding-right: 9rem !important + } + .pb-xxl-9, + .py-xxl-9 { + padding-bottom: 9rem !important + } + .pl-xxl-9, + .px-xxl-9 { + padding-left: 9rem !important + } + .p-xxl-10 { + padding: 10rem !important + } + .pt-xxl-10, + .py-xxl-10 { + padding-top: 10rem !important + } + .pr-xxl-10, + .px-xxl-10 { + padding-right: 10rem !important + } + .pb-xxl-10, + .py-xxl-10 { + padding-bottom: 10rem !important + } + .pl-xxl-10, + .px-xxl-10 { + padding-left: 10rem !important + } + .p-xxl-11 { + padding: 11rem !important + } + .pt-xxl-11, + .py-xxl-11 { + padding-top: 11rem !important + } + .pr-xxl-11, + .px-xxl-11 { + padding-right: 11rem !important + } + .pb-xxl-11, + .py-xxl-11 { + padding-bottom: 11rem !important + } + .pl-xxl-11, + .px-xxl-11 { + padding-left: 11rem !important + } + .p-xxl-12 { + padding: 12rem !important + } + .pt-xxl-12, + .py-xxl-12 { + padding-top: 12rem !important + } + .pr-xxl-12, + .px-xxl-12 { + padding-right: 12rem !important + } + .pb-xxl-12, + .py-xxl-12 { + padding-bottom: 12rem !important + } + .pl-xxl-12, + .px-xxl-12 { + padding-left: 12rem !important + } + .p-xxl-13 { + padding: 13rem !important + } + .pt-xxl-13, + .py-xxl-13 { + padding-top: 13rem !important + } + .pr-xxl-13, + .px-xxl-13 { + padding-right: 13rem !important + } + .pb-xxl-13, + .py-xxl-13 { + padding-bottom: 13rem !important + } + .pl-xxl-13, + .px-xxl-13 { + padding-left: 13rem !important + } + .m-xxl-auto { + margin: auto !important + } + .mt-xxl-auto, + .my-xxl-auto { + margin-top: auto !important + } + .mr-xxl-auto, + .mx-xxl-auto { + margin-right: auto !important + } + .mb-xxl-auto, + .my-xxl-auto { + margin-bottom: auto !important + } + .ml-xxl-auto, + .mx-xxl-auto { + margin-left: auto !important + } +} + +@media (min-width:1600px) { + .m-exl-0 { + margin: 0 !important + } + .mt-exl-0, + .my-exl-0 { + margin-top: 0 !important + } + .mr-exl-0, + .mx-exl-0 { + margin-right: 0 !important + } + .mb-exl-0, + .my-exl-0 { + margin-bottom: 0 !important + } + .ml-exl-0, + .mx-exl-0 { + margin-left: 0 !important + } + .m-exl-1 { + margin: 1rem !important + } + .mt-exl-1, + .my-exl-1 { + margin-top: 1rem !important + } + .mr-exl-1, + .mx-exl-1 { + margin-right: 1rem !important + } + .mb-exl-1, + .my-exl-1 { + margin-bottom: 1rem !important + } + .ml-exl-1, + .mx-exl-1 { + margin-left: 1rem !important + } + .m-exl-2 { + margin: 2rem !important + } + .mt-exl-2, + .my-exl-2 { + margin-top: 2rem !important + } + .mr-exl-2, + .mx-exl-2 { + margin-right: 2rem !important + } + .mb-exl-2, + .my-exl-2 { + margin-bottom: 2rem !important + } + .ml-exl-2, + .mx-exl-2 { + margin-left: 2rem !important + } + .m-exl-3 { + margin: 3rem !important + } + .mt-exl-3, + .my-exl-3 { + margin-top: 3rem !important + } + .mr-exl-3, + .mx-exl-3 { + margin-right: 3rem !important + } + .mb-exl-3, + .my-exl-3 { + margin-bottom: 3rem !important + } + .ml-exl-3, + .mx-exl-3 { + margin-left: 3rem !important + } + .m-exl-4 { + margin: 4rem !important + } + .mt-exl-4, + .my-exl-4 { + margin-top: 4rem !important + } + .mr-exl-4, + .mx-exl-4 { + margin-right: 4rem !important + } + .mb-exl-4, + .my-exl-4 { + margin-bottom: 4rem !important + } + .ml-exl-4, + .mx-exl-4 { + margin-left: 4rem !important + } + .m-exl-5 { + margin: 5rem !important + } + .mt-exl-5, + .my-exl-5 { + margin-top: 5rem !important + } + .mr-exl-5, + .mx-exl-5 { + margin-right: 5rem !important + } + .mb-exl-5, + .my-exl-5 { + margin-bottom: 5rem !important + } + .ml-exl-5, + .mx-exl-5 { + margin-left: 5rem !important + } + .m-exl-6 { + margin: 6rem !important + } + .mt-exl-6, + .my-exl-6 { + margin-top: 6rem !important + } + .mr-exl-6, + .mx-exl-6 { + margin-right: 6rem !important + } + .mb-exl-6, + .my-exl-6 { + margin-bottom: 6rem !important + } + .ml-exl-6, + .mx-exl-6 { + margin-left: 6rem !important + } + .m-exl-7 { + margin: 7rem !important + } + .mt-exl-7, + .my-exl-7 { + margin-top: 7rem !important + } + .mr-exl-7, + .mx-exl-7 { + margin-right: 7rem !important + } + .mb-exl-7, + .my-exl-7 { + margin-bottom: 7rem !important + } + .ml-exl-7, + .mx-exl-7 { + margin-left: 7rem !important + } + .m-exl-8 { + margin: 8rem !important + } + .mt-exl-8, + .my-exl-8 { + margin-top: 8rem !important + } + .mr-exl-8, + .mx-exl-8 { + margin-right: 8rem !important + } + .mb-exl-8, + .my-exl-8 { + margin-bottom: 8rem !important + } + .ml-exl-8, + .mx-exl-8 { + margin-left: 8rem !important + } + .m-exl-9 { + margin: 9rem !important + } + .mt-exl-9, + .my-exl-9 { + margin-top: 9rem !important + } + .mr-exl-9, + .mx-exl-9 { + margin-right: 9rem !important + } + .mb-exl-9, + .my-exl-9 { + margin-bottom: 9rem !important + } + .ml-exl-9, + .mx-exl-9 { + margin-left: 9rem !important + } + .m-exl-10 { + margin: 10rem !important + } + .mt-exl-10, + .my-exl-10 { + margin-top: 10rem !important + } + .mr-exl-10, + .mx-exl-10 { + margin-right: 10rem !important + } + .mb-exl-10, + .my-exl-10 { + margin-bottom: 10rem !important + } + .ml-exl-10, + .mx-exl-10 { + margin-left: 10rem !important + } + .m-exl-11 { + margin: 11rem !important + } + .mt-exl-11, + .my-exl-11 { + margin-top: 11rem !important + } + .mr-exl-11, + .mx-exl-11 { + margin-right: 11rem !important + } + .mb-exl-11, + .my-exl-11 { + margin-bottom: 11rem !important + } + .ml-exl-11, + .mx-exl-11 { + margin-left: 11rem !important + } + .m-exl-12 { + margin: 12rem !important + } + .mt-exl-12, + .my-exl-12 { + margin-top: 12rem !important + } + .mr-exl-12, + .mx-exl-12 { + margin-right: 12rem !important + } + .mb-exl-12, + .my-exl-12 { + margin-bottom: 12rem !important + } + .ml-exl-12, + .mx-exl-12 { + margin-left: 12rem !important + } + .m-exl-13 { + margin: 13rem !important + } + .mt-exl-13, + .my-exl-13 { + margin-top: 13rem !important + } + .mr-exl-13, + .mx-exl-13 { + margin-right: 13rem !important + } + .mb-exl-13, + .my-exl-13 { + margin-bottom: 13rem !important + } + .ml-exl-13, + .mx-exl-13 { + margin-left: 13rem !important + } + .p-exl-0 { + padding: 0 !important + } + .pt-exl-0, + .py-exl-0 { + padding-top: 0 !important + } + .pr-exl-0, + .px-exl-0 { + padding-right: 0 !important + } + .pb-exl-0, + .py-exl-0 { + padding-bottom: 0 !important + } + .pl-exl-0, + .px-exl-0 { + padding-left: 0 !important + } + .p-exl-1 { + padding: 1rem !important + } + .pt-exl-1, + .py-exl-1 { + padding-top: 1rem !important + } + .pr-exl-1, + .px-exl-1 { + padding-right: 1rem !important + } + .pb-exl-1, + .py-exl-1 { + padding-bottom: 1rem !important + } + .pl-exl-1, + .px-exl-1 { + padding-left: 1rem !important + } + .p-exl-2 { + padding: 2rem !important + } + .pt-exl-2, + .py-exl-2 { + padding-top: 2rem !important + } + .pr-exl-2, + .px-exl-2 { + padding-right: 2rem !important + } + .pb-exl-2, + .py-exl-2 { + padding-bottom: 2rem !important + } + .pl-exl-2, + .px-exl-2 { + padding-left: 2rem !important + } + .p-exl-3 { + padding: 3rem !important + } + .pt-exl-3, + .py-exl-3 { + padding-top: 3rem !important + } + .pr-exl-3, + .px-exl-3 { + padding-right: 3rem !important + } + .pb-exl-3, + .py-exl-3 { + padding-bottom: 3rem !important + } + .pl-exl-3, + .px-exl-3 { + padding-left: 3rem !important + } + .p-exl-4 { + padding: 4rem !important + } + .pt-exl-4, + .py-exl-4 { + padding-top: 4rem !important + } + .pr-exl-4, + .px-exl-4 { + padding-right: 4rem !important + } + .pb-exl-4, + .py-exl-4 { + padding-bottom: 4rem !important + } + .pl-exl-4, + .px-exl-4 { + padding-left: 4rem !important + } + .p-exl-5 { + padding: 5rem !important + } + .pt-exl-5, + .py-exl-5 { + padding-top: 5rem !important + } + .pr-exl-5, + .px-exl-5 { + padding-right: 5rem !important + } + .pb-exl-5, + .py-exl-5 { + padding-bottom: 5rem !important + } + .pl-exl-5, + .px-exl-5 { + padding-left: 5rem !important + } + .p-exl-6 { + padding: 6rem !important + } + .pt-exl-6, + .py-exl-6 { + padding-top: 6rem !important + } + .pr-exl-6, + .px-exl-6 { + padding-right: 6rem !important + } + .pb-exl-6, + .py-exl-6 { + padding-bottom: 6rem !important + } + .pl-exl-6, + .px-exl-6 { + padding-left: 6rem !important + } + .p-exl-7 { + padding: 7rem !important + } + .pt-exl-7, + .py-exl-7 { + padding-top: 7rem !important + } + .pr-exl-7, + .px-exl-7 { + padding-right: 7rem !important + } + .pb-exl-7, + .py-exl-7 { + padding-bottom: 7rem !important + } + .pl-exl-7, + .px-exl-7 { + padding-left: 7rem !important + } + .p-exl-8 { + padding: 8rem !important + } + .pt-exl-8, + .py-exl-8 { + padding-top: 8rem !important + } + .pr-exl-8, + .px-exl-8 { + padding-right: 8rem !important + } + .pb-exl-8, + .py-exl-8 { + padding-bottom: 8rem !important + } + .pl-exl-8, + .px-exl-8 { + padding-left: 8rem !important + } + .p-exl-9 { + padding: 9rem !important + } + .pt-exl-9, + .py-exl-9 { + padding-top: 9rem !important + } + .pr-exl-9, + .px-exl-9 { + padding-right: 9rem !important + } + .pb-exl-9, + .py-exl-9 { + padding-bottom: 9rem !important + } + .pl-exl-9, + .px-exl-9 { + padding-left: 9rem !important + } + .p-exl-10 { + padding: 10rem !important + } + .pt-exl-10, + .py-exl-10 { + padding-top: 10rem !important + } + .pr-exl-10, + .px-exl-10 { + padding-right: 10rem !important + } + .pb-exl-10, + .py-exl-10 { + padding-bottom: 10rem !important + } + .pl-exl-10, + .px-exl-10 { + padding-left: 10rem !important + } + .p-exl-11 { + padding: 11rem !important + } + .pt-exl-11, + .py-exl-11 { + padding-top: 11rem !important + } + .pr-exl-11, + .px-exl-11 { + padding-right: 11rem !important + } + .pb-exl-11, + .py-exl-11 { + padding-bottom: 11rem !important + } + .pl-exl-11, + .px-exl-11 { + padding-left: 11rem !important + } + .p-exl-12 { + padding: 12rem !important + } + .pt-exl-12, + .py-exl-12 { + padding-top: 12rem !important + } + .pr-exl-12, + .px-exl-12 { + padding-right: 12rem !important + } + .pb-exl-12, + .py-exl-12 { + padding-bottom: 12rem !important + } + .pl-exl-12, + .px-exl-12 { + padding-left: 12rem !important + } + .p-exl-13 { + padding: 13rem !important + } + .pt-exl-13, + .py-exl-13 { + padding-top: 13rem !important + } + .pr-exl-13, + .px-exl-13 { + padding-right: 13rem !important + } + .pb-exl-13, + .py-exl-13 { + padding-bottom: 13rem !important + } + .pl-exl-13, + .px-exl-13 { + padding-left: 13rem !important + } + .m-exl-auto { + margin: auto !important + } + .mt-exl-auto, + .my-exl-auto { + margin-top: auto !important + } + .mr-exl-auto, + .mx-exl-auto { + margin-right: auto !important + } + .mb-exl-auto, + .my-exl-auto { + margin-bottom: auto !important + } + .ml-exl-auto, + .mx-exl-auto { + margin-left: auto !important + } +} + +.text-monospace { + font-family: baseCodeRegular, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace +} + +.text-justify { + text-align: justify !important +} + +.text-nowrap { + white-space: nowrap !important +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.text-left { + text-align: left !important +} + +.text-right { + text-align: right !important +} + +.text-center { + text-align: center !important +} + +@media (min-width:576px) { + .text-sm-left { + text-align: left !important + } + .text-sm-right { + text-align: right !important + } + .text-sm-center { + text-align: center !important + } +} + +@media (min-width:800px) { + .text-md-left { + text-align: left !important + } + .text-md-right { + text-align: right !important + } + .text-md-center { + text-align: center !important + } +} + +@media (min-width:992px) { + .text-lg-left { + text-align: left !important + } + .text-lg-right { + text-align: right !important + } + .text-lg-center { + text-align: center !important + } +} + +@media (min-width:1200px) { + .text-xl-left { + text-align: left !important + } + .text-xl-right { + text-align: right !important + } + .text-xl-center { + text-align: center !important + } +} + +@media (min-width:1440px) { + .text-xxl-left { + text-align: left !important + } + .text-xxl-right { + text-align: right !important + } + .text-xxl-center { + text-align: center !important + } +} + +@media (min-width:1600px) { + .text-exl-left { + text-align: left !important + } + .text-exl-right { + text-align: right !important + } + .text-exl-center { + text-align: center !important + } +} + +.text-lowercase { + text-transform: lowercase !important +} + +.text-uppercase { + text-transform: uppercase !important +} + +.text-capitalize { + text-transform: capitalize !important +} + +.font-weight-light { + font-weight: 300 !important +} + +.font-weight-normal { + font-weight: 400 !important +} + +.font-weight-bold { + font-weight: 600 !important +} + +.font-italic { + font-style: italic !important +} + +.text-white { + color: #fff !important +} + +.text-primary { + color: #59d99d !important +} + +a.text-primary:focus, +a.text-primary:hover { + color: #30d085 !important +} + +.text-secondary { + color: #6957da !important +} + +a.text-secondary:focus, +a.text-secondary:hover { + color: #442ed0 !important +} + +.text-success { + color: #48b884 !important +} + +a.text-success:focus, +a.text-success:hover { + color: #39946a !important +} + +.text-info { + color: #43ccfe !important +} + +a.text-info:focus, +a.text-info:hover { + color: #10befe !important +} + +.text-warning { + color: #fab73a !important +} + +a.text-warning:focus, +a.text-warning:hover { + color: #f9a508 !important +} + +.text-danger { + color: #f64f4b !important +} + +a.text-danger:focus, +a.text-danger:hover { + color: #f4201a !important +} + +.text-light { + color: #f8f9fa !important +} + +a.text-light:focus, +a.text-light:hover { + color: #dae0e5 !important +} + +.text-dark { + color: #22263b !important +} + +a.text-dark:focus, +a.text-dark:hover { + color: #0f111b !important +} + +.text-body { + color: #434456 !important +} + +.text-muted { + color: #9f9fb9 !important +} + +.text-black-50 { + color: rgba(49, 49, 49, .5) !important +} + +.text-white-50 { + color: hsla(0, 0%, 100%, .5) !important +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0 +} + +.visible { + visibility: visible !important +} + +.invisible { + visibility: hidden !important +} + +@media print { + *, + :after, + :before { + text-shadow: none !important; + box-shadow: none !important + } + a:not(.btn) { + text-decoration: underline + } + abbr[title]:after { + content: " (" attr(title) ")" + } + pre { + white-space: pre-wrap !important + } + blockquote, + pre { + border: 1px solid #686980; + page-break-inside: avoid + } + thead { + display: table-header-group + } + img, + tr { + page-break-inside: avoid + } + h2, + h3, + p { + orphans: 3; + widows: 3 + } + h2, + h3 { + page-break-after: avoid + } + @page { + size: a3 + } + .container, + body { + min-width: 992px !important + } + .navbar { + display: none + } + .badge { + border: 1px solid #313131 + } + .table { + border-collapse: collapse !important + } + .table td, + .table th { + background-color: #fff !important + } + .table-bordered td, + .table-bordered th { + border: 1px solid #8786a4 !important + } + .table-dark { + color: inherit + } + .table-dark tbody+tbody, + .table-dark td, + .table-dark th, + .table-dark thead th { + border-color: #8786a4 + } + .table .thead-dark th { + color: inherit; + border-color: #8786a4 + } +} + +.hero { + color: #fff; + padding: 30px 0 +} + +.stripes-wrapper { + position: absolute; + top: 0; + z-index: 2; + width: 100%; + display: grid; + grid: repeat(12, 100px)/repeat(12, 1fr); + overflow: hidden +} + +.info-wrapper { + z-index: 4 +} + +.banner-bg-1, +.banner-bg-2, +.banner-bg-3, +.banner-bg-4, +.grey-wrapper-1, +.grey-wrapper-2, +.info-wrapper, +.stripe-1, +.stripe-2, +.stripe-3, +.stripe-4, +.stripe-5, +.stripe-6, +.stripe-7, +.stripe-8, +.stripe-bb, +.stripe-bbl, +.stripe-bp, +.stripe-by, +.stripe-lplp, +.stripe-pbl, +.stripe-plb, +.stripe-pp, +.stripe-ppl { + position: relative +} + +.banner-bg-1 .stripes, +.banner-bg-2 .stripes, +.banner-bg-3 .stripes, +.banner-bg-4 .stripes, +.grey-wrapper-1 .stripes, +.grey-wrapper-2 .stripes, +.stripe-1 .stripes, +.stripe-2 .stripes, +.stripe-3 .stripes, +.stripe-4 .stripes, +.stripe-5 .stripes, +.stripe-6 .stripes, +.stripe-7 .stripes, +.stripe-8 .stripes, +.stripe-bb .stripes, +.stripe-bbl .stripes, +.stripe-bp .stripes, +.stripe-by .stripes, +.stripe-lplp .stripes, +.stripe-pbl .stripes, +.stripe-plb .stripes, +.stripe-pp .stripes, +.stripe-ppl .stripes { + position: absolute; + display: grid; + z-index: 2; + width: 100%; + top: 0; + transform-origin: 0 +} + +.banner-bg-1 .stripes span, +.banner-bg-2 .stripes span, +.banner-bg-3 .stripes span, +.banner-bg-4 .stripes span, +.grey-wrapper-1 .stripes span, +.grey-wrapper-2 .stripes span, +.stripe-1 .stripes span, +.stripe-2 .stripes span, +.stripe-3 .stripes span, +.stripe-4 .stripes span, +.stripe-5 .stripes span, +.stripe-6 .stripes span, +.stripe-7 .stripes span, +.stripe-8 .stripes span, +.stripe-bb .stripes span, +.stripe-bbl .stripes span, +.stripe-bp .stripes span, +.stripe-by .stripes span, +.stripe-lplp .stripes span, +.stripe-pbl .stripes span, +.stripe-plb .stripes span, +.stripe-pp .stripes span, +.stripe-ppl .stripes span { + opacity: .3 +} + +.banner-bg-1 .stripes { + transform: skewY(-24deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .banner-bg-1 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .banner-bg-1 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .banner-bg-1 .stripes span { + grid-column-start: 1; + grid-column-end: 6; + grid-row-start: 2; + grid-row-end: 4; + background: linear-gradient(75deg, #630cb3 10%, rgba(99, 12, 179, .6) 30%, rgba(99, 12, 179, .2) 50%, rgba(99, 12, 179, 0)) + } +} + +@media (min-width:800px) { + .banner-bg-1 .stripes span { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 2; + grid-row-end: 4 + } +} + +@media (min-width:992px) { + .banner-bg-1 .stripes span { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 2; + grid-row-end: 4 + } +} + +@media (min-width:1200px) { + .banner-bg-1 .stripes span { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 3; + grid-row-end: 5 + } +} + +@media (min-width:576px) { + .banner-bg-1 .stripes span:last-child { + grid-column-start: 9; + grid-column-end: 13; + grid-row-start: 5; + grid-row-end: 13; + background: linear-gradient(-90deg, #2df8e7 10%, rgba(45, 248, 231, .6) 30%, rgba(45, 248, 231, .2) 50%, rgba(45, 248, 231, 0)) + } +} + +@media (min-width:800px) { + .banner-bg-1 .stripes span:last-child { + grid-column-start: 7; + grid-column-end: 13; + grid-row-start: 4; + grid-row-end: 8 + } +} + +@media (min-width:992px) { + .banner-bg-1 .stripes span:last-child { + grid-column-start: 7; + grid-column-end: 13; + grid-row-start: 5; + grid-row-end: 9 + } +} + +@media (min-width:1200px) { + .banner-bg-1 .stripes span:last-child { + grid-column-start: 8; + grid-column-end: 13; + grid-row-start: 6; + grid-row-end: 10 + } +} + +.banner-bg-2 .stripes { + transform: skewY(-22deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .banner-bg-2 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .banner-bg-2 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .banner-bg-2 .stripes span:first-child { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 1; + grid-row-end: 3; + background: linear-gradient(90deg, #1f1c87 0, hsla(0, 0%, 100%, 0)) + } +} + +@media (min-width:800px) { + .banner-bg-2 .stripes span:first-child { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 1; + grid-row-end: 3 + } +} + +@media (min-width:576px) { + .banner-bg-2 .stripes span:last-child { + grid-column-start: 11; + grid-column-end: 13; + grid-row-start: 8; + grid-row-end: 5; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, #faca8c) + } +} + +@media (min-width:800px) { + .banner-bg-2 .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 8; + grid-row-end: 6 + } +} + +.banner-bg-3 .stripes { + transform: skewY(-22deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .banner-bg-3 .stripes { + grid: repeat(8, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .banner-bg-3 .stripes { + grid: repeat(8, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .banner-bg-3 .stripes span:first-child { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 1; + grid-row-end: 3; + background: linear-gradient(90deg, #1f1c87 0, hsla(0, 0%, 100%, 0)) + } +} + +@media (min-width:800px) { + .banner-bg-3 .stripes span:first-child { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 3; + grid-row-end: 5 + } +} + +@media (min-width:576px) { + .banner-bg-3 .stripes span:last-child { + grid-column-start: 11; + grid-column-end: 13; + grid-row-start: 6; + grid-row-end: 1; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, #3064d6) + } +} + +@media (min-width:800px) { + .banner-bg-3 .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 6; + grid-row-end: 1 + } +} + +.banner-bg-4 .stripes { + transform: skewY(-22deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .banner-bg-4 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .banner-bg-4 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .banner-bg-4 .stripes span { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 1; + grid-row-end: 3; + background: linear-gradient(90deg, #15127c 0, hsla(0, 0%, 100%, 0)) + } +} + +@media (min-width:800px) { + .banner-bg-4 .stripes span { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 4; + grid-row-end: 6 + } +} + +@media (min-width:992px) { + .banner-bg-4 .stripes span { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 2; + grid-row-end: 4 + } +} + +@media (min-width:1200px) { + .banner-bg-4 .stripes span { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 4; + grid-row-end: 6 + } +} + +@media (min-width:576px) { + .banner-bg-4 .stripes span:last-child { + grid-column-start: 11; + grid-column-end: 13; + grid-row-start: 6; + grid-row-end: 1; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, #3064d6) + } +} + +@media (min-width:800px) { + .banner-bg-4 .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 5; + grid-row-end: 1 + } +} + +@media (min-width:992px) { + .banner-bg-4 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 2; + grid-row-end: 4 + } +} + +@media (min-width:1200px) { + .banner-bg-4 .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 7; + grid-row-end: 1 + } +} + +.stripe-1 .stripes { + transform: skewY(-35deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .stripe-1 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .stripe-1 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .stripe-1 .stripes span { + grid-column-start: 1; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 3; + background: linear-gradient(90deg, rgba(21, 18, 124, 0) 20%, rgba(21, 18, 124, .5) 40%, #050347) + } +} + +@media (min-width:800px) { + .stripe-1 .stripes span { + grid-column-start: 1; + grid-column-end: 13; + grid-row-start: 3; + grid-row-end: 6 + } +} + +.stripe-2 .stripes-wrapper { + transform: skewY(-4deg); + background: hsla(0, 0%, 100%, 0); + background: linear-gradient(7.33deg, hsla(0, 0%, 100%, 0) 50%, rgba(0, 0, 0, .1)); + margin-top: -7rem; + grid: repeat(4, 100px)/repeat(12, 1fr) +} + +.stripe-2 .stripes { + transform: skewY(-25deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .stripe-2 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .stripe-2 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .stripe-2 .stripes span { + grid-column-start: 1; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 2; + background: #fff; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .5)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .stripe-2 .stripes span { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 4 + } +} + +.stripe-3 .stripes-wrapper { + background: hsla(0, 0%, 100%, 0); + background: linear-gradient(7.33deg, hsla(0, 0%, 100%, 0) 50%, rgba(0, 0, 0, .1)); + grid: repeat(4, 100px)/repeat(12, 1fr) +} + +.stripe-3 .stripes { + transform: skewY(-25deg); + grid: repeat(12, 100px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .stripe-3 .stripes { + grid: repeat(12, 100px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .stripe-3 .stripes { + grid: repeat(12, 100px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .stripe-3 .stripes span { + grid-column-start: 3; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 3; + background: #fff; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .2)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .stripe-3 .stripes span { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 2; + grid-row-end: 5 + } +} + +@media (min-width:992px) { + .stripe-3 .stripes span { + grid-column-start: 7; + grid-column-end: 13; + grid-row-start: 5; + grid-row-end: 8 + } +} + +@media (min-width:1200px) { + .stripe-3 .stripes span { + grid-column-start: 7; + grid-column-end: 13; + grid-row-start: 3; + grid-row-end: 7 + } +} + +@media (min-width:576px) { + .stripe-3 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 8; + grid-row-start: 8; + grid-row-end: 13; + background: #fff; + background: linear-gradient(-90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .2)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .stripe-3 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 7; + grid-row-end: 10 + } +} + +@media (min-width:992px) { + .stripe-3 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 8; + grid-row-end: 13 + } +} + +@media (min-width:1200px) { + .stripe-3 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 8; + grid-row-end: 13 + } +} + +.stripe-4 .stripes-wrapper { + background: hsla(0, 0%, 100%, 0); + background: linear-gradient(7.33deg, hsla(0, 0%, 100%, 0) 50%, rgba(0, 0, 0, .1)); + grid: repeat(4, 100px)/repeat(12, 1fr) +} + +.stripe-4 .stripes { + transform: skewY(-27deg); + grid: repeat(12, 100px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .stripe-4 .stripes { + grid: repeat(12, 100px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .stripe-4 .stripes { + grid: repeat(12, 100px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .stripe-4 .stripes span { + grid-column-start: 3; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 3; + background: #fff; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .2)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .stripe-4 .stripes span { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 2; + grid-row-end: 5 + } +} + +@media (min-width:992px) { + .stripe-4 .stripes span { + grid-column-start: 7; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 6 + } +} + +@media (min-width:1200px) { + .stripe-4 .stripes span { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 2; + grid-row-end: 8 + } +} + +@media (min-width:576px) { + .stripe-4 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 8; + grid-row-start: 8; + grid-row-end: 13; + background: #fff; + background: linear-gradient(-90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .2)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .stripe-4 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 7; + grid-row-end: 10 + } +} + +@media (min-width:992px) { + .stripe-4 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 8; + grid-row-end: 13 + } +} + +@media (min-width:1200px) { + .stripe-4 .stripes span:last-child { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 8; + grid-row-end: 13 + } +} + +.grey-wrapper-1 { + background-color: #fff +} + +.grey-wrapper-1 .stripes { + transform: skewY(-25deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .grey-wrapper-1 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .grey-wrapper-1 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .grey-wrapper-1 .stripes span { + grid-column-start: 1; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 2; + background: #fff; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .5)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .grey-wrapper-1 .stripes span { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 4 + } +} + +.grey-wrapper-2 { + background-color: #f3f7fb; + padding-top: 100px +} + +.grey-wrapper-2 .stripes-wrapper { + transform: skewY(-4deg); + background-color: #f3f7fb; + margin-top: -7rem; + grid: repeat(4, 100px)/repeat(12, 1fr) +} + +.grey-wrapper-2 .stripes { + transform: skewY(-25deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .grey-wrapper-2 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .grey-wrapper-2 .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .grey-wrapper-2 .stripes span { + grid-column-start: 1; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 2; + background: #fff; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), rgba(0, 0, 0, .5)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#f7f9ff", GradientType=1) + } +} + +@media (min-width:800px) { + .grey-wrapper-2 .stripes span { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 1; + grid-row-end: 4 + } +} + +.stripe-plb .stripes { + transform: skewY(-22deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .stripe-plb .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .stripe-plb .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .stripe-plb .stripes span { + grid-column-start: 1; + grid-column-end: 6; + grid-row-start: 1; + grid-row-end: 5; + background: linear-gradient(90deg, #13039e 0, hsla(0, 0%, 100%, 0)) + } +} + +@media (min-width:800px) { + .stripe-plb .stripes span { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 2; + grid-row-end: 4 + } +} + +@media (min-width:992px) { + .stripe-plb .stripes span { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 3; + grid-row-end: 7 + } +} + +@media (min-width:1200px) { + .stripe-plb .stripes span { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 4; + grid-row-end: 7 + } +} + +@media (min-width:576px) { + .stripe-plb .stripes span:last-child { + grid-column-start: 9; + grid-column-end: 13; + grid-row-start: 4; + grid-row-end: 11; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, #3064d6) + } +} + +@media (min-width:800px) { + .stripe-plb .stripes span:last-child { + grid-column-start: 9; + grid-column-end: 13; + grid-row-start: 3; + grid-row-end: 6 + } +} + +@media (min-width:992px) { + .stripe-plb .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 4; + grid-row-end: 6 + } +} + +@media (min-width:1200px) { + .stripe-plb .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 5; + grid-row-end: 8 + } +} + +.stripe-bp .stripes { + transform: skewY(-22deg); + grid: repeat(12, 180px)/repeat(12, 1fr) +} + +@media (min-width:800px) { + .stripe-bp .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:992px) { + .stripe-bp .stripes { + grid: repeat(12, 180px)/repeat(12, 1fr) + } +} + +@media (min-width:576px) { + .stripe-bp .stripes span { + grid-column-start: 1; + grid-column-end: 4; + grid-row-start: 1; + grid-row-end: 5; + background: linear-gradient(90deg, rgba(3, 57, 145, .726) 0, hsla(0, 0%, 100%, 0)) + } +} + +@media (min-width:800px) { + .stripe-bp .stripes span { + grid-column-start: 1; + grid-column-end: 5; + grid-row-start: 2; + grid-row-end: 4 + } +} + +@media (min-width:992px) { + .stripe-bp .stripes span { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 3; + grid-row-end: 7 + } +} + +@media (min-width:1200px) { + .stripe-bp .stripes span { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 4; + grid-row-end: 7 + } +} + +@media (min-width:576px) { + .stripe-bp .stripes span:last-child { + grid-column-start: 6; + grid-column-end: 13; + grid-row-start: 6; + grid-row-end: 8; + background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, #26013b) + } +} + +@media (min-width:800px) { + .stripe-bp .stripes span:last-child { + grid-column-start: 9; + grid-column-end: 13; + grid-row-start: 3; + grid-row-end: 6 + } +} + +@media (min-width:992px) { + .stripe-bp .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 4; + grid-row-end: 6 + } +} + +@media (min-width:1200px) { + .stripe-bp .stripes span:last-child { + grid-column-start: 10; + grid-column-end: 13; + grid-row-start: 5; + grid-row-end: 8 + } +} + +footer { + position: relative; + z-index: 10 +} + +footer .container { + max-width: 1200px; + color: #8c899f +} + +footer .heading { + color: #f4f4f4; + font-family: basefontRegular, Helvetica Neue, Arial, sans-serif; + letter-spacing: .09em; + margin-top: 4.8rem; + margin-bottom: 2rem +} + +footer .footer-nav { + background: linear-gradient(302.72deg, #1b1930, #27263d); + padding-bottom: 20px +} + +footer .footer-nav a { + color: #a19db4; + font-size: 14px; + text-decoration: none +} + +footer .footer-nav a:hover { + color: #bdbaca; + text-decoration: none +} + +footer .footer-nav ul { + margin-bottom: 0 +} + +footer .extensions:after, +footer .product:after { + content: ""; + display: table; + clear: both +} + +footer .extensions li, +footer .product li { + width: 45%; + float: left +} + +footer .company-links { + margin: 30px 0 0; + text-align: center +} + +footer .company-links:after { + content: ""; + display: table; + clear: both +} + +footer .company-links li { + display: inline-block; + margin: 0 10px +} + +@media (min-width:800px) { + footer .company-links li { + margin: 0 10px; + float: left + } +} + +footer .company-links li:first-child { + margin-left: 0 +} + +footer .company-links li a { + color: #a19db4; + font-size: 14px +} + +footer .company-links li a:hover { + color: #bdbaca +} + +footer .social-icons { + text-align: center; + margin: 20px 0 0 +} + +footer .social-icons:after { + content: ""; + display: table; + clear: both +} + +footer .social-icons li { + display: inline-block; + margin: 0 5px 20px +} + +@media (min-width:800px) { + footer .social-icons li, + footer .social-icons li:first-child { + float: right + } +} + +footer .social-icons li a { + display: block; + text-decoration: none +} + +footer .social-icons li a i { + color: #767386; + background-color: #33314e; + border-radius: 50%; + padding: 10px +} + +footer .social-icons li a:hover { + text-decoration: none +} + +footer .social-icons li a:hover i { + background-color: #47456d +} + +footer .footer-bottom { + background-color: #1b192f; + padding: 10px 0 50px +} + +footer .footer-bottom:after { + content: ""; + display: table; + clear: both +} + +footer .copyright { + text-align: center +} + +@media (min-width:800px) { + footer .copyright { + text-align: right + } +} + +footer .list-unstyled li { + margin-bottom: 1.6rem; + font-size: 14px; + font-size: 1.4rem +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/css/style.css b/graphs/fusioncharts-suite-xt/assets/css/style.css new file mode 100755 index 0000000000000000000000000000000000000000..317cfc5adfd0854b7544c5860182f2d7e1ea2c8a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/css/style.css @@ -0,0 +1,128 @@ +#navbar { + height: 64px; +} + +.header-link { + color: #8786A4; +} + +.sub-banner-title { + color: #212344 !important; + font-family: basefontSemiBold !important; +} + +.tech-stack-title { + color: #212344; +} + +.demo { + height: 100%; + display: flex; +} + +.foot-item { + color: #686980; + font-weight: 300 !important; +} + +.list-inline-item>a>p { + padding-top: 10px; + line-height: 130%; +} + +.card-link { + text-transform: uppercase; +} + +.strike { + display: block; + text-align: center; + overflow: hidden; + white-space: nowrap; +} + +.strike>span { + position: relative; + display: inline-block; +} + +.strike>span:before, +.strike>span:after { + content: ""; + position: absolute; + top: 50%; + width: 9999px; + height: 1px; + background: #E2E2E2; +} + +.strike>span:before { + right: 100%; + margin-right: 15px; +} + +.strike>span:after { + left: 100%; + margin-left: 15px; +} + +.info-p { + color: #5648D4 !important; + font-family: basefontSemiBold !important; +} + +.techstack-link { + text-decoration: none; + color: #434456; +} + +.techstack-link:hover { + text-decoration: none; +} + +.feature-icon { + height: 35px; + width: 35px; + border: 0.68px solid rgba(104, 105, 128, 0.22); + border-radius: 3.7px; + box-shadow: 0 9px 20px 0 rgba(62, 57, 107, 0.04); +} +.feature-icon > i { + width: 100%; + font-size: 22px; +} + +.card-title { + padding-top: 5px; +} + +.techstack-logo:hover { + -webkit-transition: translateY(-4px); + transform: translateY(-4px); + box-shadow: 0 10px 14px 0 rgba(33, 35, 68, .05) !important; +} + +i { + color: #8786A4 !important; +} + +@media (min-width:768px) { + .navbar { + padding: .5rem + } +} + +@media (min-width:992px) { + .navbar .navbar-nav .nav-item { + margin-right: 1rem + } +} + +@media (min-width:1200px) { + .navbar { + padding: .6rem 4% + } + .navbar .navbar-nav .nav-item { + margin-right: 1.4rem + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/fusion-icon.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/fusion-icon.ttf new file mode 100755 index 0000000000000000000000000000000000000000..2bf54ad88c48c7e0cf4ac078cef34ff4bff19900 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/fusion-icon.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/fusion-icon.woff b/graphs/fusioncharts-suite-xt/assets/fonts/fusion-icon.woff new file mode 100755 index 0000000000000000000000000000000000000000..602080af53761aad3845dc0953645c678f7be682 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/fusion-icon.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.eot new file mode 100755 index 0000000000000000000000000000000000000000..5f588d1ab868238de356d8c24c5dfd3795bf17c0 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..01c2a26ca533913077b8fb92c2adbccf8120f212 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.woff new file mode 100755 index 0000000000000000000000000000000000000000..11a3cf6e9a23d77a4fd952130ecfcd3fbb80a450 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..571464d25589b4256fc6d26d1c2f289e25457c5c Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcecodepro-regular.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..323b6081e1d65fa119524545a784f87720f5cdf3 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..0504ec94e20de54794d04c962f6664c7fa56e3f4 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..bc3d9806d6af0e893a9bb4d9c39f422ed8605a5d Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..37a4055cc0fef56d3eb172bd38550a6c4ce7a866 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-bold-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..6a62fd19986fd3d428249ea39ebe89ed1ad1d7fb Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..22381dadd23cb134a5c588f5e18400b8bb0c3e04 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..1e8a3ca136fdbcbb339f0a2f4e749f6b72047c63 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..9c69e5ec9dc0eb1b21238d39dd24d3896bab66f4 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-boldit-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..b068effabd9ae11f0e625ac506aaa14cc80019af Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..d4e13720da48b069a79eb7cf82c7cd7e76ed7a74 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..08655904ef12dd637d4cab0b2bd12276af49122f Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..a730d9df3d788b2c17b7937198c1ecd701c3787e Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-it-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..ecbae3615871c554177fce5b348a841d224d2f97 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..002e5ebcf08b10fcdff1f63229a73e26164a11ca Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..b04317fda50b829e311bfbd0881bdb0664d237b7 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..1c57943dcc85381a16d6b4216c13730eb259a4b1 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-light-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..f171908cb70976f7c2dd3c06159750fa5a6f7e24 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..5e70bf31b5aa50caf4ed39f16edbad417643d3f7 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..902049119a4a32173d08f3d9c554c87fc025e164 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..6f2382f7003ad290d8930b11a1824c2843860c22 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-lightit-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-regular-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-regular-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..eddbc5494022fab86aeaebd839df3c6a4df77fec Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-regular-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-regular-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-regular-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..165c43fa1af19b2a746d58db7762c38c553fbf9e Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-regular-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..9311dbd22e19a173ce1ea9927ca82f28babe47cc Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..1475caaad04cd0d8aab5a816519313ea2a499601 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..fba10953bb6ab6f66f892c485aacc957d778d76d Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..54f58daa533839f813dbd1085dddf7d01d5889cf Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semibold-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.eot b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..97211b171fde68a192ebed2146178fae809e427a Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.eot differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.ttf b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..df3f4a9e29089c9a29fe1f793b0679e227add956 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.ttf differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.woff b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..237465efb454888483e68d80d12a96dc23ab5f64 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.woff differ diff --git a/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.woff2 b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..a89f5a20d8714b2333cca8ca251018d0b0eb6b5d Binary files /dev/null and b/graphs/fusioncharts-suite-xt/assets/fonts/sourcesanspro-semiboldit-webfont.woff2 differ diff --git a/graphs/fusioncharts-suite-xt/assets/images/angular-1.svg b/graphs/fusioncharts-suite-xt/assets/images/angular-1.svg new file mode 100755 index 0000000000000000000000000000000000000000..03a4692fa5bec09831d8738ccec9fabef529a52f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/angular-1.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>Angular 1.x</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="12.3813483%" y1="8.54625667%" x2="93.5909159%" y2="98.5559937%" id="linearGradient-1"> + <stop stop-color="#FF7B81" offset="0%"></stop> + <stop stop-color="#DA3224" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="61.8390289%" y1="33.1096088%" x2="68.3090624%" y2="80.3496797%" id="linearGradient-4"> + <stop stop-color="#EDA2A5" offset="0%"></stop> + <stop stop-color="#E64A42" offset="100%"></stop> + </linearGradient> + </defs> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Downloads-fusioncharts-suite-xt-final" transform="translate(-607.000000, -522.000000)"> + <g id="Group-10" transform="translate(598.000000, 522.000000)"> + <g id="Angular-1.x" transform="translate(9.000000, 0.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <g id="Group" mask="url(#mask-3)" fill="url(#linearGradient-4)"> + <g transform="translate(-17.232877, 16.444444)" id="Path-6"> + <path d="M114.547945,49.7200124 L114.547945,58.257956 L69.4938135,62.6944444 L3.96373614,62.6944444 L0,0 C11.7082151,6.8897963 22.305879,10.7958155 31.7929916,11.7180575 C46.0236605,13.1014205 51.9390457,25.6921855 62.5585344,31.8335608 C73.1780232,37.9749361 88.4462139,31.8335608 96.8949653,30.5474655 C102.527466,29.6900686 108.411793,36.0809176 114.547945,49.7200124 Z" opacity="0.5"></path> + <path d="M114.547945,64.1089012 L114.547945,72.6468449 L69.4938135,77.0833333 L3.96373614,77.0833333 L0,14.3888889 C11.7082151,21.2786852 22.305879,25.1847043 31.7929916,26.1069464 C46.0236605,27.4903094 51.9390457,40.0810744 62.5585344,46.2224497 C73.1780232,52.363825 88.4462139,46.2224497 96.8949653,44.9363544 C102.527466,44.0789575 108.411793,50.4698065 114.547945,64.1089012 Z" opacity="0.400000006"></path> + <path d="M115.561644,69.3905912 C109.6427,60.2233307 103.966669,55.9278421 98.5335482,56.5041252 C90.3838676,57.36855 75.6561438,61.4963596 65.4125662,57.36855 C55.1689885,53.2407403 49.4629976,44.778095 35.7360691,43.8482936 C26.5847835,43.2284261 16.3622582,40.6030689 5.06849315,35.9722222 L8.89192005,78.1111111 L72.1023487,78.1111111 L115.561644,75.129209 L115.561644,69.3905912 Z" opacity="0.300000012"></path> + </g> + </g> + <path d="M34.1961338,23.6388889 L21.3287671,51.3098828 L26.1355845,51.2308768 L28.7189718,44.9886062 L40.2620631,44.9886062 L43.0906745,51.3098828 L47.6849315,51.3888889 L34.1961338,23.6388889 Z M34.2474714,32.8888889 L38.5616438,42.1388889 L30.4520548,42.1388889 L34.2474714,32.8888889 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)" transform="translate(34.506849, 37.513889) rotate(-360.000000) translate(-34.506849, -37.513889) "></path> + <path d="M44.74,30.2725318 L47.0016596,30.2725318 L47.0016596,23.6149704 L45.1381795,23.6149704 L45.1381795,22.4682134 C45.6478518,22.3726498 46.0858449,22.2585062 46.4521719,22.125779 C46.8184989,21.9930518 47.1609298,21.8311271 47.479475,21.64 L48.8492125,21.64 L48.8492125,30.2725318 L50.8401101,30.2725318 L50.8401101,31.7696867 L44.74,31.7696867 L44.74,30.2725318 Z M52.7354445,30.7184928 C52.7354445,30.3574749 52.8495882,30.0601705 53.0778789,29.8265707 C53.3061696,29.5929709 53.5902015,29.4761727 53.9299831,29.4761727 C54.2697646,29.4761727 54.551142,29.5929709 54.7741236,29.8265707 C54.9971053,30.0601705 55.1085944,30.3574749 55.1085944,30.7184928 C55.1085944,31.0795107 54.9971053,31.3768151 54.7741236,31.6104149 C54.551142,31.8440147 54.2697646,31.9608129 53.9299831,31.9608129 C53.5902015,31.9608129 53.3061696,31.8440147 53.0778789,31.6104149 C52.8495882,31.3768151 52.7354445,31.0795107 52.7354445,30.7184928 Z M58.8196274,27.6923285 L56.4942591,23.9494412 L58.4692295,23.9494412 L59.3452244,25.4306689 C59.4620243,25.6430324 59.581477,25.8633562 59.7035859,26.0916469 C59.8256949,26.3199376 59.9451476,26.5402614 60.0619475,26.7526249 L60.1256562,26.7526249 C60.2212198,26.5402614 60.3220909,26.3199376 60.4282727,26.0916469 C60.5344544,25.8633562 60.6353255,25.6430324 60.7308891,25.4306689 L61.4794666,23.9494412 L63.374801,23.9494412 L61.0653599,27.8993819 L63.55,31.7696867 L61.5750296,31.7696867 L60.6193988,30.2247502 C60.4919807,29.9911504 60.3619101,29.7575541 60.2291829,29.5239543 C60.0964557,29.2903545 59.9610761,29.0620672 59.8230398,28.8390855 L59.7593311,28.8390855 C59.6425312,29.0620672 59.5283875,29.2877 59.4168967,29.5159907 C59.3054059,29.7442814 59.1912622,29.9805322 59.0744623,30.2247502 L58.2462489,31.7696867 L56.3349873,31.7696867 L58.8196274,27.6923285 Z" id="1.x" fill="#FFFFFF" mask="url(#mask-3)"></path> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/angular-2.svg b/graphs/fusioncharts-suite-xt/assets/images/angular-2.svg new file mode 100755 index 0000000000000000000000000000000000000000..9a24d74f0afe24f981451f423326fcbcce6dc141 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/angular-2.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>Angular Copy 8</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="12.3813483%" y1="8.54625667%" x2="93.5909159%" y2="98.5559937%" id="linearGradient-1"> + <stop stop-color="#FF7B81" offset="0%"></stop> + <stop stop-color="#DA3224" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="61.8390289%" y1="33.1096088%" x2="68.3090624%" y2="80.3496797%" id="linearGradient-4"> + <stop stop-color="#EDA2A5" offset="0%"></stop> + <stop stop-color="#E64A42" offset="100%"></stop> + </linearGradient> + </defs> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Downloads-fusioncharts-suite-xt-final" transform="translate(-455.000000, -522.000000)"> + <g id="Group-8" transform="translate(443.000000, 522.000000)"> + <g id="Angular-Copy-8" transform="translate(12.000000, 0.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <g id="Group" mask="url(#mask-3)" fill="url(#linearGradient-4)"> + <g transform="translate(-17.232877, 16.444444)" id="Path-6"> + <path d="M114.547945,49.7200124 L114.547945,58.257956 L69.4938135,62.6944444 L3.96373614,62.6944444 L0,0 C11.7082151,6.8897963 22.305879,10.7958155 31.7929916,11.7180575 C46.0236605,13.1014205 51.9390457,25.6921855 62.5585344,31.8335608 C73.1780232,37.9749361 88.4462139,31.8335608 96.8949653,30.5474655 C102.527466,29.6900686 108.411793,36.0809176 114.547945,49.7200124 Z" opacity="0.5"></path> + <path d="M114.547945,64.1089012 L114.547945,72.6468449 L69.4938135,77.0833333 L3.96373614,77.0833333 L0,14.3888889 C11.7082151,21.2786852 22.305879,25.1847043 31.7929916,26.1069464 C46.0236605,27.4903094 51.9390457,40.0810744 62.5585344,46.2224497 C73.1780232,52.363825 88.4462139,46.2224497 96.8949653,44.9363544 C102.527466,44.0789575 108.411793,50.4698065 114.547945,64.1089012 Z" opacity="0.400000006"></path> + <path d="M115.561644,69.3905912 C109.6427,60.2233307 103.966669,55.9278421 98.5335482,56.5041252 C90.3838676,57.36855 75.6561438,61.4963596 65.4125662,57.36855 C55.1689885,53.2407403 49.4629976,44.778095 35.7360691,43.8482936 C26.5847835,43.2284261 16.3622582,40.6030689 5.06849315,35.9722222 L8.89192005,78.1111111 L72.1023487,78.1111111 L115.561644,75.129209 L115.561644,69.3905912 Z" opacity="0.300000012"></path> + </g> + </g> + <path d="M34.1961338,23.6388889 L21.3287671,51.3098828 L26.1355845,51.2308768 L28.7189718,44.9886062 L40.2620631,44.9886062 L43.0906745,51.3098828 L47.6849315,51.3888889 L34.1961338,23.6388889 Z M34.2474714,32.8888889 L38.5616438,42.1388889 L30.4520548,42.1388889 L34.2474714,32.8888889 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)" transform="translate(34.506849, 37.513889) rotate(-360.000000) translate(-34.506849, -37.513889) "></path> + <path d="M41.4062391,30.3789796 C42.0771462,29.728403 42.6845114,29.1286616 43.2283528,28.5797376 C43.7721942,28.0308136 44.2347065,27.5225582 44.6159038,27.0549563 C44.997101,26.5873543 45.2893479,26.1502547 45.4926531,25.7436443 C45.6959583,25.3370339 45.7976093,24.9507598 45.7976093,24.5848105 C45.7976093,24.0663822 45.6603804,23.6572367 45.3859184,23.3573615 C45.1114564,23.0574864 44.7150172,22.907551 44.1965889,22.907551 C43.8204743,22.907551 43.4774019,23.0142846 43.1673615,23.2277551 C42.8573211,23.4412256 42.5701568,23.6953532 42.3058601,23.9901458 L41.33,23.0142857 C41.7772714,22.5365185 42.2372425,22.1680334 42.7099271,21.9088192 C43.1826117,21.6496051 43.754399,21.52 44.4253061,21.52 C44.8929081,21.52 45.31476,21.5911558 45.6908746,21.7334694 C46.0669892,21.875783 46.3871901,22.0765439 46.6514869,22.335758 C46.9157836,22.5949721 47.1216271,22.9075492 47.2690233,23.2734985 C47.4164196,23.6394479 47.4901166,24.0460522 47.4901166,24.4933236 C47.4901166,24.9202645 47.3960894,25.3548229 47.2080321,25.7970117 C47.0199748,26.2392005 46.7658471,26.6864652 46.4456414,27.1388192 C46.1254357,27.5911733 45.751868,28.056227 45.3249271,28.5339942 C44.8979862,29.0117614 44.4456389,29.5047691 43.9678717,30.0130321 C44.2220032,29.9927016 44.4964611,29.9698301 44.7912536,29.9444169 C45.0860462,29.9190038 45.350339,29.9062974 45.5841399,29.9062974 L47.9627988,29.9062974 L47.9627988,31.4005831 L41.4062391,31.4005831 L41.4062391,30.3789796 Z M49.6095627,30.3942274 C49.6095627,30.0486086 49.7188376,29.7639856 49.9373907,29.5403499 C50.1559438,29.3167141 50.4278604,29.204898 50.7531487,29.204898 C51.078437,29.204898 51.3478123,29.3167141 51.5612828,29.5403499 C51.7747533,29.7639856 51.8814869,30.0486086 51.8814869,30.3942274 C51.8814869,30.7398462 51.7747533,31.0244692 51.5612828,31.248105 C51.3478123,31.4717407 51.078437,31.5835569 50.7531487,31.5835569 C50.4278604,31.5835569 50.1559438,31.4717407 49.9373907,31.248105 C49.7188376,31.0244692 49.6095627,30.7398462 49.6095627,30.3942274 Z M55.4342274,27.4971429 L53.2080466,23.9139067 L55.0987755,23.9139067 L55.9374052,25.3319534 C56.0492231,25.5352585 56.1635806,25.7461845 56.280481,25.9647376 C56.3973815,26.1832907 56.511739,26.3942167 56.6235569,26.5975219 L56.6845481,26.5975219 C56.7760354,26.3942167 56.872604,26.1832907 56.9742566,25.9647376 C57.0759092,25.7461845 57.1724777,25.5352585 57.263965,25.3319534 L57.9806122,23.9139067 L59.795102,23.9139067 L57.5841691,27.6953644 L59.962828,31.4005831 L58.0720991,31.4005831 L57.1572303,29.9215452 C57.0352472,29.6979095 56.9107246,29.4742771 56.7836589,29.2506414 C56.6565931,29.0270057 56.526988,28.8084559 56.3948397,28.5949854 L56.3338484,28.5949854 C56.2220305,28.8084559 56.1127556,29.0244644 56.0060204,29.2430175 C55.8992852,29.4615706 55.7900103,29.6877442 55.6781924,29.9215452 L54.8853061,31.4005831 L53.0555685,31.4005831 L55.4342274,27.4971429 Z M63.4240816,27.0092128 L60.694723,27.0092128 L60.694723,25.7283965 L63.4240816,25.7283965 L63.4240816,22.8465598 L64.7506414,22.8465598 L64.7506414,25.7283965 L67.48,25.7283965 L67.48,27.0092128 L64.7506414,27.0092128 L64.7506414,29.8910496 L63.4240816,29.8910496 L63.4240816,27.0092128 Z" id="2.x+" fill="#FFFFFF" mask="url(#mask-3)"></path> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/asp-net.svg b/graphs/fusioncharts-suite-xt/assets/images/asp-net.svg new file mode 100755 index 0000000000000000000000000000000000000000..bc4805c859b6f8bb13d9b8d388a478ac6477592a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/asp-net.svg @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>.NET</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="11.6412296%" y1="7.72593597%" x2="93.4506634%" y2="98.4005429%" id="linearGradient-1"> + <stop stop-color="#7ACBFB" offset="0%"></stop> + <stop stop-color="#2C4FFC" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="71.8933532%" y1="32.7106631%" x2="75.4919097%" y2="72.5704176%" id="linearGradient-4"> + <stop stop-color="#79C9FB" offset="0%"></stop> + <stop stop-color="#4D84FB" offset="100%"></stop> + </linearGradient> + <linearGradient x1="49.4438405%" y1="205.564966%" x2="50.6310303%" y2="-19.8362753%" id="linearGradient-5"> + <stop stop-color="#97D6EE" offset="0%"></stop> + <stop stop-color="#55C1EA" offset="70.329303%"></stop> + <stop stop-color="#55C1EA" offset="100%"></stop> + </linearGradient> + <linearGradient x1="46.6444576%" y1="6.30038251%" x2="52.0068643%" y2="116.770678%" id="linearGradient-6"> + <stop stop-color="#7ACCEC" offset="0%"></stop> + <stop stop-color="#3FB7ED" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-283.000000, -179.000000)"> + <g id=".NET" transform="translate(283.000000, 179.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M-2.66888744,65.8783299 C-5.41009028,56.5145154 -5.99018282,49.7156035 -4.40916505,45.4815941 C-2.03763839,39.1305799 9.44641736,48.7471493 17.6974122,43.8495003 C25.9484069,38.9518512 30.900499,33.5225693 41.9572624,32.4193593 C49.3284381,31.683886 60.3190566,26.8774329 74.929118,18 L74.929118,73.3420316 L25.4370618,78 L2.98040939,73.3420316 L-2.66888744,65.8783299 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M-2.66888744,71.4678855 C-5.41009028,63.7892231 -5.99018282,58.2138723 -4.40916505,54.7418333 C-2.03763839,49.5337748 9.44641736,57.4197053 17.6974122,53.4034581 C25.9484069,49.3872109 30.900499,44.9350057 41.9572624,44.0303341 C49.3284381,43.4272197 60.3190566,39.4857564 74.929118,32.2059442 L74.929118,77.5883876 L25.4370618,81.4080881 L2.98040939,77.5883876 L-2.66888744,71.4678855 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M-2.66888744,82.4678855 C-5.41009028,74.7892231 -5.99018282,69.2138723 -4.40916505,65.7418333 C-2.03763839,60.5337748 9.44641736,68.4197053 17.6974122,64.4034581 C25.9484069,60.3872109 30.900499,55.9350057 41.9572624,55.0303341 C49.3284381,54.4272197 60.3190566,50.4857564 74.929118,43.2059442 L74.929118,88.5883876 L25.4370618,92.4080881 L2.98040939,88.5883876 L-2.66888744,82.4678855 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <g id="Logos@1.5x" mask="url(#mask-3)"> + <g transform="translate(18.916781, 26.920551)"> + <path d="M14.5565471,4.39018829 C16.063989,9.03714232 16.6350894,17.3268858 21.0430992,17.3268858 C21.3787584,17.3268858 21.717789,17.293788 22.0581654,17.2285326 C18.0510679,16.2866818 17.5761613,8.08711106 15.1310055,3.84087718 C14.9392839,4.01652133 14.7489216,4.19960713 14.5565471,4.39018829" id="path12339" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M15.1310055,3.84087718 C17.5761613,8.08711106 18.0510679,16.2866818 22.0581654,17.2285326 C22.3729708,17.1702218 22.6884558,17.082064 23.0046072,16.9708557 C19.4078429,15.1942519 18.4136305,7.23204793 15.6368529,3.39875788 C15.4686768,3.5398535 15.2998478,3.68767882 15.1310055,3.84087718" id="path12367" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M18.6540687,1.3155961 C18.3190756,1.3155961 17.9793522,1.34868049 17.6383362,1.4139493 C16.7463674,1.58346822 15.8403139,1.97063492 14.926825,2.55650947 C15.1763641,2.80468946 15.4137908,3.08878811 15.6371195,3.39870414 C16.5660921,2.62160366 17.4890018,2.0472811 18.408567,1.7021046 C18.7536205,1.57327291 19.0973814,1.47633012 19.4424349,1.41259262 C19.1935486,1.34878795 18.9312041,1.3155961 18.6540687,1.3155961" id="path12379" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M25.812339,15.3332251 C26.180285,15.0382865 26.5489105,14.7120902 26.9182024,14.3561273 C25.3865354,9.73081313 24.8383141,1.32243327 20.3993503,1.32243327 C20.0818531,1.32243327 19.7616643,1.35226699 19.4421418,1.41193442 C23.4855633,2.42571662 24.0035233,11.2938393 25.812339,15.3332251" id="path12459" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M25.7348135,16.3158169 C25.5612675,16.1490114 25.3964893,15.9659256 25.2343494,15.7706297 C24.4876775,16.3036068 23.7437105,16.7077522 23.0044739,16.9708557 C23.2674581,17.1003994 23.5432476,17.1966975 23.8358936,17.2563649 C24.0625535,17.3030161 24.2973417,17.3268858 24.5441893,17.3268858 C25.3736101,17.3268858 26.0294448,17.2278878 26.5877533,16.9580008 C26.2803698,16.7904834 25.998504,16.5734938 25.7348135,16.3158169" id="path12525" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M18.4082472,1.70287025 C22.0299161,3.61237589 22.3447216,12.2594523 25.2345094,15.7706297 C25.428243,15.6329996 25.6199512,15.4871892 25.8116594,15.3332251 C24.0028571,11.2938393 23.4855633,2.4250047 19.4428213,1.41193442 C19.0977411,1.47702861 18.7533273,1.57338037 18.4082472,1.70287025" id="path12553" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M15.6368529,3.39875788 C18.4136305,7.23204793 19.4078429,15.1942519 23.0046072,16.9708557 C23.7438704,16.7077522 24.4878507,16.3036068 25.2345094,15.7706297 C22.3447216,12.2594523 22.0299161,3.61237589 18.4082472,1.70287025 C17.4887087,2.04733483 16.5658123,2.62165739 15.6368529,3.39875788" id="path12581" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M12.7799515,4.27826821 C12.3447271,5.27035682 11.9000951,6.57429577 11.3626272,8.27632203 C12.4315002,6.75803978 13.4970151,5.45001732 14.5564671,4.39018829 C14.410504,3.93787369 14.2537742,3.52085985 14.0849318,3.1492212 C13.6517328,3.4835442 13.2151626,3.85991111 12.7799515,4.27826821" id="path12651" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M14.4708667,2.86317483 C14.3430523,2.95538936 14.2145984,3.04967249 14.0854515,3.14932866 C14.2542672,3.52092701 14.4103174,3.93798115 14.5563206,4.39024203 C14.7486551,4.20037279 14.9396837,4.01662879 15.1307257,3.84098463 C14.9255857,3.48565311 14.7076404,3.15745536 14.4708667,2.86317483" id="path12655" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M14.926825,2.55650947 C14.7747989,2.65350599 14.6234791,2.7558621 14.4707601,2.8630002 C14.7075338,3.15729417 14.9254792,3.48549192 15.1313253,3.84152193 C15.3001809,3.68757136 15.4689966,3.53908784 15.6371728,3.39870414 C15.413844,3.08884185 15.1764174,2.80468946 14.926825,2.55650947" id="path12659" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M39.6296815,0.961728727 C37.5813738,8.92457746 33.3031905,15.3203702 29.7165134,16.9328819 C29.7165134,16.9328819 29.7097176,16.9328819 29.7097176,16.9328819 C29.6444778,16.9627157 29.5798911,16.9898494 29.5159972,17.0162578 C29.5072027,17.0216308 29.4992076,17.0223025 29.4924252,17.0255263 C29.4735834,17.0331829 29.4561009,17.0390932 29.4372592,17.0466826 C29.4284647,17.0520556 29.4204696,17.0538019 29.412408,17.0570256 C29.3821599,17.0679061 29.3525383,17.0771073 29.3229432,17.0890355 C29.3101511,17.0944084 29.2980785,17.0977666 29.2859128,17.102065 C29.2724543,17.1074381 29.2569573,17.1124081 29.2415135,17.11672 C29.2280685,17.122093 29.2139705,17.1259884 29.1984602,17.1318987 C29.185668,17.1372718 29.1722096,17.1395554 29.1601504,17.1449283 C29.1338867,17.1525849 29.1097282,17.1590325 29.0834645,17.1682472 C29.0726712,17.1682472 29.0626373,17.1741576 29.0511778,17.1769784 C29.0350278,17.1823514 29.016839,17.1862469 28.9993565,17.1910826 C28.9872306,17.1964556 28.9771835,17.1982019 28.9643781,17.2008884 C28.9461893,17.2062614 28.9260017,17.2112315 28.9078664,17.2155433 C28.8836547,17.2209163 28.8621346,17.2258864 28.8392554,17.2307356 C29.0013686,17.2911015 29.1702109,17.3215934 29.3525116,17.3215934 C32.7535302,17.3215934 36.1827446,11.1774058 41.8567455,0.959861601 L39.6288687,0.959861601 L39.6296815,0.961728727 Z" id="path12741" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M10.6240436,1.63874321 C10.6261756,1.63874321 10.6288406,1.63337018 10.6301732,1.63337018 C10.6328382,1.63337018 10.636969,1.63337018 10.6383014,1.62799715 C10.6383014,1.62799715 10.6409665,1.62799715 10.6425655,1.62799715 C10.6613938,1.62154953 10.6788897,1.61389297 10.6977181,1.60684087 C10.7025151,1.60684087 10.7050468,1.60684087 10.7085114,1.60146785 C10.7133085,1.60146785 10.7179722,1.59609483 10.7226627,1.5954232 C10.7428502,1.58897557 10.7630244,1.58131901 10.7818661,1.57426692 C10.7818661,1.57426692 10.7839981,1.57426692 10.7850641,1.57426692 C10.8301562,1.56071346 10.8718372,1.5438959 10.9155568,1.52816637 C10.9216863,1.52816637 10.9276827,1.52279334 10.9350381,1.52279334 C10.9532268,1.51688302 10.9720686,1.51030106 10.9908702,1.50597578 C10.9996648,1.50060275 11.0083661,1.50060275 11.0164278,1.49778191 C11.0359091,1.49187159 11.0548041,1.48528964 11.0729395,1.48096435 C11.0810679,1.48096435 11.0884366,1.47559132 11.0944596,1.47505403 C11.1570209,1.45769916 11.2189027,1.4414189 11.281464,1.42622667 C11.2902586,1.42622667 11.297614,1.42085365 11.3070216,1.42031634 C11.3251571,1.41494332 11.3420133,1.41212248 11.3615079,1.40943597 C11.3696363,1.40406294 11.3790038,1.40406294 11.3884246,1.4012421 C11.4065601,1.39586908 11.4240426,1.39533178 11.4435772,1.39089904 C11.4483742,1.39089904 11.450906,1.39089904 11.4563693,1.39089904 C11.4940394,1.38324248 11.532389,1.37679485 11.5700591,1.36974275 C11.5768549,1.36974275 11.5855029,1.36974275 11.5929249,1.36974275 C11.6110604,1.36436973 11.6272104,1.36383242 11.6453992,1.36047428 C11.655393,1.36047428 11.6655734,1.35510126 11.6749942,1.35510126 C11.6917839,1.35510126 11.7086267,1.34972824 11.7254164,1.3474447 C11.734211,1.3474447 11.7428989,1.3474447 11.753026,1.34207168 C11.7926815,1.33669865 11.8337362,1.33454944 11.8754437,1.3311913 C11.7577298,1.31977363 11.6366446,1.31219766 11.5135473,1.31219766 C7.68336455,1.31219766 2.40626521,8.47625234 0.0290473855,17.7539473 C0.0290473855,17.7539473 0.202596152,17.7539473 0.48713634,17.7539473 C1.24792627,16.3862573 1.93135998,15.0924465 2.55627119,13.877955 C4.2211305,7.30655839 7.61206195,2.82499949 10.6242834,1.63768203" id="path12803" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M12.7799914,4.27826821 C13.2152292,3.85991111 13.6517728,3.4835442 14.0849718,3.14927493 C13.9861129,2.93092866 13.8838694,2.72884922 13.7741905,2.54370824 C13.4237537,2.97226065 13.1035649,3.53779831 12.7799914,4.27826821" id="path12807" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M13.0946371,1.69305105 C13.3448691,1.90461388 13.5688374,2.19553627 13.7740306,2.54408435 C13.8386041,2.46406659 13.9038837,2.39013377 13.9718017,2.32096953 C13.6872842,2.0531377 13.3798475,1.83343474 13.0462003,1.66798589 C13.0596587,1.67550812 13.0731037,1.68155278 13.087095,1.68751683 C13.087095,1.68751683 13.092425,1.69288986 13.0946904,1.69288986" id="path12811" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M2.55609929,13.8787475 C6.04860398,7.09437763 7.70337359,2.80067312 10.6241102,1.63842083 C7.61256298,2.8264905 4.22095861,7.30799566 2.55609929,13.8787475" id="path12831" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M13.9715752,2.32079489 C13.9036705,2.39067108 13.8390971,2.4639054 13.7738174,2.54392316 C13.883483,2.72901041 13.9856865,2.93043165 14.0852916,3.14943612 C14.2144385,3.04977996 14.3428925,2.95549681 14.4707068,2.86328229 C14.3126578,2.66662959 14.1458275,2.48424229 13.9715752,2.32079489" id="path12843" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M4.14158365,17.7242478 C4.12005829,17.7296208 4.09853293,17.7296208 4.07835206,17.7319044 C4.07162288,17.7319044 4.07027705,17.7319044 4.06623954,17.7319044 C4.04805078,17.7319044 4.02921575,17.7372774 4.01242612,17.7372774 C4.01242612,17.7372774 4.00569695,17.7372774 4.00365821,17.7372774 C3.95996121,17.7426504 3.91688382,17.7426504 3.87517759,17.7460086 L3.86172457,17.7460086 C7.39660845,17.6462986 9.01235943,15.8621994 9.81418398,13.2745913 C10.4236207,11.3128867 10.9240982,9.66034595 11.3626805,8.27366248 C9.88212873,10.3744074 8.39484762,12.8785859 6.89950493,15.6838822 C6.17840115,17.0360037 5.08194928,17.6008294 4.14155567,17.7215881" id="path12923" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M4.14158365,17.7228911 C5.08197727,17.6021324 6.17843048,17.0379648 6.89953288,15.6851852 C8.39487427,12.8805874 9.88282158,10.3757104 11.3620276,8.27496543 C11.9001617,6.57224058 12.3441274,5.26900014 12.7800182,4.27691151 C9.83170654,7.10592963 6.87195261,11.8099048 4.14158365,17.7215345" id="path12949" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M2.55593273,13.8789087 C1.93104817,15.0934002 1.24761579,16.387211 0.486797883,17.7549009 C0.815761293,17.7549009 1.29201102,17.7549009 1.81938517,17.7549009 C1.99562561,16.3966407 2.24585899,15.1014866 2.55593273,13.8795535" id="path12961" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M11.7528528,1.34553728 C11.7420594,1.34553728 11.734011,1.3509103 11.7246036,1.3509103 C11.7084536,1.35628333 11.6916107,1.35628333 11.674821,1.35802956 C11.6648271,1.35802956 11.6553397,1.35802956 11.645226,1.36340258 C11.6270372,1.36877561 11.6102476,1.36931291 11.5927517,1.37267105 C11.5846234,1.37267105 11.576615,1.37267105 11.5698859,1.37804407 C11.5315095,1.3844917 11.4938662,1.39161096 11.456196,1.39811232 C11.4495336,1.39811232 11.4474015,1.39811232 11.443404,1.39811232 C11.4239227,1.40348534 11.4063869,1.40630618 11.3882514,1.40899269 C11.3787906,1.41436571 11.3694097,1.41436571 11.3606418,1.41651493 C11.3425063,1.42188795 11.3243176,1.42417149 11.306835,1.4273953 C11.2973742,1.43276833 11.2900454,1.43276833 11.2812642,1.43330563 C11.2187162,1.44849786 11.1568211,1.46477811 11.0942597,1.48213298 C11.0875971,1.48213298 11.0808147,1.48750601 11.0727397,1.48858061 C11.0539114,1.49395363 11.0357226,1.49946099 11.0162412,1.50539818 C11.0081129,1.5107712 10.9987454,1.5107712 10.9906704,1.51292041 C10.9718421,1.51829344 10.9530003,1.52380078 10.9348383,1.52973798 C10.9275094,1.52973798 10.9213931,1.535111 10.914664,1.535111 C10.8716106,1.55137784 10.8292368,1.56765809 10.7848376,1.58122498 C10.7848376,1.58122498 10.7848376,1.58122498 10.7848376,1.58122498 C10.7660092,1.58713531 10.7458217,1.59477844 10.7256474,1.60183053 C10.7175192,1.60720355 10.7101504,1.60841249 10.7007828,1.6121736 C10.6819411,1.61808393 10.6631128,1.62574049 10.645617,1.63279258 C10.6389544,1.6381656 10.6321719,1.6387029 10.6274814,1.64152374 C7.70675145,2.80377604 6.0519819,7.09748055 2.5594772,13.8818505 C2.24937549,15.1037836 1.99846918,16.3989376 1.82290299,17.7571441 L2.00990478,17.7571441 C2.53660601,17.7571441 2.68526616,17.7517711 3.29134234,17.7517711 L3.32228456,17.7517711 L3.41242219,17.7517711 L3.44336574,17.7517711 L3.45213366,17.7517711 L3.48307587,17.7517711 L3.50056506,17.7517711 L3.51267758,17.7517711 L3.53689328,17.7517711 L3.6122334,17.7517711 L3.68757217,17.7517711 L3.75080244,17.7517711 L3.7675934,17.7517711 C3.80391762,17.7517711 3.84091343,17.7517711 3.87858349,17.7517711 C3.92028839,17.7463981 3.96334045,17.7463981 4.00706411,17.7430399 C4.00706411,17.7430399 4.01379328,17.7430399 4.01513911,17.7430399 C4.03332788,17.7430399 4.05146334,17.7376669 4.06895253,17.7376669 C4.07568171,17.7376669 4.07632132,17.7376669 4.08170466,17.7376669 C4.10118461,17.7376669 4.12340955,17.7322939 4.14493491,17.7300104 C6.87530523,11.8183808 9.8350511,7.11440557 12.7833627,4.28538746 C13.107589,3.54491757 13.4271116,2.97937991 13.7769088,2.55152598 C13.5724085,2.20299134 13.3484136,1.91141076 13.0981816,1.6997942 C13.0981816,1.6997942 13.0913857,1.6997942 13.0908527,1.69442117 C13.0767015,1.68851084 13.0633097,1.68139159 13.0491585,1.67435293 C13.0349939,1.66669637 13.0228947,1.66078604 13.0081438,1.65319664 C12.9953517,1.64782362 12.9805475,1.64070436 12.9677821,1.6336657 C12.9502996,1.62829267 12.9361483,1.62063612 12.9207045,1.61358402 C12.9079124,1.608211 12.8964795,1.60270365 12.8836741,1.59731719 C12.8574103,1.58697412 12.8312131,1.5761609 12.8063218,1.5647701 C12.7948623,1.55939707 12.7841489,1.55657624 12.7733289,1.55227782 C12.7551934,1.54569586 12.734313,1.53708559 12.7154847,1.52894546 C12.7060238,1.52357243 12.6952972,1.52249783 12.6845438,1.51860239 C12.6569874,1.50933392 12.6300574,1.49962218 12.6044865,1.49093131 C12.597824,1.49093131 12.597824,1.49093131 12.597824,1.49093131 C12.5668698,1.48058824 12.5366085,1.47303914 12.5049881,1.46434828 C12.4976593,1.45897525 12.4915297,1.45897525 12.4841609,1.45790065 C12.4565513,1.45024409 12.4323396,1.44270842 12.4061291,1.43565632 C12.3994666,1.43565632 12.3933371,1.4302833 12.3879937,1.4302833 C12.3247661,1.41346573 12.259513,1.39991228 12.1935938,1.38743343 C12.186798,1.38743343 12.1801488,1.38206041 12.1734196,1.38206041 C12.1451704,1.37668739 12.1175874,1.37171734 12.0893382,1.36849353 C12.0825424,1.3631205 12.0785449,1.3631205 12.0725486,1.3631205 C12.038916,1.35774747 12.0059497,1.35385203 11.9729835,1.35009091 C11.9663209,1.35009091 11.9615239,1.35009091 11.9555009,1.35009091 C11.9285976,1.34471789 11.9037329,1.34418059 11.878815,1.34135975 C11.8364145,1.34673278 11.7960794,1.34901631 11.7563839,1.35277743" id="path12981" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M31.6289184,5.36999956 C30.9569203,7.53990882 30.4127231,9.3300796 29.9391758,10.8029061 C31.7829565,8.24513166 33.5991677,5.02753643 35.3286324,1.31434687 C33.3112655,1.95305169 32.2349973,3.41507844 31.6289184,5.36999956" id="path13003" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M29.9976863,16.7972668 C29.9035178,16.8455434 29.8093494,16.8914962 29.7165134,16.9328819 C33.3031905,15.3203702 37.5813738,8.92457746 39.6296815,0.961728727 L39.2146179,0.961728727 C34.508619,9.43586103 32.9951142,15.1088074 29.9976863,16.7972668" id="path13093" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M27.6556401,16.0853143 C28.4359312,15.1251414 29.0715786,13.4929913 29.9393756,10.8029598 C28.9383941,12.1889851 27.9307901,13.3804264 26.9224264,14.352111 C26.9224264,14.357484 26.9224264,14.357484 26.9170964,14.3608421 C27.1370938,15.0253778 27.3785447,15.611897 27.6536947,16.0852067" id="path13097" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M27.6556401,16.0853143 C27.389911,16.4121687 27.108778,16.6610472 26.7959579,16.8454897 C26.727347,16.8856396 26.6580964,16.9234522 26.5874334,16.9580545 C26.9177493,17.1377285 27.2782466,17.2577753 27.6818372,17.3058907 C27.7409873,17.3118011 27.7995378,17.3173084 27.86078,17.3216202 L27.8715734,17.3216202 C27.8990231,17.3216202 27.9280851,17.3216202 27.9576801,17.3269932 L27.9695395,17.3269932 C27.9991478,17.3269932 28.0287962,17.3269932 28.057685,17.3269932 C28.0894387,17.3269932 28.1209259,17.3269932 28.1525597,17.3269932 C28.1628201,17.3269932 28.1724807,17.3269932 28.1821681,17.3269932 C28.2036881,17.3269932 28.2268205,17.3269932 28.2494332,17.3269932 C28.2602265,17.3269932 28.2714862,17.3269932 28.2822529,17.3216202 C28.3032399,17.3216202 28.3253063,17.3216202 28.3468263,17.3162472 C28.3521564,17.3162472 28.3521564,17.3162472 28.3544217,17.3162472 C28.3630829,17.3162472 28.3705583,17.3162472 28.3786333,17.3162472 C28.4006997,17.3162472 28.4249114,17.3108742 28.4485901,17.3085907 C28.4485901,17.3085907 28.4539202,17.3085907 28.4539202,17.3085907 C28.4609825,17.3085907 28.4684446,17.3032176 28.4754402,17.3032176 C28.5001982,17.2978446 28.5260356,17.2955611 28.5501407,17.2917999 C28.5582691,17.2917999 28.5641321,17.2917999 28.5722071,17.2917999 C28.5996435,17.286427 28.6280126,17.2830688 28.6562618,17.2776958 L28.6615919,17.2776958 C28.6669219,17.2776958 28.6674549,17.2776958 28.6697202,17.2776958 C28.7262319,17.2668154 28.7813845,17.2560022 28.83719,17.241898 C28.3743959,17.071009 27.986942,16.6682202 27.6532949,16.0945558" id="path13101" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M21.0431792,17.3269932 C21.378865,17.3269932 21.7178955,17.2939088 22.0582586,17.2279953 C22.3730774,17.170383 22.6885358,17.0821714 23.0046871,16.9709633 C23.2677246,17.1005069 23.5435142,17.1968048 23.8354538,17.2564723 C24.0621271,17.3031236 24.297555,17.3269932 24.5444558,17.3269932 L21.0431792,17.3269932 Z" id="path13105" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M24.5445091,17.3269932 C25.373237,17.3269932 26.0297647,17.2279953 26.5874334,16.9581083 C26.917696,17.1377822 27.2782466,17.257829 27.6818372,17.3059982 C27.7410406,17.3119085 27.7995911,17.3174159 27.86078,17.3217277 L27.8715734,17.3217277 C27.8990231,17.3217277 27.9280851,17.3217277 27.9576801,17.3271007 L27.9700724,17.3271007 C27.9996675,17.3271007 28.0292626,17.3271007 28.058218,17.3271007 L24.5421372,17.3271007 L24.5445091,17.3269932 Z" id="path13109" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M26.9192551,14.3609496 C26.9192551,14.3609496 26.9192551,14.3555765 26.9192551,14.3555765 C26.5499766,14.7115529 26.181351,15.0377492 25.8133784,15.3326879 C25.6209906,15.4866385 25.429309,15.6324086 25.2355887,15.7700923 C25.3976752,15.9653749 25.5625067,16.1484607 25.7360528,16.3152797 C25.9997432,16.5729028 26.2815558,16.789946 26.5889925,16.9574098 C26.6589492,16.9226866 26.728906,16.8848202 26.796824,16.844845 C27.1102837,16.6604025 27.3914699,16.4115643 27.6571991,16.0847232 C27.3820491,15.6114135 27.140585,15.0248271 26.9206009,14.3603048" id="path13117" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M37.9002301,0.961728727 L36.1553216,0.961728727 C36.0967711,0.961728727 36.0389135,0.961728727 35.9817622,0.961728727 C35.9259034,0.961728727 35.8720966,0.961728727 35.8176369,0.961728727 L35.8112409,0.961728727 C35.6982306,0.967101751 35.5886184,0.970997194 35.4802854,0.97800899 C35.4291703,1.0885724 35.376696,1.19912237 35.3262205,1.31033054 C33.5968091,5.02352009 31.780598,8.24111537 29.9368173,10.7988898 C29.0697396,13.4888674 28.4333995,15.1210713 27.6530949,16.0812576 C27.9867421,16.6549219 28.3748757,17.0583555 28.8363239,17.2292445 C28.8497822,17.2238715 28.8605356,17.2238715 28.8726481,17.2210506 C28.8726481,17.2210506 28.8793106,17.2210506 28.8801102,17.2210506 C28.8882384,17.2210506 28.8968998,17.2156776 28.905681,17.2156776 C28.9245094,17.2103046 28.9446969,17.2069465 28.9635252,17.2010361 C28.9756511,17.1956631 28.9856982,17.1951258 28.9978641,17.1912303 C29.0153466,17.1858574 29.0334821,17.1819619 29.0496321,17.1776635 C29.0604254,17.1722905 29.0711521,17.1705442 29.0819188,17.1683951 C29.1088222,17.1596638 29.1330338,17.1532027 29.1586047,17.1450627 C29.1707305,17.1396896 29.1835226,17.1352569 29.1969677,17.1320331 C29.2117719,17.12666 29.2265628,17.1227646 29.2400211,17.1163036 C29.2555182,17.1109305 29.270962,17.1081097 29.2844204,17.1021994 C29.2965462,17.0968263 29.309285,17.0934682 29.3207445,17.0886324 C29.3509792,17.0777521 29.3806142,17.0685642 29.4108755,17.0566227 C29.4190039,17.0566227 29.4270256,17.0491004 29.4357935,17.0473542 C29.4539289,17.0396977 29.4727706,17.0337874 29.4909594,17.0256472 C29.4976219,17.0202742 29.5057503,17.0197369 29.5144648,17.016916 C29.5777058,16.990333 29.6429455,16.9632127 29.7081984,16.9335402 C29.7081984,16.9335402 29.7149943,16.9335402 29.7149943,16.9335402 C29.807817,16.8923156 29.9019987,16.8460404 29.9955009,16.797925 C32.9935952,15.1094656 34.5071267,9.43651918 39.2131256,0.962386922 L37.8987244,0.962386922 L37.9002301,0.961728727 Z" id="path13139" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M11.875417,1.33409274 C11.8828791,1.33409274 11.8895683,1.33409274 11.8969371,1.33946576 C11.9150725,1.33946576 11.9332613,1.33946576 11.9514234,1.34537609 C11.9582192,1.34537609 11.9642155,1.34537609 11.9696122,1.34537609 C12.0025518,1.35074911 12.0355315,1.35356995 12.069164,1.35840567 C12.0752936,1.35840567 12.0806236,1.35840567 12.0859536,1.3637787 C12.1135099,1.36915172 12.1417858,1.37358446 12.170035,1.37788289 C12.1761646,1.37788289 12.1841996,1.38325591 12.1909155,1.38325591 C12.2555022,1.39628549 12.3214215,1.40983894 12.3846491,1.42665651 C12.3906454,1.42665651 12.3967749,1.43202953 12.4021449,1.43202953 C12.4290483,1.43847716 12.45326,1.44667103 12.4801634,1.45426042 C12.4882917,1.45426042 12.4942613,1.45963344 12.5016968,1.46084238 C12.5333305,1.46903624 12.5629123,1.47712264 12.5938532,1.48742542 C12.5951857,1.48742542 12.5970511,1.48742542 12.6006489,1.49279844 C12.6268461,1.50085798 12.6537628,1.51124135 12.6813591,1.52045608 C12.6921524,1.5258291 12.7021862,1.52811264 12.7122999,1.53079915 C12.7311417,1.53899302 12.7520221,1.54706598 12.7701576,1.55466881 C12.7809509,1.55466881 12.7916776,1.56219105 12.8030839,1.56608649 C12.8279485,1.57750416 12.8542123,1.58778007 12.8797698,1.59863358 C12.8932282,1.6040066 12.9046344,1.61005126 12.9174399,1.61490041 C12.932244,1.62255697 12.9476878,1.62955534 12.9638379,1.63498209 C12.9772828,1.64142972 12.9920871,1.64853555 13.0048392,1.6544996 C13.0189904,1.66215616 13.0323955,1.66806648 13.0458939,1.67565588 C13.379541,1.84111817 13.6869511,2.06151962 13.9714952,2.32869324 C14.0764304,2.21748508 14.1860693,2.11777518 14.2997591,2.02827402 C13.6775302,1.58344135 12.9725792,1.32983461 12.1593216,1.32983461 C12.0651398,1.32983461 11.9709714,1.33520764 11.8754571,1.34232689" id="path13231" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M13.9715886,2.32079489 C14.1458142,2.48418856 14.3126311,2.66662959 14.4707068,2.86328229 C14.6233991,2.75614419 14.7747589,2.65306272 14.926785,2.55677812 C14.727668,2.35605537 14.5177977,2.17568295 14.2991728,2.02037568 C14.1854964,2.10923207 14.0765237,2.20958673 13.9715886,2.32079489" id="path13235" fill="#FFFFFF" fill-rule="nonzero"></path> + <g id="g13243" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(14.236893, 1.583033) scale(-1, 1) rotate(-180.000000) translate(-14.236893, -1.583033) translate(11.236893, 0.583033)"> + <path d="M0.638364279,1.24905143 C0.733883485,1.25718857 0.828057358,1.26057905 0.922231223,1.26057905 C1.73548983,1.26057905 2.44044849,1.00697142 3.06266867,0.562819047 C3.71919506,1.08495238 4.51294622,1.26736 5.61545312,1.26736 L0.276467566,1.26736 C0.399566262,1.26736 0.519974277,1.25990095 0.638364279,1.24905143" id="path13245" fill="#FFFFFF" fill-rule="nonzero"></path> + </g> + <g id="g13253" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(16.427575, 1.583033) scale(-1, 1) rotate(-180.000000) translate(-16.427575, -1.583033) translate(13.927575, 0.583033)"> + <path d="M2.92477122,1.26736 C1.82226432,1.26736 1.02851316,1.08495238 0.371986773,0.562819047 C0.589932007,0.407535237 0.799805195,0.227161905 0.99891565,0.0264457143 C1.91307483,0.612320001 2.8184893,1.00019048 3.71112301,1.16971428 C4.05149427,1.23413334 4.39119286,1.26736 4.72618276,1.26736 L2.92477122,1.26736 Z" id="path13255" fill="#FFFFFF" fill-rule="nonzero"></path> + </g> + <path d="M29.9391758,10.8042628 C30.4134028,9.3300796 30.9562407,7.5406207 31.6295846,5.36999956 C32.236343,3.41437995 33.3105993,1.95240692 35.3279261,1.31434687 C35.3812132,1.20514015 35.4315288,1.0925753 35.4833502,0.982025326 C32.1946355,1.18073319 30.6575852,2.867124 29.8840099,5.36458624 C28.5312724,9.72472822 27.7119519,12.5510329 26.9229195,14.3520572 C27.9305769,13.3810175 28.9382342,12.1889314 29.9391758,10.8042628" id="path13333" fill="#FFFFFF" fill-rule="nonzero"></path> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/chart-gallery.svg b/graphs/fusioncharts-suite-xt/assets/images/chart-gallery.svg new file mode 100755 index 0000000000000000000000000000000000000000..5f25695590c51b6101239f4d96b293264fe0dc52 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/chart-gallery.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>Icons/Combination Charts</title> + <desc>Created with Sketch.</desc> + <defs> + <rect id="path-1" x="0" y="0" width="20" height="20"></rect> + <path d="M2.03033009,7.76291275 L5.03033009,7.76291275 L5.03033009,17 L2.03033009,17 L2.03033009,7.76291275 Z M15.0303301,12.4954954 L18.0303301,12.4954954 L18.0303301,17 L15.0303301,17 L15.0303301,12.4954954 Z M8.53033009,9.7477477 L11.5303301,9.7477477 L11.5303301,17 L8.53033009,17 L8.53033009,9.7477477 Z M7.44414201,8.9975654 L2,3.00900919 L3.10991011,2 L7.6657681,7.01144379 L12.6403483,3.52923766 L18.5852851,9.47417451 L17.524625,10.5348347 L12.4695618,5.47977153 L7.44414201,8.9975654 Z" id="path-3"></path> + </defs> + <g id="Icons/Combination-Charts" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="PerformanceCharts"> + <mask id="mask-2" fill="white"> + <use xlink:href="#path-1"></use> + </mask> + <g id="Mask"></g> + <mask id="mask-4" fill="white"> + <use xlink:href="#path-3"></use> + </mask> + <use id="Mask" fill="#313131" xlink:href="#path-3"></use> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/django.svg b/graphs/fusioncharts-suite-xt/assets/images/django.svg new file mode 100755 index 0000000000000000000000000000000000000000..02bce0e5e0c19f27d071ad8f5e045e53d50e6c6c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/django.svg @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>DJANGO</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="10.1069014%" y1="6.02534227%" x2="94.893743%" y2="100%" id="linearGradient-1"> + <stop stop-color="#56E99C" offset="0%"></stop> + <stop stop-color="#1BB96A" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="65.5042181%" y1="32.1596789%" x2="58.4497116%" y2="67.7377751%" id="linearGradient-4"> + <stop stop-color="#A3F7C5" offset="0%"></stop> + <stop stop-color="#46D18B" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-283.000000, -61.000000)"> + <g id="DJANGO" transform="translate(283.000000, 61.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M81,62.5685085 C74.7265504,50.5513971 68.7105611,44.9205583 62.9520321,45.6759921 C54.3142386,46.8091429 38.7044199,52.2201758 27.8473185,46.8091429 C16.9902172,41.39811 6.05692054,20.3202117 -8.4921617,19.1013605 C-18.1915499,18.288793 -27.6941626,22.3617519 -37,31.3202373 L-32.0585469,74 L34.9377755,74 L81,70.091106 L81,62.5685085 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M81,74.5685085 C74.7265504,62.5513971 68.7105611,56.9205583 62.9520321,57.6759921 C54.3142386,58.8091429 38.7044199,64.2201758 27.8473185,58.8091429 C16.9902172,53.39811 6.05692054,32.3202117 -8.4921617,31.1013605 C-18.1915499,30.288793 -27.6941626,34.3617519 -37,43.3202373 L-32.0585469,86 L34.9377755,86 L81,82.091106 L81,74.5685085 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M83,91.9936914 C77.3166434,71.939497 71.5738431,62.2099843 65.7715993,62.8051534 C57.0682335,63.697907 34.9395212,69.7138083 24,65.4507222 C13.0604788,61.1876361 11.3133659,58.4404092 -3.34616315,57.4801364 C-13.1191825,56.8399545 -23.6704615,56.8399545 -35,57.4801364 L-30.9168114,101 L36.5881021,101 L83,97.9203751 L83,91.9936914 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <g id="Logos@1.5x" mask="url(#mask-3)" fill="#FFFFFF" fill-rule="nonzero"> + <g transform="translate(23.000000, 24.000000)" id="Shape"> + <path d="M11.6107627,0 L17,0 L17,23.3132738 C14.2395307,23.8060974 12.207364,24 10.008598,24 C3.42636051,23.9935079 0,21.2180569 0,15.8875983 C0,10.7517105 3.63443253,7.41851515 9.26643738,7.41851515 C10.1404006,7.41851515 10.8061906,7.48343572 11.6107627,7.67791106 L11.6107627,0 Z M11.7996156,11.8792286 C11.16842,11.6846577 10.6482905,11.6198326 9.98239934,11.6198326 C7.25662554,11.6198326 5.68217685,13.1890972 5.68217685,15.9392483 C5.68217685,18.6168412 7.18733562,20.0953123 9.947805,20.0953123 C10.5442039,20.0953123 11.029739,20.0636158 11.7996156,19.9663304 L11.7996156,11.8792286 Z"></path> + <path d="M25,8.02752409 L25,19.6756273 C25,23.6870075 24.7007306,25.6160522 23.822374,27.2791959 C23.0025619,28.878127 21.9225733,29.8863787 19.6909574,31 L15,28.7804743 C17.2316159,27.7391637 18.3116045,26.8190376 19.0013284,25.4148402 C19.7234082,23.9789175 19.9511338,22.3157738 19.9511338,17.9413162 L19.9511338,8.02761931 L25,8.02752409 Z M19.4416927,0 L24.4970111,0 L24.4970111,5.1574889 L19.4416927,5.1574889 L19.4416927,0 Z"></path> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/fc-logo.svg b/graphs/fusioncharts-suite-xt/assets/images/fc-logo.svg new file mode 100755 index 0000000000000000000000000000000000000000..6712115de8f3faa33500f47e861f7617e78c35ba --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/fc-logo.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="735px" height="115px" viewBox="0 0 735 115" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>logo colour</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Page-3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="concept-one-rough-test-copy" transform="translate(-23.000000, -11.000000)" fill="#373C8B"> + <g id="logo-colour"> + <path d="M185.446,92 L185.446,24.638 L226.131,24.638 L226.131,34.732 L197.394,34.732 L197.394,53.787 L221.805,53.787 L221.805,63.881 L197.394,63.881 L197.394,92 L185.446,92 Z M234.268,73.151 L234.268,41.427 L246.113,41.427 L246.113,71.606 C246.113,79.949 248.482,83.039 253.941,83.039 C258.37,83.039 261.357,80.979 265.168,76.035 L265.168,41.427 L277.013,41.427 L277.013,92 L267.331,92 L266.404,84.584 L266.095,84.584 C261.666,89.837 256.722,93.236 249.821,93.236 C239.006,93.236 234.268,85.923 234.268,73.151 Z M287.004,86.232 L292.566,78.61 C297.098,82.112 301.424,84.275 306.574,84.275 C312.033,84.275 314.608,81.7 314.608,78.198 C314.608,73.975 309.149,72.121 303.793,70.061 C297.098,67.589 289.579,63.778 289.579,55.332 C289.579,46.474 296.686,40.191 308.016,40.191 C315.02,40.191 320.685,43.075 324.805,46.268 L319.346,53.478 C315.844,50.903 312.239,49.152 308.222,49.152 C303.175,49.152 300.806,51.521 300.806,54.714 C300.806,58.628 305.853,60.276 311.312,62.233 C318.213,64.808 325.835,68.104 325.835,77.58 C325.835,86.232 318.934,93.236 306.162,93.236 C299.261,93.236 291.948,90.249 287.004,86.232 Z M342.418,32.569 C338.195,32.569 335.105,29.788 335.105,25.874 C335.105,21.857 338.195,19.076 342.418,19.076 C346.641,19.076 349.731,21.857 349.731,25.874 C349.731,29.788 346.641,32.569 342.418,32.569 Z M336.444,92 L336.444,41.427 L348.289,41.427 L348.289,92 L336.444,92 Z M360.134,66.765 C360.134,49.873 371.567,40.191 384.133,40.191 C396.802,40.191 408.235,49.873 408.235,66.765 C408.235,83.554 396.802,93.236 384.133,93.236 C371.567,93.236 360.134,83.554 360.134,66.765 Z M372.288,66.765 C372.288,76.859 376.717,83.554 384.133,83.554 C391.549,83.554 396.081,76.859 396.081,66.765 C396.081,56.568 391.549,49.873 384.133,49.873 C376.717,49.873 372.288,56.568 372.288,66.765 Z M419.977,92 L419.977,41.427 L429.762,41.427 L430.586,48.225 L430.998,48.225 C435.53,43.796 440.68,40.191 447.581,40.191 C458.396,40.191 463.134,47.504 463.134,60.276 L463.134,92 L451.289,92 L451.289,61.821 C451.289,53.478 448.92,50.388 443.358,50.388 C438.929,50.388 436.045,52.551 431.822,56.671 L431.822,92 L419.977,92 Z M474.979,58.525 C474.979,36.483 488.781,23.402 506.085,23.402 C514.325,23.402 521.02,27.419 525.243,31.951 L518.651,39.367 C515.149,35.968 511.338,33.805 506.188,33.805 C495.167,33.805 487.236,43.075 487.236,58.216 C487.236,73.563 494.549,82.833 505.776,82.833 C511.75,82.833 516.179,80.361 519.99,76.138 L526.582,83.451 C521.123,89.734 514.119,93.236 505.57,93.236 C488.472,93.236 474.979,80.876 474.979,58.525 Z M536.676,92 L536.676,19.282 L548.521,19.282 L548.521,38.028 L548.109,47.813 C552.332,43.796 557.379,40.191 564.28,40.191 C575.095,40.191 579.833,47.504 579.833,60.276 L579.833,92 L567.988,92 L567.988,61.821 C567.988,53.478 565.619,50.388 560.057,50.388 C555.628,50.388 552.744,52.551 548.521,56.671 L548.521,92 L536.676,92 Z M591.987,78.404 C591.987,67.589 601.051,61.924 621.754,59.658 C621.651,54.302 619.385,49.77 612.587,49.77 C607.54,49.77 602.802,52.036 598.373,54.714 L594.047,46.783 C599.609,43.281 606.716,40.191 614.75,40.191 C627.419,40.191 633.599,47.916 633.599,62.027 L633.599,92 L623.917,92 L622.99,86.438 L622.681,86.438 C618.149,90.249 612.999,93.236 607.025,93.236 C598.167,93.236 591.987,87.262 591.987,78.404 Z M603.523,77.477 C603.523,82.009 606.51,83.966 610.733,83.966 C614.853,83.966 618.046,81.906 621.754,78.404 L621.754,67.074 C608.055,68.825 603.523,72.43 603.523,77.477 Z M648.019,92 L648.019,41.427 L657.804,41.427 L658.628,50.388 L659.04,50.388 C662.645,43.796 668.001,40.191 673.357,40.191 C675.932,40.191 677.58,40.5 679.125,41.221 L677.065,51.521 C675.314,51.006 673.975,50.697 671.812,50.697 C667.795,50.697 662.954,53.478 659.864,61.1 L659.864,92 L648.019,92 Z M688.189,74.902 L688.189,50.8 L680.979,50.8 L680.979,41.942 L688.807,41.427 L690.249,27.625 L700.137,27.625 L700.137,41.427 L713.012,41.427 L713.012,50.8 L700.137,50.8 L700.137,74.902 C700.137,80.876 702.403,83.76 707.244,83.76 C708.995,83.76 711.055,83.245 712.497,82.627 L714.557,91.382 C711.776,92.309 708.274,93.236 704.257,93.236 C692.515,93.236 688.189,85.82 688.189,74.902 Z M718.574,86.232 L724.136,78.61 C728.668,82.112 732.994,84.275 738.144,84.275 C743.603,84.275 746.178,81.7 746.178,78.198 C746.178,73.975 740.719,72.121 735.363,70.061 C728.668,67.589 721.149,63.778 721.149,55.332 C721.149,46.474 728.256,40.191 739.586,40.191 C746.59,40.191 752.255,43.075 756.375,46.268 L750.916,53.478 C747.414,50.903 743.809,49.152 739.792,49.152 C734.745,49.152 732.376,51.521 732.376,54.714 C732.376,58.628 737.423,60.276 742.882,62.233 C749.783,64.808 757.405,68.104 757.405,77.58 C757.405,86.232 750.504,93.236 737.732,93.236 C730.831,93.236 723.518,90.249 718.574,86.232 Z" id="FusionCharts"></path> + <rect id="Rectangle-2-Copy-4" x="23.4041667" y="22.8571429" width="23.4041667" height="68.5714286"></rect> + <rect id="Rectangle-2-Copy-5" x="57.0833333" y="56.5714286" width="23.975" height="34.8571429"></rect> + <rect id="Rectangle-2-Copy-6" x="91.9041667" y="11.4285714" width="22.2625" height="80"></rect> + <rect id="Rectangle-2-Copy-7" x="91.9041667" y="101.714286" width="22.2625" height="23.4285714"></rect> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/fcxt-logo.svg b/graphs/fusioncharts-suite-xt/assets/images/fcxt-logo.svg new file mode 100755 index 0000000000000000000000000000000000000000..070f44e6d0254732ac10ae70609501601ca90de5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/fcxt-logo.svg @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="857px" height="85px" viewBox="0 0 857 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>FusionCharts XT</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Page-3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="concept-one-rough-test-copy-7" transform="translate(-23.000000, -19.000000)" fill="#373C8B"> + <g id="FusionCharts-XT" transform="translate(23.000000, 19.000000)"> + <path d="M162.446,83 L162.446,15.638 L203.131,15.638 L203.131,25.732 L174.394,25.732 L174.394,44.787 L198.805,44.787 L198.805,54.881 L174.394,54.881 L174.394,83 L162.446,83 Z M211.268,64.151 L211.268,32.427 L223.113,32.427 L223.113,62.606 C223.113,70.949 225.482,74.039 230.941,74.039 C235.37,74.039 238.357,71.979 242.168,67.035 L242.168,32.427 L254.013,32.427 L254.013,83 L244.331,83 L243.404,75.584 L243.095,75.584 C238.666,80.837 233.722,84.236 226.821,84.236 C216.006,84.236 211.268,76.923 211.268,64.151 Z M264.004,77.232 L269.566,69.61 C274.098,73.112 278.424,75.275 283.574,75.275 C289.033,75.275 291.608,72.7 291.608,69.198 C291.608,64.975 286.149,63.121 280.793,61.061 C274.098,58.589 266.579,54.778 266.579,46.332 C266.579,37.474 273.686,31.191 285.016,31.191 C292.02,31.191 297.685,34.075 301.805,37.268 L296.346,44.478 C292.844,41.903 289.239,40.152 285.222,40.152 C280.175,40.152 277.806,42.521 277.806,45.714 C277.806,49.628 282.853,51.276 288.312,53.233 C295.213,55.808 302.835,59.104 302.835,68.58 C302.835,77.232 295.934,84.236 283.162,84.236 C276.261,84.236 268.948,81.249 264.004,77.232 Z M319.418,23.569 C315.195,23.569 312.105,20.788 312.105,16.874 C312.105,12.857 315.195,10.076 319.418,10.076 C323.641,10.076 326.731,12.857 326.731,16.874 C326.731,20.788 323.641,23.569 319.418,23.569 Z M313.444,83 L313.444,32.427 L325.289,32.427 L325.289,83 L313.444,83 Z M337.134,57.765 C337.134,40.873 348.567,31.191 361.133,31.191 C373.802,31.191 385.235,40.873 385.235,57.765 C385.235,74.554 373.802,84.236 361.133,84.236 C348.567,84.236 337.134,74.554 337.134,57.765 Z M349.288,57.765 C349.288,67.859 353.717,74.554 361.133,74.554 C368.549,74.554 373.081,67.859 373.081,57.765 C373.081,47.568 368.549,40.873 361.133,40.873 C353.717,40.873 349.288,47.568 349.288,57.765 Z M396.977,83 L396.977,32.427 L406.762,32.427 L407.586,39.225 L407.998,39.225 C412.53,34.796 417.68,31.191 424.581,31.191 C435.396,31.191 440.134,38.504 440.134,51.276 L440.134,83 L428.289,83 L428.289,52.821 C428.289,44.478 425.92,41.388 420.358,41.388 C415.929,41.388 413.045,43.551 408.822,47.671 L408.822,83 L396.977,83 Z M451.979,49.525 C451.979,27.483 465.781,14.402 483.085,14.402 C491.325,14.402 498.02,18.419 502.243,22.951 L495.651,30.367 C492.149,26.968 488.338,24.805 483.188,24.805 C472.167,24.805 464.236,34.075 464.236,49.216 C464.236,64.563 471.549,73.833 482.776,73.833 C488.75,73.833 493.179,71.361 496.99,67.138 L503.582,74.451 C498.123,80.734 491.119,84.236 482.57,84.236 C465.472,84.236 451.979,71.876 451.979,49.525 Z M513.676,83 L513.676,10.282 L525.521,10.282 L525.521,29.028 L525.109,38.813 C529.332,34.796 534.379,31.191 541.28,31.191 C552.095,31.191 556.833,38.504 556.833,51.276 L556.833,83 L544.988,83 L544.988,52.821 C544.988,44.478 542.619,41.388 537.057,41.388 C532.628,41.388 529.744,43.551 525.521,47.671 L525.521,83 L513.676,83 Z M568.987,69.404 C568.987,58.589 578.051,52.924 598.754,50.658 C598.651,45.302 596.385,40.77 589.587,40.77 C584.54,40.77 579.802,43.036 575.373,45.714 L571.047,37.783 C576.609,34.281 583.716,31.191 591.75,31.191 C604.419,31.191 610.599,38.916 610.599,53.027 L610.599,83 L600.917,83 L599.99,77.438 L599.681,77.438 C595.149,81.249 589.999,84.236 584.025,84.236 C575.167,84.236 568.987,78.262 568.987,69.404 Z M580.523,68.477 C580.523,73.009 583.51,74.966 587.733,74.966 C591.853,74.966 595.046,72.906 598.754,69.404 L598.754,58.074 C585.055,59.825 580.523,63.43 580.523,68.477 Z M625.019,83 L625.019,32.427 L634.804,32.427 L635.628,41.388 L636.04,41.388 C639.645,34.796 645.001,31.191 650.357,31.191 C652.932,31.191 654.58,31.5 656.125,32.221 L654.065,42.521 C652.314,42.006 650.975,41.697 648.812,41.697 C644.795,41.697 639.954,44.478 636.864,52.1 L636.864,83 L625.019,83 Z M665.189,65.902 L665.189,41.8 L657.979,41.8 L657.979,32.942 L665.807,32.427 L667.249,18.625 L677.137,18.625 L677.137,32.427 L690.012,32.427 L690.012,41.8 L677.137,41.8 L677.137,65.902 C677.137,71.876 679.403,74.76 684.244,74.76 C685.995,74.76 688.055,74.245 689.497,73.627 L691.557,82.382 C688.776,83.309 685.274,84.236 681.257,84.236 C669.515,84.236 665.189,76.82 665.189,65.902 Z M695.574,77.232 L701.136,69.61 C705.668,73.112 709.994,75.275 715.144,75.275 C720.603,75.275 723.178,72.7 723.178,69.198 C723.178,64.975 717.719,63.121 712.363,61.061 C705.668,58.589 698.149,54.778 698.149,46.332 C698.149,37.474 705.256,31.191 716.586,31.191 C723.59,31.191 729.255,34.075 733.375,37.268 L727.916,44.478 C724.414,41.903 720.809,40.152 716.792,40.152 C711.745,40.152 709.376,42.521 709.376,45.714 C709.376,49.628 714.423,51.276 719.882,53.233 C726.783,55.808 734.405,59.104 734.405,68.58 C734.405,77.232 727.504,84.236 714.732,84.236 C707.831,84.236 700.518,81.249 695.574,77.232 Z M752,83 L770.969727,48.4755352 L753.12793,16 L766.355469,16 L773.84082,30.8547401 C775.378906,33.9281346 776.814453,37.1039755 778.865234,41.0993884 L779.275391,41.0993884 C780.916016,37.1039755 782.351562,33.9281346 783.787109,30.8547401 L790.862305,16 L803.474609,16 L785.632812,48.9877676 L804.705078,83 L791.477539,83 L783.274414,67.2232416 C781.53125,63.7400612 779.890625,60.3593272 777.942383,56.2614679 L777.532227,56.2614679 C775.789062,60.3593272 774.148437,63.7400612 772.507812,67.2232416 L764.612305,83 L752,83 Z M825.828125,83 L825.828125,26.0397554 L806.448242,26.0397554 L806.448242,16 L857,16 L857,26.0397554 L837.722656,26.0397554 L837.722656,83 L825.828125,83 Z" id="FusionCharts"></path> + <g id="FusionCharts-XT-logo"> + <g id="Group-2"> + <rect id="Rectangle-2-Copy-4" x="0.404166667" y="0.076" width="23.4041667" height="84.3525714"></rect> + <rect id="Rectangle-2-Copy-5" x="34.0833333" y="49" width="23.975" height="35.4285714"></rect> + <rect id="Rectangle-2-Copy-6" x="68.9041667" y="27" width="22.2625" height="57.4285714"></rect> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/fm-logo.svg b/graphs/fusioncharts-suite-xt/assets/images/fm-logo.svg new file mode 100755 index 0000000000000000000000000000000000000000..fbafd59371d93c5eb5d2aceb263fb67443dc5e1a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/fm-logo.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="788px" height="99px" viewBox="0 0 788 99" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>Fusionmaps</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Page-3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Fusionmaps" fill="#373C8B"> + <path d="M151.446,79 L151.446,11.638 L192.131,11.638 L192.131,21.732 L163.394,21.732 L163.394,40.787 L187.805,40.787 L187.805,50.881 L163.394,50.881 L163.394,79 L151.446,79 Z M200.268,60.151 L200.268,28.427 L212.113,28.427 L212.113,58.606 C212.113,66.949 214.482,70.039 219.941,70.039 C224.37,70.039 227.357,67.979 231.168,63.035 L231.168,28.427 L243.013,28.427 L243.013,79 L233.331,79 L232.404,71.584 L232.095,71.584 C227.666,76.837 222.722,80.236 215.821,80.236 C205.006,80.236 200.268,72.923 200.268,60.151 Z M253.004,73.232 L258.566,65.61 C263.098,69.112 267.424,71.275 272.574,71.275 C278.033,71.275 280.608,68.7 280.608,65.198 C280.608,60.975 275.149,59.121 269.793,57.061 C263.098,54.589 255.579,50.778 255.579,42.332 C255.579,33.474 262.686,27.191 274.016,27.191 C281.02,27.191 286.685,30.075 290.805,33.268 L285.346,40.478 C281.844,37.903 278.239,36.152 274.222,36.152 C269.175,36.152 266.806,38.521 266.806,41.714 C266.806,45.628 271.853,47.276 277.312,49.233 C284.213,51.808 291.835,55.104 291.835,64.58 C291.835,73.232 284.934,80.236 272.162,80.236 C265.261,80.236 257.948,77.249 253.004,73.232 Z M308.418,19.569 C304.195,19.569 301.105,16.788 301.105,12.874 C301.105,8.857 304.195,6.076 308.418,6.076 C312.641,6.076 315.731,8.857 315.731,12.874 C315.731,16.788 312.641,19.569 308.418,19.569 Z M302.444,79 L302.444,28.427 L314.289,28.427 L314.289,79 L302.444,79 Z M326.134,53.765 C326.134,36.873 337.567,27.191 350.133,27.191 C362.802,27.191 374.235,36.873 374.235,53.765 C374.235,70.554 362.802,80.236 350.133,80.236 C337.567,80.236 326.134,70.554 326.134,53.765 Z M338.288,53.765 C338.288,63.859 342.717,70.554 350.133,70.554 C357.549,70.554 362.081,63.859 362.081,53.765 C362.081,43.568 357.549,36.873 350.133,36.873 C342.717,36.873 338.288,43.568 338.288,53.765 Z M385.977,79 L385.977,28.427 L395.762,28.427 L396.586,35.225 L396.998,35.225 C401.53,30.796 406.68,27.191 413.581,27.191 C424.396,27.191 429.134,34.504 429.134,47.276 L429.134,79 L417.289,79 L417.289,48.821 C417.289,40.478 414.92,37.388 409.358,37.388 C404.929,37.388 402.045,39.551 397.822,43.671 L397.822,79 L385.977,79 Z M444.584,79 L444.584,11.638 L457.665,11.638 L469.819,44.804 L474.248,57.576 L474.66,57.576 L479.089,44.804 L490.934,11.638 L504.118,11.638 L504.118,79 L492.891,79 L492.891,48.203 C492.891,41.92 493.818,32.959 494.436,26.779 L494.024,26.779 L488.565,42.126 L476.926,72.717 L471.467,72.717 L459.828,42.126 L454.472,26.779 L454.06,26.779 C454.575,32.959 455.502,41.92 455.502,48.203 L455.502,79 L444.584,79 Z M517.92,65.404 C517.92,54.589 526.984,48.924 547.687,46.658 C547.584,41.302 545.318,36.77 538.52,36.77 C533.473,36.77 528.735,39.036 524.306,41.714 L519.98,33.783 C525.542,30.281 532.649,27.191 540.683,27.191 C553.352,27.191 559.532,34.916 559.532,49.027 L559.532,79 L549.85,79 L548.923,73.438 L548.614,73.438 C544.082,77.249 538.932,80.236 532.958,80.236 C524.1,80.236 517.92,74.262 517.92,65.404 Z M529.456,64.477 C529.456,69.009 532.443,70.966 536.666,70.966 C540.786,70.966 543.979,68.906 547.687,65.404 L547.687,54.074 C533.988,55.825 529.456,59.43 529.456,64.477 Z M585.488,74.674 L585.797,83.12 L585.797,98.982 L573.952,98.982 L573.952,28.427 L583.737,28.427 L584.561,33.783 L584.973,33.783 C589.196,30.178 594.655,27.191 600.217,27.191 C612.783,27.191 620.096,37.285 620.096,52.941 C620.096,70.245 609.693,80.236 598.466,80.236 C594.037,80.236 589.608,78.176 585.488,74.674 Z M585.797,66.228 C589.505,69.318 593.007,70.451 595.994,70.451 C602.689,70.451 607.839,64.477 607.839,53.044 C607.839,42.95 604.543,36.976 596.921,36.976 C593.213,36.976 589.711,38.83 585.797,42.641 L585.797,66.228 Z M626.585,73.232 L632.147,65.61 C636.679,69.112 641.005,71.275 646.155,71.275 C651.614,71.275 654.189,68.7 654.189,65.198 C654.189,60.975 648.73,59.121 643.374,57.061 C636.679,54.589 629.16,50.778 629.16,42.332 C629.16,33.474 636.267,27.191 647.597,27.191 C654.601,27.191 660.266,30.075 664.386,33.268 L658.927,40.478 C655.425,37.903 651.82,36.152 647.803,36.152 C642.756,36.152 640.387,38.521 640.387,41.714 C640.387,45.628 645.434,47.276 650.893,49.233 C657.794,51.808 665.416,55.104 665.416,64.58 C665.416,73.232 658.515,80.236 645.743,80.236 C638.842,80.236 631.529,77.249 626.585,73.232 Z" id="FusionMaps"></path> + <g id="FusionMaps"> + <g id="Group-2"> + <polygon id="Rectangle-2-Copy-4" points="0 12 23 0 23 79 0 91"></polygon> + <polygon id="Rectangle-2-Copy-4" points="33 0 57 12 57 91 33 79"></polygon> + <polygon id="Rectangle-2-Copy-4" points="68.4041667 11 91 0 91 79 68.4041667 91"></polygon> + </g> + </g> + <path d="M682.236,78 L701.291,43.289 L683.369,10.638 L696.656,10.638 L704.175,25.573 C705.72,28.663 707.162,31.856 709.222,35.873 L709.634,35.873 C711.282,31.856 712.724,28.663 714.166,25.573 L721.273,10.638 L733.942,10.638 L716.02,43.804 L735.178,78 L721.891,78 L713.651,62.138 C711.9,58.636 710.252,55.237 708.295,51.117 L707.883,51.117 C706.132,55.237 704.484,58.636 702.836,62.138 L694.905,78 L682.236,78 Z M756.396,78 L756.396,20.732 L736.929,20.732 L736.929,10.638 L787.708,10.638 L787.708,20.732 L768.344,20.732 L768.344,78 L756.396,78 Z" id="XT"></path> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/fw-logo.svg b/graphs/fusioncharts-suite-xt/assets/images/fw-logo.svg new file mode 100755 index 0000000000000000000000000000000000000000..c157353980f326a47b35b2219cf83c2cb15d288d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/fw-logo.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="909px" height="107px" viewBox="0 0 909 107" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>FusionWidgets</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Page-3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="concept-one-rough-test-copy-4" transform="translate(-23.000000, -18.000000)" fill="#373C8B"> + <g id="FusionWidgets" transform="translate(23.000000, 18.000000)"> + <path d="M152.446,84 L152.446,16.638 L193.131,16.638 L193.131,26.732 L164.394,26.732 L164.394,45.787 L188.805,45.787 L188.805,55.881 L164.394,55.881 L164.394,84 L152.446,84 Z M201.268,65.151 L201.268,33.427 L213.113,33.427 L213.113,63.606 C213.113,71.949 215.482,75.039 220.941,75.039 C225.37,75.039 228.357,72.979 232.168,68.035 L232.168,33.427 L244.013,33.427 L244.013,84 L234.331,84 L233.404,76.584 L233.095,76.584 C228.666,81.837 223.722,85.236 216.821,85.236 C206.006,85.236 201.268,77.923 201.268,65.151 Z M254.004,78.232 L259.566,70.61 C264.098,74.112 268.424,76.275 273.574,76.275 C279.033,76.275 281.608,73.7 281.608,70.198 C281.608,65.975 276.149,64.121 270.793,62.061 C264.098,59.589 256.579,55.778 256.579,47.332 C256.579,38.474 263.686,32.191 275.016,32.191 C282.02,32.191 287.685,35.075 291.805,38.268 L286.346,45.478 C282.844,42.903 279.239,41.152 275.222,41.152 C270.175,41.152 267.806,43.521 267.806,46.714 C267.806,50.628 272.853,52.276 278.312,54.233 C285.213,56.808 292.835,60.104 292.835,69.58 C292.835,78.232 285.934,85.236 273.162,85.236 C266.261,85.236 258.948,82.249 254.004,78.232 Z M309.418,24.569 C305.195,24.569 302.105,21.788 302.105,17.874 C302.105,13.857 305.195,11.076 309.418,11.076 C313.641,11.076 316.731,13.857 316.731,17.874 C316.731,21.788 313.641,24.569 309.418,24.569 Z M303.444,84 L303.444,33.427 L315.289,33.427 L315.289,84 L303.444,84 Z M327.134,58.765 C327.134,41.873 338.567,32.191 351.133,32.191 C363.802,32.191 375.235,41.873 375.235,58.765 C375.235,75.554 363.802,85.236 351.133,85.236 C338.567,85.236 327.134,75.554 327.134,58.765 Z M339.288,58.765 C339.288,68.859 343.717,75.554 351.133,75.554 C358.549,75.554 363.081,68.859 363.081,58.765 C363.081,48.568 358.549,41.873 351.133,41.873 C343.717,41.873 339.288,48.568 339.288,58.765 Z M386.977,84 L386.977,33.427 L396.762,33.427 L397.586,40.225 L397.998,40.225 C402.53,35.796 407.68,32.191 414.581,32.191 C425.396,32.191 430.134,39.504 430.134,52.276 L430.134,84 L418.289,84 L418.289,53.821 C418.289,45.478 415.92,42.388 410.358,42.388 C405.929,42.388 403.045,44.551 398.822,48.671 L398.822,84 L386.977,84 Z M452.176,84 L438.786,16.638 L451.146,16.638 L456.914,50.628 C458.047,57.838 459.18,65.048 460.313,72.155 L460.725,72.155 C462.064,65.048 463.609,57.735 465.051,50.628 L473.394,16.638 L483.694,16.638 L492.037,50.628 C493.479,57.632 495.024,64.945 496.466,72.155 L496.878,72.155 C498.011,64.945 499.041,57.735 500.174,50.628 L505.942,16.638 L517.478,16.638 L504.5,84 L489.668,84 L481.325,48.568 C480.192,43.315 479.265,38.165 478.338,33.015 L477.926,33.015 C476.999,38.165 476.072,43.315 474.939,48.568 L466.802,84 L452.176,84 Z M532.722,24.569 C528.499,24.569 525.409,21.788 525.409,17.874 C525.409,13.857 528.499,11.076 532.722,11.076 C536.945,11.076 540.035,13.857 540.035,17.874 C540.035,21.788 536.945,24.569 532.722,24.569 Z M526.748,84 L526.748,33.427 L538.593,33.427 L538.593,84 L526.748,84 Z M550.644,58.765 C550.644,42.285 561.047,32.191 572.068,32.191 C577.836,32.191 581.441,34.354 585.355,37.753 L584.943,29.616 L584.943,11.282 L596.788,11.282 L596.788,84 L587.003,84 L586.179,78.541 L585.767,78.541 C582.059,82.249 576.909,85.236 571.45,85.236 C558.781,85.236 550.644,75.451 550.644,58.765 Z M562.901,58.662 C562.901,69.58 567.021,75.451 574.334,75.451 C578.248,75.451 581.544,73.7 584.943,69.786 L584.943,46.199 C581.441,43.109 578.042,41.976 574.643,41.976 C568.154,41.976 562.901,48.053 562.901,58.662 Z M618.315,91.416 C618.315,95.948 623.259,98.626 631.293,98.626 C639.43,98.626 644.992,94.815 644.992,90.489 C644.992,86.575 641.799,85.442 636.031,85.442 L629.13,85.442 C626.349,85.442 624.186,85.236 622.229,84.721 C619.551,86.781 618.315,89.047 618.315,91.416 Z M608.427,93.167 C608.427,88.944 611.002,85.236 615.637,82.352 L615.637,81.94 C613.062,80.292 611.105,77.614 611.105,73.494 C611.105,69.58 613.783,66.181 616.667,64.121 L616.667,63.709 C613.268,61.134 610.075,56.293 610.075,50.319 C610.075,38.68 619.448,32.191 630.057,32.191 C632.838,32.191 635.413,32.706 637.473,33.427 L655.601,33.427 L655.601,42.182 L646.331,42.182 C647.979,44.139 649.215,47.229 649.215,50.731 C649.215,61.958 640.769,67.932 630.057,67.932 C627.894,67.932 625.422,67.52 623.156,66.593 C621.611,67.932 620.684,69.168 620.684,71.434 C620.684,74.318 622.744,76.069 628.924,76.069 L637.885,76.069 C650.039,76.069 656.425,79.777 656.425,88.532 C656.425,98.523 645.919,106.351 629.439,106.351 C617.388,106.351 608.427,102.025 608.427,93.167 Z M630.057,60.516 C634.898,60.516 638.812,56.808 638.812,50.319 C638.812,44.036 635.001,40.328 630.057,40.328 C625.113,40.328 621.199,43.933 621.199,50.319 C621.199,56.808 625.113,60.516 630.057,60.516 Z M660.442,58.765 C660.442,42.285 671.875,32.191 683.72,32.191 C697.419,32.191 704.629,42.079 704.629,56.19 C704.629,58.456 704.423,60.516 704.114,61.752 L671.978,61.752 C673.008,70.919 678.776,76.069 686.913,76.069 C691.239,76.069 694.947,74.73 698.655,72.361 L702.672,79.777 C697.831,82.97 691.754,85.236 685.368,85.236 C671.36,85.236 660.442,75.451 660.442,58.765 Z M671.875,54.233 L694.329,54.233 C694.329,46.199 690.93,41.358 684.029,41.358 C678.055,41.358 672.905,45.787 671.875,54.233 Z M716.062,66.902 L716.062,42.8 L708.852,42.8 L708.852,33.942 L716.68,33.427 L718.122,19.625 L728.01,19.625 L728.01,33.427 L740.885,33.427 L740.885,42.8 L728.01,42.8 L728.01,66.902 C728.01,72.876 730.276,75.76 735.117,75.76 C736.868,75.76 738.928,75.245 740.37,74.627 L742.43,83.382 C739.649,84.309 736.147,85.236 732.13,85.236 C720.388,85.236 716.062,77.82 716.062,66.902 Z M746.447,78.232 L752.009,70.61 C756.541,74.112 760.867,76.275 766.017,76.275 C771.476,76.275 774.051,73.7 774.051,70.198 C774.051,65.975 768.592,64.121 763.236,62.061 C756.541,59.589 749.022,55.778 749.022,47.332 C749.022,38.474 756.129,32.191 767.459,32.191 C774.463,32.191 780.128,35.075 784.248,38.268 L778.789,45.478 C775.287,42.903 771.682,41.152 767.665,41.152 C762.618,41.152 760.249,43.521 760.249,46.714 C760.249,50.628 765.296,52.276 770.755,54.233 C777.656,56.808 785.278,60.104 785.278,69.58 C785.278,78.232 778.377,85.236 765.605,85.236 C758.704,85.236 751.391,82.249 746.447,78.232 Z M803.236,84 L822.291,49.289 L804.369,16.638 L817.656,16.638 L825.175,31.573 C826.72,34.663 828.162,37.856 830.222,41.873 L830.634,41.873 C832.282,37.856 833.724,34.663 835.166,31.573 L842.273,16.638 L854.942,16.638 L837.02,49.804 L856.178,84 L842.891,84 L834.651,68.138 C832.9,64.636 831.252,61.237 829.295,57.117 L828.883,57.117 C827.132,61.237 825.484,64.636 823.836,68.138 L815.905,84 L803.236,84 Z M877.396,84 L877.396,26.732 L857.929,26.732 L857.929,16.638 L908.708,16.638 L908.708,26.732 L889.344,26.732 L889.344,84 L877.396,84 Z"></path> + <g id="FusionWidgets-logo"> + <g id="Group-15-Copy-3"> + <polygon id="Rectangle-2-Copy-4" points="1 5 35.3928406 5 35.3928406 51.398149 1 51.398149"></polygon> + <polygon id="Rectangle-2-Copy-4" points="0.592710905 61 35.0850918 61 35.0850918 96 0.592710905 96"></polygon> + <polygon id="Rectangle-2-Copy-4" points="46 61 81 61 81 96.932406 46 96.932406"></polygon> + <polygon id="Rectangle-2-Copy-5" transform="translate(64.000000, 25.966203) rotate(-45.000000) translate(-64.000000, -25.966203) " points="46 8 82 8 82 43.932406 46 43.932406"></polygon> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/java.svg b/graphs/fusioncharts-suite-xt/assets/images/java.svg new file mode 100755 index 0000000000000000000000000000000000000000..e3728a39f09cd82c0cc73680e994c6e2cef9ae9b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/java.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>JAVA</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="100%" y1="97.4947284%" x2="-13.8051062%" y2="-21.6363486%" id="linearGradient-1"> + <stop stop-color="#879EFF" offset="0%"></stop> + <stop stop-color="#F44336" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="63.4800547%" y1="19.3950243%" x2="79.280765%" y2="65.6504564%" id="linearGradient-4"> + <stop stop-color="#AD9AE9" offset="0%"></stop> + <stop stop-color="#C86786" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-174.000000, -60.000000)"> + <g id="Java" transform="translate(165.000000, 51.000000)"> + <g id="JAVA" transform="translate(9.000000, 9.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M102.557961,42.0427469 L105.256597,48.1612115 L92.9882048,83.8603944 L68.1531047,92.4807541 L-1.52304436,95.4821092 L-25.2168605,43.8494373 C-11.5852947,44.9602753 0.0167458733,44.295833 9.58926126,41.8561104 C23.9480343,38.1965264 33.7145494,45.2860332 46.0444824,46.2163597 C58.3744154,47.1466863 71.3697849,37.755634 79.2284945,34.0727336 C84.4676343,31.6174667 92.2441231,34.2741378 102.557961,42.0427469 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M102.557961,52.0427469 C92.2441231,44.2741378 84.4676343,41.6174667 79.2284945,44.0727336 C71.3697849,47.755634 58.3744154,57.1466863 46.0444824,56.2163597 C33.7145494,55.2860332 23.9480343,48.1965264 9.58926126,51.8561104 C0.0167458733,54.295833 -11.5852947,54.9602753 -25.2168605,53.8494373 L-1.52304436,105.482109 L62.5834752,76.0652799 L83.9200362,75.1132457 L105.256597,58.1612115 L102.557961,52.0427469 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M102.557961,60.0427469 L105.256597,66.1612115 L62.5834752,84.0652799 L-1.52304436,105.482109 L-25.2168605,61.8494373 C-11.5852947,62.9602753 0.0167458733,62.295833 9.58926126,59.8561104 C23.9480343,56.1965264 33.7145494,63.2860332 46.0444824,64.2163597 C58.3744154,65.1466863 71.3697849,55.755634 79.2284945,52.0727336 C84.4676343,49.6174667 92.2441231,52.2741378 102.557961,60.0427469 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <g id="Logos@1.5x" mask="url(#mask-3)" fill="#FFFFFF" fill-rule="nonzero"> + <g transform="translate(24.000000, 18.000000)" id="Shape"> + <path d="M12.7960293,18 C11.9760569,16.6141258 11.381659,15.4633936 10.5551004,13.2997416 C9.1588421,9.64685619 19.0446148,6.34539188 15.0369581,0 C16.7740485,4.38415159 8.79825175,7.09216194 8.05895929,10.7433247 C7.37976523,14.1007752 12.7927363,18 12.795206,18 L12.7960293,18 Z"></path> + <path d="M13.0097289,11.091976 C12.8376253,13.1512009 15.0050558,14.2516376 15.0686983,15.7549127 C15.1206879,16.9798035 13.7725426,18 13.7725426,18 C13.7725426,18 16.2169524,17.5619541 16.9806624,15.6943232 C17.8277351,13.6179039 15.3385066,12.1981441 15.5939731,10.5384825 C15.8315119,8.94841702 21,6 21,6 C21,6 13.398755,6.45687775 13.0097289,11.091976 Z"></path> + <path d="M20.6346401,17.7661642 C22.0437018,17.4443705 23.2294344,18.3543541 23.2294344,19.4044605 C23.2294344,21.7661817 20,24 20,24 C20,24 25,23.3955167 25,19.51607 C25,16.9514967 22.5457905,16.308724 20.6346401,17.7661642 Z"></path> + <path d="M16.9012662,19.3290774 C16.9012662,19.3290774 18.5592403,18.3443012 19,17.974031 C14.9323686,18.6946337 5.64310119,18.7921857 5.64310119,18.1662867 C5.64310119,17.5902317 8.63958398,17.0006477 8.63958398,17.0006477 C8.63958398,17.0006477 2,16.9201851 2,18.5529342 C2,20.2547528 10.6913375,20.3772268 16.9012662,19.3290774 Z"></path> + <path d="M16.084053,21.7497816 C12.3353163,22.883524 5.42909231,22.5207264 7.4755965,21 C6.4777074,21 5,21.7263509 5,22.4285154 C5,23.8313326 12.4716945,24.9151903 18,22.8600933 L16.084053,21.7497816 Z"></path> + <path d="M8.37445872,24 C6.93269724,24 6,24.8471841 6,25.4655081 C6,27.3847216 14.5942018,27.5758399 18,25.6285208 L15.8360367,24.3171922 C13.2907156,25.3370252 6.90187158,25.4775534 8.37357798,24 L8.37445872,24 Z"></path> + <path d="M24,27.4860633 C24,26.7312819 23.0727952,26.3756173 22.7393886,26.2066364 C24.6976028,30.5317433 3.10622388,30.1953908 3.10622388,27.6429742 C3.10622388,27.061197 4.69760282,26.4955133 6.16494392,26.762664 L4.91752804,26.0867404 C1.98988345,25.6691161 0,26.8447405 0,27.7942523 C0,32.2231618 23.9991203,32.0091193 23.9991203,27.4860633 L24,27.4860633 Z"></path> + <path d="M26,29 C22.385652,32.7941246 13.2168054,34.1768393 4,31.8312288 C13.2168054,36.0053219 25.9564012,33.6569312 26,29 Z"></path> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/jquery.svg b/graphs/fusioncharts-suite-xt/assets/images/jquery.svg new file mode 100755 index 0000000000000000000000000000000000000000..eb1cde2970956e3a5340214082d03a957da82881 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/jquery.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>jQuery</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="10.1069014%" y1="6.02534227%" x2="94.1215096%" y2="99.1440845%" id="linearGradient-1"> + <stop stop-color="#C1D1FF" offset="0%"></stop> + <stop stop-color="#1130B7" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="69.3374097%" y1="0%" x2="78.0819785%" y2="60.8218033%" id="linearGradient-4"> + <stop stop-color="#A1B4EB" offset="0%"></stop> + <stop stop-color="#435FCC" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-63.000000, -401.000000)"> + <g id="jQuery" transform="translate(63.000000, 401.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M-16.0692193,78.0691967 C-22.2540101,54.3466575 -22.6205077,42.8237257 -17.168712,43.5004012 C-8.99101845,44.5154146 7.30779969,53.6369313 17.5865877,48.7900294 C22.9211584,46.274544 34,39.5545928 41.543905,39.6785124 C49.0878101,39.802432 51.0718952,42.7621628 57.6974042,42.2370044 C66.8801456,41.5091517 76.6969597,37.6215445 87.1478465,30.574183 L89,85.574183 L29.8163554,68.191298 L-9.28831855,68.191298 L-16.0692193,78.0691967 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M-16.0692193,90.0691967 C-22.2540101,66.3466575 -22.6205077,54.8237257 -17.168712,55.5004012 C-8.99101845,56.5154146 7.30779969,65.6369313 17.5865877,60.7900294 C22.9211584,58.274544 34,51.5545928 41.543905,51.6785124 C49.0878101,51.802432 51.0718952,54.7621628 57.6974042,54.2370044 C66.8801456,53.5091517 76.6969597,49.6215445 87.1478465,42.574183 L89,97.574183 L29.8163554,80.191298 L-9.28831855,80.191298 L-16.0692193,90.0691967 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M-16.5478545,95.35539 C-22.1322823,75.6983837 -22.4632036,66.1502345 -17.5406184,66.7109424 C-10.1567406,67.5520043 4.55993718,75.1102893 13.8409543,71.0940421 C18.6576937,69.0096568 28.6611026,63.4413607 35.4727143,63.5440432 C42.2843259,63.6467256 44.0758143,66.0992222 50.0581794,65.6640646 C58.3495441,65.0609502 67.2134316,61.8395953 76.6498418,56 L78.3222052,101.574183 L24.883568,87.1703506 L-10.4251816,87.1703506 L-16.5478545,95.35539 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <path d="M37.1635746,44.5511282 C36.9786617,44.5099279 36.7999126,44.4529744 36.6199308,44.4008682 C36.3985168,44.3362983 36.1786195,44.2668054 35.9604083,44.1924429 L35.8889086,44.1669956 C35.7340697,44.1128456 35.5799623,44.0566951 35.4266265,43.9985589 L35.2971875,43.9488761 C35.1295332,43.8834403 34.9631116,43.815581 34.7979228,43.7452979 L34.6980699,43.7016741 C34.5572586,43.6389112 34.4171279,43.5746836 34.2777013,43.5090019 L34.1556588,43.4520485 C34.0459439,43.3999421 33.9374616,43.3429888 33.8302122,43.2896707 C33.7574798,43.2521057 33.6847474,43.2169642 33.6132478,43.1781873 C33.4819092,43.1081919 33.3516341,43.0362854 33.2224653,42.9624915 C33.179319,42.9382561 33.1349399,42.9164441 33.0905608,42.8909968 C32.9192362,42.7925011 32.7499052,42.6906923 32.5826668,42.5856296 L32.4458313,42.4959582 C32.3237413,42.4197199 32.2033152,42.3409367 32.0846349,42.2596621 C32.0451868,42.2342149 32.0069715,42.2051323 31.9687562,42.1796851 C31.8541102,42.0997079 31.7394642,42.0197307 31.6272837,41.93733 L31.4756552,41.824635 C31.3715661,41.7471855 31.268822,41.6680049 31.1674671,41.5871272 L31.0293989,41.4780674 C30.8999599,41.3726431 30.7717536,41.2684304 30.6447801,41.1593707 L30.6028666,41.1254409 C30.466031,41.0078988 30.331661,40.8867214 30.1985238,40.7643321 L30.0851106,40.6576959 C29.9864904,40.565601 29.8903357,40.4722945 29.7954138,40.377776 L29.6820005,40.2662927 C29.5616574,40.1441753 29.4428928,40.0205643 29.3257351,39.8954895 L29.3084766,39.8773129 C29.1852014,39.7452295 29.0656244,39.6095107 28.9472801,39.4725802 L28.8523582,39.3623087 C28.6251651,39.0942467 28.4068538,38.8190298 28.1977667,38.5370901 C25.4894098,34.9066129 24.5167682,29.8983479 26.6814813,25.7855843 L24.7633187,28.1776277 C22.3052105,31.6505742 22.6109331,36.1692823 24.4884149,39.8591363 C24.532794,39.9475959 24.5796386,40.0348437 24.6264832,40.1220914 C24.6560692,40.1766213 24.6831898,40.2335748 24.7140086,40.2881046 L24.7682497,40.3838348 C24.8003012,40.4432118 24.8335856,40.4989534 24.8656371,40.5559069 C24.9235765,40.6564841 24.9839813,40.7570614 25.0443862,40.8576387 C25.1440027,41.0216133 25.2475833,41.1832292 25.3550398,41.3423486 C25.3846259,41.3871843 25.4129792,41.4332317 25.443798,41.4768557 C25.5424182,41.619845 25.6422711,41.7628345 25.7445895,41.9046121 L25.7532188,41.9155181 L25.8037617,41.9833775 C25.9253074,42.149559 26.0515073,42.312403 26.1822166,42.4717227 C26.264811,42.5747236 26.3498709,42.6765127 26.4361636,42.7783017 L26.533551,42.8922085 C26.651869,43.0285016 26.7722816,43.163024 26.8947475,43.2957295 L26.9083078,43.3114827 C27.1536833,43.5732977 27.4073438,43.8274913 27.668916,44.073689 L27.7860274,44.1839605 C27.9154664,44.3039261 28.0461382,44.4214683 28.1792754,44.536587 L28.1854392,44.5414341 L28.2544733,44.5983874 C28.3715848,44.6977529 28.4911618,44.7971185 28.6119715,44.8952723 L28.7599018,45.0116026 C28.9099962,45.1299732 29.0620561,45.2459153 29.2160202,45.359382 C29.3656413,45.4693111 29.5177179,45.5759734 29.6721385,45.6792905 L29.7054228,45.7023142 C29.8114395,45.7750207 29.9211545,45.8428801 30.0296367,45.9131631 L30.1701705,46.0052579 C30.3378248,46.1094705 30.5067119,46.2124714 30.6780644,46.311837 L30.8185982,46.3893906 C30.9443389,46.4608852 31.0713124,46.5311682 31.1995187,46.6002393 C31.2685528,46.6365925 31.3400525,46.671734 31.4103193,46.7068755 C31.5003103,46.752923 31.5915339,46.8013939 31.6827576,46.8462295 L31.745628,46.876524 L31.8578084,46.9298421 C32.0008077,46.9964896 32.1450397,47.0631373 32.2905045,47.1273613 L32.3817282,47.1673499 C32.5481498,47.2388446 32.7158041,47.3079158 32.8859239,47.3733516 C32.9266047,47.3903164 32.9672856,47.4048577 33.0091991,47.4206109 C33.1657587,47.4799878 33.3247837,47.5393648 33.4850415,47.5938946 L33.5454464,47.6144949 C33.7204972,47.6750835 33.8980136,47.7308251 34.0755299,47.785355 L34.2037362,47.82292 C34.3849508,47.8762381 34.5649326,47.9404622 34.752311,47.9743919 C46.6397418,50.1059037 50.0926812,40.9521572 50.0926812,40.9521572 C47.1932477,44.6662468 42.0452739,45.6453608 37.1672728,44.5559753 L37.1635746,44.5511282 Z M32.8809929,35.0798967 C33.1472674,35.4555469 33.443128,35.90148 33.7956951,36.2032119 C33.9239014,36.3413543 34.0582714,36.4770731 34.1951069,36.6103682 L34.2998908,36.7121573 C34.4330281,36.8393936 34.5673981,36.9629947 34.7066991,37.0841721 L34.7239577,37.0987134 L34.7276559,37.1023487 C34.8817499,37.2356441 35.0420078,37.3640921 35.2034983,37.4889049 L35.3119805,37.5725174 C35.4747038,37.6949067 35.6398926,37.8148723 35.8100125,37.929991 L35.8248055,37.9408969 C35.9000034,37.9917914 35.976434,38.0390507 36.0516319,38.0887335 C36.0886145,38.1117572 36.1231316,38.1372044 36.1601141,38.1590164 C36.2809239,38.2353582 36.4041991,38.3104882 36.5287071,38.3807712 L36.5804827,38.4098537 C36.6877321,38.4716543 36.7974471,38.5310312 36.9071621,38.5891964 C36.9453774,38.6110084 36.9848254,38.629185 37.0230407,38.6485734 L37.2511,38.7649037 L37.285617,38.7794451 C37.4421765,38.8557868 37.5999689,38.9284933 37.7614595,38.9975645 L37.8662434,39.0399766 C37.9956824,39.0945065 38.1251214,39.1466129 38.2557931,39.1962955 L38.4222148,39.2568843 C38.5417917,39.3005081 38.6601359,39.3404967 38.7809456,39.3792736 L38.9424362,39.4301681 C39.1137888,39.4822743 39.2826758,39.548922 39.4601921,39.5780047 C48.6380335,41.0721229 50.7571347,34.12623 50.7571347,34.12623 C48.8476014,36.8309113 45.1481116,38.1202395 41.2008386,37.1132548 C41.0263697,37.0676598 40.8529222,37.0183695 40.680617,36.9654182 L40.5240574,36.9157354 C40.4020214,36.876891 40.2807771,36.8356826 40.1603955,36.7921345 L39.9964394,36.7315458 C39.865287,36.6820411 39.735007,36.630331 39.605657,36.5764385 L39.4996403,36.5328147 C39.3380799,36.463805 39.1781889,36.3910784 39.0200995,36.3146952 C38.938738,36.2759184 38.8598418,36.234718 38.7797129,36.1947294 L38.6416446,36.1244466 C38.5397379,36.0697414 38.4386416,36.01359 38.3383875,35.9560099 L38.2656552,35.9160213 C38.1411471,35.8445266 38.0191047,35.7706083 37.8970623,35.6954783 L37.7861145,35.6227718 C37.7061501,35.5720505 37.6268367,35.520344 37.5481932,35.4676646 C37.3802687,35.3526322 37.2150368,35.2338474 37.0526268,35.1114029 L36.9404463,35.0253669 C35.2133603,33.6839322 33.8437725,31.8517288 33.1916465,29.7735351 C32.5087017,27.6189995 32.656632,25.1990854 33.8388415,23.2360103 L32.3866592,25.2511917 C30.6090303,27.7656243 30.705185,31.1319346 32.0920314,33.7917801 C32.3250216,34.2377133 32.5863651,34.6703168 32.8785274,35.0823203 L32.8809929,35.0798967 Z M42.5556334,31.9692709 C42.6308312,31.9971417 42.7072618,32.0213772 42.7836925,32.0468245 L42.8847781,32.0783306 C42.9932604,32.1110486 43.1005098,32.1510371 43.2114576,32.1704255 C48.2793025,33.1325747 49.6538213,29.6135808 50.0199488,29.096153 C48.8155498,30.7999083 46.7926031,31.2094881 44.3098399,30.6169303 C43.8573133,30.4996802 43.4169439,30.3410538 42.9944932,30.1431264 C42.5530733,29.9346219 42.1339163,29.683348 41.7432495,29.3930378 C39.5218297,27.7365417 38.1411471,24.5750214 39.590864,22 L38.8056007,23.0627265 C37.7577611,24.5786567 37.6554428,26.4617547 38.3815339,28.1352156 C39.1483059,29.9128892 40.7200651,31.3064301 42.5531678,31.9680592 L42.5556334,31.9692709 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/js.svg b/graphs/fusioncharts-suite-xt/assets/images/js.svg new file mode 100755 index 0000000000000000000000000000000000000000..3816e02519f6a35d76dce629fc8ad7f67d2c5db0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/js.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>JS@1.5x</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="10.1069014%" y1="6.02534227%" x2="94.893743%" y2="100%" id="linearGradient-1"> + <stop stop-color="#FBDD7A" offset="0%"></stop> + <stop stop-color="#FCA22C" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="30" height="30" rx="2.4"></rect> + <linearGradient x1="50%" y1="29.7785187%" x2="55.8381525%" y2="71.6012378%" id="linearGradient-4"> + <stop stop-color="#FEE799" offset="0%"></stop> + <stop stop-color="#F7B84D" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard-Copy" transform="translate(-151.000000, -232.000000)"> + <g id="JS" transform="translate(151.000000, 232.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M-6.48648649,27.9999488 C-4.48852924,23.7665687 -2.57256751,21.7829405 -0.738601287,22.0490642 C2.01234805,22.4482498 6.98373577,24.3544449 10.4414864,22.4482498 C13.899237,20.5420547 15.8253115,16.6340612 20.4588778,16.2046851 C23.5479219,15.9184344 26.9985663,14.7060619 30.8108108,12.5675676 L29.5202015,32.027027 L8.18333008,32.027027 L-6.48648649,30.6500044 L-6.48648649,27.9999488 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M-6.89189189,24.8822547 C-4.89393465,19.5023342 -2.97797292,16.9814734 -1.14400669,17.3196723 C1.60694264,17.8269707 6.57833037,20.2494269 10.036081,17.8269707 C13.4938316,15.4045144 15.4199061,10.438106 20.0534724,9.89244049 C23.1425165,9.52866351 26.5931609,7.9879401 30.4054054,5.27027027 L29.1147961,30 L7.77792467,30 L-6.89189189,28.2500338 L-6.89189189,24.8822547 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M-5.27027027,32.6412851 C-3.33746381,29.0252729 -1.48397909,27.3309238 0.29018389,27.5582379 C2.95142836,27.8992089 7.76070561,29.5274172 11.1057035,27.8992089 C14.4507014,26.2710006 16.3139691,22.9329228 20.7964408,22.566164 C23.7847553,22.3216582 27.1228786,21.28609 30.8108108,19.4594595 L29.5622866,36.0810811 L8.92118271,36.0810811 L-5.27027027,34.9048743 L-5.27027027,32.6412851 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <path d="M11.338501,10.2880827 L13.4957747,10.2880827 L13.4957747,16.2439734 C13.4957747,18.9279195 12.189678,19.8648649 10.1031441,19.8648649 C9.5924379,19.8648649 8.93910202,19.781027 8.51351351,19.6411083 L8.75506375,17.9212981 C9.11278136,18.034475 9.48645576,18.0910696 9.86216899,18.0889739 C10.770858,18.0889739 11.338501,17.6833797 11.338501,16.2298116 L11.338501,10.2880827 Z M15.3689392,17.5304322 C15.9365823,17.8238649 16.8452713,18.117864 17.7677631,18.117864 C18.7615698,18.117864 19.286654,17.7122698 19.286654,17.0834854 C19.286654,16.5102154 18.8323095,16.1607019 17.6826454,15.7692695 C16.0930148,15.2101613 15.0428464,14.3434585 15.0428464,12.959 C15.0428464,11.3513514 16.4196827,10.1351351 18.6620741,10.1351351 C19.7548014,10.1351351 20.5358138,10.3447299 21.1034568,10.6104055 L20.6209315,12.3160538 C20.0023689,12.018274 19.3223759,11.8651285 18.6338932,11.8685406 C17.6970234,11.8685406 17.2426789,12.301892 17.2426789,12.7771624 C17.2426789,13.3781896 17.7677631,13.6438651 19.0169229,14.1191354 C20.7060492,14.7343245 21.4864865,15.6010272 21.4864865,16.9430003 C21.4864865,18.5228918 20.2660827,19.8648649 17.6400866,19.8648649 C16.5473593,19.8648649 15.4684349,19.5714322 14.9289727,19.277433 L15.3689392,17.5298657 L15.3689392,17.5304322 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/pc-logo.svg b/graphs/fusioncharts-suite-xt/assets/images/pc-logo.svg new file mode 100755 index 0000000000000000000000000000000000000000..c7f08ba575216ee5a0f55341efb49ecb2e44aa0c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/pc-logo.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="844px" height="92px" viewBox="0 0 844 92" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.1 (57501) - http://www.bohemiancoding.com/sketch --> + <title>PowerCharts</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Page-3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="concept-one-rough-test-copy-6" transform="translate(-22.000000, -23.000000)" fill="#373C8B"> + <g id="PowerCharts" transform="translate(22.000000, 23.000000)"> + <path d="M152.446,78 L152.446,10.638 L175.106,10.638 C189.835,10.638 200.65,15.788 200.65,31.444 C200.65,46.379 189.526,53.28 175.106,53.28 L164.394,53.28 L164.394,78 L152.446,78 Z M164.394,43.701 L174.076,43.701 C184.17,43.701 188.908,39.684 188.908,31.444 C188.908,22.998 183.861,20.217 174.076,20.217 L164.394,20.217 L164.394,43.701 Z M206.521,52.765 C206.521,35.873 217.954,26.191 230.52,26.191 C243.189,26.191 254.622,35.873 254.622,52.765 C254.622,69.554 243.189,79.236 230.52,79.236 C217.954,79.236 206.521,69.554 206.521,52.765 Z M218.675,52.765 C218.675,62.859 223.104,69.554 230.52,69.554 C237.936,69.554 242.468,62.859 242.468,52.765 C242.468,42.568 237.936,35.873 230.52,35.873 C223.104,35.873 218.675,42.568 218.675,52.765 Z M274.089,78 L260.699,27.427 L272.647,27.427 L278.724,53.692 C279.754,58.533 280.475,63.271 281.402,68.215 L281.814,68.215 C282.741,63.271 283.771,58.43 285.007,53.692 L291.599,27.427 L302.414,27.427 L309.109,53.692 C310.345,58.533 311.375,63.271 312.508,68.215 L312.92,68.215 C313.847,63.271 314.671,58.533 315.598,53.692 L321.675,27.427 L332.799,27.427 L319.924,78 L305.813,78 L299.942,54.413 C298.809,49.675 297.985,45.04 296.852,39.684 L296.44,39.684 C295.513,45.04 294.586,49.778 293.453,54.516 L287.685,78 L274.089,78 Z M338.876,52.765 C338.876,36.285 350.309,26.191 362.154,26.191 C375.853,26.191 383.063,36.079 383.063,50.19 C383.063,52.456 382.857,54.516 382.548,55.752 L350.412,55.752 C351.442,64.919 357.21,70.069 365.347,70.069 C369.673,70.069 373.381,68.73 377.089,66.361 L381.106,73.777 C376.265,76.97 370.188,79.236 363.802,79.236 C349.794,79.236 338.876,69.451 338.876,52.765 Z M350.309,48.233 L372.763,48.233 C372.763,40.199 369.364,35.358 362.463,35.358 C356.489,35.358 351.339,39.787 350.309,48.233 Z M394.393,78 L394.393,27.427 L404.178,27.427 L405.002,36.388 L405.414,36.388 C409.019,29.796 414.375,26.191 419.731,26.191 C422.306,26.191 423.954,26.5 425.499,27.221 L423.439,37.521 C421.688,37.006 420.349,36.697 418.186,36.697 C414.169,36.697 409.328,39.478 406.238,47.1 L406.238,78 L394.393,78 Z M430.134,44.525 C430.134,22.483 443.936,9.402 461.24,9.402 C469.48,9.402 476.175,13.419 480.398,17.951 L473.806,25.367 C470.304,21.968 466.493,19.805 461.343,19.805 C450.322,19.805 442.391,29.075 442.391,44.216 C442.391,59.563 449.704,68.833 460.931,68.833 C466.905,68.833 471.334,66.361 475.145,62.138 L481.737,69.451 C476.278,75.734 469.274,79.236 460.725,79.236 C443.627,79.236 430.134,66.876 430.134,44.525 Z M491.831,78 L491.831,5.282 L503.676,5.282 L503.676,24.028 L503.264,33.813 C507.487,29.796 512.534,26.191 519.435,26.191 C530.25,26.191 534.988,33.504 534.988,46.276 L534.988,78 L523.143,78 L523.143,47.821 C523.143,39.478 520.774,36.388 515.212,36.388 C510.783,36.388 507.899,38.551 503.676,42.671 L503.676,78 L491.831,78 Z M547.142,64.404 C547.142,53.589 556.206,47.924 576.909,45.658 C576.806,40.302 574.54,35.77 567.742,35.77 C562.695,35.77 557.957,38.036 553.528,40.714 L549.202,32.783 C554.764,29.281 561.871,26.191 569.905,26.191 C582.574,26.191 588.754,33.916 588.754,48.027 L588.754,78 L579.072,78 L578.145,72.438 L577.836,72.438 C573.304,76.249 568.154,79.236 562.18,79.236 C553.322,79.236 547.142,73.262 547.142,64.404 Z M558.678,63.477 C558.678,68.009 561.665,69.966 565.888,69.966 C570.008,69.966 573.201,67.906 576.909,64.404 L576.909,53.074 C563.21,54.825 558.678,58.43 558.678,63.477 Z M603.174,78 L603.174,27.427 L612.959,27.427 L613.783,36.388 L614.195,36.388 C617.8,29.796 623.156,26.191 628.512,26.191 C631.087,26.191 632.735,26.5 634.28,27.221 L632.22,37.521 C630.469,37.006 629.13,36.697 626.967,36.697 C622.95,36.697 618.109,39.478 615.019,47.1 L615.019,78 L603.174,78 Z M643.344,60.902 L643.344,36.8 L636.134,36.8 L636.134,27.942 L643.962,27.427 L645.404,13.625 L655.292,13.625 L655.292,27.427 L668.167,27.427 L668.167,36.8 L655.292,36.8 L655.292,60.902 C655.292,66.876 657.558,69.76 662.399,69.76 C664.15,69.76 666.21,69.245 667.652,68.627 L669.712,77.382 C666.931,78.309 663.429,79.236 659.412,79.236 C647.67,79.236 643.344,71.82 643.344,60.902 Z M673.729,72.232 L679.291,64.61 C683.823,68.112 688.149,70.275 693.299,70.275 C698.758,70.275 701.333,67.7 701.333,64.198 C701.333,59.975 695.874,58.121 690.518,56.061 C683.823,53.589 676.304,49.778 676.304,41.332 C676.304,32.474 683.411,26.191 694.741,26.191 C701.745,26.191 707.41,29.075 711.53,32.268 L706.071,39.478 C702.569,36.903 698.964,35.152 694.947,35.152 C689.9,35.152 687.531,37.521 687.531,40.714 C687.531,44.628 692.578,46.276 698.037,48.233 C704.938,50.808 712.56,54.104 712.56,63.58 C712.56,72.232 705.659,79.236 692.887,79.236 C685.986,79.236 678.673,76.249 673.729,72.232 Z M738.001,78 L757.056,43.289 L739.134,10.638 L752.421,10.638 L759.94,25.573 C761.485,28.663 762.927,31.856 764.987,35.873 L765.399,35.873 C767.047,31.856 768.489,28.663 769.931,25.573 L777.038,10.638 L789.707,10.638 L771.785,43.804 L790.943,78 L777.656,78 L769.416,62.138 C767.665,58.636 766.017,55.237 764.06,51.117 L763.648,51.117 C761.897,55.237 760.249,58.636 758.601,62.138 L750.67,78 L738.001,78 Z M812.161,78 L812.161,20.732 L792.694,20.732 L792.694,10.638 L843.473,10.638 L843.473,20.732 L824.109,20.732 L824.109,78 L812.161,78 Z" id="PowerCharts-XT"></path> + <g id="Powercharts-logo"> + <path d="M45.9550562,52.1428571 L23,52.1428571 L23,40 L58,0 L47,40 L69,40 L69,52.1428571 L68.8689139,52.1428571 L34,90.1428571 L45.9550562,52.1428571 Z M91.4041667,90.1428571 L91.4041667,91.1428571 L57.4041667,91.1428571 L57.4041667,79 L81,79 L81,12.1428571 L69,12.1428571 L69,0 L81,0 L91.4041667,0 L91.4041667,90.1428571 Z M-7.46069873e-14,90 L-7.46069873e-14,0 L12.4041667,0 L34.4041667,0 L34.4041667,12.1428571 L12.4041667,12.1428571 L12.4041667,79 L24,79 L24,91.1428571 L-7.46069873e-14,91.1428571 L-7.46069873e-14,90 Z" id="Combined-Shape"></path> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/php.svg b/graphs/fusioncharts-suite-xt/assets/images/php.svg new file mode 100755 index 0000000000000000000000000000000000000000..4bb576eb35ac0f804cdb11bf52969e61aff51324 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/php.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>PHP</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="13.190766%" y1="9.44338577%" x2="94.893743%" y2="100%" id="linearGradient-1"> + <stop stop-color="#6E81B6" offset="0%"></stop> + <stop stop-color="#203C89" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="48.2745708%" y1="49.3376698%" x2="36.7643601%" y2="84.4800209%" id="linearGradient-4"> + <stop stop-color="#6E81B6" offset="0%"></stop> + <stop stop-color="#385196" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-63.000000, -60.000000)"> + <g id="PHP" transform="translate(54.000000, 51.000000)"> + <g transform="translate(9.000000, 9.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M-31.3472306,41.0530177 C-20.5346542,34.5112902 -12.325627,32.3215597 -6.72014899,34.4838261 C1.68806796,37.7272257 15.6503817,45.9190615 28.724051,45.2593579 C41.7977204,44.5996542 52.0412176,38.6337297 67.3498244,41.9296206 C77.5555623,44.1268811 89.8846129,44.8255779 104.336976,44.0257109 L79.9525648,104.149242 L-8.88559184,81.1554665 L-34.1042442,69.2656828 L-31.3472306,41.0530177 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M-34.0816961,57.5937293 C-20.983164,47.4447319 -11.5414286,43.6097647 -5.7564899,46.0888277 C2.92091812,49.8074223 16.8221424,59.893274 31.3469996,57.7268311 C45.8718567,55.5603881 58.2390773,46.268209 74.5102691,49.4018064 C85.3577304,51.4908713 98.816146,51.2887544 114.885516,48.7954556 L81.2950538,102.863083 L9.33946132,82.8165019 L-38.0634356,65.1219746 L-34.0816961,57.5937293 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M-31.5302629,63.7697536 C-20.9933138,57.1512373 -13.0486022,54.8878694 -7.6961282,56.9796497 C0.332582777,60.1173203 13.609071,68.1180874 26.2057279,67.3254898 C38.8023848,66.5328921 48.7801713,60.4929414 63.4495566,63.6107474 C73.2291467,65.6892847 85.0821653,66.2553606 99.0086122,65.308975 L74.8022461,102.482109 L9.3089599,84.2359044 L-34.2872765,68.9824187 L-31.5302629,63.7697536 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <path d="M26.6544141,34.6163446 C27.6918604,34.6163446 28.3835834,34.818838 28.7293068,35.223825 C29.0747537,35.6288119 29.1571083,36.324244 28.9763704,37.3092446 C28.7873418,38.3351531 28.4236553,39.0674021 27.884758,39.5062841 C27.3458607,39.945166 26.5256314,40.1643148 25.4246229,40.1643148 L23.7631611,40.1643148 L24.7829206,34.6163446 L26.6544141,34.6163446 Z M20,45.7806593 L22.7309656,45.7806593 L23.3790241,42.256455 L25.718391,42.256455 C26.7505865,42.256455 27.5998333,42.141621 28.2664078,41.9122453 C28.9329823,41.6828696 29.5390345,41.2986288 30.084288,40.7589384 C30.5419361,40.3145047 30.9122552,39.8236115 31.1957981,39.2871353 C31.4790646,38.7506591 31.680253,38.1589574 31.7993631,37.5117381 C32.0884331,35.9402953 31.870387,34.7162764 31.1457774,33.8396814 C30.4214442,32.9627941 29.2687567,32.5244966 27.6888205,32.5244966 L22.4369211,32.5244966 L20,45.7806593 Z M33.8051664,29 L36.5148524,29 L35.8670702,32.5244966 L38.28133,32.5244966 C39.7996385,32.5244966 40.8478628,32.8044226 41.4243447,33.3645668 C42.0008266,33.9247111 42.1735501,34.8325714 41.9430679,36.0875633 L40.8094491,42.256455 L38.0566513,42.256455 L39.1344459,36.3908652 C39.2568723,35.7234842 39.2121023,35.2685313 38.9990306,35.0257145 C38.7859589,34.7831898 38.3324562,34.6616353 37.6393514,34.6616353 L35.4738134,34.6616353 L34.0779313,42.256455 L31.3682452,42.256455 L33.8051664,29 Z M47.9720848,34.6163446 C49.0095311,34.6163446 49.7009778,34.818838 50.0469775,35.223825 C50.3924244,35.6288119 50.4745026,36.324244 50.2937648,37.3092446 C50.1052889,38.3351531 49.7416023,39.0674021 49.2024287,39.5062841 C48.6638078,39.945166 47.8433021,40.1643148 46.7428463,40.1643148 L45.0813845,40.1643148 L46.1008676,34.6163446 L47.9720848,34.6163446 Z M41.317118,45.7806593 L44.0483599,45.7806593 L44.6961421,42.256455 L47.035509,42.256455 C48.0679809,42.256455 48.9172277,42.141621 49.5838022,41.9122453 C50.2503766,41.6828696 50.8564288,41.2986288 51.4016823,40.7589384 C51.8593304,40.3145047 52.2296496,39.8236115 52.5129161,39.2871353 C52.7961826,38.7506591 52.9976473,38.1589574 53.1170338,37.5117381 C53.4058274,35.9402953 53.1877813,34.7162764 52.4634481,33.8396814 C51.7385622,32.9627941 50.5861511,32.5244966 49.0062148,32.5244966 L43.7543155,32.5244966 L41.317118,45.7806593 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-3)"></path> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/react.svg b/graphs/fusioncharts-suite-xt/assets/images/react.svg new file mode 100755 index 0000000000000000000000000000000000000000..2aa150b0ff394acd059f26ec4e0f5390da947ef8 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/react.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>React</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="94.893743%" y1="100%" x2="10.1069014%" y2="6.02534227%" id="linearGradient-1"> + <stop stop-color="#7AA3FB" offset="0%"></stop> + <stop stop-color="#2CDAFC" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0.939825628" y="0.960365609" width="72.9880329" height="72.7380739" rx="6"></rect> + <linearGradient x1="72.6090103%" y1="-6.47823891%" x2="76.0442778%" y2="50%" id="linearGradient-4"> + <stop stop-color="#B5F1FF" offset="0%"></stop> + <stop stop-color="#69AEFB" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-63.000000, -290.000000)"> + <g id="React" transform="translate(63.000000, 290.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M138.549117,81.4442338 C141.954337,69.0976272 139.365522,63.4713561 130.782669,64.5654203 C117.908391,66.2065167 97.1685745,35.9408864 80.9865087,28.1043065 C64.8044429,20.2677266 34.131239,34.7178073 12.4464266,32.9525944 C-2.01011502,31.7757858 -18.1589239,26.7915877 -36,18 L-29.9600257,98 L69.8952545,98 L138.549117,92.3389071 L138.549117,81.4442338 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M137.736897,83.8498294 C141.138137,74.7381866 138.552347,70.5860681 129.979526,71.393474 C117.120294,72.6045828 96.4047171,50.2689222 80.241564,44.4856232 C64.0784108,38.7023242 33.4410559,49.3663049 11.7815875,48.0635997 C-2.65805816,47.1951295 -18.7879932,43.516853 -36.6082177,37.0287701 L-30.5753026,96.06778 L69.1632725,96.06778 L137.736897,91.8899635 L137.736897,83.8498294 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.300000012" mask="url(#mask-3)"></path> + <path d="M114.614482,97.2276078 L114.614482,105.267742 L50.5693052,109.445558 L-42.5827603,109.445558 L-48.2172754,50.4065485 C-31.5738582,56.8946314 -16.5091075,60.5729079 -3.02302334,61.4413781 C17.2061029,62.7440834 45.8202362,52.0801027 60.9160113,57.8634017 C76.0117864,63.6467006 95.3593539,85.9823612 107.369391,84.7712524 C115.376082,83.9638466 117.791113,88.115965 114.614482,97.2276078 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.200000003" mask="url(#mask-3)"></path> + <g id="react" mask="url(#mask-3)" fill-rule="nonzero"> + <g transform="translate(22.000000, 23.000000)" id="Shape"> + <path d="M0.09425,13.9695652 C0.09425,16.3087826 2.439625,18.4924174 6.137125,19.7233217 C5.39875,23.3434783 6.004875,26.2614435 8.029125,27.3983652 C10.10975,28.5670609 13.2095,27.7581043 16.151625,25.2533217 C19.0195,27.6569391 21.917875,28.6028522 23.940375,27.4626435 C26.019125,26.2906609 26.65125,23.1748696 25.8925,19.4416174 C29.74375,18.2015826 31.898,16.3395826 31.898,13.9695652 C31.898,11.6846435 29.548375,9.70796522 25.900625,8.48497391 C26.7175,4.59747826 26.025375,1.75036522 23.91725,0.566452174 C21.884875,-0.574973913 18.95275,0.419878261 16.04275,2.88631304 C13.01525,0.268434783 10.112125,-0.530782609 8.00625,0.656417391 C5.97575,1.80113043 5.396375,4.77217391 6.137125,8.45928696 C2.564375,9.67241739 0.09425,11.6938957 0.09425,13.9695652 Z" fill="#FFFFFF"></path> + <path d="M25.128125,9.69944348 C24.8274961,9.59901204 24.5243165,9.50597382 24.218875,9.42041739 C24.2695282,9.21996243 24.3163695,9.01861204 24.359375,8.81646957 C25.047625,5.56262609 24.597625,2.94133913 23.060875,2.07845217 C21.5875,1.25086957 19.17775,2.11375652 16.744,4.17638261 C16.5041854,4.38009394 16.2696939,4.58967386 16.04075,4.80492174 C15.8874325,4.66179465 15.7314057,4.52144594 15.57275,4.38394783 C13.022125,2.17827826 10.4655,1.24892174 8.930375,2.11436522 C7.458375,2.94426087 7.022375,5.40862609 7.642,8.49227826 C7.70364836,8.79764979 7.77325416,9.10144638 7.85075,9.40337391 C7.489,9.50344348 7.139625,9.61008696 6.805375,9.72354783 C3.815125,10.7388522 1.905375,12.3302261 1.905375,13.9807652 C1.905375,15.6856 3.955375,17.3955478 7.070125,18.4322783 C7.32268523,18.5159533 7.57734764,18.5934846 7.833875,18.6648 C7.75053774,18.9900797 7.67655052,19.317564 7.612,19.6468696 C7.02125,22.6769565 7.482625,25.082887 8.95075,25.9076696 C10.467125,26.7592348 13.012125,25.8839304 15.490375,23.7741913 C15.68625,23.6074087 15.882875,23.4305217 16.07975,23.245113 C16.3277277,23.478129 16.5823266,23.7043676 16.84325,23.9235652 C19.24375,25.9353043 21.6145,26.7476696 23.081375,25.9206957 C24.596375,25.0665739 25.088625,22.4819304 24.449375,19.337287 C24.400625,19.0970957 24.34375,18.8517913 24.28,18.6019826 C24.45875,18.5506087 24.634125,18.4975304 24.80525,18.4422609 C28.04325,17.3974957 30.149875,15.7083652 30.149875,13.9807652 C30.149875,12.3242609 28.178625,10.7221739 25.128125,9.69944348 Z" fill="#53C1DE"></path> + <path d="M24.42575,17.326887 C24.271375,17.3766783 24.112875,17.4247652 23.951375,17.4713913 C23.593875,16.369287 23.111375,15.1973043 22.521125,13.9866087 C23.0845,12.8045217 23.54825,11.6476348 23.89575,10.5525913 C24.184625,10.6341565 24.465125,10.7199826 24.735375,10.8106783 C27.349125,11.6868348 28.943375,12.9825043 28.943375,13.9807652 C28.943375,15.0441565 27.2215,16.4246783 24.425875,17.326887 L24.42575,17.326887 Z M23.26575,19.5655478 C23.548375,20.9560522 23.58875,22.2132522 23.4015,23.1960522 C23.23325,24.0791478 22.895,24.6678783 22.47675,24.903687 C21.586625,25.4054957 19.683,24.7532174 17.63025,23.0328 C17.394875,22.8355826 17.15775,22.6249739 16.92,22.4021913 C17.715875,21.5544 18.51125,20.5688 19.2875,19.4743652 C20.653,19.3564 21.943,19.1634435 23.112875,18.9001217 C23.170375,19.1265565 23.221625,19.348487 23.26575,19.5655478 Z M11.5345,24.8170087 C10.664875,25.1161217 9.97225,25.1246435 9.553625,24.8895652 C8.662625,24.3892174 8.292375,22.4572174 8.7975,19.866 C8.8575675,19.5597726 8.92634394,19.2552265 9.00375,18.952713 C10.160625,19.201913 11.44125,19.3812348 12.81,19.4893391 C13.591375,20.5602783 14.40975,21.5446609 15.2345,22.4066957 C15.0592187,22.5718303 14.8797893,22.7327371 14.696375,22.8892696 C13.6005,23.8222783 12.502375,24.4840522 11.534625,24.8170087 L11.5345,24.8170087 Z M7.460375,17.320313 C6.083125,16.8618435 4.94575,16.2660522 4.166125,15.6159652 C3.465625,15.0316174 3.111875,14.4515304 3.111875,13.9807652 C3.111875,12.9792174 4.64525,11.7015652 7.202625,10.8332 C7.5236124,10.7246838 7.84779292,10.6253427 8.17475,10.5353043 C8.52825,11.6549391 8.991875,12.8255826 9.551375,14.0093739 C8.984625,15.2108174 8.514375,16.400087 8.157625,17.5328696 C7.92345517,17.4675921 7.69096829,17.3967185 7.460375,17.320313 Z M8.826125,8.26657391 C8.29525,5.62446957 8.64775,3.63147826 9.534875,3.13137391 C10.479875,2.59864348 12.56925,3.35829565 14.7715,5.26266087 C14.91225,5.3844 15.053625,5.51186087 15.19525,5.64370435 C14.37475,6.50184348 13.563875,7.4788 12.78925,8.54353043 C11.460875,8.66344348 10.18925,8.85603478 9.02025,9.114 C8.94824043,8.83311735 8.88351154,8.55051167 8.826125,8.26645217 L8.826125,8.26657391 Z M21.0095,11.1964696 C20.7333846,10.7319654 20.4470265,10.2733083 20.150625,9.82081739 C21.051875,9.9316 21.91525,10.0789043 22.726,10.2592 C22.482625,11.0189739 22.17925,11.8134435 21.822,12.6278783 C21.5609771,12.1455222 21.2900898,11.6682909 21.0095,11.1964696 Z M16.041125,6.48346087 C16.597625,7.0706087 17.155,7.72629565 17.70325,8.43761739 C16.5911263,8.38643585 15.4771472,8.3861921 14.365,8.43688696 C14.91375,7.73213913 15.475875,7.07742609 16.041125,6.48346087 Z M11.040875,11.2045043 C10.7637983,11.6725733 10.4979759,12.1468763 10.243625,12.6270261 C9.89225,11.8153913 9.591625,11.0173913 9.346125,10.2467826 C10.152,10.071113 11.011375,9.92758261 11.90675,9.81862609 C11.6070267,10.2739212 11.3183221,10.736008 11.040875,11.2045043 Z M11.9325,18.2267826 C11.0075,18.1262261 10.135125,17.99 9.3295,17.8192 C9.578875,17.0349565 9.886125,16.2197913 10.245,15.3907478 C10.5004232,15.8712535 10.7674136,16.3458426 11.04575,16.8141217 C11.3297639,17.2918051 11.6254313,17.7628259 11.9325,18.2267826 Z M16.0745,21.5610957 C15.502625,20.9600696 14.93225,20.2953739 14.375125,19.5804 C14.915875,19.6010957 15.46725,19.6115652 16.027625,19.6115652 C16.603375,19.6115652 17.1725,19.5990261 17.732625,19.5746783 C17.182625,20.3026783 16.62725,20.9683478 16.0745,21.5610957 Z M21.8335,15.3485043 C22.211,16.1865565 22.52925,16.9973391 22.782,17.768313 C21.963,17.950313 21.078875,18.096887 20.14725,18.2057217 C20.4457939,17.7447826 20.7348928,17.2781047 21.014375,16.8059652 C21.2984857,16.3261238 21.571595,15.8401832 21.8335,15.3485043 Z M19.969125,16.2189391 C19.541275,16.9427947 19.0893695,17.652909 18.614125,18.3481565 C17.776125,18.4064696 16.910125,18.4365391 16.027625,18.4365391 C15.14875,18.4365391 14.29375,18.4098783 13.470375,18.3578957 C12.9828045,17.6642669 12.5223503,16.9529236 12.09,16.2253913 C11.6596705,15.5017191 11.2577142,14.7623921 10.885,14.0090087 C11.2567662,13.2553996 11.6575079,12.5156766 12.086375,11.7914087 L12.086375,11.7916522 C12.5151076,11.06723 12.9719368,10.3589282 13.455875,9.66827826 C14.295875,9.60643478 15.157125,9.57405217 16.02775,9.57405217 C16.90225,9.57405217 17.764625,9.60667826 18.604375,9.6690087 C19.0834182,10.3585959 19.5373257,11.0644322 19.96525,11.7852 C20.3955919,12.5078565 20.8016816,13.243956 21.182875,13.9923304 C20.8056028,14.7483297 20.4008046,15.4910033 19.96925,16.2189391 L19.969125,16.2189391 Z M22.45825,3.09643478 C23.404,3.62770435 23.771875,5.76994783 23.177625,8.57932174 C23.1386751,8.76233547 23.0963348,8.94464925 23.050625,9.12617391 C21.878875,8.86285217 20.606375,8.66685217 19.274125,8.54511304 C18.498,7.46881739 17.693875,6.49015652 16.886625,5.64309565 C17.0981579,5.44448409 17.3147247,5.25102151 17.536125,5.06288696 C19.621375,3.29547826 21.57025,2.59766957 22.45825,3.09643478 Z" fill="#FFFFFF"></path> + <path d="M16.027625,11.5244348 C17.420625,11.5244348 18.54975,12.6242261 18.54975,13.9807652 C18.54975,15.3374261 17.420625,16.4372174 16.027625,16.4372174 C14.63475,16.4372174 13.5055,15.3374261 13.5055,13.9807652 C13.5055,12.6242261 14.63475,11.5244348 16.027625,11.5244348" fill="#53C1DE"></path> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/ror.svg b/graphs/fusioncharts-suite-xt/assets/images/ror.svg new file mode 100755 index 0000000000000000000000000000000000000000..70ffe176aa69299870ffe2ff44567cef14ce4c4a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/ror.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="74px" height="74px" viewBox="0 0 74 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>RubyOnRails</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="13.39861%" y1="9.67375254%" x2="94.893743%" y2="100%" id="linearGradient-1"> + <stop stop-color="#FF7B81" offset="0%"></stop> + <stop stop-color="#A91E18" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0" y="0" width="74" height="74" rx="6"></rect> + <linearGradient x1="65.9830668%" y1="-9.60893548%" x2="60.9177616%" y2="63.089188%" id="linearGradient-4"> + <stop stop-color="#FC96A2" offset="0%"></stop> + <stop stop-color="#E46058" offset="100%"></stop> + </linearGradient> + <linearGradient x1="75.9841617%" y1="0%" x2="50%" y2="65.4928949%" id="linearGradient-5"> + <stop stop-color="#FFBDC8" offset="0%"></stop> + <stop stop-color="#E56A65" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-174.000000, -401.000000)"> + <g id="RubyOnRails" transform="translate(174.000000, 401.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M-16,66.4391162 C-11.1694731,49.9159422 -6.26535392,41.9702638 -1.28764243,42.6020812 C6.17892481,43.5498073 25.615048,49.2110627 35,44.6854715 C44.384952,40.1598803 48.781306,31.1041771 61.3576313,30.0847742 C69.7418482,29.4051723 77.9559711,32.8116471 86,40.3041984 L81.7285744,76 L23.8164991,76 L-16,72.7307432 L-16,66.4391162 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M-16,79.4391162 C-11.1694731,62.9159422 -6.26535392,54.9702638 -1.28764243,55.6020812 C6.17892481,56.5498073 25.615048,62.2110627 35,57.6854715 C44.384952,53.1598803 48.781306,44.1041771 61.3576313,43.0847742 C69.7418482,42.4051723 77.9559711,45.8116471 86,53.3041984 L81.7285744,89 L23.8164991,89 L-16,85.7307432 L-16,79.4391162 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + <path d="M-13,90.6077579 C-8.13543204,71.9208949 -3.21998437,62.8547581 1.74634301,63.4093475 C9.19583407,64.2412316 20.1327373,69.7042894 32.5073076,66.5568185 C44.8818778,63.4093475 55.4580268,54.6238865 68.0055899,53.7290868 C76.3706319,53.1325537 83.0354353,54.7053247 88,58.4473998 L84.5050674,99 L26.725438,99 L-13,96.1303495 L-13,90.6077579 Z" id="Path-6" fill="url(#linearGradient-5)" opacity="0.200000003" mask="url(#mask-3)"></path> + <g id="Logos@1.5x" mask="url(#mask-3)" fill="#FFFFFF" fill-rule="nonzero"> + <g transform="translate(21.625000, 26.106105)" id="Shape"> + <path d="M1.08659875,22.4103673 L13.3496418,22.4103673 C13.3496418,22.4103673 11.0056931,11.3178795 18.7671126,6.82614637 C20.459102,5.97287808 25.8455273,2.78519652 34.6625001,9.5469453 C34.9419111,9.30545425 35.2057994,9.11226143 35.2057994,9.11226143 C35.2057994,9.11226143 27.133923,0.756671886 18.1461991,1.69043719 C13.6290528,2.10902164 8.0718764,6.37536312 4.81208015,12.0101537 C1.55228392,17.6449444 1.08659875,22.4103673 1.08659875,22.4103673 Z"></path> + <path d="M1.08659875,22.4103673 L13.3496418,22.4103673 C13.3496418,22.4103673 11.0056931,11.3178795 18.7671126,6.82614637 C20.459102,5.97287808 25.8455273,2.78519652 34.6625001,9.5469453 C34.9419111,9.30545425 35.2057994,9.11226143 35.2057994,9.11226143 C35.2057994,9.11226143 27.133923,0.756671886 18.1461991,1.69043719 C13.6290528,2.10902164 8.0718764,6.37536312 4.81208015,12.0101537 C1.55228392,17.6449444 1.08659875,22.4103673 1.08659875,22.4103673 Z"></path> + <path d="M1.08659875,22.4103673 L13.3496418,22.4103673 C13.3496418,22.4103673 11.0056931,11.3178795 18.7671126,6.82614637 C20.459102,5.97287808 25.8455273,2.78519652 34.6625001,9.5469453 C34.9419111,9.30545425 35.2057994,9.11226143 35.2057994,9.11226143 C35.2057994,9.11226143 27.133923,0.756671886 18.1461991,1.69043719 C13.61353,2.10902164 8.05635357,6.37536312 4.79655732,12.0101537 C1.53676108,17.6449444 1.08659875,22.4103673 1.08659875,22.4103673 Z M26.6371921,2.59200369 L26.6992835,1.51334377 C26.5595779,1.43284676 26.171507,1.23965394 25.1935681,0.949864707 L25.1314767,2.01242522 C25.6437305,2.18951865 26.1404612,2.38271148 26.6371921,2.59200369 Z"></path> + <path d="M25.1625224,6.00507688 L25.100431,7.0193392 C25.6126847,7.0354386 26.1249384,7.09983621 26.6371921,7.21253202 L26.6992835,6.21436911 C26.171507,6.1016733 25.6592532,6.03727568 25.1625224,6.00507688 Z M19.4190719,0.982063515 L19.5743003,0.982063515 L19.2638435,0 C18.7826354,0 18.2859047,0.0321988036 17.7736509,0.0965964111 L18.0685848,1.04646112 C18.5187472,0.998162911 18.9689095,0.982063515 19.4190719,0.982063515 Z M20.1641682,6.90664338 L20.5211934,8.01750212 C20.9713558,7.79211049 21.4215181,7.59891767 21.8716804,7.45402305 L21.530178,6.39146253 C21.0024015,6.55245655 20.5522392,6.72954997 20.1641682,6.90664338 Z M13.1167991,2.67250071 L12.4182714,1.56164197 C12.0302004,1.7709342 11.6266065,1.99632583 11.20749,2.25391626 L11.9215405,3.38087438 C12.3251343,3.12328396 12.7132053,2.88179292 13.1167991,2.67250071 Z M16.2989812,9.91723153 L17.0440774,11.0763885 C17.3079657,10.6739034 17.6184225,10.3036172 17.9599251,9.93333096 L17.2613972,8.83857161 C16.9043719,9.17665905 16.5783923,9.5469453 16.2989812,9.91723153 Z M14.0481695,15.1012389 L15.3055194,16.1316006 C15.3676108,15.5037239 15.4762707,14.8758473 15.6314991,14.2479707 L14.5138546,13.3303047 C14.3120577,13.9259825 14.1723522,14.5216604 14.0481695,15.1012389 Z M7.24916592,7.45402305 L6.14704433,6.45586013 C5.74345052,6.85834518 5.35537954,7.26083023 4.99835423,7.66331527 L6.19361286,8.72587579 C6.51959248,8.29119194 6.87661778,7.85650809 7.24916592,7.45402305 Z M2.56126847,14.6504557 L0.776141962,13.9742808 C0.481208015,14.6665551 0.155228392,15.4715252 0,15.906209 L1.78512651,16.5823839 C1.98692342,16.0350043 2.31290305,15.2461336 2.56126847,14.6504557 Z M13.8153269,19.190487 C13.8463726,20.0437553 13.9239868,20.7360296 14.001601,21.2190116 L15.8643416,21.9112859 C15.7246361,21.2834092 15.5849306,20.5750355 15.4917935,19.8183636 L13.8153269,19.190487 Z"></path> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/images/vue.svg b/graphs/fusioncharts-suite-xt/assets/images/vue.svg new file mode 100755 index 0000000000000000000000000000000000000000..b273ee41cbffe29080aec200bcdece1edb468d27 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/images/vue.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="75px" height="75px" viewBox="0 0 75 75" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --> + <title>vue</title> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="13.0353054%" y1="9.27107892%" x2="93.6130735%" y2="98.5805524%" id="linearGradient-1"> + <stop stop-color="#8BF1B5" offset="0%"></stop> + <stop stop-color="#27C9E5" offset="100%"></stop> + </linearGradient> + <rect id="path-2" x="0.182423817" y="0.219470311" width="74.3855819" height="74.1308368" rx="6"></rect> + <linearGradient x1="38.243897%" y1="-20.2163431%" x2="34.3311819%" y2="44.5071358%" id="linearGradient-4"> + <stop stop-color="#7CFFB7" offset="0%"></stop> + <stop stop-color="#3DD2DB" offset="100%"></stop> + </linearGradient> + </defs> + <g id="For-other-screens" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Framework-Artboard" transform="translate(-173.000000, -289.000000)"> + <g id="vue" transform="translate(173.000000, 289.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Mask"> + <use fill="#FFFFFF" xlink:href="#path-2"></use> + <use fill="url(#linearGradient-1)" xlink:href="#path-2"></use> + </g> + <path d="M108,68.8124467 C102.316643,50.5813609 96.5738431,41.7363494 90.7715993,42.2774122 C82.0682335,43.0890064 59.9395212,48.5580075 49,44.6824747 C38.0604788,40.8069419 36.3133659,38.3094629 21.6538369,37.4364876 C11.8808175,36.8545041 1.3295385,36.8545041 -10,37.4364876 L-5.9168114,77 L61.5881021,77 L108,74.200341 L108,68.8124467 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.600000024" mask="url(#mask-3)"></path> + <g id="vue-9" mask="url(#mask-3)" fill-rule="nonzero"> + <g transform="translate(23.000000, 25.000000)" id="Shape"> + <polygon fill="#FFFFFF" points="0 2.84217094e-14 15 26 30 2.84217094e-14 24 2.84217094e-14 15 15.6 5.925 2.84217094e-14"></polygon> + <polygon fill="#F6F6F6" points="22.8 2.84217094e-14 28 2.84217094e-14 15 22 2 2.84217094e-14 11.945 2.84217094e-14 15 5.10144928 17.99 2.84217094e-14"></polygon> + <polygon fill="#E9E9E9" points="8 2.84217094e-14 15 13.1329758 22 2.84217094e-14 17.3941909 2.84217094e-14 15 4.92086973 12.6058091 2.84217094e-14"></polygon> + </g> + </g> + <path d="M108,80.8124467 C102.316643,62.5813609 96.5738431,53.7363494 90.7715993,54.2774122 C82.0682335,55.0890064 59.9395212,60.5580075 49,56.6824747 C38.0604788,52.8069419 36.3133659,50.3094629 21.6538369,49.4364876 C11.8808175,48.8545041 1.3295385,48.8545041 -10,49.4364876 L-5.9168114,89 L61.5881021,89 L108,86.200341 L108,80.8124467 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.5" mask="url(#mask-3)"></path> + <path d="M103,91.0171355 C97.3166434,73.2418269 91.5738431,64.6179407 85.7715993,65.1454769 C77.0682335,65.9367812 54.9395212,71.2690573 44,67.4904128 C33.0604788,63.7117683 31.3133659,61.2767263 16.6538369,60.4255754 C6.88081745,59.8581415 -3.6704615,59.8581415 -15,60.4255754 L-10.9168114,99 L56.5881021,99 L103,96.2703325 L103,91.0171355 Z" id="Path-6" fill="url(#linearGradient-4)" opacity="0.400000006" mask="url(#mask-3)"></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/assets/scripts/fusiondesign.js b/graphs/fusioncharts-suite-xt/assets/scripts/fusiondesign.js new file mode 100755 index 0000000000000000000000000000000000000000..fc6c82af5c8e533a7fcc1bb60d639cffd2fec3a8 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/assets/scripts/fusiondesign.js @@ -0,0 +1,4565 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["fusionDesign"] = factory(); + else + root["fusionDesign"] = factory(); +})(typeof self !== 'undefined' ? self : this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ function hotDisposeChunk(chunkId) { +/******/ delete installedChunks[chunkId]; +/******/ } +/******/ var parentHotUpdateCallback = window["webpackHotUpdatefusionDesign"]; +/******/ window["webpackHotUpdatefusionDesign"] = +/******/ function webpackHotUpdateCallback(chunkId, moreModules) { // eslint-disable-line no-unused-vars +/******/ hotAddUpdateChunk(chunkId, moreModules); +/******/ if(parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules); +/******/ } ; +/******/ +/******/ function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars +/******/ var head = document.getElementsByTagName("head")[0]; +/******/ var script = document.createElement("script"); +/******/ script.type = "text/javascript"; +/******/ script.charset = "utf-8"; +/******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js"; +/******/ ; +/******/ head.appendChild(script); +/******/ } +/******/ +/******/ function hotDownloadManifest(requestTimeout) { // eslint-disable-line no-unused-vars +/******/ requestTimeout = requestTimeout || 10000; +/******/ return new Promise(function(resolve, reject) { +/******/ if(typeof XMLHttpRequest === "undefined") +/******/ return reject(new Error("No browser support")); +/******/ try { +/******/ var request = new XMLHttpRequest(); +/******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json"; +/******/ request.open("GET", requestPath, true); +/******/ request.timeout = requestTimeout; +/******/ request.send(null); +/******/ } catch(err) { +/******/ return reject(err); +/******/ } +/******/ request.onreadystatechange = function() { +/******/ if(request.readyState !== 4) return; +/******/ if(request.status === 0) { +/******/ // timeout +/******/ reject(new Error("Manifest request to " + requestPath + " timed out.")); +/******/ } else if(request.status === 404) { +/******/ // no update available +/******/ resolve(); +/******/ } else if(request.status !== 200 && request.status !== 304) { +/******/ // other failure +/******/ reject(new Error("Manifest request to " + requestPath + " failed.")); +/******/ } else { +/******/ // success +/******/ try { +/******/ var update = JSON.parse(request.responseText); +/******/ } catch(e) { +/******/ reject(e); +/******/ return; +/******/ } +/******/ resolve(update); +/******/ } +/******/ }; +/******/ }); +/******/ } +/******/ +/******/ +/******/ +/******/ var hotApplyOnUpdate = true; +/******/ var hotCurrentHash = "a335399439a907571fa4"; // eslint-disable-line no-unused-vars +/******/ var hotRequestTimeout = 10000; +/******/ var hotCurrentModuleData = {}; +/******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars +/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars +/******/ var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars +/******/ +/******/ function hotCreateRequire(moduleId) { // eslint-disable-line no-unused-vars +/******/ var me = installedModules[moduleId]; +/******/ if(!me) return __webpack_require__; +/******/ var fn = function(request) { +/******/ if(me.hot.active) { +/******/ if(installedModules[request]) { +/******/ if(installedModules[request].parents.indexOf(moduleId) < 0) +/******/ installedModules[request].parents.push(moduleId); +/******/ } else { +/******/ hotCurrentParents = [moduleId]; +/******/ hotCurrentChildModule = request; +/******/ } +/******/ if(me.children.indexOf(request) < 0) +/******/ me.children.push(request); +/******/ } else { +/******/ console.warn("[HMR] unexpected require(" + request + ") from disposed module " + moduleId); +/******/ hotCurrentParents = []; +/******/ } +/******/ return __webpack_require__(request); +/******/ }; +/******/ var ObjectFactory = function ObjectFactory(name) { +/******/ return { +/******/ configurable: true, +/******/ enumerable: true, +/******/ get: function() { +/******/ return __webpack_require__[name]; +/******/ }, +/******/ set: function(value) { +/******/ __webpack_require__[name] = value; +/******/ } +/******/ }; +/******/ }; +/******/ for(var name in __webpack_require__) { +/******/ if(Object.prototype.hasOwnProperty.call(__webpack_require__, name) && name !== "e") { +/******/ Object.defineProperty(fn, name, ObjectFactory(name)); +/******/ } +/******/ } +/******/ fn.e = function(chunkId) { +/******/ if(hotStatus === "ready") +/******/ hotSetStatus("prepare"); +/******/ hotChunksLoading++; +/******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) { +/******/ finishChunkLoading(); +/******/ throw err; +/******/ }); +/******/ +/******/ function finishChunkLoading() { +/******/ hotChunksLoading--; +/******/ if(hotStatus === "prepare") { +/******/ if(!hotWaitingFilesMap[chunkId]) { +/******/ hotEnsureUpdateChunk(chunkId); +/******/ } +/******/ if(hotChunksLoading === 0 && hotWaitingFiles === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ } +/******/ } +/******/ }; +/******/ return fn; +/******/ } +/******/ +/******/ function hotCreateModule(moduleId) { // eslint-disable-line no-unused-vars +/******/ var hot = { +/******/ // private stuff +/******/ _acceptedDependencies: {}, +/******/ _declinedDependencies: {}, +/******/ _selfAccepted: false, +/******/ _selfDeclined: false, +/******/ _disposeHandlers: [], +/******/ _main: hotCurrentChildModule !== moduleId, +/******/ +/******/ // Module API +/******/ active: true, +/******/ accept: function(dep, callback) { +/******/ if(typeof dep === "undefined") +/******/ hot._selfAccepted = true; +/******/ else if(typeof dep === "function") +/******/ hot._selfAccepted = dep; +/******/ else if(typeof dep === "object") +/******/ for(var i = 0; i < dep.length; i++) +/******/ hot._acceptedDependencies[dep[i]] = callback || function() {}; +/******/ else +/******/ hot._acceptedDependencies[dep] = callback || function() {}; +/******/ }, +/******/ decline: function(dep) { +/******/ if(typeof dep === "undefined") +/******/ hot._selfDeclined = true; +/******/ else if(typeof dep === "object") +/******/ for(var i = 0; i < dep.length; i++) +/******/ hot._declinedDependencies[dep[i]] = true; +/******/ else +/******/ hot._declinedDependencies[dep] = true; +/******/ }, +/******/ dispose: function(callback) { +/******/ hot._disposeHandlers.push(callback); +/******/ }, +/******/ addDisposeHandler: function(callback) { +/******/ hot._disposeHandlers.push(callback); +/******/ }, +/******/ removeDisposeHandler: function(callback) { +/******/ var idx = hot._disposeHandlers.indexOf(callback); +/******/ if(idx >= 0) hot._disposeHandlers.splice(idx, 1); +/******/ }, +/******/ +/******/ // Management API +/******/ check: hotCheck, +/******/ apply: hotApply, +/******/ status: function(l) { +/******/ if(!l) return hotStatus; +/******/ hotStatusHandlers.push(l); +/******/ }, +/******/ addStatusHandler: function(l) { +/******/ hotStatusHandlers.push(l); +/******/ }, +/******/ removeStatusHandler: function(l) { +/******/ var idx = hotStatusHandlers.indexOf(l); +/******/ if(idx >= 0) hotStatusHandlers.splice(idx, 1); +/******/ }, +/******/ +/******/ //inherit from previous dispose call +/******/ data: hotCurrentModuleData[moduleId] +/******/ }; +/******/ hotCurrentChildModule = undefined; +/******/ return hot; +/******/ } +/******/ +/******/ var hotStatusHandlers = []; +/******/ var hotStatus = "idle"; +/******/ +/******/ function hotSetStatus(newStatus) { +/******/ hotStatus = newStatus; +/******/ for(var i = 0; i < hotStatusHandlers.length; i++) +/******/ hotStatusHandlers[i].call(null, newStatus); +/******/ } +/******/ +/******/ // while downloading +/******/ var hotWaitingFiles = 0; +/******/ var hotChunksLoading = 0; +/******/ var hotWaitingFilesMap = {}; +/******/ var hotRequestedFilesMap = {}; +/******/ var hotAvailableFilesMap = {}; +/******/ var hotDeferred; +/******/ +/******/ // The update info +/******/ var hotUpdate, hotUpdateNewHash; +/******/ +/******/ function toModuleId(id) { +/******/ var isNumber = (+id) + "" === id; +/******/ return isNumber ? +id : id; +/******/ } +/******/ +/******/ function hotCheck(apply) { +/******/ if(hotStatus !== "idle") throw new Error("check() is only allowed in idle status"); +/******/ hotApplyOnUpdate = apply; +/******/ hotSetStatus("check"); +/******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) { +/******/ if(!update) { +/******/ hotSetStatus("idle"); +/******/ return null; +/******/ } +/******/ hotRequestedFilesMap = {}; +/******/ hotWaitingFilesMap = {}; +/******/ hotAvailableFilesMap = update.c; +/******/ hotUpdateNewHash = update.h; +/******/ +/******/ hotSetStatus("prepare"); +/******/ var promise = new Promise(function(resolve, reject) { +/******/ hotDeferred = { +/******/ resolve: resolve, +/******/ reject: reject +/******/ }; +/******/ }); +/******/ hotUpdate = {}; +/******/ var chunkId = 0; +/******/ { // eslint-disable-line no-lone-blocks +/******/ /*globals chunkId */ +/******/ hotEnsureUpdateChunk(chunkId); +/******/ } +/******/ if(hotStatus === "prepare" && hotChunksLoading === 0 && hotWaitingFiles === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ return promise; +/******/ }); +/******/ } +/******/ +/******/ function hotAddUpdateChunk(chunkId, moreModules) { // eslint-disable-line no-unused-vars +/******/ if(!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId]) +/******/ return; +/******/ hotRequestedFilesMap[chunkId] = false; +/******/ for(var moduleId in moreModules) { +/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ hotUpdate[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(--hotWaitingFiles === 0 && hotChunksLoading === 0) { +/******/ hotUpdateDownloaded(); +/******/ } +/******/ } +/******/ +/******/ function hotEnsureUpdateChunk(chunkId) { +/******/ if(!hotAvailableFilesMap[chunkId]) { +/******/ hotWaitingFilesMap[chunkId] = true; +/******/ } else { +/******/ hotRequestedFilesMap[chunkId] = true; +/******/ hotWaitingFiles++; +/******/ hotDownloadUpdateChunk(chunkId); +/******/ } +/******/ } +/******/ +/******/ function hotUpdateDownloaded() { +/******/ hotSetStatus("ready"); +/******/ var deferred = hotDeferred; +/******/ hotDeferred = null; +/******/ if(!deferred) return; +/******/ if(hotApplyOnUpdate) { +/******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to +/******/ // avoid triggering uncaught exception warning in Chrome. +/******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666 +/******/ Promise.resolve().then(function() { +/******/ return hotApply(hotApplyOnUpdate); +/******/ }).then( +/******/ function(result) { +/******/ deferred.resolve(result); +/******/ }, +/******/ function(err) { +/******/ deferred.reject(err); +/******/ } +/******/ ); +/******/ } else { +/******/ var outdatedModules = []; +/******/ for(var id in hotUpdate) { +/******/ if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) { +/******/ outdatedModules.push(toModuleId(id)); +/******/ } +/******/ } +/******/ deferred.resolve(outdatedModules); +/******/ } +/******/ } +/******/ +/******/ function hotApply(options) { +/******/ if(hotStatus !== "ready") throw new Error("apply() is only allowed in ready status"); +/******/ options = options || {}; +/******/ +/******/ var cb; +/******/ var i; +/******/ var j; +/******/ var module; +/******/ var moduleId; +/******/ +/******/ function getAffectedStuff(updateModuleId) { +/******/ var outdatedModules = [updateModuleId]; +/******/ var outdatedDependencies = {}; +/******/ +/******/ var queue = outdatedModules.slice().map(function(id) { +/******/ return { +/******/ chain: [id], +/******/ id: id +/******/ }; +/******/ }); +/******/ while(queue.length > 0) { +/******/ var queueItem = queue.pop(); +/******/ var moduleId = queueItem.id; +/******/ var chain = queueItem.chain; +/******/ module = installedModules[moduleId]; +/******/ if(!module || module.hot._selfAccepted) +/******/ continue; +/******/ if(module.hot._selfDeclined) { +/******/ return { +/******/ type: "self-declined", +/******/ chain: chain, +/******/ moduleId: moduleId +/******/ }; +/******/ } +/******/ if(module.hot._main) { +/******/ return { +/******/ type: "unaccepted", +/******/ chain: chain, +/******/ moduleId: moduleId +/******/ }; +/******/ } +/******/ for(var i = 0; i < module.parents.length; i++) { +/******/ var parentId = module.parents[i]; +/******/ var parent = installedModules[parentId]; +/******/ if(!parent) continue; +/******/ if(parent.hot._declinedDependencies[moduleId]) { +/******/ return { +/******/ type: "declined", +/******/ chain: chain.concat([parentId]), +/******/ moduleId: moduleId, +/******/ parentId: parentId +/******/ }; +/******/ } +/******/ if(outdatedModules.indexOf(parentId) >= 0) continue; +/******/ if(parent.hot._acceptedDependencies[moduleId]) { +/******/ if(!outdatedDependencies[parentId]) +/******/ outdatedDependencies[parentId] = []; +/******/ addAllToSet(outdatedDependencies[parentId], [moduleId]); +/******/ continue; +/******/ } +/******/ delete outdatedDependencies[parentId]; +/******/ outdatedModules.push(parentId); +/******/ queue.push({ +/******/ chain: chain.concat([parentId]), +/******/ id: parentId +/******/ }); +/******/ } +/******/ } +/******/ +/******/ return { +/******/ type: "accepted", +/******/ moduleId: updateModuleId, +/******/ outdatedModules: outdatedModules, +/******/ outdatedDependencies: outdatedDependencies +/******/ }; +/******/ } +/******/ +/******/ function addAllToSet(a, b) { +/******/ for(var i = 0; i < b.length; i++) { +/******/ var item = b[i]; +/******/ if(a.indexOf(item) < 0) +/******/ a.push(item); +/******/ } +/******/ } +/******/ +/******/ // at begin all updates modules are outdated +/******/ // the "outdated" status can propagate to parents if they don't accept the children +/******/ var outdatedDependencies = {}; +/******/ var outdatedModules = []; +/******/ var appliedUpdate = {}; +/******/ +/******/ var warnUnexpectedRequire = function warnUnexpectedRequire() { +/******/ console.warn("[HMR] unexpected require(" + result.moduleId + ") to disposed module"); +/******/ }; +/******/ +/******/ for(var id in hotUpdate) { +/******/ if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) { +/******/ moduleId = toModuleId(id); +/******/ var result; +/******/ if(hotUpdate[id]) { +/******/ result = getAffectedStuff(moduleId); +/******/ } else { +/******/ result = { +/******/ type: "disposed", +/******/ moduleId: id +/******/ }; +/******/ } +/******/ var abortError = false; +/******/ var doApply = false; +/******/ var doDispose = false; +/******/ var chainInfo = ""; +/******/ if(result.chain) { +/******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> "); +/******/ } +/******/ switch(result.type) { +/******/ case "self-declined": +/******/ if(options.onDeclined) +/******/ options.onDeclined(result); +/******/ if(!options.ignoreDeclined) +/******/ abortError = new Error("Aborted because of self decline: " + result.moduleId + chainInfo); +/******/ break; +/******/ case "declined": +/******/ if(options.onDeclined) +/******/ options.onDeclined(result); +/******/ if(!options.ignoreDeclined) +/******/ abortError = new Error("Aborted because of declined dependency: " + result.moduleId + " in " + result.parentId + chainInfo); +/******/ break; +/******/ case "unaccepted": +/******/ if(options.onUnaccepted) +/******/ options.onUnaccepted(result); +/******/ if(!options.ignoreUnaccepted) +/******/ abortError = new Error("Aborted because " + moduleId + " is not accepted" + chainInfo); +/******/ break; +/******/ case "accepted": +/******/ if(options.onAccepted) +/******/ options.onAccepted(result); +/******/ doApply = true; +/******/ break; +/******/ case "disposed": +/******/ if(options.onDisposed) +/******/ options.onDisposed(result); +/******/ doDispose = true; +/******/ break; +/******/ default: +/******/ throw new Error("Unexception type " + result.type); +/******/ } +/******/ if(abortError) { +/******/ hotSetStatus("abort"); +/******/ return Promise.reject(abortError); +/******/ } +/******/ if(doApply) { +/******/ appliedUpdate[moduleId] = hotUpdate[moduleId]; +/******/ addAllToSet(outdatedModules, result.outdatedModules); +/******/ for(moduleId in result.outdatedDependencies) { +/******/ if(Object.prototype.hasOwnProperty.call(result.outdatedDependencies, moduleId)) { +/******/ if(!outdatedDependencies[moduleId]) +/******/ outdatedDependencies[moduleId] = []; +/******/ addAllToSet(outdatedDependencies[moduleId], result.outdatedDependencies[moduleId]); +/******/ } +/******/ } +/******/ } +/******/ if(doDispose) { +/******/ addAllToSet(outdatedModules, [result.moduleId]); +/******/ appliedUpdate[moduleId] = warnUnexpectedRequire; +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Store self accepted outdated modules to require them later by the module system +/******/ var outdatedSelfAcceptedModules = []; +/******/ for(i = 0; i < outdatedModules.length; i++) { +/******/ moduleId = outdatedModules[i]; +/******/ if(installedModules[moduleId] && installedModules[moduleId].hot._selfAccepted) +/******/ outdatedSelfAcceptedModules.push({ +/******/ module: moduleId, +/******/ errorHandler: installedModules[moduleId].hot._selfAccepted +/******/ }); +/******/ } +/******/ +/******/ // Now in "dispose" phase +/******/ hotSetStatus("dispose"); +/******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) { +/******/ if(hotAvailableFilesMap[chunkId] === false) { +/******/ hotDisposeChunk(chunkId); +/******/ } +/******/ }); +/******/ +/******/ var idx; +/******/ var queue = outdatedModules.slice(); +/******/ while(queue.length > 0) { +/******/ moduleId = queue.pop(); +/******/ module = installedModules[moduleId]; +/******/ if(!module) continue; +/******/ +/******/ var data = {}; +/******/ +/******/ // Call dispose handlers +/******/ var disposeHandlers = module.hot._disposeHandlers; +/******/ for(j = 0; j < disposeHandlers.length; j++) { +/******/ cb = disposeHandlers[j]; +/******/ cb(data); +/******/ } +/******/ hotCurrentModuleData[moduleId] = data; +/******/ +/******/ // disable module (this disables requires from this module) +/******/ module.hot.active = false; +/******/ +/******/ // remove module from cache +/******/ delete installedModules[moduleId]; +/******/ +/******/ // when disposing there is no need to call dispose handler +/******/ delete outdatedDependencies[moduleId]; +/******/ +/******/ // remove "parents" references from all children +/******/ for(j = 0; j < module.children.length; j++) { +/******/ var child = installedModules[module.children[j]]; +/******/ if(!child) continue; +/******/ idx = child.parents.indexOf(moduleId); +/******/ if(idx >= 0) { +/******/ child.parents.splice(idx, 1); +/******/ } +/******/ } +/******/ } +/******/ +/******/ // remove outdated dependency from module children +/******/ var dependency; +/******/ var moduleOutdatedDependencies; +/******/ for(moduleId in outdatedDependencies) { +/******/ if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) { +/******/ module = installedModules[moduleId]; +/******/ if(module) { +/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; +/******/ for(j = 0; j < moduleOutdatedDependencies.length; j++) { +/******/ dependency = moduleOutdatedDependencies[j]; +/******/ idx = module.children.indexOf(dependency); +/******/ if(idx >= 0) module.children.splice(idx, 1); +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Not in "apply" phase +/******/ hotSetStatus("apply"); +/******/ +/******/ hotCurrentHash = hotUpdateNewHash; +/******/ +/******/ // insert new code +/******/ for(moduleId in appliedUpdate) { +/******/ if(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) { +/******/ modules[moduleId] = appliedUpdate[moduleId]; +/******/ } +/******/ } +/******/ +/******/ // call accept handlers +/******/ var error = null; +/******/ for(moduleId in outdatedDependencies) { +/******/ if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) { +/******/ module = installedModules[moduleId]; +/******/ if(module) { +/******/ moduleOutdatedDependencies = outdatedDependencies[moduleId]; +/******/ var callbacks = []; +/******/ for(i = 0; i < moduleOutdatedDependencies.length; i++) { +/******/ dependency = moduleOutdatedDependencies[i]; +/******/ cb = module.hot._acceptedDependencies[dependency]; +/******/ if(cb) { +/******/ if(callbacks.indexOf(cb) >= 0) continue; +/******/ callbacks.push(cb); +/******/ } +/******/ } +/******/ for(i = 0; i < callbacks.length; i++) { +/******/ cb = callbacks[i]; +/******/ try { +/******/ cb(moduleOutdatedDependencies); +/******/ } catch(err) { +/******/ if(options.onErrored) { +/******/ options.onErrored({ +/******/ type: "accept-errored", +/******/ moduleId: moduleId, +/******/ dependencyId: moduleOutdatedDependencies[i], +/******/ error: err +/******/ }); +/******/ } +/******/ if(!options.ignoreErrored) { +/******/ if(!error) +/******/ error = err; +/******/ } +/******/ } +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // Load self accepted modules +/******/ for(i = 0; i < outdatedSelfAcceptedModules.length; i++) { +/******/ var item = outdatedSelfAcceptedModules[i]; +/******/ moduleId = item.module; +/******/ hotCurrentParents = [moduleId]; +/******/ try { +/******/ __webpack_require__(moduleId); +/******/ } catch(err) { +/******/ if(typeof item.errorHandler === "function") { +/******/ try { +/******/ item.errorHandler(err); +/******/ } catch(err2) { +/******/ if(options.onErrored) { +/******/ options.onErrored({ +/******/ type: "self-accept-error-handler-errored", +/******/ moduleId: moduleId, +/******/ error: err2, +/******/ orginalError: err, // TODO remove in webpack 4 +/******/ originalError: err +/******/ }); +/******/ } +/******/ if(!options.ignoreErrored) { +/******/ if(!error) +/******/ error = err2; +/******/ } +/******/ if(!error) +/******/ error = err; +/******/ } +/******/ } else { +/******/ if(options.onErrored) { +/******/ options.onErrored({ +/******/ type: "self-accept-errored", +/******/ moduleId: moduleId, +/******/ error: err +/******/ }); +/******/ } +/******/ if(!options.ignoreErrored) { +/******/ if(!error) +/******/ error = err; +/******/ } +/******/ } +/******/ } +/******/ } +/******/ +/******/ // handle errors in accept handlers and self accepted module load +/******/ if(error) { +/******/ hotSetStatus("fail"); +/******/ return Promise.reject(error); +/******/ } +/******/ +/******/ hotSetStatus("idle"); +/******/ return new Promise(function(resolve) { +/******/ resolve(outdatedModules); +/******/ }); +/******/ } +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {}, +/******/ hot: hotCreateModule(moduleId), +/******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp), +/******/ children: [] +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId)); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/fcdesignsystem/"; +/******/ +/******/ // __webpack_hash__ +/******/ __webpack_require__.h = function() { return hotCurrentHash; }; +/******/ +/******/ // Load entry module and return exports +/******/ return hotCreateRequire(0)(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/css-hot-loader/hotModuleReplacement.js": +/***/ (function(module, exports, __webpack_require__) { + +var normalizeUrl = __webpack_require__("./node_modules/normalize-url/index.js"); +var srcByModuleId = Object.create(null); +var debounce = __webpack_require__("./node_modules/lodash/debounce.js"); + +var noDocument = typeof document === 'undefined'; +var forEach = Array.prototype.forEach; + +var noop = function () {}; + +var getCurrentScriptUrl = function(moduleId) { + var src = srcByModuleId[moduleId]; + + if (!src) { + if (document.currentScript) { + src = document.currentScript.src; + } else { + var scripts = document.getElementsByTagName('script'); + var lastScriptTag = scripts[scripts.length - 1]; + + if (lastScriptTag) { + src = lastScriptTag.src; + } + } + srcByModuleId[moduleId] = src; + } + + return function(fileMap) { + var splitResult = /([^\\/]+)\.js$/.exec(src); + var filename = splitResult && splitResult[1]; + if (!filename) { + return [src.replace('.js', '.css')]; + } + return fileMap.split(',').map(function(mapRule) { + var reg = new RegExp(filename + '\\.js$', 'g') + return normalizeUrl(src.replace(reg, mapRule.replace(/{fileName}/g, filename) + '.css'), { stripWWW: false }); + }); + }; +}; + +function updateCss(el, url) { + if (!url) { + url = el.href.split('?')[0]; + } + if (el.isLoaded === false) { + // We seem to be about to replace a css link that hasn't loaded yet. + // We're probably changing the same file more than once. + return; + } + if (!url || !(url.indexOf('.css') > -1)) return; + + el.visited = true; + var newEl = el.cloneNode(); + + newEl.isLoaded = false; + newEl.addEventListener('load', function () { + newEl.isLoaded = true; + el.remove(); + }); + newEl.addEventListener('error', function () { + newEl.isLoaded = true; + el.remove(); + }); + + newEl.href = url + '?' + Date.now(); + el.parentNode.appendChild(newEl); +} + +function reloadStyle(src) { + var elements = document.querySelectorAll('link'); + var loaded = false; + + forEach.call(elements, function(el) { + if (el.visited === true) return; + + var url = getReloadUrl(el.href, src); + if (url) { + updateCss(el, url); + loaded = true; + } + }); + + return loaded; +} + +function getReloadUrl(href, src) { + href = normalizeUrl(href, { stripWWW: false }); + var ret; + src.some(function(url) { + if (href.indexOf(src) > -1) { + ret = url; + } + }); + return ret; +} + +function reloadAll() { + var elements = document.querySelectorAll('link'); + forEach.call(elements, function(el) { + if (el.visited === true) return; + updateCss(el); + }); +} + +module.exports = function(moduleId, options) { + var getScriptSrc; + + if (noDocument) { + return noop; + } + + getScriptSrc = getCurrentScriptUrl(moduleId); + + function update() { + var src = getScriptSrc(options.fileMap); + var reloaded = reloadStyle(src); + if (reloaded) { + console.log('[HMR] css reload %s', src.join(' ')); + } else { + console.log('[HMR] Reload all css'); + reloadAll(); + } + } + + return debounce(update, 10); +}; + + +/***/ }), + +/***/ "./node_modules/is-plain-obj/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var toString = Object.prototype.toString; + +module.exports = function (x) { + var prototype; + return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({})); +}; + + +/***/ }), + +/***/ "./node_modules/lodash/_Symbol.js": +/***/ (function(module, exports, __webpack_require__) { + +var root = __webpack_require__("./node_modules/lodash/_root.js"); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseGetTag.js": +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__("./node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__("./node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__("./node_modules/lodash/_objectToString.js"); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_freeGlobal.js": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/lodash/_getRawTag.js": +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__("./node_modules/lodash/_Symbol.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_objectToString.js": +/***/ (function(module, exports) { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + + +/***/ }), + +/***/ "./node_modules/lodash/_root.js": +/***/ (function(module, exports, __webpack_require__) { + +var freeGlobal = __webpack_require__("./node_modules/lodash/_freeGlobal.js"); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + + +/***/ }), + +/***/ "./node_modules/lodash/debounce.js": +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__("./node_modules/lodash/isObject.js"), + now = __webpack_require__("./node_modules/lodash/now.js"), + toNumber = __webpack_require__("./node_modules/lodash/toNumber.js"); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +module.exports = debounce; + + +/***/ }), + +/***/ "./node_modules/lodash/isObject.js": +/***/ (function(module, exports) { + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + + +/***/ }), + +/***/ "./node_modules/lodash/isObjectLike.js": +/***/ (function(module, exports) { + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + + +/***/ }), + +/***/ "./node_modules/lodash/isSymbol.js": +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__("./node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__("./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + + +/***/ }), + +/***/ "./node_modules/lodash/now.js": +/***/ (function(module, exports, __webpack_require__) { + +var root = __webpack_require__("./node_modules/lodash/_root.js"); + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +module.exports = now; + + +/***/ }), + +/***/ "./node_modules/lodash/toNumber.js": +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__("./node_modules/lodash/isObject.js"), + isSymbol = __webpack_require__("./node_modules/lodash/isSymbol.js"); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = toNumber; + + +/***/ }), + +/***/ "./node_modules/normalize-url/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var url = __webpack_require__("./node_modules/url/url.js"); +var punycode = __webpack_require__("./node_modules/punycode/punycode.js"); +var queryString = __webpack_require__("./node_modules/query-string/index.js"); +var prependHttp = __webpack_require__("./node_modules/prepend-http/index.js"); +var sortKeys = __webpack_require__("./node_modules/sort-keys/index.js"); +var objectAssign = __webpack_require__("./node_modules/object-assign/index.js"); + +var DEFAULT_PORTS = { + 'http:': 80, + 'https:': 443, + 'ftp:': 21 +}; + +// protocols that always contain a `//`` bit +var slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true +}; + +function testParameter(name, filters) { + return filters.some(function (filter) { + return filter instanceof RegExp ? filter.test(name) : filter === name; + }); +} + +module.exports = function (str, opts) { + opts = objectAssign({ + normalizeProtocol: true, + normalizeHttps: false, + stripFragment: true, + stripWWW: true, + removeQueryParameters: [/^utm_\w+/i], + removeTrailingSlash: true, + removeDirectoryIndex: false + }, opts); + + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + var hasRelativeProtocol = str.indexOf('//') === 0; + + // prepend protocol + str = prependHttp(str.trim()).replace(/^\/\//, 'http://'); + + var urlObj = url.parse(str); + + if (opts.normalizeHttps && urlObj.protocol === 'https:') { + urlObj.protocol = 'http:'; + } + + if (!urlObj.hostname && !urlObj.pathname) { + throw new Error('Invalid URL'); + } + + // prevent these from being used by `url.format` + delete urlObj.host; + delete urlObj.query; + + // remove fragment + if (opts.stripFragment) { + delete urlObj.hash; + } + + // remove default port + var port = DEFAULT_PORTS[urlObj.protocol]; + if (Number(urlObj.port) === port) { + delete urlObj.port; + } + + // remove duplicate slashes + if (urlObj.pathname) { + urlObj.pathname = urlObj.pathname.replace(/\/{2,}/g, '/'); + } + + // decode URI octets + if (urlObj.pathname) { + urlObj.pathname = decodeURI(urlObj.pathname); + } + + // remove directory index + if (opts.removeDirectoryIndex === true) { + opts.removeDirectoryIndex = [/^index\.[a-z]+$/]; + } + + if (Array.isArray(opts.removeDirectoryIndex) && opts.removeDirectoryIndex.length) { + var pathComponents = urlObj.pathname.split('/'); + var lastComponent = pathComponents[pathComponents.length - 1]; + + if (testParameter(lastComponent, opts.removeDirectoryIndex)) { + pathComponents = pathComponents.slice(0, pathComponents.length - 1); + urlObj.pathname = pathComponents.slice(1).join('/') + '/'; + } + } + + // resolve relative paths, but only for slashed protocols + if (slashedProtocol[urlObj.protocol]) { + var domain = urlObj.protocol + '//' + urlObj.hostname; + var relative = url.resolve(domain, urlObj.pathname); + urlObj.pathname = relative.replace(domain, ''); + } + + if (urlObj.hostname) { + // IDN to Unicode + urlObj.hostname = punycode.toUnicode(urlObj.hostname).toLowerCase(); + + // remove trailing dot + urlObj.hostname = urlObj.hostname.replace(/\.$/, ''); + + // remove `www.` + if (opts.stripWWW) { + urlObj.hostname = urlObj.hostname.replace(/^www\./, ''); + } + } + + // remove URL with empty query string + if (urlObj.search === '?') { + delete urlObj.search; + } + + var queryParameters = queryString.parse(urlObj.search); + + // remove query unwanted parameters + if (Array.isArray(opts.removeQueryParameters)) { + for (var key in queryParameters) { + if (testParameter(key, opts.removeQueryParameters)) { + delete queryParameters[key]; + } + } + } + + // sort query parameters + urlObj.search = queryString.stringify(sortKeys(queryParameters)); + + // decode query parameters + urlObj.search = decodeURIComponent(urlObj.search); + + // take advantage of many of the Node `url` normalizations + str = url.format(urlObj); + + // remove ending `/` + if (opts.removeTrailingSlash || urlObj.pathname === '/') { + str = str.replace(/\/$/, ''); + } + + // restore relative protocol, if applicable + if (hasRelativeProtocol && !opts.normalizeProtocol) { + str = str.replace(/^http:\/\//, '//'); + } + + return str; +}; + + +/***/ }), + +/***/ "./node_modules/object-assign/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), + +/***/ "./node_modules/prepend-http/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = function (url) { + if (typeof url !== 'string') { + throw new TypeError('Expected a string, got ' + typeof url); + } + + url = url.trim(); + + if (/^\.*\/|^(?!localhost)\w+:/.test(url)) { + return url; + } + + return url.replace(/^(?!(?:\w+:)?\/\/)/, 'http://'); +}; + + +/***/ }), + +/***/ "./node_modules/punycode/punycode.js": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see <https://mathiasbynens.be/notes/javascript-encoding> + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see <https://mathiasbynens.be/notes/javascript-encoding> + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { + return punycode; + }).call(exports, __webpack_require__, exports, module), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("./node_modules/webpack/buildin/module.js")(module), __webpack_require__("./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/query-string/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strictUriEncode = __webpack_require__("./node_modules/strict-uri-encode/index.js"); +var objectAssign = __webpack_require__("./node_modules/object-assign/index.js"); + +function encoderForArrayFormat(opts) { + switch (opts.arrayFormat) { + case 'index': + return function (key, value, index) { + return value === null ? [ + encode(key, opts), + '[', + index, + ']' + ].join('') : [ + encode(key, opts), + '[', + encode(index, opts), + ']=', + encode(value, opts) + ].join(''); + }; + + case 'bracket': + return function (key, value) { + return value === null ? encode(key, opts) : [ + encode(key, opts), + '[]=', + encode(value, opts) + ].join(''); + }; + + default: + return function (key, value) { + return value === null ? encode(key, opts) : [ + encode(key, opts), + '=', + encode(value, opts) + ].join(''); + }; + } +} + +function parserForArrayFormat(opts) { + var result; + + switch (opts.arrayFormat) { + case 'index': + return function (key, value, accumulator) { + result = /\[(\d*)\]$/.exec(key); + + key = key.replace(/\[\d*\]$/, ''); + + if (!result) { + accumulator[key] = value; + return; + } + + if (accumulator[key] === undefined) { + accumulator[key] = {}; + } + + accumulator[key][result[1]] = value; + }; + + case 'bracket': + return function (key, value, accumulator) { + result = /(\[\])$/.exec(key); + key = key.replace(/\[\]$/, ''); + + if (!result) { + accumulator[key] = value; + return; + } else if (accumulator[key] === undefined) { + accumulator[key] = [value]; + return; + } + + accumulator[key] = [].concat(accumulator[key], value); + }; + + default: + return function (key, value, accumulator) { + if (accumulator[key] === undefined) { + accumulator[key] = value; + return; + } + + accumulator[key] = [].concat(accumulator[key], value); + }; + } +} + +function encode(value, opts) { + if (opts.encode) { + return opts.strict ? strictUriEncode(value) : encodeURIComponent(value); + } + + return value; +} + +function keysSorter(input) { + if (Array.isArray(input)) { + return input.sort(); + } else if (typeof input === 'object') { + return keysSorter(Object.keys(input)).sort(function (a, b) { + return Number(a) - Number(b); + }).map(function (key) { + return input[key]; + }); + } + + return input; +} + +exports.extract = function (str) { + return str.split('?')[1] || ''; +}; + +exports.parse = function (str, opts) { + opts = objectAssign({arrayFormat: 'none'}, opts); + + var formatter = parserForArrayFormat(opts); + + // Create an object with no prototype + // https://github.com/sindresorhus/query-string/issues/47 + var ret = Object.create(null); + + if (typeof str !== 'string') { + return ret; + } + + str = str.trim().replace(/^(\?|#|&)/, ''); + + if (!str) { + return ret; + } + + str.split('&').forEach(function (param) { + var parts = param.replace(/\+/g, ' ').split('='); + // Firefox (pre 40) decodes `%3D` to `=` + // https://github.com/sindresorhus/query-string/pull/37 + var key = parts.shift(); + var val = parts.length > 0 ? parts.join('=') : undefined; + + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); + + formatter(decodeURIComponent(key), val, ret); + }); + + return Object.keys(ret).sort().reduce(function (result, key) { + var val = ret[key]; + if (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) { + // Sort object keys, not values + result[key] = keysSorter(val); + } else { + result[key] = val; + } + + return result; + }, Object.create(null)); +}; + +exports.stringify = function (obj, opts) { + var defaults = { + encode: true, + strict: true, + arrayFormat: 'none' + }; + + opts = objectAssign(defaults, opts); + + var formatter = encoderForArrayFormat(opts); + + return obj ? Object.keys(obj).sort().map(function (key) { + var val = obj[key]; + + if (val === undefined) { + return ''; + } + + if (val === null) { + return encode(key, opts); + } + + if (Array.isArray(val)) { + var result = []; + + val.slice().forEach(function (val2) { + if (val2 === undefined) { + return; + } + + result.push(formatter(key, val2, result.length)); + }); + + return result.join('&'); + } + + return encode(key, opts) + '=' + encode(val, opts); + }).filter(function (x) { + return x.length > 0; + }).join('&') : ''; +}; + + +/***/ }), + +/***/ "./node_modules/querystring-es3/decode.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + + +/***/ }), + +/***/ "./node_modules/querystring-es3/encode.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + + +/***/ }), + +/***/ "./node_modules/querystring-es3/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.decode = exports.parse = __webpack_require__("./node_modules/querystring-es3/decode.js"); +exports.encode = exports.stringify = __webpack_require__("./node_modules/querystring-es3/encode.js"); + + +/***/ }), + +/***/ "./node_modules/sort-keys/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var isPlainObj = __webpack_require__("./node_modules/is-plain-obj/index.js"); + +module.exports = function (obj, opts) { + if (!isPlainObj(obj)) { + throw new TypeError('Expected a plain object'); + } + + opts = opts || {}; + + // DEPRECATED + if (typeof opts === 'function') { + opts = {compare: opts}; + } + + var deep = opts.deep; + var seenInput = []; + var seenOutput = []; + + var sortKeys = function (x) { + var seenIndex = seenInput.indexOf(x); + + if (seenIndex !== -1) { + return seenOutput[seenIndex]; + } + + var ret = {}; + var keys = Object.keys(x).sort(opts.compare); + + seenInput.push(x); + seenOutput.push(ret); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var val = x[key]; + + ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val; + } + + return ret; + }; + + return sortKeys(obj); +}; + + +/***/ }), + +/***/ "./node_modules/strict-uri-encode/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = function (str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); +}; + + +/***/ }), + +/***/ "./node_modules/url/url.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +var punycode = __webpack_require__("./node_modules/punycode/punycode.js"); +var util = __webpack_require__("./node_modules/url/util.js"); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = __webpack_require__("./node_modules/querystring-es3/index.js"); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = + (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) + continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + util.isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') + result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host || srcPath.length > 1) && + (last === '.' || last === '..') || last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; + + +/***/ }), + +/***/ "./node_modules/url/util.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + isString: function(arg) { + return typeof(arg) === 'string'; + }, + isObject: function(arg) { + return typeof(arg) === 'object' && arg !== null; + }, + isNull: function(arg) { + return arg === null; + }, + isNullOrUndefined: function(arg) { + return arg == null; + } +}; + + +/***/ }), + +/***/ "./node_modules/webpack/buildin/global.js": +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "./node_modules/webpack/buildin/module.js": +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), + +/***/ "./src/js/animate.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var _this = this; + +var easing = { + linearTween: function linearTween(t, b, c, d) { + return c * t / d + b; + }, + + easeInQuad: function easeInQuad(t, b, c, d) { + t /= d; + return c * t * t + b; + }, + + easeOutQuad: function easeOutQuad(t, b, c, d) { + return -c * (t /= d) * (t - 2) + b; + }, + + easeInOutQuad: function easeInOutQuad(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; + }, + + easeInOutExpo: function easeInOutExpo(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; + t--; + return c / 2 * (-Math.pow(2, -10 * t) + 2) + b; + }, + + easeInOutCirc: function easeInOutCirc(t, b, c, d) { + t /= d / 2; + if (t < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; + t -= 2; + return c / 2 * (Math.sqrt(1 - t * t) + 1) + b; + }, + + easeInCirc: function easeInCirc(t, b, c, d) { + t /= d; + return -c * (Math.sqrt(1 - t * t) - 1) + b; + }, + + easeInCubic: function easeInCubic(t, b, c, d) { + return c * (t /= d) * t * t + b; + }, + + easeOutCirc: function easeOutCirc(t, b, c, d) { + t /= d; + t--; + return c * Math.sqrt(1 - t * t) + b; + }, + + easeInExpo: function easeInExpo(t, b, c, d) { + return c * Math.pow(2, 10 * (t / d - 1)) + b; + }, + + easeOutExpo: function easeOutExpo(t, b, c, d) { + return c * (-Math.pow(2, -10 * t / d) + 1) + b; + }, + + easeInOutSine: function easeInOutSine(t, b, c, d) { + return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; + }, + + easeInOutQuint: function easeInOutQuint(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t * t * t * t + b; + t -= 2; + return c / 2 * (t * t * t * t * t + 2) + b; + }, + + easeInOutQuart: function easeInOutQuart(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t * t * t + b; + t -= 2; + return -c / 2 * (t * t * t * t - 2) + b; + }, + + easeOutBounce: function easeOutBounce(t, b, c, d) { + if ((t /= d) < 1 / 2.75) { + return c * (7.5625 * t * t) + b; + } else if (t < 2 / 2.75) { + return c * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + b; + } else if (t < 2.5 / 2.75) { + return c * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + b; + } else { + return c * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + b; + } + } +}; +// Maintaining Animation Stack +var queue = []; +var isQueEnabled = false; + +var event = new Event('animated'); + +var animateFN = function animateFN(start, to, duration, callback, _easing, isQueEnabled, increment) { + var change = to - start; + var currentTime = 0; + isQueEnabled && (isQueEnabled = true); + + increment = increment || 20; + _easing = _easing && easing[_easing] || easing['linearTween']; + + var animator = function animator() { + currentTime += increment; + callback && callback(_easing(currentTime, start, change, duration)); + if (currentTime < duration) { + setTimeout(animator, increment); + } else if (isQueEnabled) { + queue.shift(); + queue[0] && queue[0](); + } else { + // Dispatch the event. + window.dispatchEvent(event); + } + }; + + animator(); +}; + +/* harmony default export */ __webpack_exports__["a"] = (function (start, to, duration, callback, _easing, isQueEnabled, increment) { + if (isQueEnabled) { + queue.push(animateFN.bind(_this, start, to, duration, callback, _easing, isQueEnabled, increment)); + queue.length === 1 && queue[0](); + } else { + return animateFN(start, to, duration, callback, _easing, isQueEnabled, increment); + } +}); + +/***/ }), + +/***/ "./src/js/collapse.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var AccordionWidget = function () { + function AccordionWidget(el, selectedIndex) { + _classCallCheck(this, AccordionWidget); + + if (!el) { + return; + } + + this.el = el; + + this.accordionTriggers = this.el.getElementsByClassName('js-accordion-trigger'); + this.accordionPanels = this.el.getElementsByClassName('js-accordion-panel'); + + if (this.accordionTriggers.length === 0 || this.accordionTriggers.length !== this.accordionPanels.length) { + return; + } + + this._init(selectedIndex); + } + + _createClass(AccordionWidget, [{ + key: '_init', + value: function _init(selectedIndex) { + this.accordionTriggersLength = this.accordionTriggers.length; + this.expandedAccordions = new Array(this.accordionTriggersLength); + this.multiSelectable = this.el.hasAttribute('aria-multiselectable'); + this.clickListener = this._clickEvent.bind(this); + this.keydownListener = this._keydownEvent.bind(this); + this.focusListener = this._focusEvent.bind(this); + this.keys = { + prev: 38, + next: 40, + space: 32 + }; + + var initialSelectedIndex = void 0; + + for (var i = 0; i < this.accordionTriggersLength; i++) { + this.accordionTriggers[i].index = i; + this.accordionTriggers[i].addEventListener('click', this.clickListener, false); + this.accordionTriggers[i].addEventListener('keydown', this.keydownListener, false); + this.accordionTriggers[i].addEventListener('focus', this.focusListener, false); + + if (this.accordionTriggers[i].classList.contains('is-selected')) { + this.expandedAccordions[i] = true; + } + } + + if (!isNaN(selectedIndex)) { + initialSelectedIndex = selectedIndex < this.accordionTriggersLength ? selectedIndex : this.accordionTriggersLength - 1; + this.expandedAccordions = new Array(this.accordionTriggersLength); + this.expandedAccordions[initialSelectedIndex] = true; + } else { + initialSelectedIndex = this.expandedAccordions.lastIndexOf(true); + + if (!this.multiSelectable) { + this.expandedAccordions = new Array(this.accordionTriggersLength); + this.expandedAccordions[initialSelectedIndex] = true; + } + } + + this.setSelected(initialSelectedIndex); + this.setExpanded(); + this.el.classList.add('is-initialized'); + } + }, { + key: '_clickEvent', + value: function _clickEvent(e) { + e.preventDefault(); + + this.setSelected(e.target.index, true); + this.setExpanded(e.target.index, true); + } + }, { + key: '_keydownEvent', + value: function _keydownEvent(e) { + var targetIndex = void 0; + + switch (e.keyCode) { + case this.keys.space: + case this.keys.prev: + case this.keys.next: + e.preventDefault(); + break; + default: + return; + } + + if (e.keyCode === this.keys.space) { + this.setExpanded(e.target.index, true); + + return; + } else if (e.keyCode === this.keys.prev && e.target.index > 0) { + targetIndex = e.target.index - 1; + } else if (e.keyCode === this.keys.next && e.target.index < this.accordionTriggersLength - 1) { + targetIndex = e.target.index + 1; + } else { + return; + } + + this.setSelected(targetIndex, true); + } + }, { + key: '_focusEvent', + value: function _focusEvent() { + if (this.accordionTriggersLength === 1) { + this.setSelected(0); + } + } + }, { + key: 'setSelected', + value: function setSelected(index, userInvoked) { + if (index === -1) { + this.accordionTriggers[0].setAttribute('tabindex', 0); + + return; + } + + for (var i = 0; i < this.accordionTriggersLength; i++) { + if (i === index) { + this.accordionTriggers[i].classList.add('is-selected'); + this.accordionTriggers[i].setAttribute('aria-selected', true); + this.accordionTriggers[i].setAttribute('tabindex', 0); + + if (userInvoked) { + this.accordionTriggers[i].focus(); + } + } else { + this.accordionTriggers[i].classList.remove('is-selected'); + this.accordionTriggers[i].setAttribute('aria-selected', false); + this.accordionTriggers[i].setAttribute('tabindex', -1); + } + } + } + }, { + key: 'setExpanded', + value: function setExpanded(index, userInvoked) { + var i = void 0; + + if (userInvoked) { + if (this.multiSelectable) { + this.expandedAccordions[index] = !this.expandedAccordions[index]; + } else { + for (i = 0; i < this.accordionTriggersLength; i++) { + if (i === index) { + this.expandedAccordions[i] = !this.expandedAccordions[i]; + } else { + this.expandedAccordions[i] = false; + } + } + } + } + + for (i = 0; i < this.accordionTriggersLength; i++) { + if (this.expandedAccordions[i]) { + this.accordionTriggers[i].setAttribute('aria-expanded', true); + this.accordionTriggers[i].classList.add('is-expanded'); + + this.accordionPanels[i].setAttribute('aria-hidden', false); + this.accordionPanels[i].classList.remove('is-hidden'); + this.accordionPanels[i].setAttribute('tabindex', 0); + } else { + this.accordionTriggers[i].setAttribute('aria-expanded', false); + this.accordionTriggers[i].classList.remove('is-expanded'); + + this.accordionPanels[i].setAttribute('aria-hidden', true); + this.accordionPanels[i].classList.add('is-hidden'); + this.accordionPanels[i].setAttribute('tabindex', -1); + } + } + } + }, { + key: 'destroy', + value: function destroy() { + this.el.classList.remove('is-initialized'); + + for (var i = 0; i < this.accordionTriggersLength; i++) { + this.accordionTriggers[i].removeAttribute('aria-expanded'); + this.accordionTriggers[i].removeAttribute('aria-selected'); + this.accordionTriggers[i].classList.remove('is-expanded'); + + this.accordionPanels[i].removeAttribute('aria-hidden'); + this.accordionPanels[i].classList.remove('is-hidden'); + this.accordionPanels[i].removeAttribute('tabindex'); + + this.accordionTriggers[i].removeEventListener('click', this.clickListener, false); + this.accordionTriggers[i].removeEventListener('keydown', this.keydownListener, false); + this.accordionTriggers[i].removeEventListener('focus', this.focusListener, false); + + delete this.accordionTriggers[i].index; + } + } + }]); + + return AccordionWidget; +}(); + +/* harmony default export */ __webpack_exports__["a"] = (AccordionWidget); + +/***/ }), + +/***/ "./src/js/index.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tree__ = __webpack_require__("./src/js/tree.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tabs__ = __webpack_require__("./src/js/tabs.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scroll_spy__ = __webpack_require__("./src/js/scroll_spy.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__animate__ = __webpack_require__("./src/js/animate.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__collapse__ = __webpack_require__("./src/js/collapse.js"); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tree", function() { return __WEBPACK_IMPORTED_MODULE_0__tree__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tabs", function() { return __WEBPACK_IMPORTED_MODULE_1__tabs__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scroll", function() { return __WEBPACK_IMPORTED_MODULE_2__scroll_spy__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "animate", function() { return __WEBPACK_IMPORTED_MODULE_3__animate__["a"]; }); +/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return __WEBPACK_IMPORTED_MODULE_4__collapse__["a"]; }); + + + + + + + + +/***/ }), + +/***/ "./src/js/scroll_spy.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__("./src/js/utils.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__animate__ = __webpack_require__("./src/js/animate.js"); +var _this = this; + + + + +var scrollToElement = function scrollToElement(element, to, duration, easing) { + var start = element.scrollTop; + var cb = function cb(val) { + element.scrollTop = val; + }; + Object(__WEBPACK_IMPORTED_MODULE_1__animate__["a" /* default */])(start, to, duration, cb.bind(_this), easing); +}; + +/* harmony default export */ __webpack_exports__["a"] = (scroll = { + to: function to(num, duration, easing) { + scrollToElement(document.documentElement, num, Number(duration) || 1250, easing); + }, + toElement: function toElement(ob) { + var id = ob.id; + var duration = ob.duration ? isNaN(ob.duration) : 1200; + var easing = ob.easing; + var evt = ob.event; + var space = isNaN(ob.space) ? Number(0) : parseInt(ob.space); + + var element = null; + + if (id && typeof id === 'string' && id.length > 0) { + var _id = id[0] === '#' ? id.split('#').pop() : id; + element = document.getElementById(_id); + } else if (evt) { + evt.preventDefault(); + var _id2 = evt.target.getAttribute("href"); + _id2[0] === '#' && (_id2 = id.split('#').pop()); + element = _id2 && document.querySelector(_id2); + } + + if (element) { + scrollToElement(document.documentElement, element.offsetTop - space, duration, easing); + } + } +}); + +/***/ }), + +/***/ "./src/js/tabs.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var tabs = function tabs(_id, ob) { + + var x = document.getElementById(_id); + var anchors = x.querySelectorAll('a'); + + var lastClickedNode = ob && ob.activeIndex || 0; + var id = anchors[lastClickedNode] && anchors[lastClickedNode].getAttribute('href'); + var lastActiveBody = document.getElementById(id[0] === '#' ? id.split('#').pop() : id); + + anchors.forEach(function (element, i) { + element.addEventListener('click', function (e) { + e.preventDefault(); + + anchors[lastClickedNode] && anchors[lastClickedNode].classList.remove('active'); + lastActiveBody.classList.remove('active', 'show'); + + lastClickedNode = i; + id = e.target.getAttribute('href'); + lastActiveBody = document.getElementById(id[0] === '#' ? id.split('#').pop() : id); + + e.target.classList.add('active'); + lastActiveBody.classList.add('active', 'show'); + }); + + var __id = element.getAttribute('href'); + __id = __id[0] === '#' ? __id.split('#').pop() : __id; + + if (id === __id) element.classList.add('active'); + }); +}; + +/* harmony default export */ __webpack_exports__["a"] = (tabs); + +/***/ }), + +/***/ "./src/js/tree.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__animate__ = __webpack_require__("./src/js/animate.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__("./src/js/utils.js"); +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + + + +var Tree = function () { + function Tree(data, node, props) { + var _this = this; + + _classCallCheck(this, Tree); + + this.queue = []; + var level = 0; + + this.handlers = {}; + this.node = node; + this.data = data; + this.parentKey = props && props.parentKey || 'name'; + this.children = props && props.children || 'children'; + this.events = ['expand', 'expandAll', 'collapse', 'collapseAll', 'select']; + this.isChild = true; + this.index = 0; + this.easing = { + collapse: props && (props.collapseAnimation || props.easing), + expand: props && (props.expandAnimation || props.easing), + duration: props && props.animationDuration || 600 + }; + this.isRainbowColor = props && props.rainbow || false; + this.currentActiveItem = null; + this.isCollapsed = props && props.isCollapsed || false; + this.isActive = props && props.active && { key: props.active.key, value: props.active.value }; + this.leafIcon = props && props.leafIcon || ''; + + this.isDOMElement = function (obj) { + try { + return obj instanceof HTMLElement; + } catch (e) { + // Some browsers don't support using the HTMLElement so some extra + // checks are needed. + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.nodeType === 1 && _typeof(obj.style) === 'object' && _typeof(obj.ownerDocument) === 'object'; + } + }; + + this.forEach = function (arr, callback, scope) { + var i = void 0; + var len = arr.length; + for (i = 0; i < len; i += 1) { + callback.call(scope, arr[i], i); + } + }; + + // changed arg + this.emit = function (instance, name) { + for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + // const args = [].slice.call(arguments, 2); + if (_this.events.includes(name)) { + if (instance.handlers[name] && instance.handlers[name] instanceof Array) { + _this.forEach(instance.handlers[name], function (handle) { + window.setTimeout(function () { + if (handle.callback) { + handle.callback.apply(handle.context, args); + } + }, 0); + }); + } + } else { + throw new Error(name + ' event cannot be found on Tree.'); + } + }; + + this.render = function (self) { + var container = _this.isDOMElement(self.node) ? self.node : document.getElementById(self.node); + + container.classList.add('tree-container'); + + var leaves = []; + var renderLeaf = function renderLeaf(item, isChild, i) { + level < i && (level = i); + _this.index < i && (_this.index = i); + var branch = document.createElement('ul'); + var leaf = document.createElement('li'); + var content = document.createElement('div'); + var text = document.createElement('span'); + var expando = document.createElement('i'); + var title = document.createElement('span'); + + var itemIcon = ''; + + branch.setAttribute('class', 'branch lvl-' + i); + + leaf.setAttribute('class', 'fc-tree-leaf ' + (item[_this.children] && item[_this.children].length > 0 ? 'has-children' : '') + ' ' + (!isChild && 'first-branch')); + content.setAttribute('class', 'fc-tree-leaf-content'); + if (item.link) { + content.setAttribute('data-item', '{"link":"' + item.link + '"}'); + } + + if (item[_this.children]) { + // changing icon name + itemIcon = (item.iconName || ' fc_indicator_right') + ' ' + (item.className || ''); + } else { + // icons that are not leaf node + itemIcon = (item.iconName ? item.iconName : _this.leafIcon) + ' ' + (item.className || ''); + } + + title.setAttribute('class', 'title-container'); + text.setAttribute('class', 'fc-tree-leaf-text'); + _this.isRainbowColor && (text.style.color = __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].calcColor(0, 9, i * 2)); + text.textContent = item[_this.parentKey]; + expando.setAttribute('class', itemIcon + ' tree-expando ' + (item[_this.children] && item[_this.children].length > 0 ? 'expanded' : '')); + + title.appendChild(expando); + title.appendChild(text); + + content.appendChild(title); + + if (!_this.isActive && item.isActive && _this.currentActiveItem === null) { + // this.currentActiveItem = true; + _this.currentActiveItem = text; + title.classList.add('active'); + } + if (_this.isActive && item[_this.isActive.key] && item[_this.isActive.key].replace(/[^a-zA-Z0-9 ]/g, "") === _this.isActive.value.replace(/[^a-zA-Z0-9 ]/g, "")) { + // this.currentActiveItem = true; + _this.currentActiveItem = text; + title.classList.add('active'); + } + leaf.appendChild(content); + branch.appendChild(leaf); + + if (item[_this.children] && item[_this.children].length > 0) { + var children = document.createElement('div'); + children.setAttribute('class', 'tree-child-leaves'); + _this.forEach(item[_this.children], function (child) { + var childLeaf = renderLeaf(child, _this.isChild, i + 1); + children.appendChild(childLeaf); + }); + if (item.expanded) { + children.classList.add('hidden'); + } + // leaf.appendChild(children); + content.appendChild(children); + } else { + expando.classList.add('hidden'); + } + // return leaf; + return branch; + }; + + _this.forEach(self.data, function (item) { + leaves.push(renderLeaf.call(self, item, !_this.isChild, 0)); + }); + container.innerHTML = leaves.map(function (leaf) { + return leaf.outerHTML; + }).join(''); + + var click = function click(e) { + // const parent = (e.target || e.currentTarget).parentNode.parentNode; + var parent = (e.target || e.currentTarget).parentNode.parentNode; + var data = JSON.parse(parent.getAttribute('data-item')); + var leaves = parent.parentNode.querySelector('.tree-child-leaves'); + if (leaves) { + if (leaves.classList.contains('hidden')) { + // queue.push(self.expand.bind(this, parent, leaves)); + // queue.length === 1 && queue[0](); + self.expand(parent, leaves); + } else { + // queue.push(self.collapse.bind(this, parent, leaves)); + // queue.length === 1 && queue[0](); + self.collapse(parent, leaves); + } + } else { + // adding selected class + // const elem = (e.target || e.currentTarget); + var elem = e.target || e.currentTarget; + var elemParent = elem.parentElement; + elem = elemParent.lastChild || elemParent.children[1]; + // console.log(elem, elemParent); + + if (_this.currentActiveItem !== null) { + if (_this.currentActiveItem !== elem) { + // typeof this.currentActiveItem === 'boolean' ? document.querySelectorAll('.title-container.active')[0].classList.remove('active') : this.currentActiveItem.parentNode.classList.remove('active'); + // elem.parentNode.classList.add('active'); + document.querySelectorAll('.title-container.active')[0].classList.remove('active'); + elemParent.classList.add('active'); + _this.currentActiveItem = elem; + } + } else { + elem.parentNode.classList.add('active'); + _this.currentActiveItem = elem; + } + + _this.emit(self, 'select', { + target: e, + data: data + }); + } + }; + // this.forEach(container.querySelectorAll('.fc-tree-leaf-text'), a => { + // a.onclick = click; + // }); + // this.forEach(container.querySelectorAll('.tree-expando'), a => { + // a.onclick = click; + // }); + + _this.forEach(container.querySelectorAll('.title-container'), function (a) { + a.onclick = click; + }); + }; + + this.render(this); + this.isCollapsed && this.collapseAll(this.easing.duration * (level / 2)); + } + + _createClass(Tree, [{ + key: 'setCollapseAnimation', + value: function setCollapseAnimation(type) { + this.easing.collapse = type; + } + }, { + key: 'setExpandAnimation', + value: function setExpandAnimation(type) { + this.easing.expand = type; + } + }, { + key: 'setAnimationDuration', + value: function setAnimationDuration(type) { + this.easing.duration = type; + } + }, { + key: 'getActiveElementText', + value: function getActiveElementText() { + return this.isDOMElement(this.currentActiveItem) && this.currentActiveItem.innerHTML || ''; + } + }, { + key: 'getActiveElement', + value: function getActiveElement() { + return this.currentActiveItem; + } + }, { + key: 'expand', + value: function expand(node, leaves, skipEmit) { + var expando = node.querySelector('.tree-expando'); + var details = leaves.getBoundingClientRect(); + var cb = function cb(val) { + leaves.setAttribute('style', 'margin-top:' + val + 'px'); + }; + + expando.setAttribute('class', ' fc_indicator_right tree-expando expanded'); + leaves.classList.remove('hidden'); + // leaves.setAttribute('style', `margin-top:0px`); + + + Object(__WEBPACK_IMPORTED_MODULE_0__animate__["a" /* default */])(-details.height, 0, this.easing.duration, cb.bind(this), this.easing.expand); + + if (skipEmit) { + return; + } + this.emit(this, 'expand', { + target: node, + leaves: leaves + }); + + // queue.shift(); + // queue[0] && queue[0](); + } + }, { + key: 'expandAll', + value: function expandAll() { + var _this2 = this; + + var self = this; + var c = this.index; + + while (c > 0) { + var nodes = document.getElementById(self.node).querySelectorAll('.lvl-' + (this.index - c)); + + nodes && nodes.forEach(function (i) { + var leaves = i.children[0].children[0].querySelector('.tree-child-leaves'); + var p = leaves && leaves.parentElement; + + if (p && leaves) { + setTimeout(function () { + self.expand(p, leaves, true); + }, (_this2.index - c) * 500); + } + + _this2.emit(_this2, 'expandAll', {}); + }); + + c--; + } + } + }, { + key: 'collapse', + value: function collapse(node, leaves, skipEmit) { + var expando = node.querySelector('.tree-expando'); + var details = leaves.getBoundingClientRect(); + var cb = function cb(val) { + leaves.setAttribute('style', 'margin-top:' + val + 'px'); + }; + // console.log(node, leaves); + // leaves.setAttribute('style', `margin-top:-${details.height}px`); + expando.setAttribute('class', ' fc_indicator_right tree-expando'); + leaves.classList.add('hidden'); + + Object(__WEBPACK_IMPORTED_MODULE_0__animate__["a" /* default */])(0, -details.height, this.easing.duration, cb.bind(this), this.easing.collapse); + + if (skipEmit) { + return; + } + this.emit(this, 'collapse', { + target: node, + leaves: leaves + }); + + // queue.shift(); + // queue[0] && queue[0](); + } + }, { + key: 'collapseAll', + value: function collapseAll(time) { + var _this3 = this; + + var self = this; + time = Number(time) || 500; + var c = 1; + var current = 0; + + while (this.index - c >= 0) { + var nodes = document.getElementById(self.node).querySelectorAll('.lvl-' + (this.index - c)); + nodes && nodes.forEach(function (i) { + var leaves = i.children[0].children[0].querySelector('.tree-child-leaves'); + var p = leaves && leaves.parentElement; + var stopCollapse = _this3.isCollapsed && leaves && leaves.querySelector('.title-container.active'); + + // if (p && leaves && !stopCollapse) { + // setTimeout(function () { + // self.collapse(p, leaves, true) + // }, (c - 1) * time); + // } + + !_this3.queue[_this3.index - c] && (_this3.queue[_this3.index - c] = []); + if (p && leaves && !stopCollapse) { + _this3.queue[_this3.index - c].push(self.collapse.bind(self, p, leaves, true)); + } + + _this3.emit(_this3, 'collapseAll', {}); + }); + + c++; + } + + var start = this.queue.length ? this.queue.length - 1 : 0; + var that = this; + var fullCollaped = new Event('fullCollaped'); + var fn = function fn(i) { + for (var j = 0; j < _this3.queue[i].length; j++) { + _this3.queue[i][j](); + } + }; + var fnc = function fnc() { + current += 1; + if (that.queue[start]) { + current === that.queue[start].length && window.dispatchEvent(fullCollaped); + } else { + window.removeEventListener("animated", fnc); + } + }; + var fnn = function fnn() { + current = 0; + start -= 1; + if (that.queue[start]) fn(start); + }; + + window.addEventListener('animated', fnc, false); + window.addEventListener('fullCollaped', fnn.bind(this)); + fn(start); + } + }, { + key: 'open', + value: function open(value) { + var _this4 = this; + + var nodes = document.getElementById(this.node); + var key = this.isActive && this.isActive.key; + var getNodes = function getNodes(item) { + return item.parentElement.parentElement.parentElement; + }; + var miniExapnd = function miniExapnd(elm) { + var parentElm = elm.parentNode; + var titleContainer = parentElm.previousSibling; + + _this4.expand(titleContainer, parentElm); + }; + + nodes.querySelectorAll('[data-item]').forEach(function (i) { + if (JSON.parse(i.getAttribute('data-item'))[key] === value) { + var lvl = i.parentElement.parentElement; + var elem = i.querySelector('.tree-expando'); + + if (_this4.currentActiveItem !== null) { + if (_this4.currentActiveItem !== elem) { + typeof _this4.currentActiveItem === 'boolean' ? document.querySelectorAll('.title-container.active')[0].classList.remove('active') : _this4.currentActiveItem.parentNode.classList.remove('active'); + elem.parentNode.classList.add('active'); + _this4.currentActiveItem = elem; + } + } else { + elem.parentNode.classList.add('active'); + _this4.currentActiveItem = elem; + } + + var c = 0; + while (_this4.index - c >= 1) { + var item = lvl.childNodes[0].childNodes[0].childNodes[0]; + if (__WEBPACK_IMPORTED_MODULE_1__utils__["a" /* default */].hasClass(lvl.parentNode, 'hidden')) miniExapnd(lvl); + lvl = getNodes(lvl.parentNode); + c++; + } + } + }); + } + }, { + key: 'on', + value: function on(name, callback, scope) { + if (this.events.includes(name)) { + if (!this.handlers[name]) { + this.handlers[name] = []; + } + this.handlers[name].push({ + callback: callback, + context: scope + }); + } else { + throw new Error(name + ' is not supported by Tree.'); + } + } + }, { + key: 'off', + value: function off(name, callback) { + var index = void 0; + var found = false; + if (this.handlers[name] instanceof Array) { + this.handlers[name].forEach(function (handle, i) { + index = i; + if (handle.callback === callback && !found) { + found = true; + } + }); + if (found) { + this.handlers[name].splice(index, 1); + } + } + } + }]); + + return Tree; +}(); + +/* harmony default export */ __webpack_exports__["a"] = (Tree); + +/***/ }), + +/***/ "./src/js/utils.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/* harmony default export */ __webpack_exports__["a"] = ({ + isObject: function isObject(val) { + if (val === null) { + return false; + } + return typeof val === 'function' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object'; + }, + calcColor: function calcColor(min, max, val) { + var minHue = 240, + maxHue = 0; + var curPercent = (val - min) / (max - min); + var colString = "hsl(" + (curPercent * (maxHue - minHue) + minHue) + ",100%,50%)"; + return colString; + }, + hasClass: function hasClass(element, className) { + return element.classList.value.replace(/[\n\t]/g, " ").indexOf(className) > -1; + } +}); + +/***/ }), + +/***/ "./src/scss/fusioncharts.scss": +/***/ (function(module, exports, __webpack_require__) { + +// removed by extract-text-webpack-plugin + if(true) { + // 1532794203305 + var cssReload = __webpack_require__("./node_modules/css-hot-loader/hotModuleReplacement.js")(module.i, {"fileMap":"{fileName}"}); + module.hot.dispose(cssReload); + module.hot.accept(undefined, cssReload); + } + + +/***/ }), + +/***/ 0: +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__("./src/scss/fusioncharts.scss"); +module.exports = __webpack_require__("./src/js/index.js"); + + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/index.html b/graphs/fusioncharts-suite-xt/index.html new file mode 100755 index 0000000000000000000000000000000000000000..5b9ac0dc3a9b82795365c78424f530f647231e7d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/index.html @@ -0,0 +1,349 @@ +<!doctype html> +<html> + +<head> + <!-- Required meta tags --> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + <title>JavaScript Charts for Web, Mobile & Apps - FusionCharts</title> + <!-- CSS Resources --> + <link rel="stylesheet" href="assets/css/fusiondesign.css"> + <link rel="stylesheet" href="assets/css/style.css"> +</head> + +<body> + <div id="app"> + <!-- navbar start --> + <nav id="navbar" class="navbar navbar-light navbar-expand-lg bg-light"> + <!-- logo --> + <a href="https://www.fusioncharts.com/" target="_blank" class="navbar-brand active"> + <img src="assets/images/fc-logo.svg" width="149" height="27" alt="FusionCharts" class="img-circle"> + </a> + <!-- FC home --> + <ul class="navbar-nav ml-auto"> + <li class="nav-item"> + <a class="header-link" href="http://www.fusioncharts.com/contact-sales?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" + target="_blank">Contact Sales</a> + </li> + <li class="nav-item"> + <a class="header-link" href="http://puc.fusioncharts.com?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank">Download Upgrade</a> + </li> + <li class="nav-item"> + <a class="header-link" href="http://www.fusioncharts.com/contact-support?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank">Get Support</a> + </li> + </ul> + </nav> + <!-- navbar end --> + <div class="page-container"> + <div id="mainContainer" class="main-container"> + <div class="content-container"> + <!-- main banner start --> + <div class="heroContainer fixed-bg home-banner pl-2 pr-3 pl-sm-3 pr-sm-3 pl-md-3 pr-md-3 pl-lg-6 pr-lg-6 pb-4 pt-4"> + <div class="container container-1440 info-wrapper"> + <div class="row"> + <div class="col-md-8 offset-md-2"> + <div class="h1 text-center">FusionCharts Suite XT</div> + <div class="p text-center mt-2">FusionCharts Suite XT includes 90+ charts and gauges, and 1000+ maps for creating interactive + data visualizations for your web and mobile applications. The visualizations can + be rendered in JavaScript using SVG and VML (for IE 6/7/8).</div> + <div class="p text-center mt-2 sub-banner-title">This package includes the following products:</div> + <div class="text-center mt-2"> + <a href="http://www.fusioncharts.com/explore/chart-gallery?product=fusioncharts&utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial#fusioncharts-xt" target="_blank"> + <img class="img-valign fc-logo pr-2" src="assets/images/fcxt-logo.svg" width="150" height="30" alt="FusionCharts" /> + </a> + <a href="http://www.fusioncharts.com/explore/chart-gallery?product=fusionwidgets&utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial#fusionwidgets-xt" target="_blank"> + <img class="img-valign fc-logo pr-2" src="assets/images/fw-logo.svg" width="150" height="30" alt="FusionWidgets" /> + </a> + <a href="https://www.fusioncharts.com/explore/chart-gallery?product=powercharts&utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial#powercharts-xt" target="_blank"> + <img class="img-valign fc-logo pr-2" src="assets/images/pc-logo.svg" width="150" height="30" alt="PowerCharts" /> + </a> + <a href="http://www.fusioncharts.com/explore/chart-gallery?product=fusionmaps&utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial#fusionmaps-xt" target="_blank"> + <img class="img-valign fc-logo pr-2" src="assets/images/fm-logo.svg" width="150" height="30" alt="FusionMaps" /> + </a> + </div> + </div> + </div> + </div> + </div> + </div> + <!-- main banner end --> + + <!-- tech stack plugin section start --> + <div class="demo bg-light-purple pt-4 pb-4"> + <div class="container container-1200 info-wrapper"> + <!-- tech stack heading row start --> + <div class="row"> + <div class="col"> + <div class="h2 text-center tech-stack-title">Please select your tech stack to get started with FusionCharts</div> + </div> + </div> + <!-- tech stack heading row end --> + <div class="row pt-3"> + <div class="col-md-12"> + <ul id="front-end-lib" class="list-inline text-center"> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/plain-javascript/your-first-chart-using-plain-javascript?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/js.svg" width="75" height="75" alt="JS" /> + <p>JavaScript</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/angular/angular/your-first-chart-using-angular?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/angular-2.svg" width="75" height="75" alt="Angular 2.x+" /> + <p>Angular + <br>(for Angular 2.x+)</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/angular/angularjs/your-first-chart-using-angularjs?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/angular-1.svg" width="75" height="75" alt="AngularJS" /> + <p>AngularJS + <br>(for Angular 1.x)</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/react/your-first-chart-using-react?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/react.svg" width="75" height="75" alt="React" /> + <p>React</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/vue/your-first-chart-using-vuejs?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/vue.svg" width="75" height="75" alt="Vue.js" /> + <p>Vue.js</p> + </a> + </li> + <li class="list-inline-item align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/jquery/your-first-chart-using-jquery?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/jquery.svg" width="75" height="75" alt="jQuery" /> + <p>jQuery</p> + </a> + </li> + </ul> + <ul id="server-side-lib" class="list-inline text-center pt-2"> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/aspnet/your-first-chart-using-aspnet?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/asp-net.svg" width="75" height="75" alt="ASP.NET" /> + <p>ASP.NET</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/java/your-first-chart-using-java?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/java.svg" width="75" height="75" alt="JSP" /> + <p>Java</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/php/your-first-chart-using-php?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/php.svg" width="75" height="75" alt="PHP" /> + <p>PHP</p> + </a> + </li> + <li class="list-inline-item pr-6 align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/django/your-first-chart-using-django?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/django.svg" width="75" height="75" alt="Django" /> + <p>Django</p> + </a> + </li> + <li class="list-inline-item align-top"> + <a class="techstack-link" href="https://www.fusioncharts.com/dev/getting-started/ruby-on-rails/your-first-chart-using-ruby-on-rails?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank"> + <img class="techstack-logo" src="assets/images/ror.svg" width="75" height="75" alt="Ruby on Rails" /> + <p>Ruby on Rails</p> + </a> + </li> + </ul> + </div> + </div> + <div class="row pt-3"> + <div class="col"> + <div class="strike"> + <span>Or</span> + </div> + </div> + </div> + <div class="row text-center pt-3"> + <div class="col"> + <a href="./js/" target="_blank"> + <div class="info-p p">Open folder containing FusionCharts XT Suite files ></div> + </a> + </div> + </div> + </div> + </div> + <!-- tech stack plugin section end --> + + <!-- explore section start --> + <div class="container container-1440 info-wrapper pt-4 pb-4"> + <div class="row"> + <div class="col"> + <div class="h2 text-center tech-stack-title">Explore what you can build with FusionCharts</div> + </div> + </div> + + <div class="row pt-3"> + <div class="card-deck"> + <!-- card 1 --> + <div class="card card-hover shadow col-md-4"> + <div class="card-header pb-0"> + <div class="card-heading-wrapper"> + <div class="feature-icon d-flex"> + <i class="fc_combination_chart align-self-center text-center"></i> + </div> + <div class="card-title pl-1 align-self-center"> + <h5 class="align-self-center">Chart Gallery</h5> + </div> + </div> + </div> + <div class="card-body pt-1"> + <p class="card-text">Explore our 95+ charts available to plot any kind of data, with different functional + and cosmetic configurations.</p> + </div> + <div class="card-footer"> + <a href="http://www.fusioncharts.com/explore/chart-gallery?product=fusioncharts&utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank" class="card-link">View Gallery + <i class="fc_next"></i> + </a> + </div> + </div> + <!-- card 2 --> + <div class="card card-hover shadow col-md-4"> + <div class="card-header pb-0"> + <div class="card-heading-wrapper"> + <div class="feature-icon d-flex"> + <i class="fc_dashboard align-self-center text-center"></i> + </div> + <div class="card-title pl-1 align-self-center"> + <h5 class="align-self-center">Dashboards</h5> + </div> + </div> + </div> + <div class="card-body pt-1"> + <p class="card-text">Explore 20+ business dashboards built showcasing different business scenarios, in different + technologies. + </p> + </div> + <div class="card-footer"> + <a href="http://www.fusioncharts.com/explore/dashboards?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank" class="card-link">View Dashboards + <i class="fc_next"></i> + </a> + </div> + </div> + <!-- card 3 --> + <div class="card card-hover shadow col-md-4"> + <div class="card-header pb-0"> + <div class="card-heading-wrapper"> + <div class="feature-icon d-flex"> + <i class="fc_chart_gallery align-self-center text-center"></i> + </div> + <div class="card-title pl-1 align-self-center"> + <h5 class="align-self-center">Data Stories</h5> + </div> + </div> + </div> + <div class="card-body pt-1"> + <p class="card-text">Explore Data Stories built using FusionCharts Suite, which combine data, narratives, + and a series of linked visualizations, to explain a real-world phenomena.</p> + </div> + <div class="card-footer"> + <a href="http://www.fusioncharts.com/explore/data-stories?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank" class="card-link">View Data Stories + <i class="fc_next"></i> + </a> + </div> + </div> + </div> + </div> + + <div class="row pt-3"> + <div class="col"> + <div class="h2 text-center tech-stack-title">Explore API & Attributes</div> + </div> + </div> + + <div class="row pt-3"> + <div class="card-deck"> + <!-- card 1 --> + <div class="card card-hover shadow col-md-4"> + <div class="card-header pb-0"> + <div class="card-heading-wrapper"> + <div class="feature-icon d-flex"> + <i class="fc_bar_charts align-self-center text-center"></i> + </div> + <div class="card-title pl-1 align-self-center"> + <h5 class="align-self-center">Chart List & Attributes</h5> + </div> + </div> + </div> + <div class="card-body pt-1"> + <p class="card-text">Explore the functional and cosmetic attributes available to customize each of our 95+ + charts. + </p> + </div> + <div class="card-footer"> + <a href="http://www.fusioncharts.com/dev/chart-attributes/?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank" class="card-link">View chart attributes + <i class="fc_next"></i> + </a> + </div> + </div> + <!-- card 2 --> + <div class="card card-hover shadow col-md-4"> + <div class="card-header pb-0"> + <div class="card-heading-wrapper"> + <div class="feature-icon d-flex"> + <i class="fc_js align-self-center text-center"></i> + </div> + <div class="card-title pl-1 align-self-center"> + <h5 class="align-self-center">JavaScript API Reference</h5> + </div> + </div> + </div> + <div class="card-body pt-1"> + <p class="card-text">Explore our JavaScript API, events, methods, namespaces etc., to use FusionCharts in + its full power.</p> + </div> + <div class="card-footer"> + <a href="http://www.fusioncharts.com/dev/api/fusioncharts?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank" class="card-link">View API + <i class="fc_next"></i> + </a> + </div> + </div> + <!-- card 3 --> + <div class="card card-hover shadow col-md-4"> + <div class="card-header pb-0"> + <div class="card-heading-wrapper"> + <div class="feature-icon d-flex"> + <i class="fc_globe_with_location align-self-center text-center"></i> + </div> + <div class="card-title pl-1 align-self-center"> + <h5 class="align-self-center">Map Specification Sheets</h5> + </div> + </div> + </div> + <div class="card-body pt-1"> + <p class="card-text">Explore our 1000+ maps with list of their ids, short names, long names, and attributes + to configure maps.</p> + </div> + <div class="card-footer"> + <a href="https://www.fusioncharts.com/dev/maps/spec-sheets?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial" target="_blank" class="card-link">View all maps + <i class="fc_next"></i> + </a> + </div> + </div> + </div> + </div> + </div> + + <!-- explore section end --> + + <!-- footer start --> + <div id="footbar" class="row text-center mt-2"> + <div class="col-12"> + <p class="foot-item pt-3 pb-3">© 2002-2018 InfoSoft Global Private Limited. All Rights Reserved.</p> + </div> + </div> + <!-- footer end --> + </div> + </div> + <!-- app end --> + </div> +</body> + +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/angular/README.md b/graphs/fusioncharts-suite-xt/integrations/angular/README.md new file mode 100755 index 0000000000000000000000000000000000000000..2260cac725e406326adfc78c433f1a742d4875a5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/angular/README.md @@ -0,0 +1 @@ +Unlike other integrations, `angular-fusioncharts` can only be used via `npm` because `Angular 2+` does not support direct `<script>` inclusion of files. Please visit [installation](https://www.fusioncharts.com/dev/getting-started/angular/angular/install-using-angular?utm_source=downloadPackage&utm_medium=referral&utm_campaign=trial "") page of `angular-fusioncharts` for more detail. \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/angular/sample/README.md b/graphs/fusioncharts-suite-xt/integrations/angular/sample/README.md new file mode 100755 index 0000000000000000000000000000000000000000..5363e4171dbc1220c53b79935d16fd27345b177a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/angular/sample/README.md @@ -0,0 +1,2 @@ +# Angular FusionCharts +We have created multiple samples using **Angular FusionCharts** for your reference. To view the samples click [here](https://fusioncharts.github.io/angular-fusioncharts/#/ex1 "Angular FusionCharts"). \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/angularjs/README.md b/graphs/fusioncharts-suite-xt/integrations/angularjs/README.md new file mode 100755 index 0000000000000000000000000000000000000000..347ae327187bd5b7ec06e129292f142fb69216c4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/angularjs/README.md @@ -0,0 +1,293 @@ +# angularjs-fusioncharts + +Simple and effective AngularJS charts plugin for FusionCharts. + +### Details +Use this AngularJS charts plugin to add interactive charts to your web and mobile applications using just a single directive. Choose from 90+ charts & 900+ maps from FusionCharts' core [JavaScript charts](http://www.fusioncharts.com/) library. + + You can access all the rich charting features like events, annotations, macros, themes, image-export etc. to make your visualizations stand-out. + + ### Installation + + + Install fusioncharts library + ```bash + $ npm install fusioncharts --save + ``` + Alternatively you can use downloaded fusioncharts files. + + + Install angular 1.x.x + ```bash + # Any angular 1.x version is compatible + $ npm install angular@1.7.2 --save + ``` + + Install angularjs-fusioncharts module + ```bash + $ npm install angularjs-fusioncharts --save + ``` + Alternatively you can use downloaded angularjs-fusioncharts wrapper. + + +### Demos +To learn what you can do using this Angular charts plugin, explore some [live demos](http://www.fusioncharts.com/angularjs-charts/). + +### Usage +#### Step 1: Include angular-fusioncharts.js and fusioncharts +In your index.html +```xml + <script type="text/javascript" src="node_modules/fusioncharts/fusioncharts.js"></script> + <script type="text/javascript" src="node_modules/fusioncharts/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="node_modules/angular/angular.js"></script> + <script type="text/javascript" src="node_modules/angularjs-fusioncharts/dist/angular-fusioncharts.js"></script> +``` + +### Step 2: Include ng-fusioncharts in your module +In the app, include ng-fusioncharts as a dependency. If you looking for where to add the dependency, look for the call to angular.module in your code. + +```javascript +angular.module("myApp", ["ng-fusioncharts"]); +``` + +### Step 3: Add the fusioncharts directive +In your HTML, find the section where you wish to add the chart and add a <div> with the fusioncharts directive. We are assuming it's inside a controller called MyController which would change based on your usage. + +```xml + <div ng-controller="MyController"> + <div + fusioncharts + width="600" + height="400" + type="column2d" + datasource="{{myDataSource}}"> + </div> + </div> +``` + +### Step 4:Populate required variables in controller +In the previous code, we are binding to a scope variable myDataSource, but that hasn't been defined yet. In your controller, set the DataSource as you would for a regular FusionCharts JSON format DataSource ([see this](http://docs.fusioncharts.com/tutorial-getting-started-your-first-charts-building-your-first-chart.html) tutorial for a general introduction to this format). + + +```javascript +app.controller('MyController', function($scope){ + $scope.dataSource = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [ + { "label": "Venezuela", "value": "290" }, + { "label": "Saudi", "value": "260" }, + { "label": "Canada", "value": "180" }, + { "label": "Iran", "value": "140" }, + { "label": "Russia", "value": "115" }, + { "label": "UAE", "value": "100" }, + { "label": "US", "value": "30" }, + { "label": "China", "value": "30" } + ] + }; + +}); +``` +And your chart should display when you load the page. + +### Using `require()` syntax +In script.js +```javascript +// Require AngularJS +var angular = require('angular'); + +// Require FusionCharts +var FusionCharts = require('fusioncharts'); + +// Include angularjs-fusioncharts +require('angularjs-fusioncharts'); + +// Require Chart modules +var Charts = require('fusioncharts/fusioncharts.charts'); + +// Require Fusion theme +var FusionTheme = require('fusioncharts/themes/fusioncharts.theme.fusion'); + +// Initialize Charts with FusionCharts instance +Charts(FusionCharts); + +// Initialize FusionTheme with FusionCharts instance +FusionTheme(FusionCharts); + +var app = angular.module('myApp', [ 'ng-fusioncharts' ]); + +app.controller('MyController', ['$scope', function($scope) { + $scope.dataSource = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [ + { "label": "Venezuela", "value": "290" }, + { "label": "Saudi", "value": "260" }, + { "label": "Canada", "value": "180" }, + { "label": "Iran", "value": "140" }, + { "label": "Russia", "value": "115" }, + { "label": "UAE", "value": "100" }, + { "label": "US", "value": "30" }, + { "label": "China", "value": "30" } + ] + }; +}]); +``` +Use a bundler like `browserify` to bundle the script +See the installation docs [here](http://browserify.org/) + +```bash +$ browserify script.js -o bundle.js +``` +In `index.html` +```xml +<html> + <head> + + <!-- Include compiled bundle in script tag --> + <script type="text/javascript" src="./bundle.js"></script> + </head> + + <body ng-app="myApp"> + <div ng-controller="MyController"> + <div + fusioncharts + width="600" + height="400" + type="column2d" + datasource="{{myDataSource}}"> + </div> + </div> + </body> +</html> + + +``` +Load it in browser , Chart should get displayed + +### Listening to events + +Fusincharts events can be subscribed by attaching scope functions to event attributes. +All the events attributes start with `fcevent-` +followed by the event name in lowercase + +Usage in template : + +```xml +<fusioncharts + width="400" + height="400" + type="column2d" + datasource="{{myDataSource}}" + fcevent-dataplotrollover="rollover(event, args)"> +</fusioncharts> +``` +In the given above template, `rollover` is the scope function that needs to be defined in the controller's code. + +For more on this read [here](https://www.fusioncharts.com/dev/api/fusioncharts/fusioncharts-events) + +``` +var app = angular.module('myApp', ['ng-fusioncharts']); + +app.controller('MyController', function($scope){ + $scope.myDataSource = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [ + { "label": "Venezuela", "value": "290" }, + { "label": "Saudi", "value": "260" }, + { "label": "Canada", "value": "180" }, + { "label": "Iran", "value": "140" }, + { "label": "Russia", "value": "115" }, + { "label": "UAE", "value": "100" }, + { "label": "US", "value": "30" }, + { "label": "China", "value": "30" } + ] + }; + + $scope.rollover = function(event, name){ + console.log(event, name); + } +}); +``` + +Get the list of fusioncharts' [events](https://www.fusioncharts.com/dev/advanced-chart-configurations/events/classifying-events) + +### Chart API + +FusionCharts chart instance is made available from the ```initialized``` event. It provides the chart instance as a parameter which can be used to call FusionCharts methods. + +In template, we add ```initialized``` event + +```xml +<fusioncharts + width="400" + height="400" + type="column2d" + datasource="{{myDataSource}}" + initialized="onInitialized(chart)"> +</fusioncharts> +<button ng-click="changeCaption()">Change Chart Caption</button> +``` + +In order to use the chart instance, we need to store it. + +``` +var app = angular.module('myApp', ['ng-fusioncharts']); + +app.controller('MyController', function($scope){ + var chart; + $scope.datasource = { + ...// same data as above + }; + + $scope.onInitialized = function(chartObj){ + chart = chartObj; + } + + $scope.changeCaption = function(){ + chart.setChartAttribute('caption', 'Caption changed'); + } +}); +``` +In the given above example, clicking the button changes the caption text to ```Caption changed``` + +Get the list of fusioncharts' [methods](https://www.fusioncharts.com/dev/api/fusioncharts/fusioncharts-methods) + + +### Tutorial + +Following tutorials will help you get started: + +- Tutorial by a user of this plugin: [How to Build Charts in Angular](https://davidwalsh.name/angular-charts) + +### Documentation +To dive deeper, please view the [official documentation](http://www.fusioncharts.com/dev/using-with-javascript-libraries/angularjs/introduction.html). + + +### Features + + - Add a chart using just a single directive. + - Auto-updates your chart object on modifying scope. + - Angular-friendly events let you call controller functions directly from the chart. + - Offers advanced control by giving you access to full FusionCharts object. + - Has variety of ways to add a chart, from JSON URL to Scope Array Binding. + - Plenty of examples and good documentation. diff --git a/graphs/fusioncharts-suite-xt/integrations/angularjs/js/angular-fusioncharts.js b/graphs/fusioncharts-suite-xt/integrations/angularjs/js/angular-fusioncharts.js new file mode 100755 index 0000000000000000000000000000000000000000..65450ec0a39dc681cf70c0c44c05387f6110a41e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/angularjs/js/angular-fusioncharts.js @@ -0,0 +1,486 @@ +// The MIT License (MIT) +// +// Copyright (c) 2014 FusionCharts Technologies +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +(function() { + var fc = angular.module('ng-fusioncharts', []), + scope = { + width: '@', + height: '@', + data: '@', + dataset: '@', + categories: '@', + chart: '@', + linkeddata: '@', + trendlines: '@', + vtrendlines: '@', + annotations: '@', + colorrange: '@', + lineset: '@', + axis: '@', + connectors: '@', + pointers: '@', + value: '@', + processes: '@', + tasks: '@', + rows: '@', + columns: '@', + map: '@', + markers: '@', + initialized:'&' + }, + fcEvents = ['beforelinkeditemopen','linkeditemopened','beforelinkeditemclose','linkeditemclosed','printreadystatechange','dataloadrequestcompleted','dataloaderror','dataloadcancelled','dataloadrequestcancelled','dataupdated','dataupdatecancelled','dataloadrequested','beforedataupdate','realtimeupdatecomplete','chartcleared','slicingend','slicingstart','entityrollout','entityrollover','entityclick','connectorrollover','connectorrollout','connectorclick','markerrollover','markerrollout','markerclick','pagenavigated','rotationend','rotationstart','centerlabelrollover','centerlabelrollout','centerlabelclick','centerlabelchanged','chartclick','chartmousemove','chartrollover','chartrollout','backgroundloaded','backgroundloaderror','legenditemclicked','legenditemrollover','legenditemrollout','logorollover','logorollout','logoclick','logoloaded','logoloaderror','beforeexport','exported','exportcancelled','beforeprint','printcomplete','printcancelled','datalabelclick','datalabelrollover','datalabelrollout','scrollstart','scrollend','onscroll','zoomreset','zoomedout','zoomedin','zoomed','zoommodechanged','pinned','datarestored','beforedatasubmit','datasubmiterror','datasubmitted','datasubmitcancelled','chartupdated','nodeadded','nodeupdated','nodedeleted','connectoradded','connectorupdated','connectordeleted','labeladded','labeldeleted','selectionremoved','selectionstart','selectionend','labelclick','labelrollover','labelrollout','labeldragstart','labeldragend','dataplotdragstart','dataplotdragend','processclick','processrollover','processrollout','categoryclick','categoryrollover','categoryrollout','milestoneclick','milestonerollover','milestonerollout','charttypechanged','overlaybuttonclick','loaded','rendered','drawcomplete','rendercomplete','datainvalid','dataxmlinvalid','dataloaded','nodatatodisplay','legendpointerdragstart','legendpointerdragstop','legendrangeupdated','alertcomplete','realtimeupdateerror','dataplotrollover','dataplotrollout','dataplotclick','linkclicked','beforerender','rendercancelled','beforeresize','resized','resizecancelled','beforedispose','disposed','disposecancelled','linkedchartinvoked','beforedrilldown','drilldown','beforedrillup','drillup','drilldowncancelled','drillupcancelled'], + currIndex, + eventName, + eventsLen = fcEvents.length; + for (currIndex = 0; currIndex < eventsLen; currIndex++){ + eventName = 'fcevent' + fcEvents[currIndex][0].toUpperCase() + fcEvents[currIndex].slice(1); + scope[eventName] = '&'; + } + + + fc.directive('fusioncharts', ['$http', function($http) { + return { + scope: scope, + link: function(scope, element, attrs) { + var observeConf = { + // non-data componenet observers + NDCObserver: { + 'width': { + ifExist: false, + observer: function(newVal) { + if (newVal && chartConfigObject.width != newVal) { + chartConfigObject.width = newVal; + chart.resizeTo(scope.width, scope.height); + } + } + }, + 'height': { + ifExist: false, + observer: function(newVal) { + if (newVal && chartConfigObject.height != newVal) { + chartConfigObject.height = newVal; + chart.resizeTo(scope.width, scope.height); + } + } + }, + + 'datasource': { + ifExist: true, + observer: function(newVal) { + if (dataStringStore.dataSource != newVal) { + dataStringStore.dataSource = newVal; + if (chartConfigObject.dataFormat === 'json') { + chartConfigObject.dataSource = JSON.parse(newVal); + setChartData(); + } else { + chartConfigObject.dataSource = newVal; + if (chartConfigObject.dataFormat === 'xml') { + chart.setXMLData(newVal); + } else if (chartConfigObject.dataFormat === 'jsonurl') { + chart.setJSONUrl(newVal); + } else if (chartConfigObject.dataFormat === 'xmlurl') { + chart.setXMLUrl(newVal); + } + } + } + } + }, + 'type': { + ifExist: false, + observer: function(newVal) { + if (newVal && chartConfigObject.type != newVal) { + chartConfigObject.type = newVal; + // createFCChart(); + chart.chartType(newVal); + } + } + }, + 'config': { + ifExist: false, + observer: function(newVal) { + var configObj, + attr, + doReRender = false; + if (newVal) { + configObj = JSON.parse(newVal); + for (attr in configObj) { + // detect the value change + if (chartConfigObject[attr] != configObj[attr]) { + doReRender = true; + chartConfigObject[attr] = configObj[attr]; + } + } + if (doReRender) { + createFCChart(); + } + } + } + } + }, + // data componenet observers + DCObserver: { + 'chart': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.chart != newVal) { + dataStringStore.chart = newVal; + chartConfigObject.dataSource.chart = JSON.parse(newVal); + setChartData(); + } + } + }, + 'data': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.data != newVal) { + dataStringStore.data = newVal; + chartConfigObject.dataSource.data = JSON.parse(newVal); + setChartData(); + } + } + }, + 'categories': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.categories != newVal) { + dataStringStore.categories = newVal; + chartConfigObject.dataSource.categories = JSON.parse(newVal); + setChartData(); + } + } + }, + 'dataset': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.dataset != newVal) { + dataStringStore.dataset = newVal; + chartConfigObject.dataSource.dataset = JSON.parse(newVal); + setChartData(); + } + } + }, + 'linkeddata': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.linkeddata != newVal) { + dataStringStore.linkeddata = newVal; + chartConfigObject.dataSource.linkeddata = JSON.parse(newVal); + setChartData(); + } + } + }, + 'trendlines': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.trendlines != newVal) { + dataStringStore.trendlines = newVal; + chartConfigObject.dataSource.trendlines = JSON.parse(newVal); + setChartData(); + } + } + }, + 'vtrendlines': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.vtrendlines != newVal) { + dataStringStore.vtrendlines = newVal; + chartConfigObject.dataSource.vtrendlines = JSON.parse(newVal); + setChartData(); + } + } + }, + 'annotations': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.annotations != newVal) { + dataStringStore.annotations = newVal; + chartConfigObject.dataSource.annotations = JSON.parse(newVal); + setChartData(); + } + } + }, + 'colorrange': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.colorrange != newVal) { + dataStringStore.colorrange = newVal; + chartConfigObject.dataSource.colorrange = JSON.parse(newVal); + setChartData(); + } + } + }, + 'lineset': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.lineset != newVal) { + dataStringStore.lineset = newVal; + chartConfigObject.dataSource.lineset = JSON.parse(newVal); + setChartData(); + } + } + }, + 'axis': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.axis != newVal) { + dataStringStore.axis = newVal; + chartConfigObject.dataSource.axis = JSON.parse(newVal); + setChartData(); + } + } + }, + 'connectors': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.connectors != newVal) { + dataStringStore.connectors = newVal; + chartConfigObject.dataSource.connectors = JSON.parse(newVal); + setChartData(); + } + } + }, + 'pointers': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.pointers != newVal) { + dataStringStore.pointers = newVal; + chartConfigObject.dataSource.pointers = JSON.parse(newVal); + setChartData(); + } + } + }, + 'value': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.value != newVal) { + dataStringStore.value = newVal; + chartConfigObject.dataSource.value = JSON.parse(newVal); + setChartData(); + } + } + }, + 'processes': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.processes != newVal) { + dataStringStore.processes = newVal; + chartConfigObject.dataSource.processes = JSON.parse(newVal); + setChartData(); + } + } + }, + 'tasks': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.tasks != newVal) { + dataStringStore.tasks = newVal; + chartConfigObject.dataSource.tasks = JSON.parse(newVal); + setChartData(); + } + } + }, + 'rows': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.rows != newVal) { + dataStringStore.rows = newVal; + chartConfigObject.dataSource.rows = JSON.parse(newVal); + setChartData(); + } + } + }, + 'columns': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.columns != newVal) { + dataStringStore.columns = newVal; + chartConfigObject.dataSource.columns = JSON.parse(newVal); + setChartData(); + } + } + }, + 'map': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.map != newVal) { + dataStringStore.map = newVal; + chartConfigObject.dataSource.map = JSON.parse(newVal); + setChartData(); + } + }, + }, + 'markers': { + ifExist: true, + observer: function(newVal) { + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource == "object" && dataStringStore.markers != newVal) { + dataStringStore.markers = newVal; + chartConfigObject.dataSource.markers = JSON.parse(newVal); + setChartData(); + } + } + }, + } + }, + eventsObj = {}, + attribs = Object.keys(attrs), + chart = null, + events = { + '*': function(ev, props) { + if (eventsObj.hasOwnProperty(ev.eventType)) { + eventsObj[ev.eventType](ev, props); + } + } + }, + setDataTimer, + setChartData = function() { + // clear previous dataUpdate timer + if (setDataTimer) { + clearTimeout(setDataTimer); + } + // Update the data with setTimeout + // This will solve the issue of consiquitive data update within very small interval + setDataTimer = setTimeout(function() { + if (chart && chart.setJSONData) { + chart.setJSONData(chartConfigObject.dataSource); + } + }, 0); + + // chart.setJSONData(chartConfigObject.dataSource); + }, + createFCChart = function() { + // dispose if previous chart exists + if (chart && chart.dispose) { + chart.dispose(); + } + chart = new FusionCharts(chartConfigObject); + scope.initialized && scope.initialized({ chart: chart }); + for(currIndex = 0; currIndex < eventsLen ; currIndex++){ + eventName = 'fcevent' + fcEvents[currIndex][0].toUpperCase() + fcEvents[currIndex].slice(1); + // assign all events on chart instance + (function(eventName){ + chart.addEventListener(fcEvents[currIndex], function(event, args){ + scope[eventName] && scope[eventName]({ event:event, args: args }); + }); + })(eventName); + } + /* @todo validate the ready function whether it can be replaced in a better way */ + angular.element(document).ready(function(){ + element.ready(function(){ + // Render the chart only when angular is done compiling the element and DOM. + chart = chart.render(); + scope[attrs.chartobject] = chart; + }); + }); + }, + dataStringStore = {}, + i, + attr, + _eobj, + key, + observableAttr, + chartConfigObject, + configObj, + dataComponent, + eventScopeArr, + l; + + if (attrs.events) { + eventScopeArr = attrs.events.split("."); + l = eventScopeArr.length; + _eobj = scope.$parent; + for (i = 0; i < l; i += 1){ + _eobj = _eobj && _eobj[eventScopeArr[i]]; + } + if (_eobj) { + for (key in _eobj) { + if (_eobj.hasOwnProperty(key)) { + eventsObj[key.toLowerCase()] = _eobj[key]; + } + } + } + } + for (i = 0; i < attribs.length; i++) { + attr = attribs[i]; + if (attr.match(/^on/i)) { + key = attr.slice(2).toLowerCase(); + eventsObj[key] = scope.$parent[attrs[attr]]; + } + } + + + chartConfigObject = { + type: attrs.type, + width: attrs.width, + height: attrs.height, + renderAt: element[0], + id: attrs.chartid, + dataFormat: attrs.dataformat || 'json', + dataSource: {}, + events: events + }; + + + for (observableAttr in observeConf.NDCObserver) { + attrConfig = observeConf.NDCObserver[observableAttr]; + if (attrConfig.ifExist === false || attrs[observableAttr]) { + attrs.$observe(observableAttr, attrConfig.observer); + } + } + + if (attrs.datasource) { + chartConfigObject.dataSource = (chartConfigObject.dataFormat === 'json') ? JSON.parse(attrs.datasource) : attrs.datasource; + dataStringStore.dataSource = attrs.datasource; + } + + for (observableAttr in observeConf.DCObserver) { + attrConfig = observeConf.DCObserver[observableAttr]; + dataComponent = attrs[observableAttr]; + if (dataComponent) { + attrs.$observe(observableAttr, attrConfig.observer); + dataStringStore[observableAttr] = dataComponent; + if (chartConfigObject.dataFormat === 'json' && typeof chartConfigObject.dataSource === "object") { + chartConfigObject.dataSource[observableAttr] = JSON.parse(dataComponent); + } + } else if (attrConfig.ifExist === false) { + attrs.$observe(observableAttr, attrConfig.observer); + } + } + + // add configurations from config + if (attrs.config) { + configObj = JSON.parse(attrs.config); + for (attr in configObj) { + chartConfigObject[attr] = configObj[attr]; + } + } + + createFCChart(); + + scope.$on('$destroy', function () { + // on destroy free used resources to avoid memory leaks + if (chart && chart.dispose) { + chart.dispose(); + } + }); + } + }; + }]); +}()); diff --git a/graphs/fusioncharts-suite-xt/integrations/angularjs/js/angular-fusioncharts.min.js b/graphs/fusioncharts-suite-xt/integrations/angularjs/js/angular-fusioncharts.min.js new file mode 100755 index 0000000000000000000000000000000000000000..fd16208b866d3ab519525ebb160d47d032fa78a1 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/angularjs/js/angular-fusioncharts.min.js @@ -0,0 +1,3 @@ +/*! angularjs-fusioncharts - v4.0.2*/ + +!function(){var a,b,c=angular.module("ng-fusioncharts",[]),d={width:"@",height:"@",data:"@",dataset:"@",categories:"@",chart:"@",linkeddata:"@",trendlines:"@",vtrendlines:"@",annotations:"@",colorrange:"@",lineset:"@",axis:"@",connectors:"@",pointers:"@",value:"@",processes:"@",tasks:"@",rows:"@",columns:"@",map:"@",markers:"@",initialized:"&"},e=["beforelinkeditemopen","linkeditemopened","beforelinkeditemclose","linkeditemclosed","printreadystatechange","dataloadrequestcompleted","dataloaderror","dataloadcancelled","dataloadrequestcancelled","dataupdated","dataupdatecancelled","dataloadrequested","beforedataupdate","realtimeupdatecomplete","chartcleared","slicingend","slicingstart","entityrollout","entityrollover","entityclick","connectorrollover","connectorrollout","connectorclick","markerrollover","markerrollout","markerclick","pagenavigated","rotationend","rotationstart","centerlabelrollover","centerlabelrollout","centerlabelclick","centerlabelchanged","chartclick","chartmousemove","chartrollover","chartrollout","backgroundloaded","backgroundloaderror","legenditemclicked","legenditemrollover","legenditemrollout","logorollover","logorollout","logoclick","logoloaded","logoloaderror","beforeexport","exported","exportcancelled","beforeprint","printcomplete","printcancelled","datalabelclick","datalabelrollover","datalabelrollout","scrollstart","scrollend","onscroll","zoomreset","zoomedout","zoomedin","zoomed","zoommodechanged","pinned","datarestored","beforedatasubmit","datasubmiterror","datasubmitted","datasubmitcancelled","chartupdated","nodeadded","nodeupdated","nodedeleted","connectoradded","connectorupdated","connectordeleted","labeladded","labeldeleted","selectionremoved","selectionstart","selectionend","labelclick","labelrollover","labelrollout","labeldragstart","labeldragend","dataplotdragstart","dataplotdragend","processclick","processrollover","processrollout","categoryclick","categoryrollover","categoryrollout","milestoneclick","milestonerollover","milestonerollout","charttypechanged","overlaybuttonclick","loaded","rendered","drawcomplete","rendercomplete","datainvalid","dataxmlinvalid","dataloaded","nodatatodisplay","legendpointerdragstart","legendpointerdragstop","legendrangeupdated","alertcomplete","realtimeupdateerror","dataplotrollover","dataplotrollout","dataplotclick","linkclicked","beforerender","rendercancelled","beforeresize","resized","resizecancelled","beforedispose","disposed","disposecancelled","linkedchartinvoked","beforedrilldown","drilldown","beforedrillup","drillup","drilldowncancelled","drillupcancelled"],f=e.length;for(a=0;a<f;a++)b="fcevent"+e[a][0].toUpperCase()+e[a].slice(1),d[b]="&";c.directive("fusioncharts",["$http",function(c){return{scope:d,link:function(c,d,g){var h,i,j,k,l,m,n,o,p,q,r,s={NDCObserver:{width:{ifExist:!1,observer:function(a){a&&n.width!=a&&(n.width=a,v.resizeTo(c.width,c.height))}},height:{ifExist:!1,observer:function(a){a&&n.height!=a&&(n.height=a,v.resizeTo(c.width,c.height))}},datasource:{ifExist:!0,observer:function(a){z.dataSource!=a&&(z.dataSource=a,"json"===n.dataFormat?(n.dataSource=JSON.parse(a),x()):(n.dataSource=a,"xml"===n.dataFormat?v.setXMLData(a):"jsonurl"===n.dataFormat?v.setJSONUrl(a):"xmlurl"===n.dataFormat&&v.setXMLUrl(a)))}},type:{ifExist:!1,observer:function(a){a&&n.type!=a&&(n.type=a,v.chartType(a))}},config:{ifExist:!1,observer:function(a){var b,c,d=!1;if(a){b=JSON.parse(a);for(c in b)n[c]!=b[c]&&(d=!0,n[c]=b[c]);d&&y()}}}},DCObserver:{chart:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.chart!=a&&(z.chart=a,n.dataSource.chart=JSON.parse(a),x())}},data:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.data!=a&&(z.data=a,n.dataSource.data=JSON.parse(a),x())}},categories:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.categories!=a&&(z.categories=a,n.dataSource.categories=JSON.parse(a),x())}},dataset:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.dataset!=a&&(z.dataset=a,n.dataSource.dataset=JSON.parse(a),x())}},linkeddata:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.linkeddata!=a&&(z.linkeddata=a,n.dataSource.linkeddata=JSON.parse(a),x())}},trendlines:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.trendlines!=a&&(z.trendlines=a,n.dataSource.trendlines=JSON.parse(a),x())}},vtrendlines:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.vtrendlines!=a&&(z.vtrendlines=a,n.dataSource.vtrendlines=JSON.parse(a),x())}},annotations:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.annotations!=a&&(z.annotations=a,n.dataSource.annotations=JSON.parse(a),x())}},colorrange:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.colorrange!=a&&(z.colorrange=a,n.dataSource.colorrange=JSON.parse(a),x())}},lineset:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.lineset!=a&&(z.lineset=a,n.dataSource.lineset=JSON.parse(a),x())}},axis:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.axis!=a&&(z.axis=a,n.dataSource.axis=JSON.parse(a),x())}},connectors:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.connectors!=a&&(z.connectors=a,n.dataSource.connectors=JSON.parse(a),x())}},pointers:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.pointers!=a&&(z.pointers=a,n.dataSource.pointers=JSON.parse(a),x())}},value:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.value!=a&&(z.value=a,n.dataSource.value=JSON.parse(a),x())}},processes:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.processes!=a&&(z.processes=a,n.dataSource.processes=JSON.parse(a),x())}},tasks:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.tasks!=a&&(z.tasks=a,n.dataSource.tasks=JSON.parse(a),x())}},rows:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.rows!=a&&(z.rows=a,n.dataSource.rows=JSON.parse(a),x())}},columns:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.columns!=a&&(z.columns=a,n.dataSource.columns=JSON.parse(a),x())}},map:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.map!=a&&(z.map=a,n.dataSource.map=JSON.parse(a),x())}},markers:{ifExist:!0,observer:function(a){"json"===n.dataFormat&&"object"==typeof n.dataSource&&z.markers!=a&&(z.markers=a,n.dataSource.markers=JSON.parse(a),x())}}}},t={},u=Object.keys(g),v=null,w={"*":function(a,b){t.hasOwnProperty(a.eventType)&&t[a.eventType](a,b)}},x=function(){h&&clearTimeout(h),h=setTimeout(function(){v&&v.setJSONData&&v.setJSONData(n.dataSource)},0)},y=function(){for(v&&v.dispose&&v.dispose(),v=new FusionCharts(n),c.initialized&&c.initialized({chart:v}),a=0;a<f;a++)b="fcevent"+e[a][0].toUpperCase()+e[a].slice(1),function(b){v.addEventListener(e[a],function(a,d){c[b]&&c[b]({event:a,args:d})})}(b);angular.element(document).ready(function(){d.ready(function(){v=v.render(),c[g.chartobject]=v})})},z={};if(g.events){for(q=g.events.split("."),r=q.length,k=c.$parent,i=0;i<r;i+=1)k=k&&k[q[i]];if(k)for(l in k)k.hasOwnProperty(l)&&(t[l.toLowerCase()]=k[l])}for(i=0;i<u.length;i++)j=u[i],j.match(/^on/i)&&(l=j.slice(2).toLowerCase(),t[l]=c.$parent[g[j]]);n={type:g.type,width:g.width,height:g.height,renderAt:d[0],id:g.chartid,dataFormat:g.dataformat||"json",dataSource:{},events:w};for(m in s.NDCObserver)attrConfig=s.NDCObserver[m],(!1===attrConfig.ifExist||g[m])&&g.$observe(m,attrConfig.observer);g.datasource&&(n.dataSource="json"===n.dataFormat?JSON.parse(g.datasource):g.datasource,z.dataSource=g.datasource);for(m in s.DCObserver)attrConfig=s.DCObserver[m],p=g[m],p?(g.$observe(m,attrConfig.observer),z[m]=p,"json"===n.dataFormat&&"object"==typeof n.dataSource&&(n.dataSource[m]=JSON.parse(p))):!1===attrConfig.ifExist&&g.$observe(m,attrConfig.observer);if(g.config){o=JSON.parse(g.config);for(j in o)n[j]=o[j]}y(),c.$on("$destroy",function(){v&&v.dispose&&v.dispose()})}}}])}(); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/angularjs/sample/README.md b/graphs/fusioncharts-suite-xt/integrations/angularjs/sample/README.md new file mode 100755 index 0000000000000000000000000000000000000000..946b5c45fc72a1bd064bb8b412b633bc0cad39a9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/angularjs/sample/README.md @@ -0,0 +1,2 @@ +# AngularJs FusionCharts +We have created multiple samples using **AngularJs FusionCharts** for your reference. To view the samples click [here](http://fusioncharts.github.io/angularjs-fusioncharts/#/demos/ex1 "AngularJs FusionCharts"). \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.dll new file mode 100755 index 0000000000000000000000000000000000000000..1703c1d88b9584f08a851a5f0c296df3cd6d2a99 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.pdb new file mode 100755 index 0000000000000000000000000000000000000000..dd9b039b0d0154ef1f9ff3e1d841b88492c5d826 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.dll new file mode 100755 index 0000000000000000000000000000000000000000..b6a3d8d8bf5c00e2291a7ec54b28b89b10a84e30 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.pdb new file mode 100755 index 0000000000000000000000000000000000000000..52037ea07ea6222abd84f328d4d3707f91c015db Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.dll new file mode 100755 index 0000000000000000000000000000000000000000..f24325749f93dd8a59f4ee1aadb94ccaf0acef2a Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.pdb new file mode 100755 index 0000000000000000000000000000000000000000..48dc53c9398db9eaabc7ac53f93424ff46ae1956 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.dll new file mode 100755 index 0000000000000000000000000000000000000000..3f08ef23a542d686c98f91f436ffbac207ba6870 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.pdb new file mode 100755 index 0000000000000000000000000000000000000000..d7550892d9aa6e2932c1aef0a4994e8dc1126eda Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.dll new file mode 100755 index 0000000000000000000000000000000000000000..b56070670e7362f3eafcf718782a4fe3058679fc Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.pdb new file mode 100755 index 0000000000000000000000000000000000000000..b286d8a55f58eabaac654fc485ad5ff7183cd1a4 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Gdi.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Gdi.pdb new file mode 100755 index 0000000000000000000000000000000000000000..07370b98ef81888784777f45a3adbaa176d2ef84 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Gdi.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.dll new file mode 100755 index 0000000000000000000000000000000000000000..b214d4287f5392d8c1b2348705f0719f360607bc Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.pdb new file mode 100755 index 0000000000000000000000000000000000000000..1b19a1d245dce04c1a7aed90df2d889457e5fb6b Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.dll new file mode 100755 index 0000000000000000000000000000000000000000..d034e634ef3129fb1e5bbc1c6bcf6560d500af57 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.pdb new file mode 100755 index 0000000000000000000000000000000000000000..1f369a6867a3c5339dd72e389a8b55b8923d618e Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Exported_Images/readme.txt b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Exported_Images/readme.txt new file mode 100755 index 0000000000000000000000000000000000000000..3732177719dfcd8d936861403ff7583489b03730 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Exported_Images/readme.txt @@ -0,0 +1,3 @@ +FusionCharts ASP.NET Export Handler +========================================= +This folder contains exported images. Please make sure to set IUSR user read/write permission into this folder. diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/FCExporter.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/FCExporter.aspx new file mode 100755 index 0000000000000000000000000000000000000000..baf8680175283c05f9d2039da279d6d09e1702bf --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/FCExporter.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FCExporter.aspx.cs" Inherits="FCExporter" validateRequest="false" %> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/FCExporter.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/FCExporter.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..e3a5a7e592d9dd5cabdaad0e9e4bbd2484adb655 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/FCExporter.aspx.cs @@ -0,0 +1,1934 @@ +/** + * + * FusionCharts Exporter is an ASP.NET C# script that handles + * FusionCharts (since v3.1) Server Side Export feature. + * This in conjuncture with various export classes would + * process FusionCharts Export Data POSTED to it from FusionCharts + * and convert the data to image or PDF and subsequently save to the + * server or response back as http response to client side as download. + * + * This script might be called as the FusionCharts Exporter - main module + * + * @author FusionCharts + * @description FusionCharts Exporter (Server-Side - ASP.NET C#) + * @version 4.0 [ 21 June 2016 ] + * + */ +/** + * ChangeLog / Version History: + * ---------------------------- + * + * 4.0.1 [25 Aug 2016] + * - fixes for throwing Null pointer Exception while exporting as jpeg in save export action + * 4.0 [ 21 June 2016 ] + * - Support export if direct image base64 encoded data is provided (for FusionCharts v 3.11.0 or more). + * - Support for download of xls format + * - Export with images suppported for every format including svg if browser is capable of sending the image data + * as base64 data. + * + * 3.0 [ 18 July 2014 ] + * - Support for JavaScript Chart (SVG) + * + * 2.0 [ 12 February 2009 ] + * - Integrated with new Export feature of FusionCharts 3.1 + * - can save to server side directory + * - can provide download or open in popup window. + * - can report back to chart + * - can save as PDF/JPG/PNG/GIF + * + * 1.0 [ 16 August 2007 ] + * - can process chart data to jpg image and response back to client side as download. + * + */ +/** + * Copyright (c) 2016 InfoSoft Global Private Limited. All Rights Reserved + * + */ +/** + * GENERAL NOTES + * ------------- + * + * Chart would POST export data (which consists of encoded image data stream, + * width, height, background color and various other export parameters like + * exportFormat, exportFileName, exportAction, exportTargetWindow) to this script. + * + * The script would process this data using appropriate resource classes & build + * export binary (PDF/image) + * + * It either saves the binary as file to a server side directory or push it as + * Download to client side. + * + * + * ISSUES + * ------ + * Q. What if someone wishes to open in the same page where the chart existed as postback + * replacing the old page? + * + * A. Not directly supported using any chart attribute or parameter but can do by + * removing/commenting the line containing 'header( content-disposition ...' + * + */ +/** + * + * @requires FCIMGGenerator Class to export FusionCharts image data to JPG, PNG, GIF binary + * @requires FCPDFGenerator Class to export FusionCharts image data to PDF binary + * + */ + +using System; +using System.IO; +using System.Web; +using System.Drawing; +using System.Collections; +using System.Drawing.Imaging; +using System.Text.RegularExpressions; +using SharpVectors.Converters; +using System.Web.Script.Serialization; +using System.Collections.Generic; + +/// <summary> +/// FusionCharts Exporter is an ASP.NET C# script that handles +/// FusionCharts (since v3.1) Server Side Export feature. +/// This in conjuncture with other resource classses would +/// process FusionCharts Export Data POSTED to it from FusionCharts +/// and convert the data to an image or a PDF. Subsequently, it would save +/// to the server or respond back as an HTTP response to client side as download. +/// +/// This script might be called as the FusionCharts Exporter - main module +/// </summary> +/// +public partial class FCExporter : System.Web.UI.Page +{ + + + /// <summary> + /// IMPORTANT: You need to change the location of folder where + /// the exported chart images/PDFs will be saved on your + /// server. Please specify the path to a folder with + /// write permissions in the constant SAVE_PATH below. + /// + /// Please provide the path as per ASP.NET path conventions. + /// You can use relative or absolute path. + /// + /// Special Cases: + /// '/' means 'wwwroot' directory. + /// '. /' ( without the space after .) is the directory where the FCExporter.aspx file recides. + /// + /// Absolute Path : + /// + /// can be like this : "C:\\myFolders\\myImages" + /// ( Please never use single backslash as that would stop execution of the code instantly) + /// or "C:/myFolders/myImages" + /// + /// You may have a // or \ at end : "C:\\myFolders\\myImages\\" or "C:/myFolders/myImages/" + /// + /// You can also have mixed slashes : "C:\\myFolders/myImages" + /// + /// + /// </summary> + /// directory where the FCExporter.aspx file recides + private const string SAVE_PATH = "./Exported_Images/"; + + /// <summary> + /// IMPORTANT: This constant HTTP_URI stores the HTTP reference to + /// the folder where exported charts will be saved. + /// Please enter the HTTP representation of that folder + /// in this constant e.g., http://www.yourdomain.com/images/ + /// </summary> + private const string HTTP_URI = "Exported_Images/"; + + /// <summary> + /// OVERWRITEFILE sets whether the export handler would overwrite an existing file + /// the newly created exported file. If it is set to false the export handler would + /// not overwrite. In this case, if INTELLIGENTFILENAMING is set to true the handler + /// would add a suffix to the new file name. The suffix is a randomly generated GUID. + /// Additionally, you add a timestamp or a random number as additional suffix. + /// </summary> + private bool OVERWRITEFILE = false; + private bool INTELLIGENTFILENAMING = true; + private string FILESUFFIXFORMAT = "TIMESTAMP";// // value can be either 'TIMESTAMP' or 'RANDOM' + + + /// <summary> + /// This is a constant list of the MIME types related to each export format this resource handles + /// The value is semicolon separated key value pair for each format + /// Each key is the format and value is the MIME type + /// </summary> + private const string MIMETYPES = "pdf=application/pdf;jpg=image/jpeg;jpeg=image/jpeg;gif=image/gif;png=image/png;svg=image/svg+xml;xls=application/vnd.ms-excel"; + + /// <summary> + /// This is a constant list of all the file extensions for the export formats + /// The value is semicolon separated key value pair for each format + /// Each key is the format and value is the file extension + /// </summary> + private const string EXTENSIONS = "pdf=pdf;jpg=jpg;jpeg=jpg;gif=gif;png=png;svg=svg;xls=xls"; + + /// <summary> + /// Lists the default exportParameter values taken, if not provided by chart + /// </summary> + private const string DEFAULTPARAMS = "exportfilename=FusionCharts;exportformat=PDF;exportaction=download;exporttargetwindow=_self"; + + /// <summary> + /// Stores server notices, if any as string [ to be sent back to chart after save ] + /// </summary> + private string notices = ""; + /// <summary> + /// Whether the export action is download. Default value. Would change as per setting retrieved from chart. + /// </summary> + private bool isDownload = true; + + /// <summary> + /// DOMId of the chart + /// </summary> + private string DOMId; + + public bool IsSVGData { get; set; } + + public bool IsLatest; + + /// <summary> + /// Stores SVG information. + /// </summary> + private TextReader svgData; + + /// <summary> + /// Stores SVG in-memory file. + /// </summary> + private MemoryStream svgStream; + + /// <summary> + /// The main function that handles all Input - Process - Output of this Export Architecture + /// </summary> + /// <param name="sender">FusionCharts chart SWF</param> + /// <param name="e"></param> + protected void Page_Load(object sender, EventArgs e) + { + + /** + * Retrieve export data from POST Request sent by chart + * Parse the Request stream into export data readable by this script + */ + Hashtable exportData = parseExportRequestStream(); + + // process export data and get the processed data (image/PDF) to be exported + MemoryStream exportObject = null; + if (!IsLatest) + { + if (IsSVGData) + { + if (exportData["encodedImgData"] != null && !string.IsNullOrEmpty(exportData["encodedImgData"].ToString()) && ((Hashtable)exportData["parameters"])["exportformat"].ToString() == "svg") + { + exportObject = exportProcessor(((Hashtable)exportData["parameters"])["exportformat"].ToString(), exportData["svg"].ToString(), (Hashtable)exportData["parameters"], exportData["encodedImgData"].ToString()); + } + else + { + exportObject = exportProcessor(((Hashtable)exportData["parameters"])["exportformat"].ToString(), "svg", (Hashtable)exportData["parameters"]); + + } + } + else + { + exportObject = exportProcessor(((Hashtable)exportData["parameters"])["exportformat"].ToString(), exportData["stream"].ToString(), (Hashtable)exportData["meta"]); + } + + + /* + * Send the export binary to output module which would either save to a server directory + * or send the export file to download. Download terminates the process while + * after save the output module sends back export status + */ + //object exportedStatus = IsSVGData ? outputExportObject(exportObject, exportData) : outputExportObject(exportObject, (Hashtable)exportData["parameters"]); + object exportedStatus = outputExportObject(exportObject, (Hashtable)exportData["parameters"]); + + // Dispose export object + exportObject.Close(); + exportObject.Dispose(); + + /* + * Build Appropriate Export Status and send back to chart by flushing the + * procesed status to http response. This returns status back to chart. + * [ This is not applicable when Download action took place ] + */ + flushStatus(exportedStatus, (Hashtable)exportData["meta"]); + } + } + private void convertRAWImageDataToFile(string imageData, string parameters) + { + string fileName = parameters.Split('|')[0].Split('=')[1], + extention = parameters.Split('|')[1].Split('=')[1], + exportAction = parameters.Split('|')[2].Split('=')[1], + fullFileName = fileName + "." + extention, + filLocation = HttpContext.Current.Server.MapPath("~/Exported_Images/" + fullFileName), + contentType = getMime(extention); + + byte[] bytes = System.Convert.FromBase64String(imageData.Split(',')[1]); + File.WriteAllBytes(filLocation, bytes); + if (exportAction == "download") { + Response.ClearContent(); + Response.AddHeader("Content-Disposition", "attachment; filename=" + fullFileName); + Response.ContentType = contentType; + Response.TransmitFile(filLocation); + Response.End(); + } + } + + private string stichImageToSVGAndGetString(string svgData, string imageData) + { + return stichImageToSVG(svgData, imageData); + } + + /// <summary> + /// Parses POST stream from chart and builds a Hashtable containing + /// export data and parameters in a format readable by other functions. + /// The Hashtable contains keys 'stream' (contains encoded + /// image data) ; 'meta' ( Hashtable with 'width', 'height' and 'bgColor' keys) ; + /// and 'parameters' ( Hashtable of all export parameters from chart as keys, like - exportFormat, + /// exportFileName, exportAction etc.) + /// </summary> + /// <returns>Hashtable of processed export data and parameters.</returns> + private Hashtable parseExportRequestStream() + { + // store all export data + Hashtable exportData = new Hashtable(); + string svgStr = ""; + + IsSVGData = false; + if (Request["stream_type"] == "IMAGE-DATA") + { + this.convertRAWImageDataToFile(Request["stream"], Request["parameters"]); + IsLatest = true; + } + else if (Request["stream_type"] == "svg") + { + IsSVGData = true; + exportData["svg"] = Request["stream"]; + + // Added custom parameter + exportData["exporttargetwindow"] = "_self"; + + //Get all export parameters into a Hastable + Hashtable parameters = parseParams(Request["parameters"]); //parseParams("exportaction=" + exportData["exportaction"].ToString()); + exportData["parameters"] = parameters; + + svgStr = exportData["svg"].ToString(); + svgStr = svgStr.Substring(0, svgStr.IndexOf("</svg>") + 6); + // fix to replace string occurred in some data source specifically excel + // need to look for a more proper method which covers all such situations + svgStr = svgStr.Replace(" ", " "); + exportData["svg"] = svgStr; + + if (Request["encodedImgData"] != null) + { + exportData["encodedImgData"] = Request["encodedImgData"]; + } + + byte[] svg = System.Text.Encoding.UTF8.GetBytes(exportData["svg"].ToString()); + + if (exportData["encodedImgData"] != null && !string.IsNullOrEmpty(exportData["encodedImgData"].ToString())) + { + svgStream = stichImageToSVGAndGetStream(exportData["svg"].ToString(), exportData["encodedImgData"].ToString()); + svgData = new StringReader(stichImageToSVGAndGetString(exportData["svg"].ToString(), exportData["encodedImgData"].ToString())); + } + else + { + svgStream = new MemoryStream(svg); + svgData = new StreamReader(svgStream); + } + } + // If Flash Charts + else + { + //String of compressed image data + exportData["stream"] = Request["stream"]; + + //Halt execution if image stream is not provided. + if (Request["stream"] == null || Request["stream"].Trim() == "") raise_error("100", true); + + //Get all export parameters into a Hastable + Hashtable parameters = parseParams(Request["parameters"]); + exportData["parameters"] = parameters; + + } + + //get width and height of the chart + Hashtable meta = new Hashtable(); + + meta["width"] = Request["meta_width"]; + //Halt execution on error + if (Request["meta_width"] == null || Request["meta_width"].Trim() == "") raise_error("101", true); + + meta["height"] = Request["meta_height"]; + //Halt execution on error + if (Request["meta_height"] == null || Request["meta_height"].Trim() == "") raise_error("101", true); + + + //Background color of chart + meta["bgcolor"] = Request["meta_bgColor"]; + if (meta["bgcolor"] == null || meta["bgcolor"].ToString().Trim() == "") + { + // Send notice if BgColor is not provided + raise_error(" Background color not specified. Taking White (FFFFFF) as default background color."); + // Set White as Default Background color + meta["bgcolor"] = "FFFFFF"; + } + + // DOMId of the chart + meta["DOMId"] = Request["meta_DOMId"] == null ? "" : Request["meta_DOMId"]; + DOMId = meta["DOMId"].ToString(); + + exportData["meta"] = meta; + + return exportData; + } + + private string stichImageToSVG(string svgData, string imageData) + { + JavaScriptSerializer ser = new JavaScriptSerializer(); + var data = ser.Deserialize<Dictionary<string, Dictionary<string, string>>>(imageData); + + List<string> rawImageDataArray = new List<string>(); + List<string> hrefArray = new List<string>(); + + // /(<image[^>]*xlink:href *= *[\"']?)([^\"']*)/i + Regex regex = new Regex("<image.+?xlink:href=\"(.+?)\".+?/?>"); + int counter = 0; + foreach (Match match in regex.Matches(svgData)) + { + string[] temp1 = match.Value.Split(new string[] { "xlink:href=" }, StringSplitOptions.None); + hrefArray.Add(temp1[1].Split('"')[1]); + string[] imageNameArray = hrefArray[counter].Split('/'); + rawImageDataArray.Add(getImageData(data, imageNameArray[imageNameArray.Length - 1])); + counter += 1; + } + for (int index = 0; index <= rawImageDataArray.Count - 1; index++) + { + svgData = svgData.Replace(hrefArray[index], rawImageDataArray[index]); + } + + return svgData; + } + + // <summary> + // Get image data from the json object Request["encodedImgData"]. + // </summary> + // <param name="imageData">(Dictionary<string, Dictionary<string, string>>) all image Image data as a combined object</param> + // <param name="imageName">(string) Image Name</param> + // <returns></returns> + private string getImageData(Dictionary<string, Dictionary<string, string>> imageData, string imageName) + { + string data = ""; + foreach (string key in imageData.Keys) + { + if ((imageData[key]["name"] + "." + imageData[key]["type"]) == imageName) + { + data = imageData[key]["encodedData"]; + break; // TODO: might not be correct. Was : Exit For + } + } + + + return data; + } + + /// <summary> + /// Parse export 'parameters' string into a Hashtable + /// Also synchronise default values from defaultparameterValues Hashtable + /// </summary> + /// <param name="strParams">A string with parameters (key=value pairs) separated by | (pipe)</param> + /// <returns>Hashtable containing parsed key = value pairs.</returns> + private Hashtable parseParams(string strParams) + { + + //default parameter values + Hashtable defaultParameterValues = bang(DEFAULTPARAMS); + + // get parameters + Hashtable parameters = bang(strParams, new char[] { '|', '=' }); + + // sync with default values + // iterate through each default parameter value + foreach (DictionaryEntry param in defaultParameterValues) + { + // if a parameter from the defaultParameterValues Hashtable is not present + // in the parameters hashtable take the parameter and value from default + // parameter hashtable and add it to params hashtable + // This is needed to ensure proper export + if (parameters[param.Key] == null) parameters[param.Key] = param.Value.ToString(); + } + + // set a global flag which denotes whether the export is download or not + // this is needed in many a functions + isDownload = parameters["exportaction"].ToString().ToLower() == "download"; + + + // return parameters + return parameters; + + + } + + private MemoryStream stichImageToSVGAndGetStream(string svgData, string imageData) + { + + svgData = stichImageToSVG(svgData, imageData); + byte[] svg = System.Text.Encoding.UTF8.GetBytes(svgData.ToString()); + return new MemoryStream(svg); + } + + + /// <summary> + /// Get Export data from and build the export binary/objct. + /// </summary> + /// <param name="strFormat">(string) Export format</param> + /// <param name="stream">(string) Export image data in FusionCharts compressed format</param> + /// <param name="meta">{Hastable)Image meta data in keys "width", "heigth" and "bgColor"</param> + /// <returns></returns> + + private MemoryStream exportProcessor(string strFormat, string stream, Hashtable meta, string imageData) + { + return stichImageToSVGAndGetStream(stream, imageData); + } + + private MemoryStream exportProcessor(string strFormat, string stream, Hashtable meta) + { + + strFormat = strFormat.ToLower(); + // initilize memeory stream object to store output bytes + MemoryStream exportObjectStream = new MemoryStream(); + + // Handle Export class as per export format + switch (strFormat) + { + case "pdf": + if (!IsSVGData) + { + // Instantiate Export class for PDF, build Binary stream and store in stream object + FCPDFGenerator PDFGEN = new FCPDFGenerator(stream, meta["width"].ToString(), meta["height"].ToString(), meta["bgcolor"].ToString()); + exportObjectStream = PDFGEN.getBinaryStream(strFormat); + } + else + { + exportObjectStream = GetJSImage(meta, true); + } + + break; + case "jpg": + case "jpeg": + case "png": + case "gif": + if (!IsSVGData) + { + // Instantiate Export class for Images, build Binary stream and store in stream object + FCIMGGenerator IMGGEN = new FCIMGGenerator(stream, meta["width"].ToString(), meta["height"].ToString(), meta["bgcolor"].ToString()); + exportObjectStream = IMGGEN.getBinaryStream(strFormat); + } + else + { + exportObjectStream = GetJSImage(meta, false); + } + break; + case "svg": + exportObjectStream = svgStream; + break; + default: + // In case the format is not recognized + raise_error(" Invalid Export Format.", true); + break; + } + + return exportObjectStream; + } + + private MemoryStream GetJSImage(Hashtable exportData, bool processPdf) + { + MemoryStream exportObjectStream = new MemoryStream(); + + //string filename = exportData["filename"].ToString(); + string type = exportData["exportformat"].ToString().ToLower(); + + if (processPdf) + { + type = "jpg"; + } + + SharpVectors.Renderers.Wpf.WpfDrawingSettings ds = new SharpVectors.Renderers.Wpf.WpfDrawingSettings(); + + StreamSvgConverter ssc = new StreamSvgConverter(ds); + ssc.SaveXaml = false; + ssc.SaveZaml = false; + + ImageEncoderType encoder = ImageEncoderType.JpegBitmap; + + switch (type) + { + case "png": + encoder = ImageEncoderType.PngBitmap; + break; + case "jpeg": + encoder = ImageEncoderType.JpegBitmap; + break; + } + + ssc.EncoderType = encoder; + ssc.SaveXaml = false; + + if (ssc.Convert(svgData, exportObjectStream)) + { + + if (processPdf) + { + FCJSPDFGenerator PDFGEN = new FCJSPDFGenerator(true, exportObjectStream, ssc.Drawing.Bounds.Width.ToString(), ssc.Drawing.Bounds.Height.ToString()); + exportObjectStream = PDFGEN.getBinaryStream(type); + } + } + + svgData.Close(); + svgData.Dispose(); + svgStream.Close(); + svgStream.Dispose(); + + return exportObjectStream; + + } + + /// <summary> + /// Checks whether the export action is download or save. + /// If action is 'download', send export parameters to 'setupDownload' function. + /// If action is not-'download', send export parameters to 'setupServer' function. + /// In either case it gets exportSettings and passes the settings along with + /// processed export binary (image/PDF) to the output handler function if the + /// export settings return a 'ready' flag set to 'true' or 'download'. The export + /// process would stop here if the action is 'download'. In the other case, + /// it gets back success status from output handler function and returns it. + /// </summary> + /// <param name="exportObj">Export binary/object in memery stream</param> + /// <param name="exportParams">Hashtable of export parameters</param> + /// <returns>Export success status ( filename if success, false if not)</returns> + private object outputExportObject(MemoryStream exportObj, Hashtable exportParams) + { + //pass export paramters and get back export settings as per export action + Hashtable exportActionSettings = (isDownload ? setupDownload(exportParams) : setupServer(exportParams)); + + // set default export status to true + bool status = true; + + // filepath returned by server setup would be a string containing the file path + // where the export file is to be saved. + // If filepath is a boolean (i.e. false) the server setup must have failed. Hence, terminate process. + if (exportActionSettings["filepath"] is bool) + { + status = false; + raise_error(" Failed to export.", true); + } + else + { + // When 'filepath' is a sting write the binary to output stream + try + { + // Write export binary stream to output stream + Stream outStream = (Stream)exportActionSettings["outStream"]; + exportObj.WriteTo(outStream); + outStream.Flush(); + outStream.Close(); + exportObj.Close(); + } + catch (ArgumentNullException e) + { + raise_error(" Failed to export. Error:" + e.Message); + status = false; + } + catch (ObjectDisposedException e) + { + raise_error(" Failed to export. Error:" + e.Message); + status = false; + } + + + if (isDownload) + { + // If 'download'- terminate imediately + // As nothing is to be written to response now. + Response.End(); + } + + } + + // This is the response after save action + // If status remains true return the 'filepath'. Otherwise return false to denote failure. + return (status ? exportActionSettings["filepath"] : false); + + + } + /// <summary> + /// Flushes exported status message/or any status message to the chart or the output stream. + /// It parses the exported status through parser function parseExportedStatus, + /// builds proper response string using buildResponse function and flushes the response + /// string to the output stream and terminates the program. + /// </summary> + /// <param name="filename">Name of the exported file or false on failure</param> + /// <param name="meta">Image's meta data</param> + /// <param name="msg">Additional messages</param> + private void flushStatus(object filename, Hashtable meta, string msg) + { + // Process and flush message to response stream and terminate + Response.Output.Write(buildResponse(parseExportedStatus(filename, meta, msg))); + Response.Flush(); + Response.End(); + } + + /// <summary> + /// Flushes exported status message/or any status message to the chart or the output stream. + /// It parses the exported status through parser function parseExportedStatus, + /// builds proper response string using buildResponse function and flushes the response + /// string to the output stream and terminates the program. + /// </summary> + /// <param name="filename">Name of the exported file or false on failure</param> + /// <param name="meta">Image's meta data</param> + /// <param name="meta"></param> + private void flushStatus(object filename, Hashtable meta) + { + flushStatus(filename, meta, ""); + } + + + /// <summary> + /// Parses the exported status and builds an array of export status information. As per + /// status it builds a status array which contains statusCode (0/1), statusMesage, fileName, + /// width, height and notice in some cases. + /// </summary> + /// <param name="filename">exported status ( false if failed/error, filename as stirng if success)</param> + /// <param name="meta">Hastable containing meta descriptions of the chart like width, height</param> + /// <param name="msg">custom message to be added as statusMessage.</param> + /// <returns></returns> + private ArrayList parseExportedStatus(object filename, Hashtable meta, string msg) + { + + ArrayList arrStatus = new ArrayList(); + // get status + bool status = (filename is string ? true : false); + + // add notices + if (notices.Trim() != "") arrStatus.Add("notice=" + notices.Trim()); + + // DOMId of the chart + arrStatus.Add("DOMId=" + (meta["DOMId"]==null? DOMId : meta["DOMId"].ToString())); + + // add width and height + // provide 0 as width and height on failure + if (meta["width"] == null) meta["width"] = "0"; + if (meta["height"] == null) meta["height"] = "0"; + arrStatus.Add("height=" + (status ? meta["height"].ToString() : "0")); + arrStatus.Add("width=" + (status ? meta["width"].ToString() : "0")); + + // add file URI + arrStatus.Add("fileName=" + (status ? (Regex.Replace(HTTP_URI, @"([^\/]$)", "${1}/") + filename) : "")); + arrStatus.Add("statusMessage=" + (msg.Trim() != "" ? msg.Trim() : (status ? "Success" : "Failure"))); + arrStatus.Add("statusCode=" + (status ? "1" : "0")); + + return arrStatus; + + } + + + /// <summary> + /// Builds response from an array of status information. Joins the array to a string. + /// Each array element should be a string which is a key=value pair. This array are either joined by + /// a & to build a querystring (to pass to chart) or joined by a HTML <BR> to show neat + /// and clean status informaton in Browser window if download fails at the processing stage. + /// </summary> + /// <param name="arrMsg">Array of string containing status data as [key=value ]</param> + /// <returns>A string to be written to output stream</returns> + private string buildResponse(ArrayList arrMsg) + { + // Join export status array elements into querystring key-value pairs in case of 'save' action + // or separate with <BR> in case of 'download' action. This would make the imformation readable in browser window. + string msg = isDownload ? "" : "&"; + msg += string.Join((isDownload ? "<br>" : "&"), (string[])arrMsg.ToArray(typeof(string))); + return msg; + } + + /// <summary> + /// Finds if a directory is writable + /// </summary> + /// <param name="path">String Path</param> + /// <returns></returns> + private bool isDirectoryWritable(string path) + { + DirectoryInfo info = new DirectoryInfo(path); + return (info.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly; + + } + /// <summary> + /// check server permissions and settings and return ready flag to exportSettings + /// </summary> + /// <param name="exportParams">Various export parameters</param> + /// <returns>Hashtable containing various export settings</returns> + private Hashtable setupServer(Hashtable exportParams) + { + + //get export file name + string exportFile = exportParams["exportfilename"].ToString(); + // get extension related to specified type + string ext = getExtension(exportParams["exportformat"].ToString()); + + Hashtable retServerStatus = new Hashtable(); + + //set server status to true by default + retServerStatus["ready"] = true; + + // Open a FileStream to be used as outpur stream when the file would be saved + FileStream fos; + + // process SAVE_PATH : the path where export file would be saved + // add a / at the end of path if / is absent at the end + + string path = SAVE_PATH; + // if path is null set it to folder where FCExporter.aspx is present + if (path.Trim() == "") path = "./"; + path = Regex.Replace(path, @"([^\/]$)", "${1}/"); + + try + { + // check if the path is relative if so assign the actual path to path + path = HttpContext.Current.Server.MapPath(path); + } + catch (HttpException e) + { + raise_error(e.Message); + } + + + // check whether directory exists + // raise error and halt execution if directory does not exists + if (!Directory.Exists(path)) raise_error(" Server Directory does not exist.", true); + + // check if directory is writable or not + bool dirWritable = isDirectoryWritable(path); + + // build filepath + retServerStatus["filepath"] = exportFile + "." + ext; + + // check whether file exists + if (!File.Exists(path + retServerStatus["filepath"].ToString())) + { + // need to create a new file if does not exists + // need to check whether the directory is writable to create a new file + if (dirWritable) + { + // if directory is writable return with ready flag + + // open the output file in FileStream + fos = File.Open(path + retServerStatus["filepath"].ToString(), FileMode.Create, FileAccess.Write); + + // set the output stream to the FileStream object + retServerStatus["outStream"] = fos; + return retServerStatus; + } + else + { + // if not writable halt and raise error + raise_error("403", true); + } + } + + // add notice that file exists + raise_error(" File already exists."); + + //if overwrite is on return with ready flag + if (OVERWRITEFILE) + { + // add notice while trying to overwrite + raise_error(" Export handler's Overwrite setting is on. Trying to overwrite."); + + // see whether the existing file is writable + // if not halt raising error message + if ((new FileInfo(path + retServerStatus["filepath"].ToString())).IsReadOnly) + raise_error(" Overwrite forbidden. File cannot be overwritten.", true); + + // if writable return with ready flag + // open the output file in FileStream + // set the output stream to the FileStream object + fos = File.Open(path + retServerStatus["filepath"].ToString(), FileMode.Create, FileAccess.Write); + retServerStatus["outStream"] = fos; + return retServerStatus; + } + + // raise error and halt execution when overwrite is off and intelligent naming is off + if (!INTELLIGENTFILENAMING) + { + raise_error(" Export handler's Overwrite setting is off. Cannot overwrite.", true); + } + + raise_error(" Using intelligent naming of file by adding an unique suffix to the exising name."); + // Intelligent naming + // generate new filename with additional suffix + exportFile = exportFile + "_" + generateIntelligentFileId(); + retServerStatus["filepath"] = exportFile + "." + ext; + + // return intelligent file name with ready flag + // need to check whether the directory is writable to create a new file + if (dirWritable) + { + // if directory is writable return with ready flag + // add new filename notice + // open the output file in FileStream + // set the output stream to the FileStream object + raise_error(" The filename has changed to " + retServerStatus["filepath"].ToString() + "."); + fos = File.Open(path + retServerStatus["filepath"].ToString(), FileMode.Create, FileAccess.Write); + + // set the output stream to the FileStream object + retServerStatus["outStream"] = fos; + return retServerStatus; + } + else + { + // if not writable halt and raise error + raise_error("403", true); + } + + // in any unknown case the export should not execute + retServerStatus["ready"] = false; + raise_error(" Not exported due to unknown reasons."); + return retServerStatus; + + } + /// <summary> + /// setup download headers and return ready flag in exportSettings + /// </summary> + /// <param name="exportParams">Various export parameters</param> + /// <returns>Hashtable containing various export settings</returns> + private Hashtable setupDownload(Hashtable exportParams) + { + + //get export filename + string exportFile = exportParams["exportfilename"].ToString(); + //get extension + string ext = getExtension(exportParams["exportformat"].ToString()); + //get mime type + string mime = getMime(exportParams["exportformat"].ToString()); + // get target window + string target = exportParams["exporttargetwindow"].ToString().ToLower(); + + // set content-type header + Response.ContentType = mime; + + // set content-disposition header + // when target is _self the type is 'attachment' + // when target is other than self type is 'inline' + // NOTE : you can comment this line in order to replace present window (_self) content with the image/PDF + Response.AddHeader("Content-Disposition", (target == "_self" ? "attachment" : "inline") + "; filename=\"" + exportFile + "." + ext + "\""); + + // return exportSetting array. 'Ready' key should be set to 'download' + Hashtable retStatus = new Hashtable(); + retStatus["filepath"] = ""; + + // set the output strem to Response stream as the file is going to be downloaded + retStatus["outStream"] = Response.OutputStream; + return retStatus; + + } + + /// <summary> + /// gets file extension checking the export type. + /// </summary> + /// <param name="exportType">(string) export format</param> + /// <returns>string extension name</returns> + private string getExtension(string exportType) + { + // get a Hashtable array of [type=> extension] + // from EXTENSIONS constant + Hashtable extensionList = bang(EXTENSIONS); + exportType = exportType.ToLower(); + + // if extension type is present in $extensionList return it, otherwise return the type + return (extensionList[exportType].ToString() != null ? extensionList[exportType].ToString() : exportType); + } + /// <summary> + /// gets mime type for an export type + /// </summary> + /// <param name="exportType">Export format</param> + /// <returns>Mime type as stirng</returns> + private string getMime(string exportType) + { + // get a Hashtable array of [type=> extension] + // from MIMETYPES constant + Hashtable mimelist = bang(MIMETYPES); + string ext = getExtension(exportType); + + // get mime type asociated to extension + string mime = mimelist[ext].ToString() != null ? mimelist[ext].ToString() : ""; + return mime; + } + + /// <summary> + /// generates a file suffix for a existing file name to apply smart file naming + /// </summary> + /// <returns>a string containing GUID and random number /timestamp</returns> + private string generateIntelligentFileId() + { + // Generate Guid + string guid = System.Guid.NewGuid().ToString("D"); + + // check FILESUFFIXFORMAT type + if (FILESUFFIXFORMAT.ToLower() == "timestamp") + { + // Add time stamp with file name + guid += "_" + DateTime.Now.ToString("ddMMyyyyHHmmssff"); + } + else + { + // Add Random Number with fileName + guid += "_" + (new Random()).Next().ToString(); + } + + return guid; + } + + + /// <summary> + /// Helper function that splits a string containing delimiter separated key value pairs + /// into hashtable + /// </summary> + /// <param name="str">delimiter separated key value pairs</param> + /// <param name="delimiterList">List of delimiters</param> + /// <returns></returns> + private Hashtable bang(string str, char[] delimiterList) + { + Hashtable retArray = new Hashtable(); + // split string as per first delimiter + if (str == null || str.Trim() == "") return retArray; + string[] tmpArray = str.Split(delimiterList[0]); + + + // iterate through each element of split string + for (int i = 0; i < tmpArray.Length; i++) + { + // split each element as per second delimiter + string[] tmp2Array = tmpArray[i].Split(delimiterList[1]); + + if (tmp2Array.Length >= 2) + { + // if the secondary split creats at-least 2 array elements + // make the fisrt element as the key and the second as the value + // of the resulting array + retArray[tmp2Array[0].ToLower()] = tmp2Array[1]; + } + } + return retArray; + + } + private Hashtable bang(string str) + { + return bang(str, new char[2] { ';', '=' }); + } + private void raise_error(string msg) + { + raise_error(msg, false); + } + /// <summary> + /// Error reporter function that has a list of error messages. It can terminate the execution + /// and send successStatus=0 along with a error message. It can also append notice to a global variable + /// and continue execution of the program. + /// </summary> + /// <param name="msg">error code as Integer (referring to the index of the errMessages + /// array containing list of error messages) OR, it can be a string containing the error message/notice</param> + /// <param name="halt">Whether to halt execution</param> + private void raise_error(string msg, bool halt) + { + Hashtable errMessages = new Hashtable(); + + //list of defined error messages + errMessages["100"] = " Insufficient data."; + errMessages["101"] = " Width/height not provided."; + errMessages["102"] = " Insufficient export parameters."; + errMessages["400"] = " Bad request."; + errMessages["401"] = " Unauthorized access."; + errMessages["403"] = " Directory write access forbidden."; + errMessages["404"] = " Export Resource class not found."; + + // Find whether error message is passed in msg or it is a custom error string. + string err_message = ((msg == null || msg.Trim() == "") ? "ERROR!" : + (errMessages[msg] == null ? msg : errMessages[msg].ToString()) + ); + + // Halt executon after flushing the error message to response (if halt is true) + if (halt) + { + flushStatus(false, new Hashtable(), err_message); + + } + // add error to notices global variable + else + { + notices += err_message; + } + + } + + + +} + + +/// <summary> +/// FusionCharts Image Generator Class +/// FusionCharts Exporter - 'Image Resource' handles +/// FusionCharts (since v3.1) Server Side Export feature that +/// helps FusionCharts exported as Image files in various formats. +/// </summary> +public class FCIMGGenerator +{ + //Array - Stores multiple chart export data + private ArrayList arrExportData = new ArrayList(); + //stores number of pages = length of $arrExportData array + private int numPages = 0; + + + /// <summary> + /// Generates bitmap data for the image from a FusionCharts export format + /// the height and width of the original export needs to be specified + /// the default background color can also be specified + /// </summary> + public FCIMGGenerator(string imageData_FCFormat, string width, string height, string bgcolor) + { + setBitmapData(imageData_FCFormat, width, height, bgcolor); + } + + /// <summary> + /// Gets the binary data stream of the image + /// The passed parameter determines the file format of the image + /// to be exported + /// </summary> + public MemoryStream getBinaryStream(string strFormat) + { + + // the image object + Bitmap exportObj = getImageObject(); + + // initiates a new binary data sream + MemoryStream outStream = new MemoryStream(); + + // determines the image format + switch (strFormat) + { + case "jpg": + case "jpeg": + exportObj.Save(outStream, ImageFormat.Jpeg); + break; + case "png": + exportObj.Save(outStream, ImageFormat.Png); + break; + case "gif": + exportObj.Save(outStream,ImageFormat.Gif); + break; + case "tiff": + exportObj.Save(outStream, ImageFormat.Tiff); + break; + default: + exportObj.Save(outStream, ImageFormat.Bmp); + break; + } + exportObj.Dispose(); + + return outStream; + + } + + + /// <summary> + /// Generates bitmap data for the image from a FusionCharts export format + /// the height and width of the original export needs to be specified + /// the default background color can also be specified + /// </summary> + private void setBitmapData(string imageData_FCFormat, string width, string height, string bgcolor) + { + Hashtable chartExportData = new Hashtable(); + chartExportData["width"] = width; + chartExportData["height"] = height; + chartExportData["bgcolor"] = bgcolor; + chartExportData["imagedata"] = imageData_FCFormat; + arrExportData.Add(chartExportData); + numPages++; + } + + /// <summary> + /// Generates bitmap data for the image from a FusionCharts export format + /// the height and width of the original export needs to be specified + /// the default background color should also be specified + /// </summary> + private Bitmap getImageObject(int id) + { + Hashtable rawImageData = (Hashtable)arrExportData[id]; + + // create blank bitmap object which would store image pixel data + Bitmap image = new Bitmap(Convert.ToInt16(rawImageData["width"]), Convert.ToInt16(rawImageData["height"]), System.Drawing.Imaging.PixelFormat.Format24bppRgb); + + // drwaing surface + Graphics gr = Graphics.FromImage(image); + + // set background color + gr.Clear(ColorTranslator.FromHtml("#" + rawImageData["bgcolor"].ToString())); + + string[] rows = rawImageData["imagedata"].ToString().Split(';'); + + for (int yPixel = 0; yPixel < rows.Length; yPixel++) + { + //Split each row into 'color_count' columns. + String[] color_count = rows[yPixel].Split(','); + //Set horizontal row index to 0 + int xPixel = 0; + + for (int col = 0; col < color_count.Length; col++) + { + //Now, if it's not empty, we process it + //Split the 'color_count' into color and repeat factor + String[] split_data = color_count[col].Split('_'); + + //Reference to color + string hexColor = split_data[0]; + //refer to repeat factor + int fRepeat = int.Parse(split_data[1]); + + //If color is not empty (i.e. not background pixel) + if (hexColor != "") + { + //If the hexadecimal code is less than 6 characters, pad with 0 + hexColor = hexColor.Length < 6 ? hexColor.PadLeft(6, '0') : hexColor; + for (int k = 1; k <= fRepeat; k++) + { + + //draw pixel with specified color + image.SetPixel(xPixel, yPixel, ColorTranslator.FromHtml("#" + hexColor)); + //Increment horizontal row count + xPixel++; + } + } + else + { + //Just increment horizontal index + xPixel += fRepeat; + } + } + } + gr.Dispose(); + return image; + + } + + /// <summary> + /// Retreives the bitmap image object + /// </summary> + private Bitmap getImageObject() + { + return getImageObject(0); + } + +} + +/// <summary> +/// FusionCharts Exporter - 'PDF Resource' handles +/// FusionCharts (since v3.1) Server Side Export feature that +/// helps FusionCharts exported as PDF file. +/// </summary> +public class FCJSPDFGenerator +{ + + //Array - Stores multiple chart export data + private ArrayList arrExportData = new ArrayList(); + //stores number of pages = length of $arrExportData array + private int numPages = 1; + + private bool _IsJsChart = false; + private string _ImagePath = ""; + private MemoryStream _ImageStream; + private string _width = "", _height = ""; + + public FCJSPDFGenerator(bool IsJsChart, string fileName, string width, string height) + { + this._IsJsChart = IsJsChart; + this._ImagePath = fileName; + this._width = width; + this._height = height; + + } + + public FCJSPDFGenerator(bool IsJsChart, MemoryStream ImageStream, string width, string height) + { + this._IsJsChart = IsJsChart; + this._ImageStream = ImageStream; + this._width = width; + this._height = height; + + } + + /// <summary> + /// Gets the binary data stream of the image + /// The passed parameter determines the file format of the image + /// to be exported + /// </summary> + public MemoryStream getBinaryStream(string strFormat) + { + byte[] exportObj = getPDFObjects(false); + + MemoryStream outStream = new MemoryStream(); + + outStream.Write(exportObj, 0, exportObj.Length); + + return outStream; + + } + + //create image PDF object containing the chart image + private byte[] addImageToPDF(int id, bool isCompressed) + { + + MemoryStream imgObj = new MemoryStream(); + + //PDF Object number + int imgObjNo = 6 + id * 3; + + //Get chart Image binary + byte[] imgBinary = getBitmapData24(this._ImageStream); + + //get the length of the image binary + int len = imgBinary.Length; + + string width = this._width; + string height = this._height; + + //Build PDF object containing the image binary and other formats required + //string strImgObjHead = imgObjNo.ToString() + " 0 obj\n<<\n/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 " + (isCompressed ? "" : "") + "/Width " + width + " /Height " + height + " /Length " + len.ToString() + " >>\nstream\n"; + // Use it for JPG. + string strImgObjHead = imgObjNo.ToString() + " 0 obj\n<<\n/Subtype /Image /Filter /DCTDecode /ColorSpace /DeviceRGB /BitsPerComponent 8 /Width " + width + " /Height " + height + " /Length " + len.ToString() + " >>\nstream\n"; + + imgObj.Write(stringToBytes(strImgObjHead), 0, strImgObjHead.Length); + imgObj.Write(imgBinary, 0, (int)imgBinary.Length); + + string strImgObjEnd = "endstream\nendobj\n"; + imgObj.Write(stringToBytes(strImgObjEnd), 0, strImgObjEnd.Length); + + imgObj.Close(); + return imgObj.ToArray(); + } + + private byte[] getPDFObjects(bool isCompressed) + { + MemoryStream PDFBytes = new MemoryStream(); + + //Store all PDF objects in this temporary string to be written to ByteArray + string strTmpObj = ""; + + + //start xref array + ArrayList xRefList = new ArrayList(); + xRefList.Add("xref\n0 "); + xRefList.Add("0000000000 65535 f \n"); //Address Refenrece to obj 0 + + //Build PDF objects sequentially + //version and header + strTmpObj = "%PDF-1.3\n%{FC}\n"; + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 1 : info (optional) + strTmpObj = "1 0 obj<<\n/Author (FusionCharts)\n/Title (FusionCharts)\n/Creator (FusionCharts)\n>>\nendobj\n"; + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 1 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 2 : Starts with Pages Catalogue + strTmpObj = "2 0 obj\n<< /Type /Catalog /Pages 3 0 R >>\nendobj\n"; + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 2 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 3 : Page Tree (reference to pages of the catalogue) + strTmpObj = "3 0 obj\n<< /Type /Pages /Kids ["; + for (int i = 0; i < numPages; i++) + { + strTmpObj += (((i + 1) * 3) + 1) + " 0 R\n"; + } + strTmpObj += "] /Count " + numPages + " >>\nendobj\n"; + + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 3 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + int itr = 0; + string iWidth = this._width; + string iHeight = this._height; + + //OBJECT 4..7..10..n : Page config + strTmpObj = (((itr + 2) * 3) - 2) + " 0 obj\n<<\n/Type /Page /Parent 3 0 R \n/MediaBox [ 0 0 " + iWidth + " " + iHeight + " ]\n/Resources <<\n/ProcSet [ /PDF ]\n/XObject <</R" + (itr + 1) + " " + ((itr + 2) * 3) + " 0 R>>\n>>\n/Contents [ " + (((itr + 2) * 3) - 1) + " 0 R ]\n>>\nendobj\n"; + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 4,7,10,13,16... + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 5...8...11...n : Page resource object (xobject resource that transforms the image) + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 5,8,11,14,17... + string xObjR = getXObjResource(itr); + PDFBytes.Write(stringToBytes(xObjR), 0, xObjR.Length); + + //OBJECT 6...9...12...n : Binary xobject of the page (image) + byte[] imgBA = addImageToPDF(itr, isCompressed); + xRefList.Add(calculateXPos((int)PDFBytes.Length));//refenrece to obj 6,9,12,15,18... + PDFBytes.Write(imgBA, 0, imgBA.Length); + + //xrefs compilation + xRefList[0] += ((xRefList.Count - 1) + "\n"); + + //get trailer + string trailer = getTrailer((int)PDFBytes.Length, xRefList.Count - 1); + + //write xref and trailer to PDF + string strXRefs = string.Join("", (string[])xRefList.ToArray(typeof(string))); + PDFBytes.Write(stringToBytes(strXRefs), 0, strXRefs.Length); + // + PDFBytes.Write(stringToBytes(trailer), 0, trailer.Length); + + //write EOF + string strEOF = "%%EOF\n"; + PDFBytes.Write(stringToBytes(strEOF), 0, strEOF.Length); + + PDFBytes.Close(); + return PDFBytes.ToArray(); + + } + + + //Build Image resource object that transforms the image from First Quadrant system to Second Quadrant system + private string getXObjResource() + { + return getXObjResource(0); + } + private string getXObjResource(int itr) + { + + string width = this._width; + string height = this._height; + return (((itr + 2) * 3) - 1) + " 0 obj\n<< /Length " + (24 + (width + height).Length) + " >>\nstream\nq\n" + width + " 0 0 " + height + " 0 0 cm\n/R" + (itr + 1) + " Do\nQ\nendstream\nendobj\n"; + } + + private string calculateXPos(int posn) + { + return posn.ToString().PadLeft(10, '0') + " 00000 n \n"; + } + + + private string getTrailer(int xrefpos) + { + return getTrailer(xrefpos, 7); + } + + private string getTrailer(int xrefpos, int numxref) + { + return "trailer\n<<\n/Size " + numxref.ToString() + "\n/Root 2 0 R\n/Info 1 0 R\n>>\nstartxref\n" + xrefpos.ToString() + "\n"; + } + + + private byte[] getBitmapData24(string fileName) + { + return File.ReadAllBytes(fileName); + } + + private byte[] getBitmapData24(MemoryStream ImageStream) + { + return ImageStream.ToArray(); + } + + // converts a hexadecimal colour string to it's respective byte value + private byte[] hexToBytes(string strHex) + { + if (strHex == null || strHex.Trim().Length == 0) strHex = "00"; + strHex = Regex.Replace(strHex, @"[^0-9a-fA-f]", ""); + if (strHex.Length % 2 != 0) strHex = "0" + strHex; + + int len = strHex.Length / 2; + byte[] bytes = new byte[len]; + + for (int i = 0; i < len; i++) + { + string hex = strHex.Substring(i * 2, 2); + bytes[i] = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber); + } + return bytes; + + } + + private byte[] stringToBytes(string str) + { + if (str == null) str = ""; + return System.Text.Encoding.ASCII.GetBytes(str); + } +} + +/// <summary> +/// FusionCharts Exporter - 'PDF Resource' handles +/// FusionCharts (since v3.1) Server Side Export feature that +/// helps FusionCharts exported as PDF file. +/// </summary> +public class FCPDFGenerator +{ + + //Array - Stores multiple chart export data + private ArrayList arrExportData = new ArrayList(); + //stores number of pages = length of $arrExportData array + private int numPages = 0; + + /// <summary> + /// Generates a PDF file with the given parameters + /// The imageData_FCFormat parameter is the FusionCharts export format data + /// width, height are the respective width and height of the original image + /// bgcolor determines the default background colour + /// </summary> + public FCPDFGenerator(string imageData_FCFormat, string width, string height, string bgcolor) + { + setBitmapData(imageData_FCFormat, width, height, bgcolor); + } + + /// <summary> + /// Gets the binary data stream of the image + /// The passed parameter determines the file format of the image + /// to be exported + /// </summary> + public MemoryStream getBinaryStream(string strFormat) + { + byte[] exportObj = getPDFObjects(true); + + MemoryStream outStream = new MemoryStream(); + + outStream.Write(exportObj, 0, exportObj.Length); + + return outStream; + + } + + /// <summary> + /// Generates bitmap data for the image from a FusionCharts export format + /// the height and width of the original export needs to be specified + /// the default background color should also be specified + /// </summary> + private void setBitmapData(string imageData_FCFormat, string width, string height, string bgcolor) + { + Hashtable chartExportData = new Hashtable(); + chartExportData["width"] = width; + chartExportData["height"] = height; + chartExportData["bgcolor"] = bgcolor; + chartExportData["imagedata"] = imageData_FCFormat; + arrExportData.Add(chartExportData); + numPages++; + } + + + + //create image PDF object containing the chart image + private byte[] addImageToPDF(int id, bool isCompressed) + { + + MemoryStream imgObj = new MemoryStream(); + + //PDF Object number + int imgObjNo = 6 + id * 3; + + //Get chart Image binary + byte[] imgBinary = getBitmapData24(id, isCompressed); + + //get the length of the image binary + int len = imgBinary.Length; + + string width = getMeta("width", id); + string height = getMeta("height", id); + + //Build PDF object containing the image binary and other formats required + //string strImgObjHead = imgObjNo.ToString() + " 0 obj\n<<\n/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 " + (isCompressed ? "" : "") + "/Width " + width + " /Height " + height + " /Length " + len.ToString() + " >>\nstream\n"; + string strImgObjHead = imgObjNo.ToString() + " 0 obj\n<<\n/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 " + (isCompressed ? "/Filter /RunLengthDecode " : "") + "/Width " + width + " /Height " + height + " /Length " + len.ToString() + " >>\nstream\n"; + + + + imgObj.Write(stringToBytes(strImgObjHead), 0, strImgObjHead.Length); + imgObj.Write(imgBinary, 0, (int)imgBinary.Length); + + string strImgObjEnd = "endstream\nendobj\n"; + imgObj.Write(stringToBytes(strImgObjEnd), 0, strImgObjEnd.Length); + + imgObj.Close(); + return imgObj.ToArray(); + + } + private byte[] addImageToPDF(int id) + { + return addImageToPDF(id, true); + } + private byte[] addImageToPDF() + { + return addImageToPDF(0, true); + } + + + + //Main PDF builder function + private byte[] getPDFObjects() + { + return getPDFObjects(true); + } + + private byte[] getPDFObjects(bool isCompressed) + { + MemoryStream PDFBytes = new MemoryStream(); + + //Store all PDF objects in this temporary string to be written to ByteArray + string strTmpObj = ""; + + + //start xref array + ArrayList xRefList = new ArrayList(); + xRefList.Add("xref\n0 "); + xRefList.Add("0000000000 65535 f \n"); //Address Refenrece to obj 0 + + //Build PDF objects sequentially + //version and header + strTmpObj = "%PDF-1.3\n%{FC}\n"; + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 1 : info (optional) + strTmpObj = "1 0 obj<<\n/Author (FusionCharts)\n/Title (FusionCharts)\n/Creator (FusionCharts)\n>>\nendobj\n"; + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 1 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 2 : Starts with Pages Catalogue + strTmpObj = "2 0 obj\n<< /Type /Catalog /Pages 3 0 R >>\nendobj\n"; + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 2 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + //OBJECT 3 : Page Tree (reference to pages of the catalogue) + strTmpObj = "3 0 obj\n<< /Type /Pages /Kids ["; + for (int i = 0; i < numPages; i++) + { + strTmpObj += (((i + 1) * 3) + 1) + " 0 R\n"; + } + strTmpObj += "] /Count " + numPages + " >>\nendobj\n"; + + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 3 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + + //Each image page + for (int itr = 0; itr < numPages; itr++) + { + string iWidth = getMeta("width", itr); + string iHeight = getMeta("height", itr); + //OBJECT 4..7..10..n : Page config + strTmpObj = (((itr + 2) * 3) - 2) + " 0 obj\n<<\n/Type /Page /Parent 3 0 R \n/MediaBox [ 0 0 " + iWidth + " " + iHeight + " ]\n/Resources <<\n/ProcSet [ /PDF ]\n/XObject <</R" + (itr + 1) + " " + ((itr + 2) * 3) + " 0 R>>\n>>\n/Contents [ " + (((itr + 2) * 3) - 1) + " 0 R ]\n>>\nendobj\n"; + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 4,7,10,13,16... + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length); + + + //OBJECT 5...8...11...n : Page resource object (xobject resource that transforms the image) + xRefList.Add(calculateXPos((int)PDFBytes.Length)); //refenrece to obj 5,8,11,14,17... + string xObjR = getXObjResource(itr); + PDFBytes.Write(stringToBytes(xObjR), 0, xObjR.Length); + + //OBJECT 6...9...12...n : Binary xobject of the page (image) + byte[] imgBA = addImageToPDF(itr, isCompressed); + xRefList.Add(calculateXPos((int)PDFBytes.Length));//refenrece to obj 6,9,12,15,18... + PDFBytes.Write(imgBA, 0, imgBA.Length); + } + + //xrefs compilation + xRefList[0] += ((xRefList.Count - 1) + "\n"); + + //get trailer + string trailer = getTrailer((int)PDFBytes.Length, xRefList.Count - 1); + + //write xref and trailer to PDF + string strXRefs = string.Join("", (string[])xRefList.ToArray(typeof(string))); + PDFBytes.Write(stringToBytes(strXRefs), 0, strXRefs.Length); + // + PDFBytes.Write(stringToBytes(trailer), 0, trailer.Length); + + //write EOF + string strEOF = "%%EOF\n"; + PDFBytes.Write(stringToBytes(strEOF), 0, strEOF.Length); + + PDFBytes.Close(); + return PDFBytes.ToArray(); + + } + + + //Build Image resource object that transforms the image from First Quadrant system to Second Quadrant system + private string getXObjResource() + { + return getXObjResource(0); + } + private string getXObjResource(int itr) + { + + string width = getMeta("width", itr); + string height = getMeta("height", itr); + return (((itr + 2) * 3) - 1) + " 0 obj\n<< /Length " + (24 + (width + height).Length) + " >>\nstream\nq\n" + width + " 0 0 " + height + " 0 0 cm\n/R" + (itr + 1) + " Do\nQ\nendstream\nendobj\n"; + } + + private string calculateXPos(int posn) + { + return posn.ToString().PadLeft(10, '0') + " 00000 n \n"; + } + + + private string getTrailer(int xrefpos) + { + return getTrailer(xrefpos, 7); + } + + private string getTrailer(int xrefpos, int numxref) + { + return "trailer\n<<\n/Size " + numxref.ToString() + "\n/Root 2 0 R\n/Info 1 0 R\n>>\nstartxref\n" + xrefpos.ToString() + "\n"; + } + + + private byte[] getBitmapData24() + { + return getBitmapData24(0, true); + } + private byte[] getBitmapData24(int id, bool isCompressed) + { + + string rawImageData = getMeta("imagedata", id); + string bgColor = getMeta("bgcolor", id); + + MemoryStream imageData24 = new MemoryStream(); + + // Split the data into rows using ; as separator + string[] rows = rawImageData.Split(';'); + + for (int yPixel = 0; yPixel < rows.Length; yPixel++) + { + //Split each row into 'color_count' columns. + string[] color_count = rows[yPixel].Split(','); + + for (int col = 0; col < color_count.Length; col++) + { + //Now, if it's not empty, we process it + //Split the 'color_count' into color and repeat factor + string[] split_data = color_count[col].Split('_'); + + //Reference to color + string hexColor = split_data[0] != "" ? split_data[0] : bgColor; + //If the hexadecimal code is less than 6 characters, pad with 0 + hexColor = hexColor.Length < 6 ? hexColor.PadLeft(6, '0') : hexColor; + + //refer to repeat factor + int fRepeat = int.Parse(split_data[1]); + + // convert color string to byte[] array + byte[] rgb = hexToBytes(hexColor); + + // Set the repeated pixel in MemoryStream + for (int cRepeat = 0; cRepeat < fRepeat; cRepeat++) + { + imageData24.Write(rgb, 0, 3); + } + + } + } + + int len = (int)imageData24.Length; + imageData24.Close(); + + //Compress image binary + if (isCompressed) + { + return new PDFCompress(imageData24.ToArray()).RLECompress(); + } + else + { + return imageData24.ToArray(); + } + } + + // converts a hexadecimal colour string to it's respective byte value + private byte[] hexToBytes(string strHex) + { + if (strHex == null || strHex.Trim().Length == 0) strHex = "00"; + strHex = Regex.Replace(strHex, @"[^0-9a-fA-f]", ""); + if (strHex.Length % 2 != 0) strHex = "0" + strHex; + + int len = strHex.Length / 2; + byte[] bytes = new byte[len]; + + for (int i = 0; i < len; i++) + { + string hex = strHex.Substring(i * 2, 2); + bytes[i] = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber); + } + return bytes; + + } + + private string getMeta(string metaName) + { + return getMeta(metaName, 0); + } + + private string getMeta(string metaName, int id) + { + if (metaName == null) metaName = ""; + Hashtable chartData = (Hashtable)arrExportData[id]; + return (chartData[metaName] == null ? "" : chartData[metaName].ToString()); + } + + private byte[] stringToBytes(string str) + { + if (str == null) str = ""; + return System.Text.Encoding.ASCII.GetBytes(str); + } + + +} + + +/// <summary> +/// This is an ad-hoc class to compress PDF stream. +/// Currently this class compresses binary (byte) stream using RLE which +/// PDF 1.3 specification has thus formulated: +/// +/// The RunLengthDecode filter decodes data that has been encoded in a simple +/// byte-oriented format based on run length. The encoded data is a sequence of +/// runs, where each run consists of a length byte followed by 1 to 128 bytes of data. If +/// the length byte is in the range 0 to 127, the following length + 1 (1 to 128) bytes +/// are copied literally during decompression. If length is in the range 129 to 255, the +/// following single byte is to be copied 257 - length (2 to 128) times during decompression. +/// A length value of 128 denotes EOD. +/// +/// The chart image compression ratio comes to around 10:3 +/// +/// </summary> +public class PDFCompress +{ + + /// <summary> + /// stores the output compressed data in MemoryStream object later to be converted to byte[] array + /// </summary> + private MemoryStream _Compressed = new MemoryStream(); + + /// <summary> + /// Uncompresses data as byte[] array + /// </summary> + private byte[] _UnCompressed; + + + /// <summary> + /// Takes the uncompressed byte array + /// </summary> + /// <param name="UnCompressed">uncompressed data</param> + public PDFCompress(byte[] UnCompressed) + { + _UnCompressed = UnCompressed; + } + + /// <summary> + /// Write compressed data as RunLength + /// </summary> + /// <param name="length">The length of repeated data</param> + /// <param name="encodee">The byte to be repeated</param> + /// <returns></returns> + private int WriteRunLength(int length, byte encodee) + { + // write the repeat length + _Compressed.WriteByte((byte)(257 - length)); + // write the byte to be repeated + _Compressed.WriteByte(encodee); + + //re-set repeat length + length = 1; + return length; + } + + private void WriteNoRepeater(MemoryStream NoRepeatBytes) + { + // write the length of non repeted data + _Compressed.WriteByte((byte)((int)NoRepeatBytes.Length - 1)); + // write the non repeated data put literally + _Compressed.Write(NoRepeatBytes.ToArray(), 0, (int)NoRepeatBytes.Length); + + // re-set non repeat byte storage stream + NoRepeatBytes.SetLength(0); + } + + /// <summary> + /// compresses uncompressed data to compressed data in byte array + /// </summary> + /// <returns></returns> + public byte[] RLECompress() + { + // stores non repeatable data + MemoryStream NoRepeat = new MemoryStream(); + + // repeat counter + int _RL = 1; + + // 2 consecutive bytes to compare + byte preByte = 0, postByte = 0; + + // iterate through the uncompressed bytes + for (int i = 0; i < _UnCompressed.Length - 1; i++) + { + // get 2 consecutive bytes + preByte = _UnCompressed[i]; + postByte = _UnCompressed[i + 1]; + + // if both are same there is scope for repitition + if (preByte == postByte) + { + // but flush the non repeatable data (if present) to compressed stream + if (NoRepeat.Length > 0) WriteNoRepeater(NoRepeat); + + // increase repeat count + _RL++; + + // if repeat count reaches limit of repeat i.e. 128 + // write the repeat data and reset the repeat counter + if (_RL > 128) _RL = WriteRunLength(_RL-1,preByte); + + } + else + { + // when consecutive bytes do not match + + // store non-repeatable data + if (_RL == 1) NoRepeat.WriteByte(preByte); + + // write repeated length and byte (if present ) to output stream + if (_RL > 1) _RL = WriteRunLength(_RL, preByte); + + // write non repeatable data to out put stream if the length reaches limit + if (NoRepeat.Length == 128) WriteNoRepeater(NoRepeat); + } + } + + // at the end of iteration + // take care of the last byte + + // if repeated + if (_RL > 1) + { + // write run length and byte (if present ) to output stream + _RL = WriteRunLength(_RL, preByte); + } + else + { + // if non repeated byte is left behind + // write non repeatable data to output stream + NoRepeat.WriteByte(postByte); + WriteNoRepeater(NoRepeat); + } + + + // wrote EOD + _Compressed.WriteByte((byte)128); + + //close streams + NoRepeat.Close(); + _Compressed.Close(); + + // return compressed data in byte array + return _Compressed.ToArray(); + } + +} + diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/README.md b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/README.md new file mode 100755 index 0000000000000000000000000000000000000000..3b999a0e5ccd4ffa2833cf0ddf77cad4cddfb494 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/README.md @@ -0,0 +1,82 @@ +FusionCharts ASP.NET Export Handler +================================== + +What is FusionCharts .NET export handler? +----------------------------------------- +FusionCharts Suite XT uses JavaScript to generate charts in the browser, using SVG and VML (for older IE). If you need to export the charts as images or PDF, you need a server-side helper library to convert the SVG to image/PDF. These export handlers allow you to take the SVG from FusionCharts charts and convert to image/PDF. + +How does the export handler work? +--------------------------------- +- A chart is generated in the browser. When the export to image or PDF button is clicked, the chart generates the SVG string to represent the current state and sends to the export handler. The export handler URL is configured via chart attributes. +- The export handler accepts the SVG string along with chart configuration like chart type, width, height etc., and uses SharpVectors library to convert to image or PDF. +- The export handler either writes the image or PDF to disk, based on the configuration provided by chart, or streams it back to the browser. + +Version +---- + +4.0.1 + +Requirements +----------- + +* .NET Framework 3.5 or higher + +Installation +-------------- + +* Unzip the **production/asp-net-export-handler.zip** in your IIS wwwroot folder (e.g. C:\inetpub\wwwroot) +* Add an application in your server and set physical path to the above folder +* Set the URL of **FCExporter.aspx** from the above web application into the chart's **exportHandler** attribute +* Make sure **IUSR** has proper read/write permission in the **Exported_Images** folder +* FusionCharts' export request contains some XML data, which is restricted in .NET 4 or above. You may need to add the following configuration in your 'web.config' file: +``` +<system.web> + <httpRuntime requestValidationMode="2.0"/> +</system.web> +``` +* JS error is thrown during svg export if any image, present in same domain, is used in chart. You may need to add the following configuration in your 'web.config' file: +``` +<system.web> + <httpRuntime executionTimeout="999999" maxRequestLength="2000000000" requestValidationMode="2.0" /> +</system.web> +``` + + +License +------- + +**FUSIONCHARTS:** + +Copyright (c) FusionCharts Technologies LLP +License Information at [http://www.fusioncharts.com/license](http://www.fusioncharts.com/license) + + +**SHARPVECTORS:** + +The SharpVectors software modified and redistributed herein is covered under the New BSD License (BSD), +and is subject to the following conditions from that license: + +Copyright (c) 2010, SharpVectorGraphics +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the name of SharpVectorGraphics nor the names of its contributors may be used to endorse or promote + products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +SharpVectors source code is available from [https://sharpvectors.codeplex.com/](https://sharpvectors.codeplex.com/) diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Web.config b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Web.config new file mode 100755 index 0000000000000000000000000000000000000000..b19ba4f10dfd0ba378fe1048f0e9697c767c51f4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/Web.config @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Note: As an alternative to hand editing this file you can use the + web admin tool to configure settings for your application. Use + the Website->Asp.Net Configuration option in Visual Studio. + A full list of settings and comments can be found in + machine.config.comments usually located in + \Windows\Microsoft.Net\Framework\vx.x\Config +--> +<configuration> + <configSections> + <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <!-- <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> + --> + <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + + <!-- <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> + <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> + <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> + <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> + --> + </sectionGroup> + </sectionGroup> + </sectionGroup> + </configSections> + <appSettings /> + <connectionStrings /> + <system.web> + <!-- + Set compilation debug="true" to insert debugging + symbols into the compiled page. Because this + affects performance, set this value to true only + during development. + --> + <compilation debug="true"> + <assemblies> + <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add assembly="PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </assemblies> + </compilation> + + <customErrors mode="Off" /> + + <!-- + The <authentication> section enables configuration + of the security authentication mode used by + ASP.NET to identify an incoming user. + --> + <authentication mode="Windows" /> + <!-- + The <customErrors> section enables configuration + of what to do if/when an unhandled error occurs + during the execution of a request. Specifically, + it enables developers to configure html error pages + to be displayed in place of a error stack trace. + + <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> + <error statusCode="403" redirect="NoAccess.htm" /> + <error statusCode="404" redirect="FileNotFound.htm" /> + </customErrors> + --> + <pages validateRequest="false"> + <controls> + <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </controls> + </pages> + <httpHandlers> + <remove verb="*" path="*.asmx" /> + <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> + </httpHandlers> + <httpModules> + <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </httpModules> + <httpRuntime executionTimeout="999999" maxRequestLength="2000000000" requestValidationMode="2.0" /> + </system.web> + <system.codedom> + <compilers> + <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <providerOption name="CompilerVersion" value="v3.5" /> + <providerOption name="WarnAsError" value="false" /> + </compiler> + <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <providerOption name="CompilerVersion" value="v3.5" /> + <providerOption name="OptionInfer" value="true" /> + <providerOption name="WarnAsError" value="false" /> + </compiler> + </compilers> + </system.codedom> + <!-- + The system.webServer section is required for running ASP.NET AJAX under Internet + Information Services 7.0. It is not necessary for previous version of IIS. + --> + <system.webServer> + <validation validateIntegratedModeConfiguration="false" /> + <modules> + <remove name="ScriptModule" /> + <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </modules> + <handlers> + <remove name="WebServiceHandlerFactory-Integrated" /> + <remove name="ScriptHandlerFactory" /> + <remove name="ScriptHandlerFactoryAppServices" /> + <remove name="ScriptResource" /> + <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </handlers> + </system.webServer> + <runtime> + <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" /> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" /> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> + </dependentAssembly> + </assemblyBinding> + </runtime> +</configuration> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/readme.txt b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/readme.txt new file mode 100755 index 0000000000000000000000000000000000000000..c987981be3e0689fcb10d3fb9d5d3977c8bd7a04 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/chart-export-handler/readme.txt @@ -0,0 +1,74 @@ +FusionCharts ASP.NET Export Handler +===================================== + +What is FusionCharts .NET export handler? +----------------------------------------- +FusionCharts Suite XT uses JavaScript to generate charts in the browser, using SVG and VML (for older IE). If you need +to export the charts as images or PDF, you need a server-side helper library to convert the SVG to image/PDF. These +export handlers allow you to take the SVG from FusionCharts charts and convert to image/PDF. + +How does the export handler work? +--------------------------------- +- A chart is generated in the browser. When the export to image or PDF button is clicked, the chart generates the SVG string + to represent the current state and sends to the export handler. The export handler URL is configured via chart attributes. +- The export handler accepts the SVG string along with chart configuration like chart type, width, height etc., and uses + SharpVectors library to convert to image or PDF. +- The export handler either writes the image or PDF to disk, based on the configuration provided by chart, or streams it + back to the browser. + + +Requirements +------------ +- .NET Framework 3.5 or higher + + +Installation +------------ +- Unzip the 'asp-net-export-handler.zip' in your IIS wwwroot folder (e.g. C:\inetpub\wwwroot) +- Add an application in your server and set physical path to the above folder +- Set the URL of 'FCExporter.aspx' from the above web application into the chart's 'exportHandler' attribute +- Make sure 'IUSR' has proper read/write permission in the 'Exported_Images' folder +- FusionCharts' export request contains some XML data, which is restricted in .NET 4 or above. You may need to add the following configuration in your 'web.config' file: +<system.web> + <httpRuntime requestValidationMode="2.0"/> +</system.web> + + +Licensing +--------- + +FUSIONCHARTS: + +Copyright (c) FusionCharts Technologies LLP +License Information at <http://www.fusioncharts.com/license> + + +SHARPVECTORS: + +The SharpVectors software modified and redistributed herein is covered under the New BSD License (BSD), +and is subject to the following conditions from that license: + +Copyright (c) 2010, SharpVectorGraphics +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the name of SharpVectorGraphics nor the names of its contributors may be used to endorse or promote + products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +SharpVectors source code is available from https://sharpvectors.codeplex.com/ \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-assembly/FusionCharts.XML b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-assembly/FusionCharts.XML new file mode 100755 index 0000000000000000000000000000000000000000..0f0039bef77e02b0f9b9365f77f9a870b7aef400 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-assembly/FusionCharts.XML @@ -0,0 +1,500 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>FusionCharts</name> + </assembly> + <members> + <member name="T:FusionCharts.Charts.Chart"> + <summary> + Contains static methods to render FusionCharts in the Page. + </summary> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor"> + <summary> + Chart constructor + Chart configuration parameters can be supplyed to the constructor also. + </summary> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Background color of the chart container</param> + </member> + <member name="M:FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Back-ground-color of the chart container</param> + <param name="bgOpacity">Background opacity of the chart container</param> + </member> + <member name="M:FusionCharts.Charts.Chart.RenderChartALL"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Clone"> + <summary> + Public method to clone an exiting FusionCharts instance + To make the chartId unique, this function will add "_clone" as suffix in the clone chart's Id. + </summary> + </member> + <member name="M:FusionCharts.Charts.Chart.Render"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Background color of the chart container</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Background color of the chart container</param> + <param name="bgOpacity">Background opacity of the chart container</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.SetChartParameter(FusionCharts.Charts.Chart.ChartParameter,System.Object)"> + <summary> + SetChartParameter sets various configurations of a FusionCharts instance + </summary> + <param name="param">Name of chart parameter</param> + <param name="value">Value of chart parameter</param> + </member> + <member name="M:FusionCharts.Charts.Chart.GetChartParameter(FusionCharts.Charts.Chart.ChartParameter)"> + <summary> + GetChartParameter returns the value of a parameter of a FusionCharts instance + </summary> + <param name="param">Name of chart parameter</param> + <returns>String</returns> + </member> + <member name="M:FusionCharts.Charts.Chart.SetData(System.String)"> + <summary> + This method to set the data for the chart + </summary> + <param name="dataSource">Data for the chart</param> + </member> + <member name="M:FusionCharts.Charts.Chart.SetData(System.String,FusionCharts.Charts.Chart.DataFormat)"> + <summary> + This method to set the data for the chart + </summary> + <param name="dataSource">Data for the chart</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + </member> + <member name="M:FusionCharts.Charts.Chart.SetChartParameter(System.String,System.Object)"> + <summary> + SetConfiguration sets various configurations of FusionCharts + It takes configuration names as first parameter and its value a second parameter + There are config groups which can contain common configuration names. All config names in all groups gets set with this value + unless group is specified explicitly + </summary> + <param name="setting">Name of configuration</param> + <param name="value">Value of configuration</param> + </member> + <member name="M:FusionCharts.Charts.Chart.boolToNum(System.Boolean)"> + <summary> + Transform the meaning of boolean value in integer value + </summary> + <param name="value">true/false value to be transformed</param> + <returns>1 if the value is true, 0 if the value is false</returns> + </member> + <member name="T:FusionCharts.Charts.Chart.ChartParameter"> + <summary> + User configurable chart parameter list + </summary> + </member> + <member name="T:FusionCharts.Charts.Chart.DataFormat"> + <summary> + List of supported data formats + </summary> + </member> + <member name="T:InfoSoftGlobal.FusionCharts"> + <summary> + Contains static methods to render FusionCharts in the Page. + + @version: v3.2.2.2 + @date: 15 August 2012 + + </summary> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChartALL(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChartHTMLALL(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns></returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChart(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChart(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChart(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns>JavaScript + HTML code required to embed a chart</returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <returns></returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <returns></returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <returns></returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns></returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.EncodeDataURL(System.String,System.Boolean)"> + <summary> + encodes the dataURL before it's served to FusionCharts + If you have parameters in your dataURL, you'll necessarily need to encode it + </summary> + <param name="dataUrl">dataURL to be fed to chart</param> + <param name="noCacheStr">Whether to add aditional string to URL to disable caching of data</param> + <returns>Encoded dataURL, ready to be consumed by FusionCharts</returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.EnablePrintManager"> + <summary> + Enables Print Manager for Mozilla browsers + This function returns a small JavaScript snippet which can be added to ClientScript's RegisterClientScriptBlock method + </summary> + <example>ClientScript.RegisterClientScriptBlock(Page.GetType(), "", FusionCharts.enableFCPrintManager());</example> + <returns>String with the JavaScript code</returns> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.EnablePrintManager(System.Object)"> + <summary> + Enables Print Manager for Mozilla browsers + </summary> + <param name="CurrentPage">Current page reference</param> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.SetDataFormat(System.String)"> + <summary> + Sets the dataformat to be provided to charts (json/xml) + </summary> + <param name="format">Data format. Default is 'xml'. Other format is 'json'</param> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.SetRenderer(System.String)"> + <summary> + Sets renderer type (flash/javascript) + </summary> + <param name="renderer"> Name of the renderer. Default is 'flash'. Other possibility is 'javascript'</param> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.SetWindowMode(System.String)"> + <summary> + Explicitely sets window mode (window[detault]/transpatent/opaque) + </summary> + <param name="mode">Name of the mode. Default is 'window'. Other possibilities are 'transparent'/'opaque'</param> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.SetConfiguration(System.String,System.Object)"> + <summary> + FC_SetConfiguration sets various configurations of FusionCharts + It takes configuration names as first parameter and its value a second parameter + There are config groups which can contain common configuration names. All config names in all groups gets set with this value + unless group is specified explicitly + </summary> + <param name="setting">Name of configuration</param> + <param name="value">Value of configuration</param> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.SetConfiguration(System.Collections.Hashtable@,System.String,System.Object)"> + <summary> + FC_SetConfiguration sets various configurations of FusionCharts + It takes configuration names as first parameter and its value a second parameter + There are config groups which can contain common configuration names. All config names in all groups gets set with this value + unless group is specified explicitly + </summary> + <param name="setting">Name of configuration</param> + <param name="value">Value of configuration</param> + </member> + <member name="M:InfoSoftGlobal.FusionCharts.boolToNum(System.Boolean)"> + <summary> + Transform the meaning of boolean value in integer value + </summary> + <param name="value">true/false value to be transformed</param> + <returns>1 if the value is true, 0 if the value is false</returns> + </member> + </members> +</doc> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-assembly/FusionCharts.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-assembly/FusionCharts.dll new file mode 100755 index 0000000000000000000000000000000000000000..cbfc3ff54da0aabbc43d701ee3635924467c2f48 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-assembly/FusionCharts.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-source/FusionCharts.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-source/FusionCharts.cs new file mode 100755 index 0000000000000000000000000000000000000000..368a068e37edbedf5ed93232489f8fd61dbbec22 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/fusioncharts-wrapper-source/FusionCharts.cs @@ -0,0 +1,1369 @@ +using System; +using System.Text; +using System.Collections; +using System.Web.UI.WebControls; +using System.Web; +using System.Collections.Generic; +using System.Globalization; + +namespace FusionCharts.Charts +{ + /// <summary> + /// Contains static methods to render FusionCharts in the Page. + /// </summary> + public class Chart: ICloneable + { + private Hashtable __CONFIG__ = null; + private static Hashtable __PARAMMAP__ = null; + private string events = ""; + //private string message = ""; + + /// <summary> + /// User configurable chart parameter list + /// </summary> + public enum ChartParameter + { + chartType, + chartId, + chartWidth, + chartHeight, + dataFormat, + dataSource, + renderAt, + bgColor, + bgOpacity + } + + /// <summary> + /// List of supported data formats + /// </summary> + public enum DataFormat + { + json, + jsonurl, + xml, + xmlurl, + csv + } + + #region constructor methods + /// <summary> + /// Chart constructor + /// Chart configuration parameters can be supplyed to the constructor also. + /// </summary> + public Chart() + { + __INIT(); + } + + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + public Chart(string chartType) + { + __INIT(); + + SetChartParameter("type", chartType); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + public Chart(string chartType, string chartId) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("id", chartId); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + public Chart(string chartType, string chartId, string chartWidth) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + public Chart(string chartType, string chartId, string chartWidth, string chartHeight) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <param name="dataSource">Data for the chart</param> + public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetData(dataSource); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <param name="dataSource">Data for the chart</param> + /// <param name="bgColor">Background color of the chart container</param> + public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, + string bgColor) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetData(dataSource); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + SetChartParameter("containerBackgroundColor", bgColor); + } + + /// <summary> + /// Chart constructor + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <param name="dataSource">Data for the chart</param> + /// <param name="bgColor">Back-ground-color of the chart container</param> + /// <param name="bgOpacity">Background opacity of the chart container</param> + public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, + string bgColor, string bgOpacity) + { + __INIT(); + + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetData(dataSource); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + SetChartParameter("containerBackgroundColor", bgColor); + SetChartParameter("containerBackgroundOpacity", bgOpacity); + } + #endregion + + #region RenderALL methods + + /// <summary> + /// Generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + private string RenderChartALL() + { + + string dataSource = GetChartParameter("dataSource"); + string dataFormat = GetChartParameter("dataFormat"); + string chartId = GetChartParameter("id"); + string renderAt = GetChartParameter("renderAt"); + + + + StringBuilder builder = new StringBuilder(); + builder.AppendFormat("<!-- Using ASP.NET FusionCharts Wrapper and JavaScript rendering --><!-- START Script Block for Chart {0} -->" + Environment.NewLine, chartId); + // if the user has provided renderAt then assume that the HTML container is already present in the page. + if (renderAt.Trim().Length == 0) + { + renderAt = chartId + "_div"; + // Now create the container div also. + builder.AppendFormat("<div id='{0}' >" + Environment.NewLine, renderAt); + builder.Append("Chart..." + Environment.NewLine); + builder.Append("</div>" + Environment.NewLine); + } + + string chartConfigJSON = fc_encodeJSON(GetConfigurationGroup("params"), true); + + builder.Append("<script type=\"text/javascript\">" + Environment.NewLine); + builder.Append("FusionCharts && FusionCharts.ready(function () {" + Environment.NewLine); + builder.AppendFormat("if (FusionCharts(\"{0}\") ) FusionCharts(\"{0}\").dispose();\n", chartId); + builder.AppendFormat("var chart_{0} = new FusionCharts({1}).render();" + Environment.NewLine, chartId, chartConfigJSON); + builder.Append(events); + builder.Append("});" + Environment.NewLine); + builder.Append("</script>" + Environment.NewLine); + builder.AppendFormat("<!-- END Script Block for Chart {0} -->" + Environment.NewLine, chartId); + + return builder.ToString(); + + } + + #endregion + + #region Public Methods + /// <summary> + /// public method to attach event from client side + /// </summary> + /// <param name="eventName"></param> + /// <param name="funcName"></param> + public void AddEvent(string eventName, string funcName) + { + string eventHTML; + string chartId = GetChartParameter("id"); + eventHTML = string.Format("FusionCharts(\"{0}\").addEventListener(\"{1}\",{2});" + Environment.NewLine, chartId,eventName,funcName); + events += eventHTML; + } + /// <summary> + /// public method to add attributes for message customization + /// </summary> + /// <param name="messageAttribute"></param> + /// <param name="messageAttributeValue"></param> + public void AddMessage(string messageAttribute, string messageAttributeValue) + { + string messageHTML; + messageHTML = string.Format("{0}:\"{1}\",", messageAttribute, messageAttributeValue); + SetChartParameter("message", messageHTML); + + } + /// <summary> + /// Public method to clone an exiting FusionCharts instance + /// To make the chartId unique, this function will add "_clone" as suffix in the clone chart's Id. + /// </summary> + public object Clone() + { + Chart ChartClone = new Chart(); + ChartClone.__CONFIG__ = (Hashtable)this.__CONFIG__.Clone(); + ChartClone.SetChartParameter("id", ((Hashtable)ChartClone.__CONFIG__["params"])["id"].ToString() + "_clone"); + + return ChartClone; + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + public string Render() + { + return RenderChartALL(); + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType) + { + SetChartParameter("type", chartType); + + return RenderChartALL(); + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId) + { + SetChartParameter("type", chartType); + SetChartParameter("id", chartId); + + return RenderChartALL(); + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId, string chartWidth) + { + SetChartParameter("type", chartType); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + + return RenderChartALL(); + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId, string chartWidth, string chartHeight) + { + SetChartParameter("type", chartType); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + + return RenderChartALL(); + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat) + { + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + + return RenderChartALL(); + } + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <param name="dataSource">Data for the chart</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource) + { + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetData(dataSource); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + + return RenderChartALL(); + } + + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <param name="dataSource">Data for the chart</param> + /// <param name="bgColor">Background color of the chart container</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, + string bgColor) + { + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetData(dataSource); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + SetChartParameter("containerBackgroundColor", bgColor); + + return RenderChartALL(); + } + + + /// <summary> + /// Public method to generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartType">The type of chart that you intend to plot</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + /// <param name="dataSource">Data for the chart</param> + /// <param name="bgColor">Background color of the chart container</param> + /// <param name="bgOpacity">Background opacity of the chart container</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + + public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, + string bgColor, string bgOpacity) + { + SetChartParameter("type", chartType); + SetChartParameter("dataFormat", dataFormat); + SetData(dataSource); + SetChartParameter("id", chartId); + SetChartParameter("width", chartWidth); + SetChartParameter("height", chartHeight); + SetChartParameter("containerBackgroundColor", bgColor); + SetChartParameter("containerBackgroundOpacity", bgOpacity); + + return RenderChartALL(); + } + + + + + + /// <summary> + /// SetChartParameter sets various configurations of a FusionCharts instance + /// </summary> + /// <param name="param">Name of chart parameter</param> + /// <param name="value">Value of chart parameter</param> + public void SetChartParameter(ChartParameter param, object value) + { + + SetChartParameter(__PARAMMAP__[param.ToString()].ToString(), value); + } + + /// <summary> + /// GetChartParameter returns the value of a parameter of a FusionCharts instance + /// </summary> + /// <param name="param">Name of chart parameter</param> + /// <returns>String</returns> + + public string GetChartParameter(ChartParameter param) + { + return GetChartParameter(__PARAMMAP__[param.ToString()].ToString()); + } + + /// <summary> + /// This method to set the data for the chart + /// </summary> + /// <param name="dataSource">Data for the chart</param> + + public void SetData(string dataSource) + { + SetChartParameter("dataSource", dataSource); + } + + /// <summary> + /// This method to set the data for the chart + /// </summary> + /// <param name="dataSource">Data for the chart</param> + /// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + public void SetData(string dataSource, DataFormat format) + { + SetChartParameter("dataSource", dataSource); + SetChartParameter("dataFormat", format.ToString()); + } + + #endregion + + + + #region Helper Private Methods + + /// <summary> + /// SetConfiguration sets various configurations of FusionCharts + /// It takes configuration names as first parameter and its value a second parameter + /// There are config groups which can contain common configuration names. All config names in all groups gets set with this value + /// unless group is specified explicitly + /// </summary> + /// <param name="setting">Name of configuration</param> + /// <param name="value">Value of configuration</param> + private void SetChartParameter(string setting, object value) + { + if (((Hashtable)__CONFIG__["params"]).ContainsKey(setting)) + { + if (setting.Equals("message", StringComparison.InvariantCultureIgnoreCase)) + { + ((Hashtable)__CONFIG__["params"])[setting] += value.ToString(); + } + else + { + ((Hashtable)__CONFIG__["params"])[setting] = value; + } + + } + } + + + private void SetParamsMap() + { + if (__PARAMMAP__ == null) + { + __PARAMMAP__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + __PARAMMAP__["chartType"] = "type"; + __PARAMMAP__["chartId"] = "id"; + __PARAMMAP__["chartWidth"] = "width"; + __PARAMMAP__["chartHeight"] = "height"; + __PARAMMAP__["message"] = "message"; + __PARAMMAP__["dataFormat"] = "dataFormat"; + __PARAMMAP__["dataSource"] = "dataSource"; + __PARAMMAP__["renderAt"] = "renderAt"; + __PARAMMAP__["bgColor"] = "containerBackgroundColor"; + __PARAMMAP__["bgOpacity"] = "containerBackgroundOpacity"; + } + + } + + private void __INIT() + { + __CONFIG__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + Hashtable param = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + param["type"] = ""; + param["width"] = ""; + param["height"] = ""; + param["message"] = ""; + param["renderAt"] = ""; + param["dataSource"] = ""; + param["dataFormat"] = ""; + param["id"] = Guid.NewGuid().ToString().Replace("-", "_"); + param["containerBackgroundColor"] = ""; + param["containerBackgroundOpacity"] = ""; + + __CONFIG__["params"] = param; + + param = null; + SetParamsMap(); + } + + + + /// <summary> + /// Transform the meaning of boolean value in integer value + /// </summary> + /// <param name="value">true/false value to be transformed</param> + /// <returns>1 if the value is true, 0 if the value is false</returns> + private static int boolToNum(bool value) + { + return value ? 1 : 0; + } + + + private string GetChartParameter(string setting) + { + if (((Hashtable)__CONFIG__["params"]).ContainsKey(setting)) + { + return ((Hashtable)__CONFIG__["params"])[setting].ToString(); + } + return null; + } + + + private string fc_encodeJSON(Hashtable json, bool enclosed) + { + string strjson = "", Key = "", Value = ""; + + foreach (DictionaryEntry ds in json) + { + if (ds.Value.ToString().Trim() != "") + { + Key = ds.Key.ToString(); + Value = ds.Value.ToString(); + // If this is not the dataSource then convert the value as JavaScript string + if (Key.ToLower().Equals("datasource")) + { + // Remove new line char from the dataSource + Value.Replace("\n\r", ""); + // detect if non-JSON format then wrap with quot '"' + if (!(Value.StartsWith("{") && Value.EndsWith("}"))) + { + Value = "\"" + Value + "\""; + } + strjson = strjson + Environment.NewLine + "\"" + Key + "\" : " + Value + ", "; + } + else if (Key.ToLower().Equals("message")) + { + strjson = strjson + Environment.NewLine + Value; + } + else + { + Value = "\"" + Value + "\""; + strjson = strjson + Environment.NewLine + "\"" + Key + "\" : " + Value + ", "; + } + + } + else if (ds.Key.ToString().Equals("renderAt")) + { + strjson = strjson + Environment.NewLine + "\"renderAt\" : \"" + ((Hashtable)json)["id"].ToString() + "_div\", "; + } + } + // remove ending comma + if (strjson.EndsWith(",")) strjson = strjson.Remove(strjson.Length - 1); + + if (enclosed == true) + { + strjson = "{" + strjson + Environment.NewLine + "}"; + } + + return strjson; + } + + private Hashtable GetConfigurationGroup(string setting) + { + if (__CONFIG__.ContainsKey(setting)) + { + return (Hashtable)__CONFIG__[setting]; + } + return null; + } + + #endregion + + } +} + + + +namespace InfoSoftGlobal +{ + /// <summary> + /// Contains static methods to render FusionCharts in the Page. + /// + /// @version: v3.2.2.2 + /// @date: 15 August 2012 + /// + /// </summary> + public class FusionCharts + { + + //private static Hashtable __CONFIG__ = new Hashtable(new CaseInsensitiveHashCodeProvider(), new CaseInsensitiveComparer()); + private static Hashtable __CONFIG__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + private static bool __CONFIG__Initialized = false; + + #region RenderALL methods + + /// <summary> + /// Generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + /// <param name="bgColor">Back Ground Color</param> + /// <param name="scaleMode">Set Scale Mode</param> + /// <param name="language">Set SWF file Language</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + private static string RenderChartALL(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, + bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) + { + __INIT(); + + // Creating a local copy of global Configuration. + Hashtable __CONFIGCLONE__ = (Hashtable)__CONFIG__.Clone(); + + // string dataprovider_js_code; + SetConfiguration(ref __CONFIGCLONE__, "debugMode", boolToNum(debugMode)); + SetConfiguration(ref __CONFIGCLONE__, "registerWithJS", boolToNum(true)); + + // setup debug mode js parameter + int debugMode_js_param = boolToNum(debugMode); + // setup register with js js parameter + int registerWithJS_js_param = boolToNum(true); + string dataFormat = GetConfiguration(ref __CONFIGCLONE__, "dataFormat"); + dataFormat = (dataFormat == "" ? "xml" + (dataStr == "" ? "url" : "") : dataFormat + (dataStr == "" ? "url" : "")); + + if (GetConfiguration(ref __CONFIGCLONE__, "renderAt") == "") SetConfiguration(ref __CONFIGCLONE__, "renderAt", chartId + "Div"); + + string wmode = GetConfiguration(ref __CONFIGCLONE__, "wMode"); + if (wmode.Trim() == "" || wmode == null) + { + wmode = allowTransparent ? "transparent" : "opaque"; + } + + SetConfiguration(ref __CONFIGCLONE__, "swfUrl", chartSWF); + SetConfiguration(ref __CONFIGCLONE__, "dataFormat", dataFormat); + SetConfiguration(ref __CONFIGCLONE__, "id", chartId); + SetConfiguration(ref __CONFIGCLONE__, "width", chartWidth); + SetConfiguration(ref __CONFIGCLONE__, "height", chartHeight); + SetConfiguration(ref __CONFIGCLONE__, "wMode", wmode); + + SetConfiguration(ref __CONFIGCLONE__, "bgColor", bgColor); + SetConfiguration(ref __CONFIGCLONE__, "scaleMode", scaleMode); + SetConfiguration(ref __CONFIGCLONE__, "lang", language); + + + string dataSource = (dataStr == "" ? dataUrl : dataStr.Replace("\n\r", "")); + string dataSourceJSON = "\"dataSource\" : " + (dataFormat == "json" ? dataSource : "\"" + dataSource + "\""); + string chartConfigJSON = "{" + fc_encodeJSON(GetConfigurationGroup(ref __CONFIGCLONE__, "params"), false) + "," + dataSourceJSON + "}"; + + StringBuilder builder = new StringBuilder(); + builder.AppendFormat("<!-- Using ASP.NET FusionCharts v3.2.2.1 Wrapper and JavaScript rendering --><!-- START Script Block for Chart {0} -->" + Environment.NewLine, chartId); + builder.AppendFormat("<div id='{0}Div' >" + Environment.NewLine, chartId); + builder.Append("Chart." + Environment.NewLine); + builder.Append("</div>" + Environment.NewLine); + builder.Append("<script type=\"text/javascript\">" + Environment.NewLine); + builder.AppendFormat("if (FusionCharts && FusionCharts(\"{0}\") ) FusionCharts(\"{0}\").dispose();\n", chartId); + builder.AppendFormat("var chart_{0} = new FusionCharts({1}).render();", chartId, chartConfigJSON); + builder.Append("</script>" + Environment.NewLine); + builder.AppendFormat("<!-- END Script Block for Chart {0} -->" + Environment.NewLine, chartId); + + // Re-Initializing... + __fc__initialize__(); + + __CONFIGCLONE__ = null; + + return builder.ToString(); + + + + } + + + + + /// <summary> + /// Renders the HTML code for the chart. This + /// method does NOT embed the chart using JavaScript class. Instead, it uses + /// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + /// see the "Click to activate..." message on the chart. + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + /// <param name="bgColor">Back Ground Color</param> + /// <param name="scaleMode">Set Scale Mode</param> + /// <param name="language">Set SWF file Language</param> + /// <returns></returns> + private static string RenderChartHTMLALL(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, + bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) + { + __INIT(); + + // Creating a local copy of global Configuration. + Hashtable __CONFIGCLONE__ = (Hashtable)__CONFIG__.Clone(); + + string wmode = GetConfiguration(ref __CONFIGCLONE__, "wMode"); + if (wmode.Trim() == "" || wmode == null) + { + wmode = allowTransparent ? "transparent" : "opaque"; + } + + SetConfiguration(ref __CONFIGCLONE__, "data", chartSWF); + SetConfiguration(ref __CONFIGCLONE__, "movie", chartSWF); + + SetConfiguration(ref __CONFIGCLONE__, "dataURL", dataUrl); + SetConfiguration(ref __CONFIGCLONE__, "dataXML", dataStr); + + SetConfiguration(ref __CONFIGCLONE__, "DOMId", chartId); + SetConfiguration(ref __CONFIGCLONE__, "id", chartId); + + SetConfiguration(ref __CONFIGCLONE__, "width", chartWidth); + SetConfiguration(ref __CONFIGCLONE__, "chartWidth", chartWidth); + + SetConfiguration(ref __CONFIGCLONE__, "height", chartHeight); + SetConfiguration(ref __CONFIGCLONE__, "chartHeight", chartHeight); + + SetConfiguration(ref __CONFIGCLONE__, "debugMode", boolToNum(debugMode)); + SetConfiguration(ref __CONFIGCLONE__, "registerWithJS", boolToNum(true)); + + SetConfiguration(ref __CONFIGCLONE__, "wMode", wmode); + + SetConfiguration(ref __CONFIGCLONE__, "bgColor", bgColor); + SetConfiguration(ref __CONFIGCLONE__, "scaleMode", scaleMode); + SetConfiguration(ref __CONFIGCLONE__, "lang", language); + + + string strFlashVars = FC_Transform(GetConfigurationGroup(ref __CONFIGCLONE__, "fvars"), "&{key}={value}", true); + SetConfiguration(ref __CONFIGCLONE__, "flashvars", strFlashVars); + + string strObjectNode = FC_Transform(GetConfigurationGroup(ref __CONFIGCLONE__, "object"), " {key}=\"{value}\"", true) ; + string strObjectParamsNode = FC_Transform(GetConfigurationGroup(ref __CONFIGCLONE__, "objparams"), "\t<param name=\"{key}\" value=\"{value}\">\n", true); + + + StringBuilder htmlcodes = new StringBuilder(); + + htmlcodes.AppendFormat("<!-- Using ASP.NET FusionCharts v3.2.2.1 Wrapper --><!-- START HTML Code Block for Chart {0} -->\n", chartId); + htmlcodes.AppendFormat("<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' {0}>\n" , strObjectNode); + htmlcodes.Append(strObjectParamsNode + Environment.NewLine); + htmlcodes.AppendFormat("<!--[if !IE]>-->\n<object type='application/x-shockwave-flash' {0}>\n{1}</object>\n<!--<![endif]-->\n</object>\n", strObjectNode, strObjectParamsNode); + htmlcodes.AppendFormat("<!-- END HTML Code Block for Chart {0} -->\n", chartId); + + // Re-Initializing... + __fc__initialize__(); + + return htmlcodes.ToString(); + } + #endregion + + /// <summary> + /// Generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + [Obsolete("")] + public static string RenderChart(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS) + { + return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, false, "", "noScale", "EN"); + } + + /// <summary> + /// Generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + [Obsolete("")] + public static string RenderChart(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent) + { + return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, "", "noScale", "EN"); + } + + /// <summary> + /// Generate html code for rendering chart + /// This function assumes that you've already included the FusionCharts JavaScript class in your page + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + /// <param name="bgColor">Back Ground Color</param> + /// <param name="scaleMode">Set Scale Mode</param> + /// <param name="language">Set SWF file Language</param> + /// <returns>JavaScript + HTML code required to embed a chart</returns> + [Obsolete("")] + public static string RenderChart(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) + { + return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, bgColor, scaleMode, language); + } + + /// <summary> + /// Renders the HTML code for the chart. This + /// method does NOT embed the chart using JavaScript class. Instead, it uses + /// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + /// see the "Click to activate..." message on the chart. + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <returns></returns> + [Obsolete("")] + public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode) + { + return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, false, false, "", "noScale", "EN"); + } + + /// <summary> + /// Renders the HTML code for the chart. This + /// method does NOT embed the chart using JavaScript class. Instead, it uses + /// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + /// see the "Click to activate..." message on the chart. + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <returns></returns> + [Obsolete("")] + public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS) + { + return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, false, "", "noScale", "EN"); + } + + /// <summary> + /// Renders the HTML code for the chart. This + /// method does NOT embed the chart using JavaScript class. Instead, it uses + /// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + /// see the "Click to activate..." message on the chart. + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + /// <returns></returns> + [Obsolete("")] + public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent) + { + return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, "", "noScale", "EN"); + } + + /// <summary> + /// Renders the HTML code for the chart. This + /// method does NOT embed the chart using JavaScript class. Instead, it uses + /// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + /// see the "Click to activate..." message on the chart. + /// </summary> + /// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + /// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + /// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + /// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + /// <param name="chartWidth">Intended width for the chart (in pixels)</param> + /// <param name="chartHeight">Intended height for the chart (in pixels)</param> + /// <param name="debugMode">Whether to start the chart in debug mode</param> + /// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + /// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + /// <param name="bgColor">Back Ground Color</param> + /// <param name="scaleMode">Set Scale Mode</param> + /// <param name="language">Set SWF file Language</param> + /// <returns></returns> + [Obsolete("")] + public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) + { + return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, bgColor, scaleMode, language); + } + + + /// <summary> + /// encodes the dataURL before it's served to FusionCharts + /// If you have parameters in your dataURL, you'll necessarily need to encode it + /// </summary> + /// <param name="dataUrl">dataURL to be fed to chart</param> + /// <param name="noCacheStr">Whether to add aditional string to URL to disable caching of data</param> + /// <returns>Encoded dataURL, ready to be consumed by FusionCharts</returns> + [Obsolete("")] + public static string EncodeDataURL(string dataUrl, bool noCacheStr) + { + + string result = dataUrl; + if (noCacheStr) + { + result += (dataUrl.IndexOf("?") != -1) ? "&" : "?"; + //Replace : in time with _, as FusionCharts cannot handle : in URLs + result += "FCCurrTime=" + DateTime.Now.ToString().Replace(":", "_"); + } + + return System.Web.HttpUtility.UrlEncode(result); + } + + /// <summary> + /// Enables Print Manager for Mozilla browsers + /// This function returns a small JavaScript snippet which can be added to ClientScript's RegisterClientScriptBlock method + /// </summary> + /// <example>ClientScript.RegisterClientScriptBlock(Page.GetType(), "", FusionCharts.enableFCPrintManager());</example> + /// <returns>String with the JavaScript code</returns> + [Obsolete("")] + public static string EnablePrintManager() + { + string strHTML = "<script type=\"text/javascript\"><!--\n if(FusionCharts && FusionCharts.printManager) FusionCharts.printManager.enabled(true);\n// --></script>"; + return (strHTML); + } + + + /// <summary> + /// Enables Print Manager for Mozilla browsers + /// </summary> + /// <param name="CurrentPage">Current page reference</param> + [Obsolete("")] + public static void EnablePrintManager(object CurrentPage) + { + System.Web.UI.Page HostPage; + HostPage = (System.Web.UI.Page)CurrentPage; + string strHTML = "<script type=\"text/javascript\"><!--\n if(FusionCharts && FusionCharts.printManager) FusionCharts.printManager.enabled(true);\n// --></script>"; + HostPage.ClientScript.RegisterClientScriptBlock(HostPage.GetType(), "", strHTML); + } + + + private static void __INIT() + { + if (__CONFIG__Initialized == false) + { + __fc__initialize__(); + __fc__initstatic__(); + __CONFIG__Initialized = true; + } + } + + /// <summary> + /// Sets the dataformat to be provided to charts (json/xml) + /// </summary> + /// <param name="format">Data format. Default is 'xml'. Other format is 'json'</param> + [Obsolete("")] + public static void SetDataFormat(string format) + { + __INIT(); + + if (format.Trim().Length == 0) + { + format = "xml"; + } + // Stores the dataformat in global configuration store + SetConfiguration("dataFormat", format); + } + + /// <summary> + /// Sets renderer type (flash/javascript) + /// </summary> + /// <param name="renderer"> Name of the renderer. Default is 'flash'. Other possibility is 'javascript'</param> + [Obsolete("")] + public static void SetRenderer(string renderer) + { + __INIT(); + + if (renderer.Trim().Length == 0) + { + renderer = "flash"; + } + // stores the renderer name in global configuration store + SetConfiguration("renderer", renderer); + } + + /// <summary> + /// Explicitely sets window mode (window[detault]/transpatent/opaque) + /// </summary> + /// <param name="mode">Name of the mode. Default is 'window'. Other possibilities are 'transparent'/'opaque'</param> + [Obsolete("")] + public static void SetWindowMode(string mode) + { + __INIT(); + SetConfiguration("wMode", mode); + } + + /// <summary> + /// FC_SetConfiguration sets various configurations of FusionCharts + /// It takes configuration names as first parameter and its value a second parameter + /// There are config groups which can contain common configuration names. All config names in all groups gets set with this value + /// unless group is specified explicitly + /// </summary> + /// <param name="setting">Name of configuration</param> + /// <param name="value">Value of configuration</param> + [Obsolete("")] + public static void SetConfiguration(string setting, object value) + { + foreach (DictionaryEntry de in __CONFIG__) + { + if (((Hashtable)__CONFIG__[de.Key]).ContainsKey(setting)) + { + ((Hashtable)__CONFIG__[de.Key])[setting] = value; + } + } + } + + /// <summary> + /// FC_SetConfiguration sets various configurations of FusionCharts + /// It takes configuration names as first parameter and its value a second parameter + /// There are config groups which can contain common configuration names. All config names in all groups gets set with this value + /// unless group is specified explicitly + /// </summary> + /// <param name="setting">Name of configuration</param> + /// <param name="value">Value of configuration</param> + private static void SetConfiguration(ref Hashtable __TEMPHASH__, string setting, object value) + { + foreach (DictionaryEntry de in __TEMPHASH__) + { + if (((Hashtable)__TEMPHASH__[de.Key]).ContainsKey(setting)) + { + ((Hashtable)__TEMPHASH__[de.Key])[setting] = value; + } + } + } + + + #region Helper Private Methods + private static string GetHTTP() + { + //Checks for protocol type. + string isHTTPS = HttpContext.Current.Request.ServerVariables["HTTPS"]; + //Checks browser type. + bool isMSIE = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].Contains("MSIE"); + //Protocol initially sets to http. + string sHTTP = "http"; + if (isHTTPS.ToLower() == "on") + { + sHTTP = "https"; + } + return sHTTP; + } + + /// <summary> + /// Transform the meaning of boolean value in integer value + /// </summary> + /// <param name="value">true/false value to be transformed</param> + /// <returns>1 if the value is true, 0 if the value is false</returns> + private static int boolToNum(bool value) + { + return value ? 1 : 0; + } + + private static void SetCONSTANTConfiguration(string setting, object value) + { + ((Hashtable)__CONFIG__["constants"])[setting] = value; + } + + private static string GetConfiguration(string setting) + { + foreach (DictionaryEntry de in __CONFIG__) + { + if (((Hashtable)__CONFIG__[de.Key]).ContainsKey(setting)) + { + return ((Hashtable)__CONFIG__[de.Key])[setting].ToString(); + } + } + return null; + } + + private static string GetConfiguration(ref Hashtable __TEMPHASH__, string setting) + { + foreach (DictionaryEntry de in __TEMPHASH__) + { + if (((Hashtable)__TEMPHASH__[de.Key]).ContainsKey(setting)) + { + return ((Hashtable)__TEMPHASH__[de.Key])[setting].ToString(); + } + } + return null; + } + + private static Hashtable GetConfigurationGroup(string setting) + { + if (__CONFIG__.ContainsKey(setting)) + { + return (Hashtable)__CONFIG__[setting]; + } + return null; + } + + private static Hashtable GetConfigurationGroup(ref Hashtable __TEMPHASH__, string setting) + { + if (__TEMPHASH__.ContainsKey(setting)) + { + return (Hashtable)__TEMPHASH__[setting]; + } + return null; + } + + private static string FC_Transform(Hashtable arr, string tFormat, bool ignoreBlankValues) + { + string converted = ""; + string Key = "", Value = ""; + foreach (DictionaryEntry ds in arr) + { + if (ignoreBlankValues == true && ds.Value.ToString().Trim() == "") continue; + Key = ds.Key.ToString(); + Value = ds.Value.ToString(); + if (Key.ToLower().Equals("codebase")) + { + Value = Value.Replace("http", GetHTTP()); + } + string TFApplied = tFormat.Replace("{key}", Key); + TFApplied = TFApplied.Replace("{value}", Value); + converted = converted + TFApplied; + } + return converted; + } + + private static string fc_encodeJSON(Hashtable json, bool enclosed) + { + string strjson = ""; + if (enclosed == true) strjson = "{"; + + strjson = strjson + FC_Transform(json, "\"{key}\" : \"{value}\", ", true); + strjson = strjson.Trim(); + + if (strjson.EndsWith(",")) strjson = strjson.Remove(strjson.Length - 1); + + return strjson; + } + + private static void __fc__initstatic__() + { + Hashtable constant = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + constant["scriptbaseUri"] = ""; + __CONFIG__["constants"] = constant; + constant = null; + } + + private static void __fc__initialize__() + { + __CONFIG__ = null; + __CONFIG__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + + Hashtable param = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + param["swfUrl"] = ""; + param["width"] = ""; + param["height"] = ""; + param["renderAt"] = ""; + param["renderer"] = ""; + param["dataSource"] = ""; + param["dataFormat"] = ""; + param["id"] = ""; + param["lang"] = ""; + param["debugMode"] = ""; + param["registerWithJS"] = ""; + param["detectFlashVersion"] = ""; + param["autoInstallRedirect"] = ""; + param["wMode"] = ""; + param["scaleMode"] = ""; + param["menu"] = ""; + param["bgColor"] = ""; + param["quality"] = ""; + + + __CONFIG__["params"] = param; + + + Hashtable fvar = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + fvar["dataURL"] = ""; + fvar["dataXML"] = ""; + fvar["chartWidth"] = ""; + fvar["chartHeight"] = ""; + fvar["DOMId"] = ""; + fvar["registerWithJS"] = "1"; + fvar["debugMode"] = "0"; + fvar["scaleMode"] = "noScale"; + fvar["lang"] = "EN"; + fvar["animation"] = "undefined"; + __CONFIG__["fvars"] = fvar; + + Hashtable oBject = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + oBject["height"] = ""; + oBject["width"] = ""; + oBject["id"] = ""; + oBject["lang"] = "EN"; + oBject["class"] = "FusionCharts"; + oBject["data"] = ""; + __CONFIG__["object"] = oBject; + + Hashtable objparam = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + objparam["movie"] = "noScale"; + objparam["scaleMode"] = "noScale"; + objparam["scale"] = ""; + objparam["wMode"] = ""; + objparam["allowScriptAccess"] = "always"; + objparam["quality"] = "best"; + objparam["FlashVars"] = ""; + objparam["bgColor"] = ""; + objparam["swLiveConnect"] = ""; + objparam["base"] = ""; + objparam["align"] = ""; + objparam["salign"] = ""; + objparam["menu"] = ""; + __CONFIG__["objparams"] = objparam; + + Hashtable embeds = new Hashtable(StringComparer.InvariantCultureIgnoreCase); + embeds["height"] = ""; + embeds["width"] = ""; + embeds["id"] = ""; + embeds["src"] = ""; + embeds["flashvars"] = ""; + embeds["name"] = ""; + embeds["scaleMode"] = "noScale"; + embeds["wMode"] = ""; + embeds["bgColor"] = ""; + embeds["quality"] = "best"; + embeds["allowScriptAccess"] = "always"; + embeds["type"] = "application/x-shockwave-flash"; + embeds["pluginspage"] = "http://www.macromedia.com/go/getflashplayer"; + embeds["swLiveConnect"] = ""; + embeds["base"] = ""; + embeds["align"] = ""; + embeds["salign"] = ""; + embeds["scale"] = ""; + embeds["menu"] = ""; + __CONFIG__["embed"] = embeds; + + param = null; + fvar = null; + oBject = null; + objparam = null; + embeds = null; + } + #endregion + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Bin/FusionCharts.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Bin/FusionCharts.dll new file mode 100755 index 0000000000000000000000000000000000000000..cc452e2c34ce2fda07bace55e4c1378fe5fdcf6b Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Bin/FusionCharts.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Bin/FusionCharts.dll.refresh b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Bin/FusionCharts.dll.refresh new file mode 100755 index 0000000000000000000000000000000000000000..965ea6a8152922705df8df5854eaa73a245c2f59 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Bin/FusionCharts.dll.refresh differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Data/jsonData.json b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Data/jsonData.json new file mode 100755 index 0000000000000000000000000000000000000000..df0998a5901519f1ae78834819f62ff60d230ebe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Data/jsonData.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Data/xmlData.xml b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Data/xmlData.xml new file mode 100755 index 0000000000000000000000000000000000000000..a1e859da31666e6d213a5ca3d0e283d48972965a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Data/xmlData.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" plotgradientcolor="" bgcolor="FFFFFF" showplotborder="0" divlinecolor="CCCCCC" showvalues="1" showcanvasborder="0" canvasbordercolor="CCCCCC" canvasborderthickness="1" showyaxisvalues="0" showlegend="1" showshadow="0" labelsepchar=": " basefontcolor="000000" labeldisplay="AUTO" numberscalevalue="1000,1000,1000" numberscaleunit="K,M,B" palettecolors="#008ee4,#9b59b6,#6baa01,#e44a00,#f8bd19,#d35400,#bdc3c7,#95a5a6,#34495e,#1abc9c" showborder="0"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" color="e44a00" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Default.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Default.aspx new file mode 100755 index 0000000000000000000000000000000000000000..6faa65ade6663c104f6b28533f391a2fa596e957 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Default.aspx @@ -0,0 +1,52 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Samples for ASP.NET(C#)</title> +</head> +<body> + <form id="form1" runat="server"> + <h3>Samples for ASP.NET(C#)</h3> + <div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="Pages/FirstChart.aspx" Text="Simple Chart Using Array" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink2" NavigateUrl="Pages/FirstGauge.aspx" Text="Simple Widget Using Array" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink3" NavigateUrl="Pages/FirstMap.aspx" Text="Simple Map Using Array" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink4" NavigateUrl="Pages/AngularGauge.aspx" Text="Angular Gauge" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink5" NavigateUrl="Pages/ClientSide_Export_Enabled.aspx" Text="Export Chart As Image (client-side)" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink6" NavigateUrl="Pages/ChartExportByExportHandler.aspx" Text="Export Chart As Image (server-side)" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink7" NavigateUrl="Pages/DrillDown.aspx" Text="Chart with Drill-Down Feature" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink8" NavigateUrl="Pages/MSColumn2d.aspx" Text="Multiseries Column 2D Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink9" NavigateUrl="Pages/MSCombi3d.aspx" Text="Multiseries Combination 3D Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink10" NavigateUrl="Pages/Pie3d.aspx" Text="Pie 3D Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink11" NavigateUrl="Pages/StackedColumn2DLine.aspx" Text="Stacked Column 2D with Line Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink12" NavigateUrl="Pages/DataBaseExample.aspx" Text="Chart Using Database (MSSQL)" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink13" NavigateUrl="Pages/UsaMap.aspx" Text="USA Map" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink14" NavigateUrl="Pages/CommonThemeUsage.aspx" Text="Chart Themes" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink15" NavigateUrl="Pages/XmlDataUrl.aspx" Text="Chart using data from XML URL" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink16" NavigateUrl="Pages/JsonUrlData.aspx" Text="Chart using data from JSON URL" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink17" NavigateUrl="Pages/RenderCharWithPercentageWidthHeight.aspx" Text="Dynamic Chart Resize" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink18" NavigateUrl="Pages/DynamicChartType.aspx" Text="Chart Type Change At Runtime" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink19" NavigateUrl="Pages/ChartAnnotations.aspx" Text="Using Annotations On Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink20" NavigateUrl="Pages/ChartUpdateOnClick.aspx" Text="Updating Different Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink21" NavigateUrl="Pages/ChartTooltipCustomization.aspx" Text="Customizing tooltip" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink22" NavigateUrl="Pages/ChartLanguage.aspx" Text="Different language example" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink23" NavigateUrl="Pages/ChartSpclChar.aspx" Text="Chart using special character in XML data format" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink24" NavigateUrl="Pages/HighlightDataPoint.aspx" Text="HighLight one Data Point" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink24" NavigateUrl="Pages/ChartInstanceLevelAPI.aspx" Text="Add event to a chart dyamically" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink25" NavigateUrl="Pages/ChartMessageExample.aspx" Text="Configure chart message" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink26" NavigateUrl="Pages/GetDataSelectScatterChart.aspx" Text="Get data from select scatter chart and show them in tabular format" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink27" NavigateUrl="Pages/NumberFormatModule.aspx" Text="Use of fusioncharts number module API" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink28" NavigateUrl="Pages/InteractiveEvent.aspx" Text="Show data plot value on click" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink29" NavigateUrl="Pages/ProductLevelAPI.aspx" Text="Change chart properties dynamically" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink30" NavigateUrl="Pages/ProductLifeCycleEvent.aspx" Text="sample to showcase one product life cycle event attachment" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink31" NavigateUrl="Pages/SpecialChartTypeAPI.aspx" Text="shocasing use special chart type API" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink32" NavigateUrl="Pages/SpecialEvent.aspx" Text="example of data update event" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink33" NavigateUrl="Pages/UpdateDataRuntime.aspx" Text="update dial value on runtime" runat="server"/></span></div> + + </div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Default.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Default.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..2a832d3a36d34eee087900e0257e26c8a45b0479 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Default.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class _Default : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/AngularGauge.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/AngularGauge.aspx new file mode 100755 index 0000000000000000000000000000000000000000..dbcb6facb51b411f1796d7f33dcc1c1f5a60b001 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/AngularGauge.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AngularGauge.aspx.cs" Inherits="AngularGauge" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Angular Gauge</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Angular Gauge</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/AngularGauge.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/AngularGauge.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..f7ee87a2495ecab73da4c9662cb096248673f02b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/AngularGauge.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class AngularGauge : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data to render map + string jsonData = "{'chart': {'caption': 'Nordstorm\\'s Customer Satisfaction Score for 2017','lowerLimit': '0','upperLimit': '100','showValue': '1','numberSuffix': '%','theme': 'fusion','showToolTip': '0'},'colorRange': {'color': [{'minValue': '0','maxValue': '50','code': '#F2726F'}, {'minValue': '50','maxValue': '75','code': '#FFC533'}, {'minValue': '75','maxValue': '100','code': '#62B58F'}]},'dials': {'dial': [{'value': '81'}]}}"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart gauge = new Chart("angulargauge", "first_chart", "400", "400", "json", jsonData); + //render gauge + Literal1.Text = gauge.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartAnnotations.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartAnnotations.aspx new file mode 100755 index 0000000000000000000000000000000000000000..15cc8727a49717bd9bc1611467ed14f50d575660 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartAnnotations.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartAnnotations.aspx.cs" Inherits="Pages_ChartAnnotations" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Using Annotations On Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Using Annotations On Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartAnnotations.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartAnnotations.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..cf0e303d6c4dbac405b920673b7b66b6bae6f10d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartAnnotations.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ChartAnnotations : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Bakersfield Central - Total footfalls', 'subCaption': 'Last week', 'xAxisName': 'Day', 'yAxisName': 'No. of Visitors (In 1000s)', 'showValues': '0', 'theme': 'fusion' }, 'annotations':{ 'groups': [ { 'id': 'anchor-highlight', 'items': [ { 'id': 'high-star', 'type': 'circle', 'x': '$dataset.0.set.2.x', 'y': '$dataset.0.set.2.y', 'radius': '12', 'color': '#6baa01', 'border': '2', 'borderColor': '#f8bd19' }, { 'id': 'label', 'type': 'text', 'text': 'Highest footfall 25.5K', 'fillcolor': '#6baa01', 'rotate': '90', 'x': '$dataset.0.set.2.x+75', 'y': '$dataset.0.set.2.y-2' } ] } ] }, 'data': [ { 'label': 'Mon', 'value': '15123' }, { 'label': 'Tue', 'value': '14233' }, { 'label': 'Wed', 'value': '25507' }, { 'label': 'Thu', 'value': '9110' }, { 'label': 'Fri', 'value': '15529' }, { 'label': 'Sat', 'value': '20803' }, { 'label': 'Sun', 'value': '19202' } ] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartExportByExportHandler.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartExportByExportHandler.aspx new file mode 100755 index 0000000000000000000000000000000000000000..2f4d441ae1e1dc0446ac47d0aad9fbca6e9d2d5d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartExportByExportHandler.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartExportByExportHandler.aspx.cs" Inherits="Pages_ChartExportByExportHandler" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Export Chart As Image (server-side)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Export Chart As Image (server-side)</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartExportByExportHandler.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartExportByExportHandler.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..18caa48fe68cb6dffdaf6b81990f19faa7ecaacb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartExportByExportHandler.aspx.cs @@ -0,0 +1,18 @@ +using System; +using FusionCharts.Charts; + + +public partial class Pages_ChartExportByExportHandler : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //chart data + string jsonData = "{ 'chart': { 'caption': 'Salary Hikes by Country', 'subCaption': '2016 - 2017', 'showhovereffect': '1', 'numberSuffix': '%', 'rotatelabels': '1', 'exportEnabled':'1', 'exportMode': 'server' , 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Australia' }, { 'label': 'New-Zealand' }, { 'label': 'India' }, { 'label': 'China' }, { 'label': 'Myanmar' }, { 'label': 'Bangladesh' }, { 'label': 'Thailand' }, { 'label': 'South Korea' }, { 'label': 'Hong Kong' }, { 'label': 'Singapore' }, { 'label': 'Taiwan' }, { 'label': 'Vietnam' }] }], 'dataset': [{ 'seriesName': '2016 Actual Salary Increase', 'plotToolText' : 'Salaries increased by <b>$dataValue</b> in 2016', 'data': [{ 'value': '3' }, { 'value': '3' }, { 'value': '10' }, { 'value': '7' }, { 'value': '7.4' }, { 'value': '10' }, { 'value': '5.4' }, { 'value': '4.5' }, { 'value': '4.1' }, { 'value': '4' }, { 'value': '3.7' }, { 'value': '9.3' }] }, { 'seriesName': '2017 Projected Salary Increase', 'plotToolText' : 'Salaries expected to increase by <b>$dataValue</b> in 2017', 'renderAs': 'line', 'data': [{ 'value': '3' }, { 'value': '2.8' }, { 'value': '10' }, { 'value': '6.9' }, { 'value': '6.7' }, { 'value': '9.4' }, { 'value': '5.5' }, { 'value': '5' }, { 'value': '4' }, { 'value': '4' }, { 'value': '4.5' }, { 'value': '9.8' }] }, { 'seriesName': 'Inflation rate', 'plotToolText' : '$dataValue projected inflation', 'renderAs': 'area', 'showAnchors':'0', 'data': [{ 'value': '1.6' }, { 'value': '0.6' }, { 'value': '5.6' }, { 'value': '2.3' }, { 'value': '7' }, { 'value': '5.6' }, { 'value': '0.2' }, { 'value': '1' }, { 'value': '2.6' }, { 'value': '0' }, { 'value': '1.1' }, { 'value': '2.4' }] }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart pie3D = new Chart("mscombi3d", "first_chart", "600", "400", "json", jsonData); + //render chart + Literal1.Text = pie3D.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartInstanceLevelAPI.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartInstanceLevelAPI.aspx new file mode 100755 index 0000000000000000000000000000000000000000..1c38b0be1d42005e6aee532fb90fc94ecab03160 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartInstanceLevelAPI.aspx @@ -0,0 +1,97 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartInstanceLevelAPI.aspx.cs" Inherits="Pages_ChartInstanceLevelAPI" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + + </style> + <title>FusionCharts | Add event to a chart dyamically</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + track = function(){ + FusionCharts.addEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click on the plot to see the value along with the label"; + + }; + clickHandler = function(e){ + document.getElementById("message").innerHTML = "You have clicked on plot <b>"+ e.data.categoryLabel + "</b> whose value is <b>" + e.data.displayValue + "</b>"; + }; + removeEvent = function(){ + FusionCharts.removeEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click the below buttons to add an event dynamically to the chart"; + + } + </script> + <form id="form1" runat="server"> + <h3>Add event to a chart dyamically</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name= "radios" onclick="track()" /> + <label for="radio1">LISTEN TO DATAPLOTCLICK EVENT</label> + <input type="radio" id="radio2" name="radios" onclick="removeEvent()" /> + <label for="radio2">REMOVE DATAPLOTCLICK EVENT</label> + + </div> + + + <br/> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartInstanceLevelAPI.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartInstanceLevelAPI.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..8a9399b9cc0abb4d32fa334a2d0b7711d9f8a0b4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartInstanceLevelAPI.aspx.cs @@ -0,0 +1,18 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ChartInstanceLevelAPI : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + + //render chart + Literal1.Text = column2d.Render(); + } +} diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartLanguage.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartLanguage.aspx new file mode 100755 index 0000000000000000000000000000000000000000..d2075f8d6bc3412651036c637aba2e275088c1cb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartLanguage.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartLanguage.aspx.cs" Inherits="Pages_ChartLanguage" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Different language example</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <h3>Different language example</h3> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartLanguage.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartLanguage.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..250f14e25d98e6c974aa86bab104920c87da687d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartLanguage.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ChartLanguage : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'سوبرماركت هاري', 'subcaption': 'الإيرادات الشهرية للعام الماضي', 'xaxisname': 'الشهر', 'yaxisname': 'كمية', 'numberprefix': '$', 'theme': 'fusion', 'rotatevalues': '1', 'exportenabled': '1' }, 'data': [ { 'label': 'يناير', 'value': '420000' }, { 'label': 'فبراير', 'value': '810000' }, { 'label': 'مارس', 'value': '720000' }, { 'label': 'أبريل', 'value': '550000' }, { 'label': 'مايو', 'value': '910000' }, { 'label': 'يونيو', 'value': '510000' }, { 'label': 'يوليو', 'value': '680000' }, { 'label': 'أغسطس', 'value': '620000' }, { 'label': 'سبتمبر', 'value': '610000' }, { 'label': 'أكتوبر', 'value': '490000' }, { 'label': 'نوفمبر', 'value': '900000' }, { 'label': 'ديسمبر', 'value': '730000' } ] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartMessageExample.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartMessageExample.aspx new file mode 100755 index 0000000000000000000000000000000000000000..052c8595b8a34bf192ae055f21bd2c566aabf504 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartMessageExample.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartMessageExample.aspx.cs" Inherits="Pages_ChartMessageExample" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Configure chart message</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Configure chart message</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartMessageExample.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartMessageExample.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..a99bcd30780d615c05f3ec49c35e3e8969c14e38 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartMessageExample.aspx.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using FusionCharts.Charts; + +public partial class Pages_ChartMessageExample : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', 'exportEnabled':'1' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + + column2d.AddMessage("loadMessage", "please wait data is being loaded"); + column2d.AddMessage("loadMessageFontSize", "18"); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartSpclChar.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartSpclChar.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c2f6249b67493f796bd573f3f401529275f07520 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartSpclChar.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartSpclChar.aspx.cs" Inherits="Pages_ChartSpclChar" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using special character in XML data format</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <h3>Chart using special character in XML data format</h3> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartSpclChar.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartSpclChar.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..066a982005617a775b80537c89a952021c093c62 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartSpclChar.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ChartSpclChar : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //xml data in string format + string xmlData = "<chart caption='Harry's SuperMart' subcaption='Monthly revenue for last year' xaxisname='Month' yaxisname='Amount' numberprefix='¥' theme='fusion' rotatevalues='1' exportenabled='1'> <set label='Jan' value='420000' /> <set label='Feb' value='810000' /> <set label='Mar' value='720000' /> <set label='Apr' value='550000' /> <set label='May' value='910000' /> <set label='Jun' value='510000' /> <set label='Jul' value='680000' /> <set label='Aug' value='620000' /> <set label='Sep' value='610000' /> <set label='Oct' value='490000' /> <set label='Nov' value='900000' /> <set label='Dec' value='730000' /> </chart>"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "xml", xmlData); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartTooltipCustomization.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartTooltipCustomization.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c64d3e7529db6f5fea95f8976f954c82bce6e5d9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartTooltipCustomization.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartTooltipCustomization.aspx.cs" Inherits="Pages_ChartTooltipCustomization" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Customizing tooltip</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <h3>Customizing tooltip</h3> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartTooltipCustomization.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartTooltipCustomization.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..30733ca38633417ed911a9ab4ed74ca3b2eac988 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartTooltipCustomization.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ChartTooltipCustomization : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Top 3 Electronic Brands in Top 3 Revenue Earning States', 'subcaption': 'Last month', 'aligncaptiontocanvas': '0', 'yaxisname': 'Statewise Sales (in %)', 'xaxisname': 'Brand', 'numberprefix': '$', 'showxaxispercentvalues': '1', 'showsum': '1', 'showPlotBorder': '1', 'plottooltext': '<div id=\\'nameDiv\\' style=\\'font-size: 14px; border-bottom: 1px dashed #666666; font-weight:bold; padding-bottom: 3px; margin-bottom: 5px; display: inline-block;\\'>$label :</div>{br}State: <b>$seriesName</b>{br}Sales : <b>$dataValue</b>{br}Market share in State : <b>$percentValue</b>{br}Overall market share of $label: <b>$xAxisPercentValue</b>', 'theme': 'fusion' }, 'categories': [ { 'category': [ { 'label': 'Bose' }, { 'label': 'Dell' }, { 'label': 'Apple' } ] } ], 'dataset': [ { 'seriesname': 'California', 'data': [ { 'value': '335000' }, { 'value': '225100' }, { 'value': '164200' } ] }, { 'seriesname': 'Washington', 'data': [ { 'value': '215000' }, { 'value': '198000' }, { 'value': '120000' } ] }, { 'seriesname': 'Nevada', 'data': [ { 'value': '298000' }, { 'value': '109300' }, { 'value': '153600' } ] } ] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart marimekko = new Chart("marimekko", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = marimekko.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartUpdateOnClick.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartUpdateOnClick.aspx new file mode 100755 index 0000000000000000000000000000000000000000..ecb9c3ec9d2a23e2a6089ac6edd7b3e8adddff07 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartUpdateOnClick.aspx @@ -0,0 +1,105 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartUpdateOnClick.aspx.cs" Inherits="Pages_ChartUpdateOnClick" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Updating Different Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript"> + + function updateChart(value) { + var chartData = ""; + switch (value) { + case 'Europe': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488" + }, { + "label": "Belgium", + "value": "35132" + }, { + "label": "Denmark", + "value": "34779" + }, { + "label": "Finland", + "value": "19776" + }] + } + break; + + case 'NA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + }, { + "label": "Mexico", + "value": "24072", + }, { + "label": "USA", + "value": "263546", + }] + } + break; + case 'SA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119" + }, { + "label": "Brazil", + "value": "114954" + }, { + "label": "Venezuela", + "value": "60806" + }] + } + break; + } // switch ends + + FusionCharts.items["second_chart"].setJSONData(chartData); + } + + </script> + <form id="form1" runat="server"> + <asp:Table runat ="server" style="width: 100%;"> + <asp:TableRow> + <asp:TableCell> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </asp:TableCell> + <asp:TableCell> + <asp:Literal ID="Literal2" runat="server"></asp:Literal> + </asp:TableCell> + </asp:TableRow> + </asp:Table> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartUpdateOnClick.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartUpdateOnClick.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..ada8fc64123489fd0477bbc263610de0204eb7db --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartUpdateOnClick.aspx.cs @@ -0,0 +1,22 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ChartUpdateOnClick : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + // store chart data as json string + string jsonDataFirstChart, jsonDataSecondChart; + jsonDataFirstChart = "{ 'chart': { 'caption': 'Sales by Region', 'xaxisname': 'Region', 'yaxisname': 'Total Sales', 'numbersuffix': 'K', 'theme': 'fusion' }, 'data': [{ 'label': 'Europe', 'value': '827508', 'link': 'j-updateChart-Europe' }, { 'label': 'North America', 'value': '342947', 'link': 'j-updateChart-NA' }, { 'label': 'South America', 'value': '183881', 'link': 'j-updateChart-SA' }] }"; + jsonDataSecondChart = "{ 'chart': { } }"; + + // Create chart instance for first chart + Chart firstChart = new Chart("column2d", "first_chart", "600", "300", "json", jsonDataFirstChart); + // create chart instance for second chart + Chart secondChart = new Chart("column2d", "second_chart", "600", "300", "json", jsonDataSecondChart); + // render first chart + Literal1.Text = firstChart.Render(); + // render second chart + Literal2.Text = secondChart.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartWithXmlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartWithXmlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..b5b9ac871372e3cd3a8799143db320260ec8cb14 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartWithXmlData.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartWithXmlData.aspx.cs" Inherits="ChartWithXmlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from XML URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from XML URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartWithXmlData.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartWithXmlData.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..01044ee1b2cc1e5acdd3e995965554a8bb8059ab --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ChartWithXmlData.aspx.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Xml.Linq; +using FusionCharts.Charts; + +public partial class ChartWithXmlData : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //store label-value pair + var dataValuePair = new List<KeyValuePair<string, double>>(); + + dataValuePair.Add(new KeyValuePair<string, double>("Venezuela", 290)); + dataValuePair.Add(new KeyValuePair<string, double>("Saudi", 260)); + dataValuePair.Add(new KeyValuePair<string, double>("Canada", 180)); + dataValuePair.Add(new KeyValuePair<string, double>("Iran", 140)); + dataValuePair.Add(new KeyValuePair<string, double>("Russia", 115)); + dataValuePair.Add(new KeyValuePair<string, double>("UAE", 100)); + dataValuePair.Add(new KeyValuePair<string, double>("US", 30)); + dataValuePair.Add(new KeyValuePair<string, double>("China", 30)); + + // store chart config name-config value pair + + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + chartConfig.Add("caption", "Countries With Most Oil Reserves [2017-18]"); + chartConfig.Add("subCaption", "In MMbbl = One Million barrels"); + chartConfig.Add("xAxisName", "Country"); + chartConfig.Add("yAxisName", "Reserves (MMbbl)"); + chartConfig.Add("numberSuffix", "k"); + chartConfig.Add("theme", "fusion"); + + // create root eleement chart + //it will store all chart config an data to render chart + XElement chart = new XElement("chart"); + //iterate through chart configuration + //add each config as chart element attribute + foreach(var config in chartConfig) + { + //chart.SetAttributeValue(formatStringQuote(config.Key), formatStringQuote(config.Value)); + chart.SetAttributeValue(config.Key, config.Value); + } + // create set elemnt as a child element of chart + foreach (KeyValuePair<string, double> pair in dataValuePair) + { + XElement set = new XElement("set"); + set.SetAttributeValue("label", pair.Key); + set.SetAttributeValue("value", pair.Value.ToString()); + chart.Add(set); + } + //Create chart instance + // charttype, chartID, width, height, data format, data + + Chart column_chart = new Chart("column2d", "first_chart", "800", "550", "xml", formatString(chart.ToString())); + Literal1.Text = column_chart.Render(); + + } + private string formatString(string str) + { + // xml is multiline + // c# does not support multi line string + // js expects ' as \' to write in browser so replace them by \\' + // replace each \n and \r with space and " by ' + return str.Replace("'","\\'").Replace("\"", "'").Replace("\n", "").Replace("\r", ""); + + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ClientSide_Export_Enabled.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ClientSide_Export_Enabled.aspx new file mode 100755 index 0000000000000000000000000000000000000000..2cfcab9cc6d52bcc4fdbb3b4f671ef090e010f22 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ClientSide_Export_Enabled.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientSide_Export_Enabled.aspx.cs" Inherits="ClientSide_Export_Enabled" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Export Chart As Image (client-side)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Export Chart As Image (client-side)</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ClientSide_Export_Enabled.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ClientSide_Export_Enabled.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..2f3bdf1cf4a57b2710e4e20ec700c1e52097d5fe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ClientSide_Export_Enabled.aspx.cs @@ -0,0 +1,18 @@ +using System; +using FusionCharts.Charts; + +public partial class ClientSide_Export_Enabled : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', 'exportEnabled':'1' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/CommonThemeUsage.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/CommonThemeUsage.aspx new file mode 100755 index 0000000000000000000000000000000000000000..4917db25159b81b425204f09a099caa6af713415 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/CommonThemeUsage.aspx @@ -0,0 +1,73 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CommonThemeUsage.aspx.cs" Inherits="CommonThemeUsage" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Use of Common Theme</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + <form id="form1" runat="server"> + <h3>Use of Common Theme</h3> + <div style="width: 100%; display: table;"> + <div style="display: table-row"> + <div style="width: 40%; display: table-cell;"><asp:Literal ID="Literal1" runat="server"></asp:Literal></div> + <div style="width: 40%; display: table-cell;"><asp:Literal ID="Literal2" runat="server"></asp:Literal> </div> + </div> + </div> + </form> + <script> + FusionCharts && FusionCharts.ready(function () { + + //FusionCharts.options.defaultTheme = "fint"; + + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + ChangeTheme(this.value); + }; + } + } + }); + + function ChangeTheme(theme) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].setChartAttribute('theme', theme); + } + } + }; + </script> + <div align="center" style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <label style="padding: 0px 5px !important;">Select a theme for all charts /label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" checked value="fusion"/> Fusion + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="gammel"/> Gammel + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="zune"/> Zune + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="carbon"/> Carbon + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="ocean"/> Ocean + </label> + </div> + <div><span><a href ="../Default.aspx">Go Back</a></span></div> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/CommonThemeUsage.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/CommonThemeUsage.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..f5ffc2a539f8c2170b6b010cb1e13fb588c6fa5b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/CommonThemeUsage.aspx.cs @@ -0,0 +1,24 @@ +using System; +using FusionCharts.Charts; + + +public partial class CommonThemeUsage : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + // store chart data as json string + string jsonDataFirstChart, jsonDataSecondChart; + jsonDataFirstChart = "{ 'chart': { 'caption': 'Split of Sales by Product Category', 'subCaption': '5 top performing stores - last month', 'plotToolText': '<div><b>\\$label</b><br/>Product : <b>\\$seriesname</b><br/>Sales : <b>\\$\\$value</b></div>', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Garden Groove harbour' }, { 'label': 'Bakersfield Central' }, { 'label': 'Los Angeles Topanga' }, { 'label': 'Compton-Rancho Dom' }, { 'label': 'Daly City Serramonte' }] }], 'dataset': [{ 'seriesname': 'Non-Food Products', 'data': [{ 'value': '28800' }, { 'value': '25400' }, { 'value': '21800' }, { 'value': '19500' }, { 'value': '11500' }] }, { 'seriesname': 'Food Products', 'data': [{ 'value': '17000' }, { 'value': '19500' }, { 'value': '12500' }, { 'value': '14500' }, { 'value': '17500' }] }] }"; + jsonDataSecondChart = "{ 'chart': { 'caption': 'Harry\\'s SuperMart', 'subCaption': 'Top 5 stores in last month by revenue', 'theme': 'fusion' }, 'data':[ { 'label': 'Bakersfield Central', 'value': '880000' }, { 'label': 'Garden Groove harbour', 'value': '730000' }, { 'label': 'Los Angeles Topanga', 'value': '590000' }, { 'label': 'Compton-Rancho Dom', 'value': '520000' }, { 'label': 'Daly City Serramonte', 'value': '330000' } ] }"; + + // Create chart instance for first chart + Chart overlappedColumnChart = new Chart("overlappedcolumn2d", "first_chart", "600", "300", "json", jsonDataFirstChart); + // create chart instance for second chart + Chart columnChart = new Chart("column2d","second_chart","600","300","json", jsonDataSecondChart); + // render first chart + Literal1.Text = overlappedColumnChart.Render(); + // render second chart + Literal2.Text = columnChart.Render(); + } + +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DataBaseExample.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DataBaseExample.aspx new file mode 100755 index 0000000000000000000000000000000000000000..e866b55d80a6131c4c45a4015d37cdfd6231246a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DataBaseExample.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataBaseExample.aspx.cs" Inherits="Pages_DataBaseExample" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart Using Database (MSSQL)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart Using Database (MSSQL)</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DataBaseExample.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DataBaseExample.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..756e0996aeb0be5d351c2fe5b2114b0f850b7783 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DataBaseExample.aspx.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Text; +using FusionCharts.Charts; + +public partial class Pages_DataBaseExample : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + DataTable dt = new DataTable(); + string query = "select Region, SUM([Total Sales]) as [Total Sales] from Sales_Record group by Region"; + // establish DB connection and fetch chart data + GetChartData(ref dt, query); + // from DB data create chart compatible json + string chartJsonData = ProcessChartData(dt); + //Create chart instance + // charttype, chartID, width, height, data format, data + + Chart chart = new Chart("column2d", "first_chart", "900", "550", "json", chartJsonData); + Literal1.Text = chart.Render(); + } + private void GetChartData(ref DataTable dt, string query) + { + + string connetionString = null; + string serverName = "POUSHALI-PC\\SHAREPOINT"; + string databaseName = "DrillDownDB"; + //clear previous data from data table + dt.Clear(); + // we are connectiong by windows authentication so, Trusted_Connection = True; + connetionString = "Data Source=" + serverName + ";Initial Catalog=" + databaseName + ";Trusted_Connection=True;"; + + using (SqlConnection con = new SqlConnection(connetionString)) + { + con.Open(); + using (SqlCommand command = new SqlCommand(query, con)) + using (SqlDataAdapter da = new SqlDataAdapter(command)) + { + // fill data table + da.Fill(dt); + + } + + } + } + private string ProcessChartData(DataTable dt) + { + StringBuilder jsonData = new StringBuilder(); + StringBuilder data = new StringBuilder(); + // store chart config name-config value pair + + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + + chartConfig.Add("caption", "Total Sales by Region"); + chartConfig.Add("xAxisName", "Region"); + chartConfig.Add("yAxisName", "Total Sales"); + chartConfig.Add("numberSuffix", "k"); + chartConfig.Add("theme", "fusion"); + + // json data to use as chart data source + jsonData.Append("{'chart':{"); + foreach (var config in chartConfig) + { + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value); + } + jsonData.Replace(",", "},", jsonData.Length - 1, 1); + data.Append("'data':["); + + //iterate through data table to build data object + if (dt != null && dt.Rows.Count > 0) + { + foreach (DataRow row in dt.Rows) + { + data.AppendFormat("{{'label':'{0}','value':'{1}'}},", row[0].ToString(), row[1].ToString()); + } + } + data.Replace(",", "]", data.Length - 1, 1); + + jsonData.Append(data.ToString()); + jsonData.Append("}"); + return jsonData.ToString(); + } + +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DrillDown.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DrillDown.aspx new file mode 100755 index 0000000000000000000000000000000000000000..6ba24c80f67fc4b4d282c0c2207949aa7c6d4664 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DrillDown.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DrillDown.aspx.cs" Inherits="DrillDown" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart with Drill-Down Feature</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart with Drill-Down Feature</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DrillDown.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DrillDown.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..b3dd3685261bda4ede644a7bebc9bb85ad179bc9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DrillDown.aspx.cs @@ -0,0 +1,21 @@ +using System; +using FusionCharts.Charts; + +public partial class DrillDown : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + RenderChart(); + + } + private void RenderChart() + { + //Create chart instance + // charttype, chartID, width, height, data format, data + + Chart chart = new Chart("column2d", "first_chart", "900", "550", "jsonurl", "Handler/Handler.ashx"); + Literal1.Text = chart.Render(); + } + + +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DynamicChartType.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DynamicChartType.aspx new file mode 100755 index 0000000000000000000000000000000000000000..1589bd155c627a72d404f16e6cd39512a0f560c4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DynamicChartType.aspx @@ -0,0 +1,59 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DynamicChartType.aspx.cs" Inherits="Pages_DynamicChartType" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart Type Change At Runtime (client-side)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeChartType(this.value); + }; + } + } + }); + + + function changeChartType(chartType) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].chartType(chartType); + } + } + }; + </script> + <h3>Chart Type Change At Runtime</h3> + <div align="center"> + <label style="padding: 0px 5px !important;">Select The Chart Type</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="column2d"/>Column 2D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="pie3d"/>Pie 3D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="bar2d"/>Bar 2D + </label> + </div> + <form id="form1" runat="server"> + + <div style="width: 100%; display: block;" align="center"> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> + +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DynamicChartType.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DynamicChartType.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..7a2dc067ddc9ce83783e117dcd2dfc93bffe27ac --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/DynamicChartType.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_DynamicChartType : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion'}, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + } +} diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstChart.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstChart.aspx new file mode 100755 index 0000000000000000000000000000000000000000..2a761ed337ccc03b904990b55e1fd142df1e6aa2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstChart.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FirstChart.aspx.cs" Inherits="FirstChart" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Simple Chart Using Array</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Simple Chart Using Array</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstChart.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstChart.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..e6df0a4d59737ff08d1af471cd37a0fc4da1c623 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstChart.aspx.cs @@ -0,0 +1,59 @@ +using System; +using System.Text; +using System.Collections.Generic; +using FusionCharts.Charts; + +public partial class FirstChart : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //store label-value pair + var dataValuePair = new List<KeyValuePair<string, double>>(); + + dataValuePair.Add(new KeyValuePair<string, double>("Venezuela", 290)); + dataValuePair.Add(new KeyValuePair<string, double>("Saudi", 260)); + dataValuePair.Add(new KeyValuePair<string, double>("Canada", 180)); + dataValuePair.Add(new KeyValuePair<string, double>("Iran", 140)); + dataValuePair.Add(new KeyValuePair<string, double>("Russia", 115)); + dataValuePair.Add(new KeyValuePair<string, double>("UAE", 100)); + dataValuePair.Add(new KeyValuePair<string, double>("US", 30)); + dataValuePair.Add(new KeyValuePair<string, double>("China", 30)); + + StringBuilder jsonData = new StringBuilder(); + StringBuilder data = new StringBuilder(); + // store chart config name-config value pair + + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + chartConfig.Add("caption", "Countries With Most Oil Reserves [2017-18]"); + chartConfig.Add("subCaption", "In MMbbl = One Million barrels"); + chartConfig.Add("xAxisName", "Country"); + chartConfig.Add("yAxisName", "Reserves (MMbbl)"); + chartConfig.Add("numberSuffix", "k"); + chartConfig.Add("theme", "fusion"); + + // json data to use as chart data source + jsonData.Append("{'chart':{"); + foreach (var config in chartConfig) + { + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value); + } + jsonData.Replace(",", "},", jsonData.Length - 1, 1); + + // build data object from label-value pair + data.Append("'data':["); + + foreach (KeyValuePair<string, double> pair in dataValuePair) + { + data.AppendFormat("{{'label':'{0}','value':'{1}'}},", pair.Key, pair.Value); + } + data.Replace(",", "]", data.Length - 1, 1); + + jsonData.Append(data.ToString()); + jsonData.Append("}"); + //Create chart instance + // charttype, chartID, width, height, data format, data + + Chart chart = new Chart("column2d", "first_chart", "800", "550", "json", jsonData.ToString()); + Literal1.Text = chart.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstGauge.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstGauge.aspx new file mode 100755 index 0000000000000000000000000000000000000000..335918db77b019e6569889e2c6b48f0d1a5174ac --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstGauge.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FirstGauge.aspx.cs" Inherits="FirstGauge" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Simple Widget Using Array</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Simple Widget Using Array</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstGauge.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstGauge.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..ac104a7673d5563bccf373579aae095da8b612cb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstGauge.aspx.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Text; +using FusionCharts.Charts; + +public partial class FirstGauge : System.Web.UI.Page +{ + class ColorRange + { + public int Min { get; set; } + public int Max { get; set; } + public string ColorCode { get; set; } + + public ColorRange(int min, int max, string code) + { + Min = min; + Max = max; + ColorCode = code; + } + } + protected void Page_Load(object sender, EventArgs e) + { + // store chart config name-config value pair + + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + chartConfig.Add("caption", "Nordstorm\\'s Customer Satisfaction Score for 2017"); + chartConfig.Add("lowerLimit", "0"); + chartConfig.Add("upperLimit", "100"); + chartConfig.Add("showValue", "1"); + chartConfig.Add("numberSuffix", "%"); + chartConfig.Add("theme", "fusion"); + chartConfig.Add("showToolTip", "0"); + + List<ColorRange> color = new List<ColorRange>(); + color.Add(new ColorRange(0, 50, "#F2726F")); + color.Add(new ColorRange(50, 75, "#FFC533")); + color.Add(new ColorRange(75, 100, "#62B58F")); + + //store dial configuration + + var dial = new List<KeyValuePair<string, string>>(); + dial.Add(new KeyValuePair<string, string>("value", "81")); + + // json data to use as chart data source + StringBuilder jsonData = new StringBuilder(); + //build chart config object + jsonData.Append("{'chart':{"); + foreach (var config in chartConfig) + { + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value); + } + jsonData.Replace(",", "},", jsonData.Length - 1, 1); + + StringBuilder range = new StringBuilder(); + //build colorRange object + range.Append("'colorRange':{"); + range.Append("'color':["); + foreach (ColorRange clr in color) + { + range.AppendFormat("{{'minValue':'{0}','maxValue':'{1}','code':'{2}'}},", clr.Min, clr.Max, clr.ColorCode); + } + range.Replace(",", "]},", range.Length - 1, 1); + //build dials object + StringBuilder dials = new StringBuilder(); + dials.Append("'dials':{"); + dials.Append("'dial':["); + foreach (var dialCnf in dial) + { + dials.AppendFormat("{{'{0}':'{1}'}},", dialCnf.Key, dialCnf.Value); + } + dials.Replace(",", "]}", dials.Length - 1, 1); + + jsonData.Append(range.ToString()); + jsonData.Append(dials.ToString()); + jsonData.Append("}"); + + //Create gauge instance + // charttype, chartID, width, height, data format, data + + Chart gauge = new Chart("angulargauge", "first_gauge", "400", "350", "json", jsonData.ToString()); + //render gauge + Literal1.Text = gauge.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstMap.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstMap.aspx new file mode 100755 index 0000000000000000000000000000000000000000..84914536833ec57a98acb69aaac161055b38a83b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstMap.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FirstMap.aspx.cs" Inherits="FirstMap" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Simple Map Using Array</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/maps/fusioncharts.world.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Simple Map Using Array</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstMap.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstMap.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..d5d31f8c377739aafdaae42106596603a913be65 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/FirstMap.aspx.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.Text; +using FusionCharts.Charts; + +public partial class FirstMap : System.Web.UI.Page +{ + //Create colorRange class + //It will store Min range Max range and specific color code for each range + + class ColorRange + { + public double Min { get; set; } + public double Max { get; set; } + public string ColorCode { get; set; } + + public ColorRange(double min, double max, string code) + { + Min = min; + Max = max; + ColorCode = code; + } + } + //Create countryData class + //It will store id, value and show label for each country + + class CountryData + { + public string ID { get; set; } + public double Value { get; set; } + public int ShowLabel { get; set; } + + public CountryData(string id, double value, int showLabel) + { + ID = id; + Value = value; + ShowLabel = showLabel; + + } + + } + protected void Page_Load(object sender, EventArgs e) + { + // store chart config name-config value pair + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + chartConfig.Add("caption", "Average Annual Population Growth"); + chartConfig.Add("subCaption", " 1955-2015"); + chartConfig.Add("includevalueinlabels", "1"); + chartConfig.Add("labelsepchar", ": "); + chartConfig.Add("numberSuffix", "%"); + chartConfig.Add("entityFillHoverColor", "#FFF9C4"); + chartConfig.Add("theme", "fusion"); + + // store color code for different range + List<ColorRange> color = new List<ColorRange>(); + color.Add(new ColorRange(0.5, 1.0, "#FFD74D")); + color.Add(new ColorRange(1.0, 2.0, "#FB8C00")); + color.Add(new ColorRange(2.0, 3.0, "#E65100")); + + // store country data + List<CountryData> countries = new List<CountryData>(); + countries.Add(new CountryData("NA", .82, 1)); + countries.Add(new CountryData("SA", 2.04, 1)); + countries.Add(new CountryData("AS", 1.78, 1)); + countries.Add(new CountryData("EU", .40, 1)); + countries.Add(new CountryData("AF", 2.58, 1)); + countries.Add(new CountryData("AU", 1.30, 1)); + + // json data to use as chart data source + StringBuilder jsonData = new StringBuilder(); + //build chart config object + jsonData.Append("{'chart':{"); + foreach (var config in chartConfig) + { + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value); + } + jsonData.Replace(",", "},", jsonData.Length - 1, 1); + + StringBuilder range = new StringBuilder(); + //build colorRange object + range.Append("'colorRange':{"); + range.Append("'color':["); + foreach (ColorRange clr in color) + { + range.AppendFormat("{{'minValue':'{0}','maxValue':'{1}','code':'{2}'}},", clr.Min, clr.Max, clr.ColorCode); + } + range.Replace(",", "]},", range.Length - 1, 1); + + // build data object + StringBuilder data = new StringBuilder(); + data.Append("'data':["); + foreach (CountryData country in countries) + { + data.AppendFormat("{{'id':'{0}','value':'{1}','showLabel':'{2}'}},", country.ID, country.Value, country.ShowLabel); + } + data.Replace(",", "]", data.Length - 1, 1); + jsonData.Append(range); + jsonData.Append(data); + jsonData.Append("}"); + //Create map instance + // map type, mapid, width, height, data format, data + + Chart map = new Chart("world", "first_map", "800", "500", "json", jsonData.ToString()); + //render map + Literal1.Text = map.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/GetDataSelectScatterChart.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/GetDataSelectScatterChart.aspx new file mode 100755 index 0000000000000000000000000000000000000000..dde972038aa6ae8354f5785126d3e7555a51d947 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/GetDataSelectScatterChart.aspx @@ -0,0 +1,103 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetDataSelectScatterChart.aspx.cs" Inherits="Pages_GetDataSelectScatterChart" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Get data from select scatter chart and show them in tabular format</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + onRenderComplete = function (evtObj, argObj) { + + // creating div for controllers + var controllers = document.createElement('div'); + controllers.setAttribute('id', 'controllers'); + controllers.style.display = "inline-block"; + controllers.innerHTML = "<div id='tableView-1' style='width:500px;display:none;margin-left:0px;max-height:250px;overflow:scroll;border: 1px solid #CCCCCC;margin: 3px;float: left;display:none; color: #666666;font-family:'Arial','Helvetica';font-size: 12px;'></div>"; + //Display container div and write table + document.getElementById("showData").appendChild(controllers); + // argObj.container.parentNode.insertBefore(controllers, argObj.container.nextSibling); + /* + * getDataFromChart method prepares the + * tabular string from selection and + * write in a div and display it. + */ + evtObj.sender.getDataFromChart = function() { + var i, + j, + str, + ds = "", + dataArr, + flagData = false, + objDataset = evtObj.sender.getJSONData && evtObj.sender.getJSONData().dataset, + tableContainer = document.getElementById("tableView-1"); + + //Form tabular string + str = "<div style='margin:3px;font-family:'Arial','Helvetica';font-size: 12px;'> Data is returned by the chart as Array. The data is converted into tabular format using JavaScript.</div>"; + str += '<table border="1" cellpadding="1" cellspacing="0" bordercolor="#ffffff" width="100%">'; + for (i in objDataset) { + dataArr = objDataset[i].data; + if (dataArr.length > 0) { + flagData = true; + str += ' <tr>'; + str += ' <td width="20%" style="font-weight: bold;font-size: 14px;vertical-align: top;text-align:right;padding: 3px" color="' + objDataset[i].color + '">' + objDataset[i].seriesname + '</td>'; + + ds = '<table border="1" cellpadding="1" cellspacing="0" bordercolor="' + objDataset[i].color + '" width="100%">'; + ds += '<tr>'; + ds += '<td width="20%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Id</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Price (in USD)</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Quantity Sold</td>'; + ds += '</tr>'; + for (j = 0; j < dataArr.length; j++) { + var id = String(dataArr[j].id), + price = String(dataArr[j].x), + qty = String(dataArr[j].y); + + ds += '<tr>'; + ds += '<td width="20%" align="center">' + id + '</td>'; + ds += '<td width="40%" align="center">$' + price + ' </td>'; + ds += '<td width="40%" align="center">' + qty + ' units</td>'; + ds += '</tr>'; + } + ds += '</table>'; + str += ' <td width="80%" style="padding: 3px">' + ds + '</td>'; + str += ' </tr>'; + } + + } + str += '</table>'; + if (!flagData) { + str = "No Data Selected"; + } + tableContainer.style.display = "block"; + tableContainer.innerHTML = str; + } + }, + onBeforeDataSubmit = function (evtObj, argObj) { + + evtObj.sender.getDataFromChart(); + }, + onDataRestored = function (evtObj, argObj) { + + document.getElementById("tableView-1").style.display = "none"; + document.getElementById("tableView-1").innerHTML = ""; + } + + </script> + <form id="form1" runat="server"> + <h3>Get data from select scatter chart and show them in tabular format</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div id ="showData"></div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> + +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/GetDataSelectScatterChart.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/GetDataSelectScatterChart.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..297fcf50581292deeb74a5bfcb431832b5b672c3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/GetDataSelectScatterChart.aspx.cs @@ -0,0 +1,20 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_GetDataSelectScatterChart : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'theme': 'fusion', 'caption': 'Products Sold vs. Price points', 'subcaption': 'Harry\\'s SuperMart - Last Week', 'yaxisname': 'Quantity Sold', 'xaxisname': 'Price(In US $)', 'xaxismaxvalue': '1000', 'xaxisminvalue': '100', 'yaxismaxvalue': '200', 'xnumberprefix': '$', 'ynumbersuffix': ' units', 'showcanvasborder': '1', 'canvasborderthickness': '0.4', 'canvasborderalpha': '50', 'showXAxisLine': '0', 'showformbtn': '1', 'formAction': '#', 'submitdataasxml': '1' }, 'categories': [ { 'verticallinecolor': '666666', 'verticallinethickness': '1', 'alpha': '40', 'category': [ { 'label': '$100', 'x': '100', 'showverticalline': '0' }, { 'label': '$200', 'x': '200', 'showverticalline': '1' }, { 'label': '$300', 'x': '300', 'showverticalline': '1' }, { 'label': '$400', 'x': '400', 'showverticalline': '1' }, { 'label': '$500', 'x': '500', 'showverticalline': '1' }, { 'label': '$600', 'x': '600', 'showverticalline': '1' }, { 'label': '$700', 'x': '700', 'showverticalline': '1' }, { 'label': '$800', 'x': '800', 'showverticalline': '1' }, { 'label': '$900', 'x': '900', 'showverticalline': '1' }, { 'label': '$1000', 'x': '1000', 'showverticalline': '0' } ] } ], 'dataset': [ { 'drawline': '0', 'seriesname': 'Televisions', 'color': '#6baa01', 'anchorsides': '3', 'anchorradius': '4', 'anchorbgcolor': '#6baa01', 'anchorbordercolor': '#6baa01', 'data': [ { 'id': 'TV_1', 'y': '559', 'x': '714' }, { 'id': 'TV_2', 'y': '293', 'x': '988' }, { 'id': 'TV_3', 'y': '231', 'x': '970' }, { 'id': 'TV_4', 'y': '528', 'x': '142' }, { 'id': 'TV_5', 'y': '95', 'x': '800' }, { 'id': 'TV_6', 'y': '515', 'x': '813' }, { 'id': 'TV_7', 'y': '444', 'x': '928' }, { 'id': 'TV_8', 'y': '592', 'x': '238' }, { 'id': 'TV_9', 'y': '229', 'x': '959' }, { 'id': 'TV_10', 'y': '238', 'x': '521' }, { 'id': 'TV_11', 'y': '285', 'x': '222' }, { 'id': 'TV_12', 'y': '524', 'x': '863' }, { 'id': 'TV_13', 'y': '422', 'x': '820' }, { 'id': 'TV_14', 'y': '344', 'x': '894' }, { 'id': 'TV_15', 'y': '510', 'x': '800' }, { 'id': 'TV_16', 'y': '132', 'x': '785' }, { 'id': 'TV_17', 'y': '381', 'x': '214' }, { 'id': 'TV_18', 'y': '210', 'x': '961' }, { 'id': 'TV_19', 'y': '496', 'x': '575' }, { 'id': 'TV_20', 'y': '330', 'x': '847' }, { 'id': 'TV_21', 'y': '436', 'x': '893' }, { 'id': 'TV_22', 'y': '406', 'x': '157' }, { 'id': 'TV_23', 'y': '125', 'x': '349' }, { 'id': 'TV_24', 'y': '450', 'x': '818' }, { 'id': 'TV_25', 'y': '455', 'x': '615' }, { 'id': 'TV_26', 'y': '328', 'x': '256' }, { 'id': 'TV_27', 'y': '188', 'x': '460' }, { 'id': 'TV_28', 'y': '565', 'x': '350' }, { 'id': 'TV_29', 'y': '149', 'x': '582' }, { 'id': 'TV_30', 'y': '425', 'x': '970' } ] }, { 'seriesname': 'Cell Phones', 'color': '#f8bd19', 'anchorsides': '4', 'anchorradius': '4', 'anchorbgcolor': '#f8bd19', 'anchorbordercolor': '#f8bd19', 'data': [ { 'id': 'Mob_1', 'y': '335', 'x': '156' }, { 'id': 'Mob_2', 'y': '339', 'x': '927' }, { 'id': 'Mob_3', 'y': '328', 'x': '847' }, { 'id': 'Mob_4', 'y': '1', 'x': '177' }, { 'id': 'Mob_5', 'y': '246', 'x': '175' }, { 'id': 'Mob_6', 'y': '368', 'x': '441' }, { 'id': 'Mob_7', 'y': '146', 'x': '200' }, { 'id': 'Mob_8', 'y': '347', 'x': '482' }, { 'id': 'Mob_9', 'y': '1', 'x': '463' }, { 'id': 'Mob_10', 'y': '63', 'x': '440' }, { 'id': 'Mob_11', 'y': '77', 'x': '211' }, { 'id': 'Mob_12', 'y': '108', 'x': '824' }, { 'id': 'Mob_13', 'y': '44', 'x': '850' }, { 'id': 'Mob_14', 'y': '77', 'x': '712' }, { 'id': 'Mob_15', 'y': '15', 'x': '199' }, { 'id': 'Mob_16', 'y': '333', 'x': '836' }, { 'id': 'Mob_17', 'y': '31', 'x': '482' }, { 'id': 'Mob_18', 'y': '90', 'x': '604' }, { 'id': 'Mob_19', 'y': '294', 'x': '716' }, { 'id': 'Mob_20', 'y': '241', 'x': '870' }, { 'id': 'Mob_21', 'y': '258', 'x': '421' }, { 'id': 'Mob_22', 'y': '186', 'x': '456' }, { 'id': 'Mob_23', 'y': '255', 'x': '327' }, { 'id': 'Mob_24', 'y': '203', 'x': '995' }, { 'id': 'Mob_25', 'y': '35', 'x': '792' } ] } ] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart scatter = new Chart("selectscatter", "select_scatter", "500", "400", "json", jsonData); + scatter.AddEvent("renderComplete", "onRenderComplete"); + scatter.AddEvent("beforeDataSubmit", "onBeforeDataSubmit"); + scatter.AddEvent("dataRestored", "onDataRestored"); + //render chart + Literal1.Text = scatter.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Handler/Handler.ashx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Handler/Handler.ashx new file mode 100755 index 0000000000000000000000000000000000000000..7c33ad0cb0c7109d58d49d461b0a2da27181c4fc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Handler/Handler.ashx @@ -0,0 +1,145 @@ +<%@ WebHandler Language="C#" Class="Handler" %> + +using System; +using System.Web; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Text; + + +public class Handler : IHttpHandler +{ + + public void ProcessRequest(HttpContext context) + { + context.Response.ContentType = "application/json"; + // level mapping for each column + string[] levelValueMapping = new string[] { "region","country","city"}; + + + string drillLevel = context.Request["drillLevel"]; + string query = ""; + string label = ""; + if (string.IsNullOrEmpty(drillLevel)) + { + drillLevel = "0"; + // build custom query + // parameter: column to be fetch + query = BuildQuery(levelValueMapping[(Convert.ToInt16(drillLevel))]); + } + else + { + drillLevel = (Convert.ToInt16(drillLevel) + 1).ToString(); + label = context.Request["label"]; + // build custom query + // parameter: column to be fetch, previously clicked value, previous level column name + query = BuildQuery(levelValueMapping[(Convert.ToInt16(drillLevel))],label,levelValueMapping[(Convert.ToInt16(drillLevel)-1)]); + } + + DataTable dt = new DataTable(); + // establish DB connection and fetch chart data + GetChartData(ref dt, query); + // from DB data create chart compatible json + string chartJsonData = ProcessChartData(dt, levelValueMapping[(Convert.ToInt16(drillLevel))], drillLevel, levelValueMapping.Length); + // send response + context.Response.Write(chartJsonData); + + + + } + + public bool IsReusable + { + get + { + return false; + } + } + private string BuildQuery(string columnName) + { + string query; + query = "select " + columnName + ", SUM([Total Sales]) as [Total Sales]" + "from Sales_Record group by " + columnName; + return query; + } + private string BuildQuery(string columnName, string parentValue,string parentName) + { + string query; + query = "select " + columnName + ", SUM([Total Sales]) as [Total Sales]" + "from Sales_Record where " + parentName + "= '" + parentValue + "'Group by " + columnName; + return query; + + } + private string ProcessChartData(DataTable dt, string columnName, string drillLevel, int maxLevel) + { + StringBuilder jsonData = new StringBuilder(); + StringBuilder data = new StringBuilder(); + // store chart config name-config value pair + + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + + string linkParam = "newchart-jsonurl-Handler/Handler.ashx?label={0}&drillLevel={1}"; + + chartConfig.Add("caption", "Total Sales by " + columnName); // caption will change dynamically based on chart label + chartConfig.Add("xAxisName", columnName); // xaxis name will chnage dynamically based on chart label + chartConfig.Add("yAxisName", "Total Sales"); + chartConfig.Add("numberSuffix", "k"); + chartConfig.Add("theme", "fusion"); + + // json data to use as chart data source + jsonData.Append("{\"chart\":{"); + foreach (var config in chartConfig) + { + jsonData.AppendFormat("\"{0}\":\"{1}\",", config.Key, config.Value); + } + jsonData.Replace(",", "},", jsonData.Length - 1, 1); + data.Append("\"data\":["); + + //iterate through data table to build data object + if (dt != null && dt.Rows.Count > 0) + { + foreach (DataRow row in dt.Rows) + { + if(Convert.ToInt16(drillLevel) < maxLevel - 1) + { + string link = string.Format(linkParam,row[0].ToString(), drillLevel); + data.AppendFormat("{{\"label\":\"{0}\",\"value\":\"{1}\", \"link\": \"{2}\"}},", row[0].ToString(), row[1].ToString(), link); + } + else // for last level, link attribute will not be added + { + data.AppendFormat("{{\"label\":\"{0}\",\"value\":\"{1}\"}},", row[0].ToString(), row[1].ToString()); + } + } + } + data.Replace(",", "]", data.Length - 1, 1); + + jsonData.Append(data.ToString()); + jsonData.Append("}"); + return jsonData.ToString(); + } + + private void GetChartData(ref DataTable dt, string query) + { + + string connetionString = null; + string serverName = "POUSHALI-PC\\SHAREPOINT"; + string databaseName = "DrillDownDB"; + //clear previous data from data table + dt.Clear(); + // we are connectiong by windows authentication so, Trusted_Connection = True; + connetionString = "Data Source=" + serverName + ";Initial Catalog=" + databaseName + ";Trusted_Connection=True;"; + + using (SqlConnection con = new SqlConnection(connetionString)) + { + con.Open(); + using (SqlCommand command = new SqlCommand(query, con)) + using (SqlDataAdapter da = new SqlDataAdapter(command)) + { + // fill data table + da.Fill(dt); + + } + + } + } + +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/HighlightDataPoint.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/HighlightDataPoint.aspx new file mode 100755 index 0000000000000000000000000000000000000000..497bdd4dbf7a22b7773d1c6a4b3283c35a3a3cb4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/HighlightDataPoint.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HighlightDataPoint.aspx.cs" Inherits="Pages_HighlightDataPoint" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | HighLight one Data Point</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>HighLight one Data Point</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/HighlightDataPoint.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/HighlightDataPoint.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..c2ce2235b021def29f7ae506f17502434b1be70d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/HighlightDataPoint.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_HighlightDataPoint : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Bakersfield Central - Total footfalls', 'subCaption': 'Last week', 'xAxisName': 'Day', 'yAxisName': 'No. of Visitors (In 1000s)', 'showValues': '0', 'theme': 'fusion' }, 'annotations':{ 'groups': [ { 'id': 'anchor-highlight', 'items': [ { 'id': 'high-star', 'type': 'circle', 'x': '$dataset.0.set.2.x', 'y': '$dataset.0.set.2.y', 'radius': '12', 'color': '#6baa01', 'border': '2', 'borderColor': '#f8bd19' }, { 'id': 'label', 'type': 'text', 'text': 'Highest footfall 25.5K', 'fillcolor': '#6baa01', 'rotate': '90', 'x': '$dataset.0.set.2.x+75', 'y': '$dataset.0.set.2.y-2' } ] } ] }, 'data': [ { 'label': 'Mon', 'value': '15123' }, { 'label': 'Tue', 'value': '14233' }, { 'label': 'Wed', 'value': '25507' }, { 'label': 'Thu', 'value': '9110' }, { 'label': 'Fri', 'value': '15529' }, { 'label': 'Sat', 'value': '20803' }, { 'label': 'Sun', 'value': '19202' } ] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/InteractiveEvent.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/InteractiveEvent.aspx new file mode 100755 index 0000000000000000000000000000000000000000..f0858d6a6366e8cdefa7ee8b0b45c5b68452396c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/InteractiveEvent.aspx @@ -0,0 +1,35 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="InteractiveEvent.aspx.cs" Inherits="Pages_InteractiveEvent" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Show data plot value on click</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onDataplotClick(eventObj) { + var dataValue = eventObj.data.dataValue; + var categoryLabel = eventObj.data.categoryLabel; + + document.getElementById("plotclick").innerHTML = "category: " + categoryLabel + "\n" + "value: " + dataValue; + + } + </script> + <form id="form1" runat="server"> + <h3>Show data plot value on click</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p id="plotclick"></p> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/InteractiveEvent.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/InteractiveEvent.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..fe526963635f8c3b97407cec10f847f4a9e76543 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/InteractiveEvent.aspx.cs @@ -0,0 +1,19 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_InteractiveEvent : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //attach event + column2d.AddEvent("dataplotClick", "onDataplotClick"); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/JsonUrlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/JsonUrlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..f4b4ee27effa7d3d734f8674892c0466bb33f4bf --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/JsonUrlData.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JsonUrlData.aspx.cs" Inherits="JsonUrlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from JSON URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from JSON URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/JsonUrlData.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/JsonUrlData.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..f0dd352c39cf8f8ec0dfe2c30cf56373d9ad9a4a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/JsonUrlData.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class JsonUrlData : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //data url + string jsonDataUrl = "../Data/jsonData.json"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart columnChart = new Chart("column2d", "first_chart", "600", "400", "jsonurl", jsonDataUrl); + //render chart + Literal1.Text = columnChart.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MSCombi3D.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MSCombi3D.aspx new file mode 100755 index 0000000000000000000000000000000000000000..8909242e179035ba776764a8ab50f6d119bdbce2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MSCombi3D.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MSCombi3D.aspx.cs" Inherits="MSCombi3D" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Multiseries Combination 3D Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Multiseries Combination 3D Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MSCombi3D.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MSCombi3D.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..67c4308cc6fdfb1b9e79eb0271a078380be222bc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MSCombi3D.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class MSCombi3D : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //chart data + string jsonData = "{ 'chart': { 'caption': 'Salary Hikes by Country', 'subCaption': '2016 - 2017', 'showhovereffect': '1', 'numberSuffix': '%', 'rotatelabels': '1', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Australia' }, { 'label': 'New-Zealand' }, { 'label': 'India' }, { 'label': 'China' }, { 'label': 'Myanmar' }, { 'label': 'Bangladesh' }, { 'label': 'Thailand' }, { 'label': 'South Korea' }, { 'label': 'Hong Kong' }, { 'label': 'Singapore' }, { 'label': 'Taiwan' }, { 'label': 'Vietnam' }] }], 'dataset': [{ 'seriesName': '2016 Actual Salary Increase', 'plotToolText' : 'Salaries increased by <b>$dataValue</b> in 2016', 'data': [{ 'value': '3' }, { 'value': '3' }, { 'value': '10' }, { 'value': '7' }, { 'value': '7.4' }, { 'value': '10' }, { 'value': '5.4' }, { 'value': '4.5' }, { 'value': '4.1' }, { 'value': '4' }, { 'value': '3.7' }, { 'value': '9.3' }] }, { 'seriesName': '2017 Projected Salary Increase', 'plotToolText' : 'Salaries expected to increase by <b>$dataValue</b> in 2017', 'renderAs': 'line', 'data': [{ 'value': '3' }, { 'value': '2.8' }, { 'value': '10' }, { 'value': '6.9' }, { 'value': '6.7' }, { 'value': '9.4' }, { 'value': '5.5' }, { 'value': '5' }, { 'value': '4' }, { 'value': '4' }, { 'value': '4.5' }, { 'value': '9.8' }] }, { 'seriesName': 'Inflation rate', 'plotToolText' : '$dataValue projected inflation', 'renderAs': 'area', 'showAnchors':'0', 'data': [{ 'value': '1.6' }, { 'value': '0.6' }, { 'value': '5.6' }, { 'value': '2.3' }, { 'value': '7' }, { 'value': '5.6' }, { 'value': '0.2' }, { 'value': '1' }, { 'value': '2.6' }, { 'value': '0' }, { 'value': '1.1' }, { 'value': '2.4' }] }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart pie3D = new Chart("mscombi3d", "first_chart", "600", "400", "json", jsonData); + //render chart + Literal1.Text = pie3D.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MapWithXmlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MapWithXmlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..cc1984ae23ad6317640e092ff44100563c6342f9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MapWithXmlData.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MapWithXmlData.aspx.cs" Inherits="MapWithXmlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from XML URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from XML URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MapWithXmlData.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MapWithXmlData.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..a7ec227e50cee892f740cfb59c6880751db4d89f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MapWithXmlData.aspx.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Xml.Linq; +using FusionCharts.Charts; + +public partial class MapWithXmlData : System.Web.UI.Page +{ + //Create colorRange class + //It will store Min range Max range and specific color code for each range + + class ColorRange + { + public double Min { get; set; } + public double Max { get; set; } + public string ColorCode { get; set; } + + public ColorRange(double min, double max, string code) + { + Min = min; + Max = max; + ColorCode = code; + } + } + //Create countryData class + //It will store id, value and show label for each country + + class CountryData + { + public string ID { get; set; } + public double Value { get; set; } + public int ShowLabel { get; set; } + + public CountryData(string id, double value, int showLabel) + { + ID = id; + Value = value; + ShowLabel = showLabel; + + } + + } + protected void Page_Load(object sender, EventArgs e) + { + // store chart config name-config value pair + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + chartConfig.Add("caption", "Average Annual Population Growth"); + chartConfig.Add("subCaption", " 1955-2015"); + chartConfig.Add("includevalueinlabels", "1"); + chartConfig.Add("labelsepchar", ": "); + chartConfig.Add("numberSuffix", "%"); + chartConfig.Add("entityFillHoverColor", "#FFF9C4"); + chartConfig.Add("theme", "fusion"); + + // store color code for different range + List<ColorRange> color = new List<ColorRange>(); + color.Add(new ColorRange(0.5, 1.0, "#FFD74D")); + color.Add(new ColorRange(1.0, 2.0, "#FB8C00")); + color.Add(new ColorRange(2.0, 3.0, "#E65100")); + + // store country data + List<CountryData> countries = new List<CountryData>(); + countries.Add(new CountryData("NA", .82, 1)); + countries.Add(new CountryData("SA", 2.04, 1)); + countries.Add(new CountryData("AS", 1.78, 1)); + countries.Add(new CountryData("EU", .40, 1)); + countries.Add(new CountryData("AF", 2.58, 1)); + countries.Add(new CountryData("AU", 1.30, 1)); + + // create root eleement chart + //it will store all chart config an data to render chart + XElement chart = new XElement("chart"); + //iterate through chart configuration + //add each config as chart element attribute + foreach (var config in chartConfig) + { + //chart.SetAttributeValue(formatStringQuote(config.Key), formatStringQuote(config.Value)); + chart.SetAttributeValue(config.Key, config.Value); + } + //color range element + XElement colorRange = new XElement("colorrange"); + //iterate through color list + + foreach (ColorRange clr in color) + { + XElement colorElemet = new XElement("color"); + colorElemet.SetAttributeValue("minvalue", clr.Min.ToString()); + colorElemet.SetAttributeValue("maxvalue", clr.Max.ToString()); + colorElemet.SetAttributeValue("code", clr.ColorCode.ToString()); + colorRange.Add(colorElemet); + } + chart.Add(colorRange); + // create set elemnt as a child element of chart + foreach (CountryData country in countries) + { + XElement set = new XElement("set"); + set.SetAttributeValue("id", country.ID.ToString()); + set.SetAttributeValue("value", country.Value.ToString()); + set.SetAttributeValue("showlabel", country.ShowLabel.ToString()); + chart.Add(set); + } + + //Create chart instance + // charttype, chartID, width, height, data format, data + + Chart worldMap = new Chart("world", "worldmap", "800", "550", "xml", formatString(chart.ToString())); + Literal1.Text = worldMap.Render(); + } + private string formatString(string str) + { + // xml is multiline + // c# does not support multi line string + // js expects ' as \' to write in browser so replace them by \\' + // replace each \n and \r with space and " by ' + return str.Replace("'", "\\'").Replace("\"", "'").Replace("\n", "").Replace("\r", ""); + + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MsColumn2d.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MsColumn2d.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c3697c9776008fa7779f1541929bd1c8deb58d6c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MsColumn2d.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MsColumn2d.aspx.cs" Inherits="MsColumn2d" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Multiseries Column 2D Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Multiseries Column 2D Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MsColumn2d.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MsColumn2d.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..8a11d21ae6972768f1128a0a52c64dd948324bd7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/MsColumn2d.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class MsColumn2d : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'App Publishing Trend', 'subCaption': '2012-2016', 'xAxisName': 'Years', 'yAxisName' : 'Total number of apps in store', 'formatnumberscale': '1', 'drawCrossLine':'1', 'plotToolText' : '<b>$dataValue</b> apps on $seriesName in $label', 'theme': 'fusion' }, 'categories': [{ 'category': [{'label': '2012' }, {'label': '2013' }, {'label': '2014' }, {'label': '2015' },{ 'label': '2016' } ] }], 'dataset': [{ 'seriesname': 'iOS App Store', 'data': [{'value': '125000' }, {'value': '300000' }, {'value': '480000' }, {'value': '800000' }, {'value': '1100000' }] }, { 'seriesname': 'Google Play Store', 'data': [{'value': '70000' }, {'value': '150000' }, {'value': '350000' }, {'value': '600000' },{'value': '1400000' }] }, { 'seriesname': 'Amazon AppStore', 'data': [{'value': '10000' }, {'value': '100000' }, {'value': '300000' }, {'value': '600000' },{'value': '900000' }] }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("mscolumn2d", "first_chart", "700", "400", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/NumberFormatModule.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/NumberFormatModule.aspx new file mode 100755 index 0000000000000000000000000000000000000000..93316f61400216eadd80c2675b91a84b815eb2eb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/NumberFormatModule.aspx @@ -0,0 +1,32 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NumberFormatModule.aspx.cs" Inherits="Pages_NumberFormatModule" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Use of fusioncharts number module API</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onRenderComplete(eventObj) { + var formattedNumber = eventObj.sender.formatNumber(1234.5); + document.getElementById("rendered").innerHTML = "format 1234.5 : " + formattedNumber; + + } + </script> + <form id="form1" runat="server"> + <h3>Use of fusioncharts number module API</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + <div> + <p id ="rendered"></p> + </div> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/NumberFormatModule.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/NumberFormatModule.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..007ab6aa8abd3830a74ae9b16ae2fc24c5f7f4ab --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/NumberFormatModule.aspx.cs @@ -0,0 +1,19 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_NumberFormatModule : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberPrefix': '$', 'decimals': '2', 'forceDecimals': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //attach event + column2d.AddEvent("renderComplete", "onRenderComplete"); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Pie3D.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Pie3D.aspx new file mode 100755 index 0000000000000000000000000000000000000000..4cc9499fa63208b2646d0c3c31febfd5cf18266d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Pie3D.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Pie3D.aspx.cs" Inherits="Pie3D" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Pie 3D Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Pie 3D Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Pie3D.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Pie3D.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..c359b97124c276497a656a9048f3e27996ceda92 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/Pie3D.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pie3D : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //chart data + string jsonData = "{ 'chart': { 'caption': 'Recommended Portfolio Split', 'subCaption' : 'For a net-worth of $1M', 'showValues':'1', 'showPercentInTooltip' : '0', 'numberPrefix' : '$', 'enableMultiSlicing':'1', 'theme': 'fusion' }, 'data': [{ 'label': 'Equity', 'value': '300000' }, { 'label': 'Debt', 'value': '230000' }, { 'label': 'Bullion', 'value': '180000' }, { 'label': 'Real-estate', 'value': '270000' }, { 'label': 'Insurance', 'value': '20000' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart pie3D = new Chart("pie3d", "first_chart", "600", "400", "json", jsonData); + //render chart + Literal1.Text = pie3D.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLevelAPI.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLevelAPI.aspx new file mode 100755 index 0000000000000000000000000000000000000000..d4fadcd28dc2eb1ccd99eeb48983e7e5c7d4d9aa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLevelAPI.aspx @@ -0,0 +1,99 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductLevelAPI.aspx.cs" Inherits="Pages_ProductLevelAPI" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + <title>FusionCharts | Change chart properties dynamically</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + changeCaption = function () { + debugger; + FusionCharts("first_chart").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(){ + FusionCharts("first_chart").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(){ + FusionCharts("first_chart").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + resetChanges = function () { + + FusionCharts("first_chart").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("first_chart").setChartAttribute('xAxisName', 'Country'); + FusionCharts("first_chart").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } + </script> + <form id="form1" runat="server"> + <h3>Change chart properties dynamically</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onclick="changeCaption()" /> + <label for="radio1">Change Caption: Test Caption</label> + <input type="radio" id="radio2" name="radios" onclick="changeXAxisName()" /> + <label for="radio2">Change X-Axis Name: Test X-Axis</label> + <input type="radio" id="radio3" name="radios" onclick="changeYAxisName()" /> + <label for="radio3">Change Y-Axis Name: Test Y-Axis</label> + <input type="radio" id="radio4" name="radios" onclick="resetChanges()" /> + <label for="radio4">Reset</label> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLevelAPI.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLevelAPI.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..8e577f72b2cba0036798eb276049634d8caa4361 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLevelAPI.aspx.cs @@ -0,0 +1,18 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_ProductLevelAPI : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLifeCycleEvent.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLifeCycleEvent.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c0c71ec63db7326de5acc161e0e0313677e8cbc3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLifeCycleEvent.aspx @@ -0,0 +1,32 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductLifeCycleEvent.aspx.cs" Inherits="Pages_ProductLifeCycleEvent" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | sample to showcase one product life cycle event attachment</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onDataLoaded() { + document.getElementById("dataLoaded").innerHTML = "chart data is loaded succesfully"; + + } + </script> + <form id="form1" runat="server"> + <h3>sample to showcase one product life cycle event attachment</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p id ="dataLoaded"></p> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLifeCycleEvent.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLifeCycleEvent.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..28f4e6e13be49ba3836a308a0eae8af1cc6aa827 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/ProductLifeCycleEvent.aspx.cs @@ -0,0 +1,18 @@ +using System; +using FusionCharts.Charts; +public partial class Pages_ProductLifeCycleEvent : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "700", "400", "json", jsonData); + //attach event + column2d.AddEvent("dataLoaded", "onDataLoaded"); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/RenderCharWithPercentageWidthHeight.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/RenderCharWithPercentageWidthHeight.aspx new file mode 100755 index 0000000000000000000000000000000000000000..0586490a336b78a43ec77a4b327c7bd68115aa21 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/RenderCharWithPercentageWidthHeight.aspx @@ -0,0 +1,55 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RenderCharWithPercentageWidthHeight.aspx.cs" Inherits="Pages_RenderCharWithPercentageWidthHeight" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart Auto Resize Sample</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeSize(this.value); + }; + } + } + }); + + + function changeSize(size) { + document.getElementById('chartContainer').style.width = size.split('x')[0] + 'px'; + document.getElementById('chartContainer').style.height = size.split('x')[1] + 'px'; + }; + </script> + <h3>Chart Auto Resize Sample</h3> + <div align="center"> + <label style="padding: 0px 5px !important;">Select Chart Container Size (in pixels)</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="400x300"/>400x300 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="600x500"/>600x500 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="800x600"/>800x600 + </label> + </div> + <form id="form1" runat="server"> + + <div id="chartContainer" style="border-style: solid;border-color:#5a5a5a;width: 400px; height: 300px;" align="center"> + <asp:Literal ID="Literal1" runat="server" ></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/RenderCharWithPercentageWidthHeight.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/RenderCharWithPercentageWidthHeight.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..4c85e3932dea72422b0254ae6c6fa383bb193e6f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/RenderCharWithPercentageWidthHeight.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_RenderCharWithPercentageWidthHeight : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion'}, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("column2d", "first_chart", "100%", "100%", "json", jsonData); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialChartTypeAPI.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialChartTypeAPI.aspx new file mode 100755 index 0000000000000000000000000000000000000000..b5aabf55d18c11895a8ecc99fe79c02dcee52f3a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialChartTypeAPI.aspx @@ -0,0 +1,70 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SpecialChartTypeAPI.aspx.cs" Inherits="Pages_SpecialChartTypeAPI" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | shocasing use special chart type API</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + plotClickHandler = function(event){ + clickedPlot = (event.data.categoryLabel).toLowerCase(); + if (selectedItem !== clickedPlot) { + selectedItem = clickedPlot; + } else{ + selectedItem = 'none'; + } + }; + selectedItem = "none"; + noneChecked = function(){ + FusionCharts("first_chart").slicePlotItem(0,false); + FusionCharts("first_chart").slicePlotItem(1,false); + FusionCharts("first_chart").slicePlotItem(2,false); + FusionCharts("first_chart").slicePlotItem(3,false); + } + apacheChecked = function(){ + FusionCharts("first_chart").slicePlotItem(0,true); + } + microsoftChecked = function(){ + FusionCharts("first_chart").slicePlotItem(1,true); + } + zeusChecked = function(){ + FusionCharts("first_chart").slicePlotItem(2,true); + } + otherChecked = function(){ + FusionCharts("first_chart").slicePlotItem(3,true); + } + </script> + <form id="form1" runat="server"> + <h3>shocasing use special chart type API</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" checked="checked" onclick="noneChecked()"/> None + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="apacheChecked()"/> Apache + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="microsoftChecked()"/> Microsoft + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="zeusChecked()"/> Zeus + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="otherChecked()"/> Other + </label> + </div> + <br/> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialChartTypeAPI.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialChartTypeAPI.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..557f8adde66a4e14f107313e89f0e97ab1a38247 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialChartTypeAPI.aspx.cs @@ -0,0 +1,19 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_SpecialChartTypeAPI : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Market Share of Web Servers', 'plottooltext': '<b>$percentValue</b> of web servers run on $label servers', 'showLegend': '0', 'enableMultiSlicing': '0', 'showPercentValues': '1', 'legendPosition': 'bottom', 'useDataPlotColorForLabels': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Apache', 'value': '32647479' }, { 'label': 'Microsoft', 'value': '22100932' }, { 'label': 'Zeus', 'value': '14376' }, { 'label': 'Other', 'value': '18674221' }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart column2d = new Chart("pie2d", "first_chart", "700", "400", "json", jsonData); + //attach event + column2d.AddEvent("dataplotClick", "plotClickHandler"); + //render chart + Literal1.Text = column2d.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialEvent.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialEvent.aspx new file mode 100755 index 0000000000000000000000000000000000000000..84518f811f00ae18fb92aaa4d01f2059af344c48 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialEvent.aspx @@ -0,0 +1,31 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SpecialEvent.aspx.cs" Inherits="Pages_SpecialEvent" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | example of data update event</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "previous value: " + eventObj.data.prevData; + + } + </script> + <form id="form1" runat="server"> + <h3>example of data update event</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p id ="dataUpdate"></p> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + </body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialEvent.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialEvent.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..205f9e18b47750b2979b7befef6c21bdba8c3417 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/SpecialEvent.aspx.cs @@ -0,0 +1,19 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_SpecialEvent : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Server CPU Utilization', 'subcaption': 'food.hsm.com', 'lowerLimit': '0', 'upperLimit': '100', 'numberSuffix': '%', 'valueAbovePointer': '0', 'editmode':'1' }, 'colorRange': { 'color': [ { 'minValue': '0', 'maxValue': '35', 'label': 'Low', 'code': '#1aaf5d' }, { 'minValue': '35', 'maxValue': '70', 'label': 'Moderate', 'code': '#f2c500' }, { 'minValue': '70', 'maxValue': '100', 'label': 'High', 'code': '#c02d00' } ] }, 'pointers': { 'pointer': [ { 'value': '72.5' } ] } }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart lineargauge = new Chart("hlineargauge", "horizontal_lineargauge", "500", "150", "json", jsonData); + //attach event + lineargauge.AddEvent("realtimeUpdateComplete", "onUpdate"); + //render chart + Literal1.Text = lineargauge.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/StackedColumn2DLine.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/StackedColumn2DLine.aspx new file mode 100755 index 0000000000000000000000000000000000000000..0f488d5f7c943deee3be3c8caaa0106cceb45479 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/StackedColumn2DLine.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="StackedColumn2DLine.aspx.cs" Inherits="StackedColumn2DLine" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Stacked Column 2D with Line Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Stacked Column 2D with Line Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/StackedColumn2DLine.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/StackedColumn2DLine.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..f2b3cc888df5dfd82592f6c1f363b986ea8ed0eb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/StackedColumn2DLine.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class StackedColumn2DLine : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'showvalues': '0', 'caption': 'Apple\\'s Revenue & Profit', 'subCaption': '(2013-2016)', 'numberprefix': '$', 'numberSuffix' : 'B', 'plotToolText' : 'Sales of $seriesName in $label was <b>$dataValue</b>', 'showhovereffect': '1', 'yaxisname': '$ (In billions)', 'showSum':'1', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': '2013' }, { 'label': '2014' }, { 'label': '2015' }, { 'label': '2016' }] }], 'dataset': [{ 'seriesname': 'iPhone', 'data': [{ 'value': '21' }, { 'value': '24' }, { 'value': '27' }, { 'value': '30' }] }, { 'seriesname': 'iPad', 'data': [{ 'value': '8' }, { 'value': '10' }, { 'value': '11' }, { 'value': '12' }] }, { 'seriesname': 'Macbooks', 'data': [{ 'value': '2' }, { 'value': '4' }, { 'value': '5' }, { 'value': '5.5' }] }, { 'seriesname': 'Others', 'data': [{ 'value': '2' }, { 'value': '4' }, { 'value': '9' }, { 'value': '11' }] }, { 'seriesname': 'Profit', 'plotToolText' : 'Total profit in $label was <b>$dataValue</b>', 'renderas': 'Line', 'data': [{ 'value': '17' }, { 'value': '19' }, { 'value': '13' }, { 'value': '18' }] }] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart stackLineCombi = new Chart("stackedColumn2DLine", "first_chart", "600", "400", "json", jsonData); + //render chart + Literal1.Text = stackLineCombi.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UpdateDataRuntime.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UpdateDataRuntime.aspx new file mode 100755 index 0000000000000000000000000000000000000000..0e4705a91e0b917858d8c77111efb0fc83daa8e3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UpdateDataRuntime.aspx @@ -0,0 +1,33 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpdateDataRuntime.aspx.cs" Inherits="Pages_UpdateDataRuntime" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | update dial value on runtime</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + updateData = function () { + var value = document.getElementById("dial-val").value; + FusionCharts("angular_gauge").setDataForId("dial1",value); + } + </script> + <form id="form1" runat="server"> + <h3>update dial value on runtime</h3> + <label for="dial-val">Input dial value</label> + <input name="dial-val" id="dial-val" type= "number"/><input type ="button" name ="update dial" value ="update dial"onclick ="updateData()" /> + <br /> + <br /> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UpdateDataRuntime.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UpdateDataRuntime.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..7b8bf45b800565401596d2a00c4566080ac670b7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UpdateDataRuntime.aspx.cs @@ -0,0 +1,18 @@ +using System; +using FusionCharts.Charts; + +public partial class Pages_UpdateDataRuntime : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data in string format + string jsonData = "{ 'chart': { 'caption': 'Customer Satisfaction Score', 'subcaption': 'Los Angeles Topanga', 'plotToolText': 'Current Score: $value', 'theme': 'fint', 'chartBottomMargin': '50', 'showValue': '1' }, 'colorRange': { 'color': [{ 'minValue': '0', 'maxValue': '45', 'code': '#e44a00' }, { 'minValue': '45', 'maxValue': '75', 'code': '#f8bd19' }, { 'minValue': '75', 'maxValue': '100', 'code': '#6baa01' }] }, 'dials': { 'dial': [{ 'value': '70', 'id': 'dial1' }] } }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart lineargauge = new Chart("angulargauge", "angular_gauge", "500", "400", "json", jsonData); + + //render chart + Literal1.Text = lineargauge.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UsaMap.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UsaMap.aspx new file mode 100755 index 0000000000000000000000000000000000000000..9ac0833e171fbb4025080a21ccdc8100311f664a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UsaMap.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UsaMap.aspx.cs" Inherits="UsaMap" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | USA Map</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/maps/fusioncharts.usa.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>USA Map</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UsaMap.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UsaMap.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..7e77a78cf2aeddcfebfb1735aa5dde0cfe2a15e8 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/UsaMap.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class UsaMap : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //json data to render map + string jsonData = "{ 'chart': { 'caption': 'Average Temperature of US States', 'subcaption': '1979 - 2000', 'entityFillHoverColor': '#F8F8E9', 'numberSuffix': '°F', 'showLabels': '1', 'borderThickness': '0.4', 'theme': 'fusion', 'entityToolText': '<b>$lname</b> has an average temperature of <b>$datavalue</b>' }, 'colorrange': { 'minvalue': '20', 'code': '#00A971', 'gradient': '1', 'color': [{ 'minvalue': '20', 'maxvalue': '40', 'code': '#EFD951' }, { 'minvalue': '40', 'maxvalue': '60', 'code': '#FD8963' }, { 'minvalue': '60', 'maxvalue': '80', 'code': '#D60100' } ] }, 'data': [{ 'id': 'HI', 'value': '70.0' }, { 'id': 'DC', 'value': '52.3' }, { 'id': 'MD', 'value': '54.2' }, { 'id': 'DE', 'value': '55.3' }, { 'id': 'RI', 'value': '50.1' }, { 'id': 'WA', 'value': '48.3' }, { 'id': 'OR', 'value': '48.4' }, { 'id': 'CA', 'value': '59.4' }, { 'id': 'AK', 'value': '26.6', }, { 'id': 'ID', 'value': '44.4' }, { 'id': 'NV', 'value': '49.9' }, { 'id': 'AZ', 'value': '60.3' }, { 'id': 'MT', 'value': '42.7' }, { 'id': 'WY', 'value': '42.0' }, { 'id': 'UT', 'value': '48.6' }, { 'id': 'CO', 'value': '45.1' }, { 'id': 'NM', 'value': '53.4' }, { 'id': 'ND', 'value': '40.4' }, { 'id': 'SD', 'value': '45.2' }, { 'id': 'NE', 'value': '48.8' }, { 'id': 'KS', 'value': '54.3' }, { 'id': 'OK', 'value': '59.6' }, { 'id': 'TX', 'value': '64.8' }, { 'id': 'MN', 'value': '41.2' }, { 'id': 'IA', 'value': '47.8' }, { 'id': 'MO', 'value': '54.5' }, { 'id': 'AR', 'value': '60.4' }, { 'id': 'LA', 'value': '66.4' }, { 'id': 'WI', 'value': '43.1' }, { 'id': 'IL', 'value': '51.8' }, { 'id': 'KY', 'value': '55.6' }, { 'id': 'TN', 'value': '57.6' }, { 'id': 'MS', 'value': '63.4' }, { 'id': 'AL', 'value': '62.8' }, { 'id': 'GA', 'value': '63.5' }, { 'id': 'MI', 'value': '44.4' }, { 'id': 'IN', 'value': '51.7' }, { 'id': 'OH', 'value': '50.7' }, { 'id': 'PA', 'value': '48.8' }, { 'id': 'NY', 'value': '45.4' }, { 'id': 'VT', 'value': '42.9' }, { 'id': 'NH', 'value': '43.8' }, { 'id': 'ME', 'value': '41.0' }, { 'id': 'MA', 'value': '47.9' }, { 'id': 'CT', 'value': '49.0' }, { 'id': 'NJ', 'value': '52.7' }, { 'id': 'WV', 'value': '51.8' }, { 'id': 'VA', 'value': '55.1' }, { 'id': 'NC', 'value': '59.0' }, { 'id': 'SC', 'value': '62.4' }, { 'id': 'FL', 'value': '70.7' } ] }"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart usaMap = new Chart("usa", "first_chart", "800", "500", "json", jsonData); + //render map + Literal1.Text = usaMap.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/WidgetWithXmlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/WidgetWithXmlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..f842c265dfc5816262246414708d1189d6d3e1cc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/WidgetWithXmlData.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WidgetWithXmlData.aspx.cs" Inherits="WidgetWithXmlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from XML URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from XML URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/WidgetWithXmlData.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/WidgetWithXmlData.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..cfcc2d47be8e6352e43d400cae0e905d0d05e20b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/WidgetWithXmlData.aspx.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Xml.Linq; +using FusionCharts.Charts; + +public partial class WidgetWithXmlData : System.Web.UI.Page +{ + //color range class with 3 properties to store upper limit lower limit pf a range along with specific color code for that range + class ColorRange + { + public int Min { get; set; } + public int Max { get; set; } + public string ColorCode { get; set; } + + public ColorRange(int min, int max, string code) + { + Min = min; + Max = max; + ColorCode = code; + } + } + protected void Page_Load(object sender, EventArgs e) + { + // store chart config name-config value pair + + Dictionary<string, string> chartConfig = new Dictionary<string, string>(); + chartConfig.Add("caption", "Nordstorm's Customer Satisfaction Score for 2017"); + chartConfig.Add("lowerLimit", "0"); + chartConfig.Add("upperLimit", "100"); + chartConfig.Add("showValue", "1"); + chartConfig.Add("numberSuffix", "%"); + chartConfig.Add("theme", "fusion"); + chartConfig.Add("showToolTip", "0"); + + List<ColorRange> color = new List<ColorRange>(); + color.Add(new ColorRange(0, 50, "#F2726F")); + color.Add(new ColorRange(50, 75, "#FFC533")); + color.Add(new ColorRange(75, 100, "#62B58F")); + + //store dial configuration + + var dial = new List<KeyValuePair<string, string>>(); + dial.Add(new KeyValuePair<string, string>("value", "81")); + + // create root eleement chart + //it will store all chart config an data to render chart + XElement chart = new XElement("chart"); + //iterate through chart configuration + //add each config as chart element attribute + foreach (var config in chartConfig) + { + //chart.SetAttributeValue(formatStringQuote(config.Key), formatStringQuote(config.Value)); + chart.SetAttributeValue(config.Key, config.Value); + } + //color range element + XElement colorRange = new XElement("colorrange"); + //iterate through color list + + foreach (ColorRange clr in color) + { + XElement colorElemet = new XElement("color"); + colorElemet.SetAttributeValue("minvalue", clr.Min.ToString()); + colorElemet.SetAttributeValue("maxvalue", clr.Max.ToString()); + colorElemet.SetAttributeValue("code", clr.ColorCode.ToString()); + colorRange.Add(colorElemet); + } + chart.Add(colorRange); + // create dials as Xelement + XElement dials = new XElement("dials"); + foreach (KeyValuePair<string, string> pair in dial) + { + XElement dialElement = new XElement("dial"); + dialElement.SetAttributeValue(pair.Key,pair.Value); + dials.Add(dialElement); + } + + chart.Add(dials); + //Create chart instance + // charttype, chartID, width, height, data format, data + + Chart gauge = new Chart("angulargauge", "first_widget", "400", "450", "xml", formatString(chart.ToString())); + Literal1.Text = gauge.Render(); + + } + private string formatString(string str) + { + // xml is multiline + // c# does not support multi line string + // js expects ' as \' to write in browser so replace them by \\' + // replace each \n and \r with space and " by ' + return str.Replace("\"", "'").Replace("\n", "").Replace("\r", ""); + + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/XmlDataUrl.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/XmlDataUrl.aspx new file mode 100755 index 0000000000000000000000000000000000000000..14c91d8a0d73906a31b7c2b76aaefc6c712754e5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/XmlDataUrl.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="XmlDataUrl.aspx.cs" Inherits="XmlDataUrl" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from XML URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from XML URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/XmlDataUrl.aspx.cs b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/XmlDataUrl.aspx.cs new file mode 100755 index 0000000000000000000000000000000000000000..3d8a65d732aa7a7db57ef13fccfb8314fbfb801e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Pages/XmlDataUrl.aspx.cs @@ -0,0 +1,17 @@ +using System; +using FusionCharts.Charts; + +public partial class XmlDataUrl : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //data url + string xmlDataUrl = "../Data/xmlData.xml"; + // create chart instance + // parameter + // chrat type, chart id, chart widh, chart height, data format, data source + Chart columnChart = new Chart("column2d", "first_chart", "600", "400", "xmlurl", xmlDataUrl); + //render chart + Literal1.Text = columnChart.Render(); + } +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Sql-Dump/sales_records_mssql.sql b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Sql-Dump/sales_records_mssql.sql new file mode 100755 index 0000000000000000000000000000000000000000..83e4fc5e81e3180f4a7f6ff87822eee38529670f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Sql-Dump/sales_records_mssql.sql @@ -0,0 +1,28024 @@ +CREATE DATABASE DrillDownDB +USE DrillDownDB + +CREATE TABLE Sales_Record( + Region varchar(MAX), + Country varchar(MAX), + City varchar(MAX), + [Total Sales] Numeric +); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 174 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 167.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 1696 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 77 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1483.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 251.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 100.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 233.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 2591.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 49.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1088 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 604.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 53.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 403.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 304 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 486.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 1320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 393 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 124.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 877.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 156 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 759.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1104.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 153.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 80 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 20.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 122.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 780 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 590.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 251.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 160 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 203.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 60.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 833.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1241.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 287.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 532 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 192.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 936 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 735 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 3079.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 215.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 990 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 111.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 119.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 555.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 920 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 388.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 667.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 595.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 149.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 881.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 475.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 344 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 194.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 43.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 263.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 372 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 728 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 472.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 248 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 280.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 467.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 43.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 384 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 186 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 7.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 21.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 57.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 124.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 31.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 248 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 131.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 952 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 83.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 526.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 325.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 543.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 55.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 647.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 587.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 943 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1576 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 555.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 224 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 143.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 58.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 29.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 239.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1485 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 104 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 371.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 84.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1296 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 175.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 37.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 259.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 552 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 571.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 37.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 121.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 417 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 864 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 556 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 607.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1319.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 591 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 109.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 408 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 147 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1248 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1019.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 441.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 587.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 503.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 149.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 480 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 34.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 1249.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 2474.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 431.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 207 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 262 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 29.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 394 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 30 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 28.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 352 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 22.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 736 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 51.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 139 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 197 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 67.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 145.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 883.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 524 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 182.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1023.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 317.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 984.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 156.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 77 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2758 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 154 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 249.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 509.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 516 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 44.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 57.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 291.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1007.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1759.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2807.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 57.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 167.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 422.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 249.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 839.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 724.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 317.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 396 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 672 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 72.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 165.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 4215.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1244.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 694.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 88.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1999.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 111.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 121.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 186 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 79.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 687.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 44.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 106.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 249.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 153.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 2035 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 316.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 597.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 304 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 582.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 695 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 624 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 310.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 176 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 2183.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1103.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 999.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 92.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1471.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 16 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 395.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 364.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 559.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 607.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 767.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1330 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 39.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 216 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 616 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 2239.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 584 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1123.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 719.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 58.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 37.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 215.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 141.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 194.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 518.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 4215.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 100.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1193.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 167.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 117.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 201.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 10539.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 172.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 396 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 230.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 576 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 743.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 398.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 217.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 35.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 111.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 303.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 778.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 699.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 2175.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1092 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 3465 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 2108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 165.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 777.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1495.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 848 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 141.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 74.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 172.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 864 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 86 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 403.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 52 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 403.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 106.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 252 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 72.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 39.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 473.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 930.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 1980 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 546.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 215.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 798 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 159.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 91 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 777.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 8431.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1903.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1167.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 847.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 859.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 279 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 59 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 419.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 727.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 287.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 103.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 61.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 561.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 335.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 372.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 523.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 163.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 544 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1386 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1814.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 408 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 239.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 543.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 79.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 218.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 528 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 113.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 111.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1048 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 396.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 788 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 599.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 575.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 667.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 780.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 78.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1742.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 394 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 268.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1833.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 230.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1032 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 583.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 79.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 763.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2303.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 516 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 145.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 2079 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 480 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 372.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2128 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1032 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2281.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 291.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 713.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 746.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 447.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 479.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 239.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1528.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 75.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 29.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 208 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 35.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1379 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 223.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 704 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 192.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 619.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 395.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 371.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 345.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 1576 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 131.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 62.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 146 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 262 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 312 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 10540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 18.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 359.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 364 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 418 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 364.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 1631.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 575.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 1551.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 9.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 239.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 29.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 747 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 392.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 103.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 49.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 880 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 863.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 10329 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 299.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 191.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 287.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 186.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 651 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 192 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1228.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1403.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3079.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1559.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 734.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 227.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 249 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 236 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 851.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 259.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 278 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1215.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 797.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 148.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 393 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 109.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 223.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 233.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 222.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 159.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 683.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 680.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2375.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2051.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 1755 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 472 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 816 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 100.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 436.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 312 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 373.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 115.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 231 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 88.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 87.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 71.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 29.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 83.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 292 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 588 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 34.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 149.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 294 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 347.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1379 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 495.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 35.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2303.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 930.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 470.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 571.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 546 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1549.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 152.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 299.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 277.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 39.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 95.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 516 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 319.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 335.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1584 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 747 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1092 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 736 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 860 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 383.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 191.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 1112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 209.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 24.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 319.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 579.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1151.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 4.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 151.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 153.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 281.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 911.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 544 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 1781.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 294 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 227.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 325 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 134.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 165.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 552 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 607.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 486.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 30.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 212.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 287.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 763.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 24 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 206.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 223.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 655.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 308.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 349.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 815.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 604.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 38.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 216 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 167.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 287.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 495.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 6324 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 733.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 798 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 228 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 528 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 384 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1088 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Walla Walla', + 147 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 391.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 311.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 147 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 127.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 303.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 159.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 575.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 719.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 128 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 36.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 747 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 141.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 239.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 251.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 250.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 2640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 223.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 232.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 72.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 671.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 223.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 251.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 135.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 287.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 154 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 52 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 199.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 425.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 695 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 260 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 92 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 185.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 149 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 199.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 196.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1627.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 421 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 228 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 328 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 712.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 147.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 251.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 209.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 689.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 191.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 136.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 4456.44 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 278.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1099.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1499.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 399.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 44.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 107.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 56.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 407.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 399.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 1599.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 427.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1596 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 820.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 387.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1551.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 872.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 5268 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 39.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2855.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1562.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 771.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 220 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 22.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 3952.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 175.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 495.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 339.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 164 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 96.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 719.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 960 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 517.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 459.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 974.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1214.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 467.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 57.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 258.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 2760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 111.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 275.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 143.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1139.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1099.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 569.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 19.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 313.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 900 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 110 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 408 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1099.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 835.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 359.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 258.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 183.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 74.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 1049.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 183.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 97.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 824.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 569.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1189.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 318 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 265 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 730.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 135 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 105 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 34.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 37.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1249.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 7905 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 437.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 157.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1053.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 757.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 193.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 314.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 178.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1139.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 629.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 319.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Walla Walla', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 1972 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 767.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 139.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 135.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 687.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 949.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2543.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 311.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 92 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 59.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 284.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 697.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 778 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 648 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 232.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 244.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 523.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 179.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 985.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 129.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 697.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 321.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 80.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1059.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1519.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 835.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 997.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 237.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 590.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 115.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 431.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 517.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 739.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 194.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 2650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 49.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 492.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 475 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 490 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 623.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 74.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 599.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 112.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 598.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 734.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1124.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 749.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 2199.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 437.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 314.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 2279.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 255.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 391.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 209.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 319.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 920 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 116.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 702 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 820 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 36.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 493 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 199.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 263.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 1044 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 408.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 117 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 162.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 348.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 86.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 631.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 387.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 78 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 252 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1237.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 815.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 624.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 27.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 187.38 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 260 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2499.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1399.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 779.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 372.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 387.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 156.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1700.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 719.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 71.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 397.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 539.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3419.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2339.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 189.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1053.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 232.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 157.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 252.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 193.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 493 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 29.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1925 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 64.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1008 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 499.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 76.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 179.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 523.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1099.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 2379.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 322.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 439.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 479.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 492.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3900 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 772.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 417.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 1064 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 398.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2170 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1045 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 47.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 294 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 80 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 3952.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 532 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 224.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 322.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 1649.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 187.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 22.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 46 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 322.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 224.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 488.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 137.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 249.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 13.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 539.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 742.74 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 194.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 69.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 393.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 680 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 430 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 739.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 524.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 2475.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 299.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 287.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 630 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 61.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 569.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 49.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1367.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 77.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1092.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3943.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1050 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 3125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 795 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 15.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 219.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 320.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 550 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 79.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 406.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 2279.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 442.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 2088 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 719.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 224.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 950 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1104 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 299.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 569.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 683.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 377.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 23.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 249.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 920 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 251.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 269.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 557.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 644.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 454.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 276 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 67.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 522 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 776.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 819.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 223.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 110.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 419.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 51.53 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 523.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 679.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 263.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 359.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 44.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 192.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 69.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 544.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 56.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 775 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 231.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1710 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1020 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1287.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1869.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 909.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 249.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 441.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 599.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 1701 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 53.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 649.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 551.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 419.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1059.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 743.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 455.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 315.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 4456.44 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 210.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1619.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 300.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 99.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 498.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 193.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 174.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 493 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 252.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 3952.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 52.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 276 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 697.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 328 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 397.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 64.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 408.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 936.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 19.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1158 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 223.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 872.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 249.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 559.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 275.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 119.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 931 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 68 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 232.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 368 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 1020 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 620 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 38.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1169.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 468.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 4849.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1237.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 113.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 557.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 2735.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 196 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 629.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 759.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 389.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 4951.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 466.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2366.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 878 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 582 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 446.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1079.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 224.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2700 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 780 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 216 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 64.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 161.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 397.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 449.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 311.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1485.43 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1368.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 119.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 89.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 167.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 499.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1289.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 2309.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 429.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 629.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 270 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1925 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 132 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 157.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 306 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 128 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 349 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 1104 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 780 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 419.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 85.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 1600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 1484 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 46 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 47.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 405.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3936 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 98.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 558 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 936.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1045 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 569.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1052.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 474.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 683.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 158.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 651 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 645 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 50 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 371 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 319.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 111.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 899.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1368 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 349 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 986 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 749.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 77.42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 297.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 378 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 172 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 972.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 57 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 562.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 325.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 468.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 496 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 28 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 550 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 105 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 779.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 379.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 549.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 900 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 261.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 37.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 210.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 399.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1589.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 372 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 175 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 569.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 25.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 842 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 24 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 52.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 126 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 227.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 629.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 531.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 284.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1700 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1218 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 335.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 919.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 311.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2475 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 243.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 392 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 443.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 337.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 395.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 396 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 736 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1064 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 330 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 116.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 379.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1374.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 374.66 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 776.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 324.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 225 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 38 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 50 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 55.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 284.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1139.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 272.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 899.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 1312.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 74.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 719.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 385 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1479 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 798 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 624.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 167.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 1756 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 1379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 489.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 139.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1484 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 2280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 126 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 199.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2339.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1683.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 1050 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 28 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 289.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 104.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 739.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 314.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 344 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 2228.22 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1287 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 874.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 54.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 24.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 850 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 186 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 199.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 167.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 256.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 6359.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 279.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 96.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 349 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 986 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 22.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 759.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 12.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1317.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 35.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 1043.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 77.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1199.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 388.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 325.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 284.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 2475.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 459.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 309.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1875 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 270 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1317 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 225 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 89.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 759.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1733.01 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 192.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 22.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 187.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 135.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 56 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 348.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 44.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1134.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 655.63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 194.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1163.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 863.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 98.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 348 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 119.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 89.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1049.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 529.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 52.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 1559.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 2475.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 647 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 1589.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 1439.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 246.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 220.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 209.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 824.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1116 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1094.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 79.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 2635 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 42.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 149.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 18.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 759.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 899.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 138 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 162 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 552 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 199.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 1391.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 260 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 227.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 193 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 919.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 101.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 854.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 7904.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 985.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1249.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 7905 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1103.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1232.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 193 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 322 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 318 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 147.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 419.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 292.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 2199.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 194.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 135 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 374.76 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 656 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 437.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 292.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 465 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 378 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 405 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 527 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 714 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1020 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 18.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 2108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 414 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 17.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 139.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 311 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 99.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 599.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 112.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 295.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 990.27 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 517.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 825 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 25.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1092 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2040 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 997.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 460 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 377.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 71.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 1562.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 949.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 397.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 521.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 83.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 179.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 496 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 2750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 230 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 211.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 735 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 629.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 449.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 587.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 794.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1596 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 462 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1439.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 110.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1559.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 341.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1529.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1182.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 640.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 291 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 490 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 561.99 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 279.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 9.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 449.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 94.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 139.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 194.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 2309.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2465 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3099.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 389.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 872.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 175 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 315.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1092.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1237.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 439 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 179.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 260.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 997.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1638 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 87.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 147.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 56 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 158.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 15809.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1439.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 398.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 26.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1035.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 98.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 624.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 839.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 106 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1249.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 209.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 623.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 239.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 985.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 498.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 442 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 136.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 230 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 199.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 252 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 665 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 523.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1562.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1619.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 220.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 210.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 269.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 854.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 749.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 399.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 238.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 399.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 797.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 252.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 325 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 2170 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 437.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 225 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 10540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 585 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 135.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 388.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 2199.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 2970.96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 906.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 167.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1799.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 929.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 495 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 810 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1674.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 9903.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 932.04 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 30 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 143.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 44.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 289.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 645 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 719.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 295.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 442.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 198.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1725.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 359.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 427.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 108.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 599.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 97.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 261.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 48.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 839.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 7427.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 659.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 99.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 198.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 537.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 74.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 104.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 192 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 25.89 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1079.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 849.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 418.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 368 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 1756 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 585 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 157.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 139.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 459.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 335.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 619.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1367.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 46.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 474.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 83.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 64.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 348 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 405 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 47.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1097.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 599.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 397.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 251.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 585 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 523.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 690.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 556.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 154.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 65.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 855 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 378 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 249.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 71.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 569.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 364.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 119.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1103.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1665.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 752.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 189.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 559.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 549.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1478.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 999.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1740 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 441 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 104.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 349.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 684 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 775 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 112.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 220 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 146.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 2120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 930 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 2958 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 110 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 37.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 57.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 387.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 399.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 91.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 4049.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 624.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 488.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 312.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 815.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 92.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 133 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 424 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 776.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 266 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 427 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 174 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 154.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 44.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 231.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 41.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 462 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 656 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 324 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 792 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 67.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 1317.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 848 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 208 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 455.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 591.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 135 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 133 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 279.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 1733.06 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 17.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 156.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 57.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 77.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 439 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 77.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 530 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 878 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 799.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 399.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 184 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 116.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1317 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1536.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 309.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 15810 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 414 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 503.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 292.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 959.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 628.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 499.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1119.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 630 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 1215 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 276 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 696 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1971.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1000 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 38.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 839.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1559.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1880.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 949.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 299.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1619.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 69.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 6189.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 337.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 989.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 136 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 239.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 139.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 199.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 232.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 192.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 794.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 272.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 549.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 134.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 269.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 335.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 960 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 184 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 187.38 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 550 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 247.33 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 1237.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 196 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3191.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1259.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 451.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 341.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 306 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 529.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 430 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 459.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1223.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1289.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 56 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 270.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 187.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 304 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 6050 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 743.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 208.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1215 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1967.49 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2331.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1218 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 322 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 374.76 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 442.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1075 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 179.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 119.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 530 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 134.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1035.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 526.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1899.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1494.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 7427.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 5499.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 810 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 480 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 94.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 665 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 344 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 665 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 6587.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 2295.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 1295.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 149.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 233.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 171 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 74.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 1650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 91.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 14 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 645 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 546 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 569.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1317 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 291.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 591.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 37.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1272 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 759.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 479.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 323.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 449.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 640.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 189.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 151.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 899.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 44.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 284.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 2187.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 831.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 67.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1700 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 30 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 714 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 136 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 130 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 327.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 179.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 735.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 289.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3002.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 819.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 687.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 103.31 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 148.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 52.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 386.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 490 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 86.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 364.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1655.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 363.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 719.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 379.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 523.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 449.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 59.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 386 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 357.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 4322.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 244.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 189.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 35.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 499.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 464.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 91.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 455.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 22 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 24.98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 29.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 79.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 31 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 75.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 24 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 23.22 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 34.87 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 80.96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 18 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 32 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 35.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 28.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 35.98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 14 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 67.94 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 66.47 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 17 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 29.99 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 31 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 26 + ); diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Styles/SampleStyleSheet.css b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Styles/SampleStyleSheet.css new file mode 100755 index 0000000000000000000000000000000000000000..9236455131db8f4819edd70c3d9c1bf662ee1788 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Styles/SampleStyleSheet.css @@ -0,0 +1,5 @@ +body { + font-family: Helvetica Neue, Arial; + font-size: 16px; + +} diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Web.Debug.config b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Web.Debug.config new file mode 100755 index 0000000000000000000000000000000000000000..19058ed3535a44c3413d77784868bbdbf34b54ff --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Web.Debug.config @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- For more information on using web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=125889 --> + +<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> + <!-- + In the example below, the "SetAttributes" transform will change the value of + "connectionString" to use "ReleaseSQLServer" only when the "Match" locator + finds an attribute "name" that has a value of "MyDB". + + <connectionStrings> + <add name="MyDB" + connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" + xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> + </connectionStrings> + --> + <system.web> + <compilation xdt:Transform="RemoveAttributes(debug)" /> + <!-- + In the example below, the "Replace" transform will replace the entire + <customErrors> section of your web.config file. + Note that because there is only one customErrors section under the + <system.web> node, there is no need to use the "xdt:Locator" attribute. + + <customErrors defaultRedirect="GenericError.htm" + mode="RemoteOnly" xdt:Transform="Replace"> + <error statusCode="500" redirect="InternalError.htm"/> + </customErrors> + --> + </system.web> +</configuration> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Web.config b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Web.config new file mode 100755 index 0000000000000000000000000000000000000000..dd7ef09558132395099403bfcbdcea37e62ea076 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-cs/samples/Web.config @@ -0,0 +1,137 @@ +<?xml version="1.0"?> +<!-- + Note: As an alternative to hand editing this file you can use the + web admin tool to configure settings for your application. Use + the Website->Asp.Net Configuration option in Visual Studio. + A full list of settings and comments can be found in + machine.config.comments usually located in + \Windows\Microsoft.Net\Framework\vx.x\Config +--> +<configuration> + + + <configSections> + <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> + <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> + <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> + <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> + <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> + </sectionGroup> + </sectionGroup> + </sectionGroup> + </configSections> + + <appSettings /> + <connectionStrings /> + <system.web> + <!-- + Set compilation debug="true" to insert debugging + symbols into the compiled page. Because this + affects performance, set this value to true only + during development. + --> + <compilation debug="true"> + + <assemblies> + <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> + <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> + <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> + </assemblies> + + </compilation> + <!-- + The <authentication> section enables configuration + of the security authentication mode used by + ASP.NET to identify an incoming user. + --> + <authentication mode="Windows" /> + <!-- + The <customErrors> section enables configuration + of what to do if/when an unhandled error occurs + during the execution of a request. Specifically, + it enables developers to configure html error pages + to be displayed in place of a error stack trace. + + <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> + <error statusCode="403" redirect="NoAccess.htm" /> + <error statusCode="404" redirect="FileNotFound.htm" /> + </customErrors> + --> + + + <pages> + <controls> + <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + </controls> + </pages> + + <httpHandlers> + <remove verb="*" path="*.asmx"/> + <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> + </httpHandlers> + <httpModules> + <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + </httpModules> + + + </system.web> + + <system.codedom> + <compilers> + <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" + type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <providerOption name="CompilerVersion" value="v3.5"/> + <providerOption name="WarnAsError" value="false"/> + </compiler> + <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" + type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <providerOption name="CompilerVersion" value="v3.5"/> + <providerOption name="OptionInfer" value="true"/> + <providerOption name="WarnAsError" value="false"/> + </compiler> + </compilers> + </system.codedom> + + <!-- + The system.webServer section is required for running ASP.NET AJAX under Internet + Information Services 7.0. It is not necessary for previous version of IIS. + --> + <system.webServer> + <validation validateIntegratedModeConfiguration="false"/> + <modules> + <remove name="ScriptModule" /> + <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + </modules> + <handlers> + <remove name="WebServiceHandlerFactory-Integrated"/> + <remove name="ScriptHandlerFactory" /> + <remove name="ScriptHandlerFactoryAppServices" /> + <remove name="ScriptResource" /> + <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" + type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" + type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </handlers> + </system.webServer> + <runtime> + <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> + </dependentAssembly> + </assemblyBinding> + </runtime> + +</configuration> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.dll new file mode 100755 index 0000000000000000000000000000000000000000..1703c1d88b9584f08a851a5f0c296df3cd6d2a99 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.pdb new file mode 100755 index 0000000000000000000000000000000000000000..dd9b039b0d0154ef1f9ff3e1d841b88492c5d826 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Converters.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.dll new file mode 100755 index 0000000000000000000000000000000000000000..b6a3d8d8bf5c00e2291a7ec54b28b89b10a84e30 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.pdb new file mode 100755 index 0000000000000000000000000000000000000000..52037ea07ea6222abd84f328d4d3707f91c015db Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Core.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.dll new file mode 100755 index 0000000000000000000000000000000000000000..f24325749f93dd8a59f4ee1aadb94ccaf0acef2a Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.pdb new file mode 100755 index 0000000000000000000000000000000000000000..48dc53c9398db9eaabc7ac53f93424ff46ae1956 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Css.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.dll new file mode 100755 index 0000000000000000000000000000000000000000..3f08ef23a542d686c98f91f436ffbac207ba6870 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.pdb new file mode 100755 index 0000000000000000000000000000000000000000..d7550892d9aa6e2932c1aef0a4994e8dc1126eda Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Dom.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.dll new file mode 100755 index 0000000000000000000000000000000000000000..b56070670e7362f3eafcf718782a4fe3058679fc Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.pdb new file mode 100755 index 0000000000000000000000000000000000000000..b286d8a55f58eabaac654fc485ad5ff7183cd1a4 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Model.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Gdi.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Gdi.pdb new file mode 100755 index 0000000000000000000000000000000000000000..07370b98ef81888784777f45a3adbaa176d2ef84 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Gdi.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.dll new file mode 100755 index 0000000000000000000000000000000000000000..b214d4287f5392d8c1b2348705f0719f360607bc Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.pdb new file mode 100755 index 0000000000000000000000000000000000000000..1b19a1d245dce04c1a7aed90df2d889457e5fb6b Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Rendering.Wpf.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.dll new file mode 100755 index 0000000000000000000000000000000000000000..d034e634ef3129fb1e5bbc1c6bcf6560d500af57 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.pdb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.pdb new file mode 100755 index 0000000000000000000000000000000000000000..1f369a6867a3c5339dd72e389a8b55b8923d618e Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Bin/FusionCharts.SharpVectors.Runtime.pdb differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Exported_Images/readme.txt b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Exported_Images/readme.txt new file mode 100755 index 0000000000000000000000000000000000000000..3732177719dfcd8d936861403ff7583489b03730 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Exported_Images/readme.txt @@ -0,0 +1,3 @@ +FusionCharts ASP.NET Export Handler +========================================= +This folder contains exported images. Please make sure to set IUSR user read/write permission into this folder. diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/FCExporter.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/FCExporter.aspx new file mode 100755 index 0000000000000000000000000000000000000000..a6be9ee45f174fe2e38b4e44e44c4249626679ab --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/FCExporter.aspx @@ -0,0 +1 @@ +<%@ Page Language="VB" AutoEventWireup="true" CodeFile="FCExporter.aspx.vb" Inherits="FCExporter" validateRequest="false" %> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/FCExporter.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/FCExporter.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..562fbc6fcfbd89961044e67251655c13be594ffe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/FCExporter.aspx.vb @@ -0,0 +1,1904 @@ +'* +' * +' * FusionCharts Exporter is an ASP.NET C# script that handles +' * FusionCharts (since v3.1) Server Side Export feature. +' * This in conjuncture with various export classes would +' * process FusionCharts Export Data POSTED to it from FusionCharts +' * and convert the data to image or PDF and subsequently save to the +' * server or response back as http response to client side as download. +' * +' * This script might be called as the FusionCharts Exporter - main module +' * +' * @author FusionCharts +' * @description FusionCharts Exporter (Server-Side - ASP.NET C#) +' * @version 4.0 [ 21 June 2016 ] +' * +' + +'* +' * ChangeLog / Version History: +' * ---------------------------- +' * +' * 4.0.1 [25 Aug 2016] +' * - fixes for throwing Null pointer Exception while exporting as jpeg in save export action +' * 4.0 [ 21 June 2016 ] +' * - Support export if direct image base64 encoded data is provided (for FusionCharts v 3.11.0 or more). +' * - Support for download of xls format. +' * - Export with images suppported for every format including svg if browser is capable of sending the image data as base64 data. +' * +' * 3.0 [ 18 July 2014 ] +' * - Support for JavaScript Chart (SVG) +' * +' * 2.0 [ 12 February 2009 ] +' * - Integrated with new Export feature of FusionCharts 3.1 +' * - can save to server side directory +' * - can provide download or open in popup window. +' * - can report back to chart +' * - can save as PDF/JPG/PNG/GIF +' * +' * 1.0 [ 16 August 2007 ] +' * - can process chart data to jpg image and response back to client side as download. +' * +' + +'* +' * Copyright (c) 2016 InfoSoft Global Private Limited. All Rights Reserved +' * +' + +'* +' * GENERAL NOTES +' * ------------- +' * +' * Chart would POST export data (which consists of encoded image data stream, +' * width, height, background color and various other export parameters like +' * exportFormat, exportFileName, exportAction, exportTargetWindow) to this script. +' * +' * The script would process this data using appropriate resource classes & build +' * export binary (PDF/image) +' * +' * It either saves the binary as file to a server side directory or push it as +' * Download to client side. +' * +' * +' * ISSUES +' * ------ +' * Q. What if someone wishes to open in the same page where the chart existed as postback +' * replacing the old page? +' * +' * A. Not directly supported using any chart attribute or parameter but can do by +' * removing/commenting the line containing 'header( content-disposition ...' +' * +' + +'* +' * +' * @requires FCIMGGenerator Class to export FusionCharts image data to JPG, PNG, GIF binary +' * @requires FCPDFGenerator Class to export FusionCharts image data to PDF binary +' * +' + + +Imports System.IO +Imports System.Web +Imports System.Drawing +Imports System.Collections +Imports System.Collections.Generic +Imports System.Drawing.Imaging +Imports System.Text.RegularExpressions +Imports SharpVectors.Converters +Imports System.Web.Script.Serialization + +''' <summary> +''' FusionCharts Exporter is an ASP.NET C# script that handles +''' FusionCharts (since v3.1) Server Side Export feature. +''' This in conjuncture with other resource classses would +''' process FusionCharts Export Data POSTED to it from FusionCharts +''' and convert the data to an image or a PDF. Subsequently, it would save +''' to the server or respond back as an HTTP response to client side as download. +''' +''' This script might be called as the FusionCharts Exporter - main module +''' </summary> +''' +Partial Public Class FCExporter + Inherits System.Web.UI.Page + + + ''' <summary> + ''' IMPORTANT: You need to change the location of folder where + ''' the exported chart images/PDFs will be saved on your + ''' server. Please specify the path to a folder with + ''' write permissions in the constant SAVE_PATH below. + ''' + ''' Please provide the path as per ASP.NET path conventions. + ''' You can use relative or absolute path. + ''' + ''' Special Cases: + ''' '/' means 'wwwroot' directory. + ''' '. /' ( without the space after .) is the directory where the FCExporter.aspx file recides. + ''' + ''' Absolute Path : + ''' + ''' can be like this : "C:\\myFolders\\myImages" + ''' ( Please never use single backslash as that would stop execution of the code instantly) + ''' or "C:/myFolders/myImages" + ''' + ''' You may have a // or \ at end : "C:\\myFolders\\myImages\\" or "C:/myFolders/myImages/" + ''' + ''' You can also have mixed slashes : "C:\\myFolders/myImages" + ''' + ''' + ''' </summary> + ''' directory where the FCExporter.aspx file recides + Private Const SAVE_PATH As String = "./Exported_Images/" + + ''' <summary> + ''' IMPORTANT: This constant HTTP_URI stores the HTTP reference to + ''' the folder where exported charts will be saved. + ''' Please enter the HTTP representation of that folder + ''' in this constant e.g., http://www.yourdomain.com/images/ + ''' </summary> + Private Const HTTP_URI As String = "Exported_Images/" + + ''' <summary> + ''' OVERWRITEFILE sets whether the export handler would overwrite an existing file + ''' the newly created exported file. If it is set to false the export handler would + ''' not overwrite. In this case, if INTELLIGENTFILENAMING is set to true the handler + ''' would add a suffix to the new file name. The suffix is a randomly generated GUID. + ''' Additionally, you add a timestamp or a random number as additional suffix. + ''' </summary> + Private OVERWRITEFILE As Boolean = False + Private INTELLIGENTFILENAMING As Boolean = True + Private FILESUFFIXFORMAT As String = "TIMESTAMP" + ' // value can be either 'TIMESTAMP' or 'RANDOM' + + ''' <summary> + ''' This is a constant list of the MIME types related to each export format this resource handles + ''' The value is semicolon separated key value pair for each format + ''' Each key is the format and value is the MIME type + ''' </summary> + Private Const MIMETYPES As String = "pdf=application/pdf;jpg=image/jpeg;jpeg=image/jpeg;gif=image/gif;png=image/png;svg=image/svg+xml;xls=application/vnd.ms-excel" + + ''' <summary> + ''' This is a constant list of all the file extensions for the export formats + ''' The value is semicolon separated key value pair for each format + ''' Each key is the format and value is the file extension + ''' </summary> + Private Const EXTENSIONS As String = "pdf=pdf;jpg=jpg;jpeg=jpg;gif=gif;png=png;svg=svg;xls=xls" + + ''' <summary> + ''' Lists the default exportParameter values taken, if not provided by chart + ''' </summary> + Private Const DEFAULTPARAMS As String = "exportfilename=FusionCharts;exportformat=PDF;exportaction=download;exporttargetwindow=_self" + + ''' <summary> + ''' Stores server notices, if any as string [ to be sent back to chart after save ] + ''' </summary> + Private notices As String = "" + ''' <summary> + ''' Whether the export action is download. Default value. Would change as per setting retrieved from chart. + ''' </summary> + Private isDownload As Boolean = True + + ''' <summary> + ''' DOMId of the chart + ''' </summary> + Private DOMId As String + + ''' <summary> + ''' Where the browser is latest. Default value is false. + ''' </summary> + Private isLatest As Boolean = False + + Public Property IsSVGData() As Boolean + Get + Return m_IsSVGData + End Get + Set(value As Boolean) + m_IsSVGData = Value + End Set + End Property + Private m_IsSVGData As Boolean + + Public Property isImgData() As Boolean + Get + Return m_isImgData + End Get + Set(value As Boolean) + m_isImgData = Value + End Set + End Property + Private m_isImgData As Boolean + + ''' <summary> + ''' Stores SVG information. + ''' </summary> + Private svgData As TextReader + + ''' <summary> + ''' Stores SVG in-memory file. + ''' </summary> + Private svgStream As MemoryStream + + Private exportData As Hashtable + + ''' <summary> + ''' The main function that handles all Input - Process - Output of this Export Architecture + ''' </summary> + ''' <param name="sender">FusionCharts chart SWF</param> + ''' <param name="e"></param> + Protected Sub Page_Load(sender As Object, e As EventArgs) + + '* + ' * Retrieve export data from POST Request sent by chart + ' * Parse the Request stream into export data readable by this script + ' + + exportData = parseExportRequestStream() + + ' process export data and get the processed data (image/PDF) to be exported + Dim exportObject As MemoryStream = Nothing + If Not isLatest Then + If IsSVGData Then + If exportData("encodedImgData") IsNot Nothing AndAlso exportData("encodedImgData").ToString() <> "" AndAlso DirectCast(exportData("parameters"), Hashtable)("exportformat").ToString() = "svg" Then + exportObject = exportProcessor(DirectCast(exportData("parameters"), Hashtable)("exportformat").ToString(), exportData("svg").ToString(), DirectCast(exportData("parameters"), Hashtable), exportData("encodedImgData").ToString()) + Else + exportObject = exportProcessor(DirectCast(exportData("parameters"), Hashtable)("exportformat").ToString(), "svg", DirectCast(exportData("parameters"), Hashtable)) + + End If + Else + If isImgData Then + convertRAWImageDataToFile(exportData) + Else + If exportData("encodedImgData") IsNot Nothing AndAlso exportData("encodedImgData").ToString() <> "" AndAlso DirectCast(exportData("parameters"), Hashtable)("exportformat").ToString() = "svg" Then + exportObject = exportProcessor(DirectCast(exportData("parameters"), Hashtable)("exportformat").ToString(), "svg", DirectCast(exportData("parameters"), Hashtable), exportData("encodedImgData").ToString()) + Else + exportObject = exportProcessor(DirectCast(exportData("parameters"), Hashtable)("exportformat").ToString(), "svg", DirectCast(exportData("parameters"), Hashtable)) + End If + End If + End If + + ' + ' * Send the export binary to output module which would either save to a server directory + ' * or send the export file to download. Download terminates the process while + ' * after save the output module sends back export status + ' + + 'object exportedStatus = IsSVGData ? outputExportObject(exportObject, exportData) : outputExportObject(exportObject, (Hashtable)exportData["parameters"]); + Dim exportedStatus As Object = outputExportObject(exportObject, DirectCast(exportData("parameters"), Hashtable)) + + ' Dispose export object + exportObject.Close() + exportObject.Dispose() + + ' + ' * Build Appropriate Export Status and send back to chart by flushing the + ' * procesed status to http response. This returns status back to chart. + ' * [ This is not applicable when Download action took place ] + ' + + flushStatus(exportedStatus, DirectCast(exportData("meta"), Hashtable)) + End If + + End Sub + + ''' <summary> + ''' Parses POST stream from chart and builds a Hashtable containing + ''' export data and parameters in a format readable by other functions. + ''' The Hashtable contains keys 'stream' (contains encoded + ''' image data) ; 'meta' ( Hashtable with 'width', 'height' and 'bgColor' keys) ; + ''' and 'parameters' ( Hashtable of all export parameters from chart as keys, like - exportFormat, + ''' exportFileName, exportAction etc.) + ''' </summary> + ''' <returns>Hashtable of processed export data and parameters.</returns> + Private Function parseExportRequestStream() As Hashtable + ' store all export data + Dim exportData As New Hashtable() + Dim svgStr As String = "" + + IsSVGData = False + Dim test As String = Request("stream_type") + If Request("stream_type") = "svg" Then + IsSVGData = True + exportData("svg") = Request("stream") + + ' Added custom parameter + exportData("exporttargetwindow") = "_self" + + 'Get all export parameters into a Hastable + Dim parameters As Hashtable = parseParams(Request("parameters")) + 'parseParams("exportaction=" + exportData["exportaction"].ToString()); + exportData("parameters") = parameters + + svgStr = exportData("svg").ToString() + svgStr = svgStr.Substring(0, svgStr.IndexOf("</svg>") + 6) + ' fix to replace string occurred in some data source specifically excel + ' need to look for a more proper method which covers all such situations + svgStr = svgStr.Replace(" ", " ") + exportData("svg") = svgStr + If Request("encodedImgData") IsNot Nothing Then + exportData("encodedImgData") = Request("encodedImgData") + End If + Dim svg As Byte() = System.Text.Encoding.UTF8.GetBytes(exportData("svg").ToString()) + svgStream = New MemoryStream(svg) + svgData = New StreamReader(svgStream) + + ElseIf Request("stream_type") = "IMAGE-DATA" Then + + 'for modern browser exporting + convertRAWImageDataToFile(Request("stream"), Request("parameters")) + isLatest = True + + ElseIf Request("stream_type") = "image-data" Then + + ' If Flash Charts + If Request("stream_type") = "image-data" Then + isImgData = True + If Request("stream") Is Nothing OrElse Request("stream").Trim() = "" Then + raise_error("100", True) + End If + exportData("stream") = Request("stream").Trim().Replace(" ", "+") + exportData("stream") = exportData("stream").ToString().Substring(exportData("stream").ToString().IndexOf(",") + 1) + Dim parametersArray As [String]() = Request("parameters").ToString().Split("|"c) + exportData("exportfilename") = parametersArray(0).Split("="c)(1) + exportData("exportformat") = parametersArray(1).Split("="c)(1).ToLower() + Else + isImgData = False + 'String of compressed image data + exportData("stream") = Request("stream") + + 'Halt execution if image stream is not provided. + If Request("stream") Is Nothing OrElse Request("stream").Trim() = "" Then + raise_error("100", True) + End If + + 'Get all export parameters into a Hastable + Dim parameters As Hashtable = parseParams(Request("parameters")) + exportData("parameters") = parameters + End If + + End If + + 'get width and height of the chart + Dim meta As New Hashtable() + + meta("width") = Request("meta_width") + 'Halt execution on error + If Request("meta_width") Is Nothing OrElse Request("meta_width").Trim() = "" Then + raise_error("101", True) + End If + + meta("height") = Request("meta_height") + 'Halt execution on error + If Request("meta_height") Is Nothing OrElse Request("meta_height").Trim() = "" Then + raise_error("101", True) + End If + + + 'Background color of chart + meta("bgcolor") = Request("meta_bgColor") + If meta("bgcolor") Is Nothing OrElse meta("bgcolor").ToString().Trim() = "" Then + ' Send notice if BgColor is not provided + raise_error(" Background color not specified. Taking White (FFFFFF) as default background color.") + ' Set White as Default Background color + meta("bgcolor") = "FFFFFF" + End If + + ' DOMId of the chart + meta("DOMId") = If(Request("meta_DOMId") Is Nothing, "", Request("meta_DOMId")) + DOMId = meta("DOMId").ToString() + + exportData("meta") = meta + + Return exportData + End Function + ''' <summary> + ''' Decode a base64 encoded string + ''' </summary> + ''' <param name="data">A base64 encoded string </param> + ''' <returns>String decoded from input </returns> + Private Function base64Decode(data As String) As Byte() + Return Convert.FromBase64String(data) + End Function + + + Private Sub convertRAWImageDataToFile(imageData As String, parameters As String) + + Dim fileName As String = parameters.Split("|"c)(0).Split("="c)(1), extention As String = parameters.Split("|"c)(1).Split("="c)(1), exportAction As String = parameters.Split("|"c)(2).Split("="c)(1), fullFileName As String = fileName & "." & extention, filLocation As String = HttpContext.Current.Server.MapPath("~/Exported_Images/" & fullFileName) + Dim contentType As String = getMime(extention) + Dim bytes As Byte() = base64Decode(imageData.Split(","c)(1)) + File.WriteAllBytes(filLocation, bytes) + If exportAction = "download" Then + Response.ClearContent() + Response.AddHeader("Content-Disposition", "attachment; filename=" & fullFileName) + Response.ContentType = contentType + Response.TransmitFile(filLocation) + Response.[End]() + End If + End Sub + + + Private Sub convertRawImageDataToFile(exportData As Hashtable) + Dim fileName As [String] = "" + fileName = Server.MapPath(".") & SAVE_PATH & exportData("exportfilename").ToString() & "." & exportData("exportformat").ToString().ToLower() + System.IO.File.WriteAllBytes(fileName, base64Decode(exportData("stream").ToString())) + Dim data As Byte() = System.IO.File.ReadAllBytes(fileName) + + Dim mime As String = getMime(exportData("exportformat").ToString()) + Response.ContentType = mime + Response.AddHeader("Content-Disposition", "attachment" & "; filename=""" & fileName & "." & exportData("exportformat").ToString().ToLower() & """") + + Dim retStatus As New Hashtable() + retStatus("filepath") = "" + + ' set the output strem to Response stream as the file is going to be downloaded + retStatus("outStream") = Response.OutputStream + + Dim outStream As Stream = DirectCast(retStatus("outStream"), Stream) + outStream.Flush() + outStream.Close() + + Response.[End]() + End Sub + ''' <summary> + ''' Parse export 'parameters' string into a Hashtable + ''' Also synchronise default values from defaultparameterValues Hashtable + ''' </summary> + ''' <param name="strParams">A string with parameters (key=value pairs) separated by | (pipe)</param> + ''' <returns>Hashtable containing parsed key = value pairs.</returns> + Private Function parseParams(strParams As String) As Hashtable + + 'default parameter values + Dim defaultParameterValues As Hashtable = bang(DEFAULTPARAMS) + + ' get parameters + Dim parameters As Hashtable = bang(strParams, New Char() {"|"c, "="c}) + + ' sync with default values + ' iterate through each default parameter value + For Each param As DictionaryEntry In defaultParameterValues + ' if a parameter from the defaultParameterValues Hashtable is not present + ' in the parameters hashtable take the parameter and value from default + ' parameter hashtable and add it to params hashtable + ' This is needed to ensure proper export + If parameters(param.Key) Is Nothing Then + parameters(param.Key) = param.Value.ToString() + End If + Next + + ' set a global flag which denotes whether the export is download or not + ' this is needed in many a functions + isDownload = parameters("exportaction").ToString().ToLower() = "download" + + + ' return parameters + Return parameters + + + End Function + + ''' <summary> + ''' Get image data from the json object Request["encodedImgData"]. + ''' </summary> + ''' <param name="imageData">(Dictionary<string, Dictionary<string, string>>) all image Image data as a combined object</param> + ''' <param name="imageName">(string) Image Name</param> + ''' <returns></returns> + Private Function getImageData(imageData As Dictionary(Of String, Dictionary(Of String, String)), imageName As String) As String + Dim data As String = "" + For Each key As String In imageData.Keys + If (imageData(key)("name") & "." & imageData(key)("type")) = imageName Then + data = imageData(key)("encodedData") + Exit For + End If + Next + + + Return data + End Function + Private Function stichImageToSVG(svgData As String, imageData As String) As String + Dim ser As New JavaScriptSerializer() + Dim data = ser.Deserialize(Of Dictionary(Of String, Dictionary(Of String, String)))(imageData) + + Dim rawImageDataArray As New List(Of String)() + Dim hrefArray As New List(Of String)() + + ' /(<image[^>]*xlink:href *= *[\"']?)([^\"']*)/i + Dim regex As New Regex("<image.+?xlink:href=""(.+?)"".+?/?>") + Dim counter As Integer = 0 + For Each match As Match In regex.Matches(svgData) + Dim temp1 As String() = match.Value.Split(New String() {"xlink:href="}, StringSplitOptions.None) + hrefArray.Add(temp1(1).Split(""""c)(1)) + Dim imageNameArray As String() = hrefArray(counter).Split("/"c) + rawImageDataArray.Add(getImageData(data, imageNameArray(imageNameArray.Length - 1))) + counter += 1 + Next + For index As Integer = 0 To rawImageDataArray.Count - 1 + svgData = svgData.Replace(hrefArray(index), rawImageDataArray(index)) + Next + + Return svgData + End Function + + Private Function stichImageToSVGAndGetString(svgData As String, imageData As String) As String + + Return stichImageToSVG(svgData, imageData) + End Function + + Private Function stichImageToSVGAndGetStream(svgData As String, imageData As String) As MemoryStream + + svgData = stichImageToSVG(svgData, imageData) + Dim svg As Byte() = System.Text.Encoding.UTF8.GetBytes(svgData.ToString()) + Return New MemoryStream(svg) + End Function + ''' <summary> + ''' Get Export data from and build the export binary/objct. + ''' </summary> + ''' <param name="strFormat">(string) Export format</param> + ''' <param name="stream">(string) Export image data in FusionCharts compressed format</param> + ''' <param name="meta">{Hastable)Image meta data in keys "width", "heigth" and "bgColor"</param> + ''' <param name="meta">{string)Image data</param> + ''' <returns></returns> + + Private Function exportProcessor(strFormat As String, stream As String, meta As Hashtable, imageData As String) As MemoryStream + Return stichImageToSVGAndGetStream(stream, imageData) + End Function + Private Function exportProcessor(strFormat As String, stream As String, meta As Hashtable) As MemoryStream + If exportData("encodedImgData") IsNot Nothing AndAlso exportData("encodedImgData").ToString() <> "" Then + svgStream = stichImageToSVGAndGetStream(exportData("svg").ToString(), exportData("encodedImgData").ToString()) + svgData = New StringReader(stichImageToSVGAndGetString(exportData("svg").ToString(), exportData("encodedImgData").ToString())) + End If + strFormat = strFormat.ToLower() + ' initilize memeory stream object to store output bytes + Dim exportObjectStream As New MemoryStream() + + ' Handle Export class as per export format + Select Case strFormat + Case "pdf" + If Not IsSVGData Then + ' Instantiate Export class for PDF, build Binary stream and store in stream object + Dim PDFGEN As New FCPDFGenerator(stream, meta("width").ToString(), meta("height").ToString(), meta("bgcolor").ToString()) + exportObjectStream = PDFGEN.getBinaryStream(strFormat) + Else + exportObjectStream = GetJSImage(meta, True) + End If + + Exit Select + Case "jpg", "jpeg", "png", "gif" + If Not IsSVGData Then + ' Instantiate Export class for Images, build Binary stream and store in stream object + Dim IMGGEN As New FCIMGGenerator(stream, meta("width").ToString(), meta("height").ToString(), meta("bgcolor").ToString()) + exportObjectStream = IMGGEN.getBinaryStream(strFormat) + Else + exportObjectStream = GetJSImage(meta, False) + End If + Exit Select + Case "svg" + exportObjectStream = svgStream + Exit Select + Case Else + ' In case the format is not recognized + raise_error(" Invalid Export Format.", True) + Exit Select + End Select + + Return exportObjectStream + End Function + + Private Function GetJSImage(exportData As Hashtable, processPdf As Boolean) As MemoryStream + Dim exportObjectStream As New MemoryStream() + + 'string filename = exportData["filename"].ToString(); + Dim type As String = exportData("exportformat").ToString().ToLower() + + If processPdf Then + type = "jpg" + End If + + Dim ds As New SharpVectors.Renderers.Wpf.WpfDrawingSettings() + + Dim ssc As New StreamSvgConverter(ds) + ssc.SaveXaml = False + ssc.SaveZaml = False + + Dim encoder As ImageEncoderType = ImageEncoderType.JpegBitmap + + Select Case type + Case "png" + encoder = ImageEncoderType.PngBitmap + Exit Select + Case "jpeg" + encoder = ImageEncoderType.JpegBitmap + Exit Select + End Select + + ssc.EncoderType = encoder + ssc.SaveXaml = False + + If ssc.Convert(svgData, exportObjectStream) Then + + If processPdf Then + Dim PDFGEN As New FCJSPDFGenerator(True, exportObjectStream, ssc.Drawing.Bounds.Width.ToString(), ssc.Drawing.Bounds.Height.ToString()) + exportObjectStream = PDFGEN.getBinaryStream(type) + End If + End If + + svgData.Close() + svgData.Dispose() + svgStream.Close() + svgStream.Dispose() + + Return exportObjectStream + + End Function + + ''' <summary> + ''' Checks whether the export action is download or save. + ''' If action is 'download', send export parameters to 'setupDownload' function. + ''' If action is not-'download', send export parameters to 'setupServer' function. + ''' In either case it gets exportSettings and passes the settings along with + ''' processed export binary (image/PDF) to the output handler function if the + ''' export settings return a 'ready' flag set to 'true' or 'download'. The export + ''' process would stop here if the action is 'download'. In the other case, + ''' it gets back success status from output handler function and returns it. + ''' </summary> + ''' <param name="exportObj">Export binary/object in memery stream</param> + ''' <param name="exportParams">Hashtable of export parameters</param> + ''' <returns>Export success status ( filename if success, false if not)</returns> + Private Function outputExportObject(exportObj As MemoryStream, exportParams As Hashtable) As Object + 'pass export paramters and get back export settings as per export action + Dim exportActionSettings As Hashtable = (If(isDownload, setupDownload(exportParams), setupServer(exportParams))) + + ' set default export status to true + Dim status As Boolean = True + + ' filepath returned by server setup would be a string containing the file path + ' where the export file is to be saved. + ' If filepath is a boolean (i.e. false) the server setup must have failed. Hence, terminate process. + If TypeOf exportActionSettings("filepath") Is Boolean Then + status = False + raise_error(" Failed to export.", True) + Else + ' When 'filepath' is a sting write the binary to output stream + Try + ' Write export binary stream to output stream + Dim outStream As Stream = DirectCast(exportActionSettings("outStream"), Stream) + exportObj.WriteTo(outStream) + outStream.Flush() + outStream.Close() + exportObj.Close() + Catch e As ArgumentNullException + raise_error(" Failed to export. Error:" & e.Message) + status = False + Catch e As ObjectDisposedException + raise_error(" Failed to export. Error:" & e.Message) + status = False + End Try + + + If isDownload Then + ' If 'download'- terminate imediately + ' As nothing is to be written to response now. + Response.[End]() + + End If + End If + + ' This is the response after save action + ' If status remains true return the 'filepath'. Otherwise return false to denote failure. + Return (If(status, exportActionSettings("filepath"), False)) + + + End Function + ''' <summary> + ''' Flushes exported status message/or any status message to the chart or the output stream. + ''' It parses the exported status through parser function parseExportedStatus, + ''' builds proper response string using buildResponse function and flushes the response + ''' string to the output stream and terminates the program. + ''' </summary> + ''' <param name="filename">Name of the exported file or false on failure</param> + ''' <param name="meta">Image's meta data</param> + ''' <param name="msg">Additional messages</param> + Private Sub flushStatus(filename As Object, meta As Hashtable, msg As String) + ' Process and flush message to response stream and terminate + Response.Output.Write(buildResponse(parseExportedStatus(filename, meta, msg))) + Response.Flush() + Response.[End]() + End Sub + + ''' <summary> + ''' Flushes exported status message/or any status message to the chart or the output stream. + ''' It parses the exported status through parser function parseExportedStatus, + ''' builds proper response string using buildResponse function and flushes the response + ''' string to the output stream and terminates the program. + ''' </summary> + ''' <param name="filename">Name of the exported file or false on failure</param> + ''' <param name="meta">Image's meta data</param> + ''' <param name="meta"></param> + Private Sub flushStatus(filename As Object, meta As Hashtable) + flushStatus(filename, meta, "") + End Sub + + + ''' <summary> + ''' Parses the exported status and builds an array of export status information. As per + ''' status it builds a status array which contains statusCode (0/1), statusMesage, fileName, + ''' width, height and notice in some cases. + ''' </summary> + ''' <param name="filename">exported status ( false if failed/error, filename as stirng if success)</param> + ''' <param name="meta">Hastable containing meta descriptions of the chart like width, height</param> + ''' <param name="msg">custom message to be added as statusMessage.</param> + ''' <returns></returns> + Private Function parseExportedStatus(filename As Object, meta As Hashtable, msg As String) As ArrayList + + Dim arrStatus As New ArrayList() + ' get status + Dim status As Boolean = (If(TypeOf filename Is String, True, False)) + + ' add notices + If notices.Trim() <> "" Then + arrStatus.Add("notice=" & notices.Trim()) + End If + + ' DOMId of the chart + arrStatus.Add("DOMId=" & (If(meta("DOMId") Is Nothing, DOMId, meta("DOMId").ToString()))) + + ' add width and height + ' provide 0 as width and height on failure + If meta("width") Is Nothing Then + meta("width") = "0" + End If + If meta("height") Is Nothing Then + meta("height") = "0" + End If + arrStatus.Add("height=" & (If(status, meta("height").ToString(), "0"))) + arrStatus.Add("width=" & (If(status, meta("width").ToString(), "0"))) + + ' add file URI + arrStatus.Add("fileName=" & (If(status, (Regex.Replace(HTTP_URI, "([^\/]$)", "${1}/") & Convert.ToString(filename)), ""))) + arrStatus.Add("statusMessage=" & (If(msg.Trim() <> "", msg.Trim(), (If(status, "Success", "Failure"))))) + arrStatus.Add("statusCode=" & (If(status, "1", "0"))) + + Return arrStatus + + End Function + + + ''' <summary> + ''' Builds response from an array of status information. Joins the array to a string. + ''' Each array element should be a string which is a key=value pair. This array are either joined by + ''' a & to build a querystring (to pass to chart) or joined by a HTML <BR> to show neat + ''' and clean status informaton in Browser window if download fails at the processing stage. + ''' </summary> + ''' <param name="arrMsg">Array of string containing status data as [key=value ]</param> + ''' <returns>A string to be written to output stream</returns> + Private Function buildResponse(arrMsg As ArrayList) As String + ' Join export status array elements into querystring key-value pairs in case of 'save' action + ' or separate with <BR> in case of 'download' action. This would make the imformation readable in browser window. + Dim msg As String = If(isDownload, "", "&") + msg += String.Join((If(isDownload, "<br>", "&")), DirectCast(arrMsg.ToArray(GetType(String)), String())) + Return msg + End Function + + ''' <summary> + ''' Finds if a directory is writable + ''' </summary> + ''' <param name="path">String Path</param> + ''' <returns></returns> + Private Function isDirectoryWritable(path As String) As Boolean + Dim info As New DirectoryInfo(path) + Return (info.Attributes And FileAttributes.[ReadOnly]) <> FileAttributes.[ReadOnly] + + End Function + ''' <summary> + ''' check server permissions and settings and return ready flag to exportSettings + ''' </summary> + ''' <param name="exportParams">Various export parameters</param> + ''' <returns>Hashtable containing various export settings</returns> + Private Function setupServer(exportParams As Hashtable) As Hashtable + + 'get export file name + Dim exportFile As String = exportParams("exportfilename").ToString() + ' get extension related to specified type + Dim ext As String = getExtension(exportParams("exportformat").ToString()) + + Dim retServerStatus As New Hashtable() + + 'set server status to true by default + retServerStatus("ready") = True + + ' Open a FileStream to be used as outpur stream when the file would be saved + Dim fos As FileStream + + ' process SAVE_PATH : the path where export file would be saved + ' add a / at the end of path if / is absent at the end + + Dim path As String = SAVE_PATH + ' if path is null set it to folder where FCExporter.aspx is present + If path.Trim() = "" Then + path = "./" + End If + path = Regex.Replace(path, "([^\/]$)", "${1}/") + + Try + ' check if the path is relative if so assign the actual path to path + path = HttpContext.Current.Server.MapPath(path) + Catch e As HttpException + raise_error(e.Message) + End Try + + + ' check whether directory exists + ' raise error and halt execution if directory does not exists + If Not Directory.Exists(path) Then + raise_error(" Server Directory does not exist.", True) + End If + + ' check if directory is writable or not + Dim dirWritable As Boolean = isDirectoryWritable(path) + + ' build filepath + retServerStatus("filepath") = exportFile & "." & ext + + ' check whether file exists + If Not File.Exists(path & retServerStatus("filepath").ToString()) Then + ' need to create a new file if does not exists + ' need to check whether the directory is writable to create a new file + If dirWritable Then + ' if directory is writable return with ready flag + + ' open the output file in FileStream + fos = File.Open(path & retServerStatus("filepath").ToString(), FileMode.Create, FileAccess.Write) + + ' set the output stream to the FileStream object + retServerStatus("outStream") = fos + Return retServerStatus + Else + ' if not writable halt and raise error + raise_error("403", True) + End If + End If + + ' add notice that file exists + raise_error(" File already exists.") + + 'if overwrite is on return with ready flag + If OVERWRITEFILE Then + ' add notice while trying to overwrite + raise_error(" Export handler's Overwrite setting is on. Trying to overwrite.") + + ' see whether the existing file is writable + ' if not halt raising error message + If (New FileInfo(path & retServerStatus("filepath").ToString())).IsReadOnly Then + raise_error(" Overwrite forbidden. File cannot be overwritten.", True) + End If + + ' if writable return with ready flag + ' open the output file in FileStream + ' set the output stream to the FileStream object + fos = File.Open(path & retServerStatus("filepath").ToString(), FileMode.Create, FileAccess.Write) + retServerStatus("outStream") = fos + Return retServerStatus + End If + + ' raise error and halt execution when overwrite is off and intelligent naming is off + If Not INTELLIGENTFILENAMING Then + raise_error(" Export handler's Overwrite setting is off. Cannot overwrite.", True) + End If + + raise_error(" Using intelligent naming of file by adding an unique suffix to the exising name.") + ' Intelligent naming + ' generate new filename with additional suffix + exportFile = exportFile & "_" & generateIntelligentFileId() + retServerStatus("filepath") = exportFile & "." & ext + + ' return intelligent file name with ready flag + ' need to check whether the directory is writable to create a new file + If dirWritable Then + ' if directory is writable return with ready flag + ' add new filename notice + ' open the output file in FileStream + ' set the output stream to the FileStream object + raise_error(" The filename has changed to " & retServerStatus("filepath").ToString() & ".") + fos = File.Open(path & retServerStatus("filepath").ToString(), FileMode.Create, FileAccess.Write) + + ' set the output stream to the FileStream object + retServerStatus("outStream") = fos + Return retServerStatus + Else + ' if not writable halt and raise error + raise_error("403", True) + End If + + ' in any unknown case the export should not execute + retServerStatus("ready") = False + raise_error(" Not exported due to unknown reasons.") + Return retServerStatus + + End Function + ''' <summary> + ''' setup download headers and return ready flag in exportSettings + ''' </summary> + ''' <param name="exportParams">Various export parameters</param> + ''' <returns>Hashtable containing various export settings</returns> + Private Function setupDownload(exportParams As Hashtable) As Hashtable + + 'get export filename + Dim exportFile As String = exportParams("exportfilename").ToString() + 'get extension + Dim ext As String = getExtension(exportParams("exportformat").ToString()) + 'get mime type + Dim mime As String = getMime(exportParams("exportformat").ToString()) + ' get target window + Dim target As String = exportParams("exporttargetwindow").ToString().ToLower() + + ' set content-type header + Response.ContentType = mime + + ' set content-disposition header + ' when target is _self the type is 'attachment' + ' when target is other than self type is 'inline' + ' NOTE : you can comment this line in order to replace present window (_self) content with the image/PDF + Response.AddHeader("Content-Disposition", (If(target = "_self", "attachment", "inline")) & "; filename=""" & exportFile & "." & ext & """") + + ' return exportSetting array. 'Ready' key should be set to 'download' + Dim retStatus As New Hashtable() + retStatus("filepath") = "" + + ' set the output strem to Response stream as the file is going to be downloaded + retStatus("outStream") = Response.OutputStream + Return retStatus + + End Function + + ''' <summary> + ''' gets file extension checking the export type. + ''' </summary> + ''' <param name="exportType">(string) export format</param> + ''' <returns>string extension name</returns> + Private Function getExtension(exportType As String) As String + ' get a Hashtable array of [type=> extension] + ' from EXTENSIONS constant + Dim extensionList As Hashtable = bang(EXTENSIONS) + exportType = exportType.ToLower() + + ' if extension type is present in $extensionList return it, otherwise return the type + Return (If(extensionList(exportType).ToString() IsNot Nothing, extensionList(exportType).ToString(), exportType)) + End Function + ''' <summary> + ''' gets mime type for an export type + ''' </summary> + ''' <param name="exportType">Export format</param> + ''' <returns>Mime type as stirng</returns> + Private Function getMime(exportType As String) As String + ' get a Hashtable array of [type=> extension] + ' from MIMETYPES constant + Dim mimelist As Hashtable = bang(MIMETYPES) + Dim ext As String = getExtension(exportType) + + ' get mime type asociated to extension + Dim mime As String = If(mimelist(ext).ToString() IsNot Nothing, mimelist(ext).ToString(), "") + Return mime + End Function + + ''' <summary> + ''' generates a file suffix for a existing file name to apply smart file naming + ''' </summary> + ''' <returns>a string containing GUID and random number /timestamp</returns> + Private Function generateIntelligentFileId() As String + ' Generate Guid + Dim guid As String = System.Guid.NewGuid().ToString("D") + + ' check FILESUFFIXFORMAT type + If FILESUFFIXFORMAT.ToLower() = "timestamp" Then + ' Add time stamp with file name + guid += "_" & DateTime.Now.ToString("ddMMyyyyHHmmssff") + Else + ' Add Random Number with fileName + guid += "_" & (New Random()).[Next]().ToString() + End If + + Return guid + End Function + + + ''' <summary> + ''' Helper function that splits a string containing delimiter separated key value pairs + ''' into hashtable + ''' </summary> + ''' <param name="str">delimiter separated key value pairs</param> + ''' <param name="delimiterList">List of delimiters</param> + ''' <returns></returns> + Private Function bang(str As String, delimiterList As Char()) As Hashtable + Dim retArray As New Hashtable() + ' split string as per first delimiter + If str Is Nothing OrElse str.Trim() = "" Then + Return retArray + End If + Dim tmpArray As String() = str.Split(delimiterList(0)) + + + ' iterate through each element of split string + For i As Integer = 0 To tmpArray.Length - 1 + ' split each element as per second delimiter + Dim tmp2Array As String() = tmpArray(i).Split(delimiterList(1)) + + If tmp2Array.Length >= 2 Then + ' if the secondary split creats at-least 2 array elements + ' make the fisrt element as the key and the second as the value + ' of the resulting array + retArray(tmp2Array(0).ToLower()) = tmp2Array(1) + End If + Next + Return retArray + + End Function + Private Function bang(str As String) As Hashtable + Return bang(str, New Char(1) {";"c, "="c}) + End Function + Private Sub raise_error(msg As String) + raise_error(msg, False) + End Sub + ''' <summary> + ''' Error reporter function that has a list of error messages. It can terminate the execution + ''' and send successStatus=0 along with a error message. It can also append notice to a global variable + ''' and continue execution of the program. + ''' </summary> + ''' <param name="msg">error code as Integer (referring to the index of the errMessages + ''' array containing list of error messages) OR, it can be a string containing the error message/notice</param> + ''' <param name="halt">Whether to halt execution</param> + Private Sub raise_error(msg As String, halt As Boolean) + Dim errMessages As New Hashtable() + + 'list of defined error messages + errMessages("100") = " Insufficient data." + errMessages("101") = " Width/height not provided." + errMessages("102") = " Insufficient export parameters." + errMessages("400") = " Bad request." + errMessages("401") = " Unauthorized access." + errMessages("403") = " Directory write access forbidden." + errMessages("404") = " Export Resource class not found." + + ' Find whether error message is passed in msg or it is a custom error string. + Dim err_message As String = (If((msg Is Nothing OrElse msg.Trim() = ""), "ERROR!", (If(errMessages(msg) Is Nothing, msg, errMessages(msg).ToString())))) + + ' Halt executon after flushing the error message to response (if halt is true) + If halt Then + + flushStatus(False, New Hashtable(), err_message) + Else + ' add error to notices global variable + notices += err_message + End If + + End Sub + + + +End Class + + +''' <summary> +''' FusionCharts Image Generator Class +''' FusionCharts Exporter - 'Image Resource' handles +''' FusionCharts (since v3.1) Server Side Export feature that +''' helps FusionCharts exported as Image files in various formats. +''' </summary> +Public Class FCIMGGenerator + 'Array - Stores multiple chart export data + Private arrExportData As New ArrayList() + 'stores number of pages = length of $arrExportData array + Private numPages As Integer = 0 + + + ''' <summary> + ''' Generates bitmap data for the image from a FusionCharts export format + ''' the height and width of the original export needs to be specified + ''' the default background color can also be specified + ''' </summary> + Public Sub New(imageData_FCFormat As String, width As String, height As String, bgcolor As String) + setBitmapData(imageData_FCFormat, width, height, bgcolor) + End Sub + + ''' <summary> + ''' Gets the binary data stream of the image + ''' The passed parameter determines the file format of the image + ''' to be exported + ''' </summary> + Public Function getBinaryStream(strFormat As String) As MemoryStream + + ' the image object + Dim exportObj As Bitmap = getImageObject() + + ' initiates a new binary data sream + Dim outStream As New MemoryStream() + + ' determines the image format + Select Case strFormat + Case "jpg", "jpeg" + exportObj.Save(outStream, ImageFormat.Jpeg) + Exit Select + Case "png" + exportObj.Save(outStream, ImageFormat.Png) + Exit Select + Case "gif" + exportObj.Save(outStream, ImageFormat.Gif) + Exit Select + Case "tiff" + exportObj.Save(outStream, ImageFormat.Tiff) + Exit Select + Case Else + exportObj.Save(outStream, ImageFormat.Bmp) + Exit Select + End Select + exportObj.Dispose() + + Return outStream + + End Function + + + ''' <summary> + ''' Generates bitmap data for the image from a FusionCharts export format + ''' the height and width of the original export needs to be specified + ''' the default background color can also be specified + ''' </summary> + Private Sub setBitmapData(imageData_FCFormat As String, width As String, height As String, bgcolor As String) + Dim chartExportData As New Hashtable() + chartExportData("width") = width + chartExportData("height") = height + chartExportData("bgcolor") = bgcolor + chartExportData("imagedata") = imageData_FCFormat + arrExportData.Add(chartExportData) + numPages += 1 + End Sub + + ''' <summary> + ''' Generates bitmap data for the image from a FusionCharts export format + ''' the height and width of the original export needs to be specified + ''' the default background color should also be specified + ''' </summary> + Private Function getImageObject(id As Integer) As Bitmap + Dim rawImageData As Hashtable = DirectCast(arrExportData(id), Hashtable) + + ' create blank bitmap object which would store image pixel data + Dim image As New Bitmap(Convert.ToInt16(rawImageData("width")), Convert.ToInt16(rawImageData("height")), System.Drawing.Imaging.PixelFormat.Format24bppRgb) + + ' drwaing surface + Dim gr As Graphics = Graphics.FromImage(image) + + ' set background color + gr.Clear(ColorTranslator.FromHtml("#" & rawImageData("bgcolor").ToString())) + + Dim rows As String() = rawImageData("imagedata").ToString().Split(";"c) + + For yPixel As Integer = 0 To rows.Length - 1 + 'Split each row into 'color_count' columns. + Dim color_count As [String]() = rows(yPixel).Split(","c) + 'Set horizontal row index to 0 + Dim xPixel As Integer = 0 + + For col As Integer = 0 To color_count.Length - 1 + 'Now, if it's not empty, we process it + 'Split the 'color_count' into color and repeat factor + Dim split_data As [String]() = color_count(col).Split("_"c) + + 'Reference to color + Dim hexColor As String = split_data(0) + 'refer to repeat factor + Dim fRepeat As Integer = Integer.Parse(split_data(1)) + + 'If color is not empty (i.e. not background pixel) + If hexColor <> "" Then + 'If the hexadecimal code is less than 6 characters, pad with 0 + hexColor = If(hexColor.Length < 6, hexColor.PadLeft(6, "0"c), hexColor) + For k As Integer = 1 To fRepeat + + 'draw pixel with specified color + image.SetPixel(xPixel, yPixel, ColorTranslator.FromHtml("#" & hexColor)) + 'Increment horizontal row count + xPixel += 1 + Next + Else + 'Just increment horizontal index + xPixel += fRepeat + End If + Next + Next + gr.Dispose() + Return image + + End Function + + ''' <summary> + ''' Retreives the bitmap image object + ''' </summary> + Private Function getImageObject() As Bitmap + Return getImageObject(0) + End Function + +End Class + +''' <summary> +''' FusionCharts Exporter - 'PDF Resource' handles +''' FusionCharts (since v3.1) Server Side Export feature that +''' helps FusionCharts exported as PDF file. +''' </summary> +Public Class FCJSPDFGenerator + + 'Array - Stores multiple chart export data + Private arrExportData As New ArrayList() + 'stores number of pages = length of $arrExportData array + Private numPages As Integer = 1 + + Private _IsJsChart As Boolean = False + Private _ImagePath As String = "" + Private _ImageStream As MemoryStream + Private _width As String = "", _height As String = "" + + Public Sub New(IsJsChart As Boolean, fileName As String, width As String, height As String) + Me._IsJsChart = IsJsChart + Me._ImagePath = fileName + Me._width = width + + Me._height = height + End Sub + + Public Sub New(IsJsChart As Boolean, ImageStream As MemoryStream, width As String, height As String) + Me._IsJsChart = IsJsChart + Me._ImageStream = ImageStream + Me._width = width + + Me._height = height + End Sub + + ''' <summary> + ''' Gets the binary data stream of the image + ''' The passed parameter determines the file format of the image + ''' to be exported + ''' </summary> + Public Function getBinaryStream(strFormat As String) As MemoryStream + Dim exportObj As Byte() = getPDFObjects(False) + + Dim outStream As New MemoryStream() + + outStream.Write(exportObj, 0, exportObj.Length) + + Return outStream + + End Function + + 'create image PDF object containing the chart image + Private Function addImageToPDF(id As Integer, isCompressed As Boolean) As Byte() + + Dim imgObj As New MemoryStream() + + 'PDF Object number + Dim imgObjNo As Integer = 6 + id * 3 + + 'Get chart Image binary + Dim imgBinary As Byte() = getBitmapData24(Me._ImageStream) + + 'get the length of the image binary + Dim len As Integer = imgBinary.Length + + Dim width As String = Me._width + Dim height As String = Me._height + + 'Build PDF object containing the image binary and other formats required + 'string strImgObjHead = imgObjNo.ToString() + " 0 obj\n<<\n/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 " + (isCompressed ? "" : "") + "/Width " + width + " /Height " + height + " /Length " + len.ToString() + " >>\nstream\n"; + ' Use it for JPG. + Dim strImgObjHead As String = imgObjNo.ToString() & " 0 obj" & vbLf & "<<" & vbLf & "/Subtype /Image /Filter /DCTDecode /ColorSpace /DeviceRGB /BitsPerComponent 8 /Width " & width & " /Height " & height & " /Length " & len.ToString() & " >>" & vbLf & "stream" & vbLf + + imgObj.Write(stringToBytes(strImgObjHead), 0, strImgObjHead.Length) + imgObj.Write(imgBinary, 0, CInt(imgBinary.Length)) + + Dim strImgObjEnd As String = "endstream" & vbLf & "endobj" & vbLf + imgObj.Write(stringToBytes(strImgObjEnd), 0, strImgObjEnd.Length) + + imgObj.Close() + Return imgObj.ToArray() + End Function + + Private Function getPDFObjects(isCompressed As Boolean) As Byte() + Dim PDFBytes As New MemoryStream() + + 'Store all PDF objects in this temporary string to be written to ByteArray + Dim strTmpObj As String = "" + + + 'start xref array + Dim xRefList As New ArrayList() + xRefList.Add("xref" & vbLf & "0 ") + xRefList.Add("0000000000 65535 f " & vbLf) + 'Address Refenrece to obj 0 + 'Build PDF objects s equentially + 'version and header + strTmpObj = "%PDF-1.3" & vbLf & "%{FC}" & vbLf + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 1 : info (optional) + strTmpObj = "1 0 obj<<" & vbLf & "/Author (FusionCharts)" & vbLf & "/Title (FusionCharts)" & vbLf & "/Creator (FusionCharts)" & vbLf & ">>" & vbLf & "endobj" & vbLf + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 1 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 2 : Starts with Pages Catalogue + strTmpObj = "2 0 obj" & vbLf & "<< /Type /Catalog /Pages 3 0 R >>" & vbLf & "endobj" & vbLf + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 2 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 3 : Page Tree (reference to pages of the catalogue) + strTmpObj = "3 0 obj" & vbLf & "<< /Type /Pages /Kids [" + For i As Integer = 0 To numPages - 1 + strTmpObj += (((i + 1) * 3) + 1) & " 0 R" & vbLf + Next + strTmpObj += "] /Count " & numPages & " >>" & vbLf & "endobj" & vbLf + + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 3 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + Dim itr As Integer = 0 + Dim iWidth As String = Me._width + Dim iHeight As String = Me._height + + 'OBJECT 4..7..10..n : Page config + strTmpObj = (((itr + 2) * 3) - 2) & " 0 obj" & vbLf & "<<" & vbLf & "/Type /Page /Parent 3 0 R " & vbLf & "/MediaBox [ 0 0 " & iWidth & " " & iHeight & " ]" & vbLf & "/Resources <<" & vbLf & "/ProcSet [ /PDF ]" & vbLf & "/XObject <</R" & (itr + 1) & " " & ((itr + 2) * 3) & " 0 R>>" & vbLf & ">>" & vbLf & "/Contents [ " & (((itr + 2) * 3) - 1) & " 0 R ]" & vbLf & ">>" & vbLf & "endobj" & vbLf + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 4,7,10,13,16... + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 5...8...11...n : Page resource object (xobject resource that transforms the image) + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 5,8,11,14,17... + Dim xObjR As String = getXObjResource(itr) + PDFBytes.Write(stringToBytes(xObjR), 0, xObjR.Length) + + 'OBJECT 6...9...12...n : Binary xobject of the page (image) + Dim imgBA As Byte() = addImageToPDF(itr, isCompressed) + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 6,9,12,15,18... + PDFBytes.Write(imgBA, 0, imgBA.Length) + + 'xrefs compilation + xRefList(0) += ((xRefList.Count - 1) & vbLf) + + 'get trailer + Dim trailer As String = getTrailer(CInt(PDFBytes.Length), xRefList.Count - 1) + + 'write xref and trailer to PDF + Dim strXRefs As String = String.Join("", DirectCast(xRefList.ToArray(GetType(String)), String())) + PDFBytes.Write(stringToBytes(strXRefs), 0, strXRefs.Length) + ' + PDFBytes.Write(stringToBytes(trailer), 0, trailer.Length) + + 'write EOF + Dim strEOF As String = "%%EOF" & vbLf + PDFBytes.Write(stringToBytes(strEOF), 0, strEOF.Length) + + PDFBytes.Close() + Return PDFBytes.ToArray() + + End Function + + + 'Build Image resource object that transforms the image from First Quadrant system to Second Quadrant system + Private Function getXObjResource() As String + Return getXObjResource(0) + End Function + Private Function getXObjResource(itr As Integer) As String + + Dim width As String = Me._width + Dim height As String = Me._height + Return (((itr + 2) * 3) - 1) & " 0 obj" & vbLf & "<< /Length " & (24 + (width & height).Length) & " >>" & vbLf & "stream" & vbLf & "q" & vbLf & width & " 0 0 " & height & " 0 0 cm" & vbLf & "/R" & (itr + 1) & " Do" & vbLf & "Q" & vbLf & "endstream" & vbLf & "endobj" & vbLf + End Function + + Private Function calculateXPos(posn As Integer) As String + Return posn.ToString().PadLeft(10, "0"c) & " 00000 n " & vbLf + End Function + + + Private Function getTrailer(xrefpos As Integer) As String + Return getTrailer(xrefpos, 7) + End Function + + Private Function getTrailer(xrefpos As Integer, numxref As Integer) As String + Return "trailer" & vbLf & "<<" & vbLf & "/Size " & numxref.ToString() & vbLf & "/Root 2 0 R" & vbLf & "/Info 1 0 R" & vbLf & ">>" & vbLf & "startxref" & vbLf & xrefpos.ToString() & vbLf + End Function + + + Private Function getBitmapData24(fileName As String) As Byte() + Return File.ReadAllBytes(fileName) + End Function + + Private Function getBitmapData24(ImageStream As MemoryStream) As Byte() + Return ImageStream.ToArray() + End Function + + ' converts a hexadecimal colour string to it's respective byte value + Private Function hexToBytes(strHex As String) As Byte() + If strHex Is Nothing OrElse strHex.Trim().Length = 0 Then + strHex = "00" + End If + strHex = Regex.Replace(strHex, "[^0-9a-fA-f]", "") + If strHex.Length Mod 2 <> 0 Then + strHex = "0" & strHex + End If + + Dim len As Integer = strHex.Length \ 2 + Dim bytes As Byte() = New Byte(len - 1) {} + + For i As Integer = 0 To len - 1 + Dim hex As String = strHex.Substring(i * 2, 2) + bytes(i) = Byte.Parse(hex, System.Globalization.NumberStyles.HexNumber) + Next + Return bytes + + End Function + + Private Function stringToBytes(str As String) As Byte() + If str Is Nothing Then + str = "" + End If + Return System.Text.Encoding.ASCII.GetBytes(str) + End Function +End Class + +''' <summary> +''' FusionCharts Exporter - 'PDF Resource' handles +''' FusionCharts (since v3.1) Server Side Export feature that +''' helps FusionCharts exported as PDF file. +''' </summary> +Public Class FCPDFGenerator + + 'Array - Stores multiple chart export data + Private arrExportData As New ArrayList() + 'stores number of pages = length of $arrExportData array + Private numPages As Integer = 0 + + ''' <summary> + ''' Generates a PDF file with the given parameters + ''' The imageData_FCFormat parameter is the FusionCharts export format data + ''' width, height are the respective width and height of the original image + ''' bgcolor determines the default background colour + ''' </summary> + Public Sub New(imageData_FCFormat As String, width As String, height As String, bgcolor As String) + setBitmapData(imageData_FCFormat, width, height, bgcolor) + End Sub + + ''' <summary> + ''' Gets the binary data stream of the image + ''' The passed parameter determines the file format of the image + ''' to be exported + ''' </summary> + Public Function getBinaryStream(strFormat As String) As MemoryStream + Dim exportObj As Byte() = getPDFObjects(True) + + Dim outStream As New MemoryStream() + + outStream.Write(exportObj, 0, exportObj.Length) + + Return outStream + + End Function + + ''' <summary> + ''' Generates bitmap data for the image from a FusionCharts export format + ''' the height and width of the original export needs to be specified + ''' the default background color should also be specified + ''' </summary> + Private Sub setBitmapData(imageData_FCFormat As String, width As String, height As String, bgcolor As String) + Dim chartExportData As New Hashtable() + chartExportData("width") = width + chartExportData("height") = height + chartExportData("bgcolor") = bgcolor + chartExportData("imagedata") = imageData_FCFormat + arrExportData.Add(chartExportData) + numPages += 1 + End Sub + + + + 'create image PDF object containing the chart image + Private Function addImageToPDF(id As Integer, isCompressed As Boolean) As Byte() + + Dim imgObj As New MemoryStream() + + 'PDF Object number + Dim imgObjNo As Integer = 6 + id * 3 + + 'Get chart Image binary + Dim imgBinary As Byte() = getBitmapData24(id, isCompressed) + + 'get the length of the image binary + Dim len As Integer = imgBinary.Length + + Dim width As String = getMeta("width", id) + Dim height As String = getMeta("height", id) + + 'Build PDF object containing the image binary and other formats required + 'string strImgObjHead = imgObjNo.ToString() + " 0 obj\n<<\n/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 " + (isCompressed ? "" : "") + "/Width " + width + " /Height " + height + " /Length " + len.ToString() + " >>\nstream\n"; + Dim strImgObjHead As String = imgObjNo.ToString() & " 0 obj" & vbLf & "<<" & vbLf & "/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 " & (If(isCompressed, "/Filter /RunLengthDecode ", "")) & "/Width " & width & " /Height " & height & " /Length " & len.ToString() & " >>" & vbLf & "stream" & vbLf + + + + imgObj.Write(stringToBytes(strImgObjHead), 0, strImgObjHead.Length) + imgObj.Write(imgBinary, 0, CInt(imgBinary.Length)) + + Dim strImgObjEnd As String = "endstream" & vbLf & "endobj" & vbLf + imgObj.Write(stringToBytes(strImgObjEnd), 0, strImgObjEnd.Length) + + imgObj.Close() + Return imgObj.ToArray() + + End Function + Private Function addImageToPDF(id As Integer) As Byte() + Return addImageToPDF(id, True) + End Function + Private Function addImageToPDF() As Byte() + Return addImageToPDF(0, True) + End Function + + + + 'Main PDF builder function + Private Function getPDFObjects() As Byte() + Return getPDFObjects(True) + End Function + + Private Function getPDFObjects(isCompressed As Boolean) As Byte() + Dim PDFBytes As New MemoryStream() + + 'Store all PDF objects in this temporary string to be written to ByteArray + Dim strTmpObj As String = "" + + + 'start xref array + Dim xRefList As New ArrayList() + xRefList.Add("xref" & vbLf & "0 ") + xRefList.Add("0000000000 65535 f " & vbLf) + 'Address Refenrece to obj 0 + 'Build PDF objects sequentially + 'version and header + strTmpObj = "%PDF-1.3" & vbLf & "%{FC}" & vbLf + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 1 : info (optional) + strTmpObj = "1 0 obj<<" & vbLf & "/Author (FusionCharts)" & vbLf & "/Title (FusionCharts)" & vbLf & "/Creator (FusionCharts)" & vbLf & ">>" & vbLf & "endobj" & vbLf + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 1 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 2 : Starts with Pages Catalogue + strTmpObj = "2 0 obj" & vbLf & "<< /Type /Catalog /Pages 3 0 R >>" & vbLf & "endobj" & vbLf + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 2 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + 'OBJECT 3 : Page Tree (reference to pages of the catalogue) + strTmpObj = "3 0 obj" & vbLf & "<< /Type /Pages /Kids [" + For i As Integer = 0 To numPages - 1 + strTmpObj += (((i + 1) * 3) + 1) & " 0 R" & vbLf + Next + strTmpObj += "] /Count " & numPages & " >>" & vbLf & "endobj" & vbLf + + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 3 + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + + 'Each image page + For itr As Integer = 0 To numPages - 1 + Dim iWidth As String = getMeta("width", itr) + Dim iHeight As String = getMeta("height", itr) + 'OBJECT 4..7..10..n : Page config + strTmpObj = (((itr + 2) * 3) - 2) & " 0 obj" & vbLf & "<<" & vbLf & "/Type /Page /Parent 3 0 R " & vbLf & "/MediaBox [ 0 0 " & iWidth & " " & iHeight & " ]" & vbLf & "/Resources <<" & vbLf & "/ProcSet [ /PDF ]" & vbLf & "/XObject <</R" & (itr + 1) & " " & ((itr + 2) * 3) & " 0 R>>" & vbLf & ">>" & vbLf & "/Contents [ " & (((itr + 2) * 3) - 1) & " 0 R ]" & vbLf & ">>" & vbLf & "endobj" & vbLf + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 4,7,10,13,16... + PDFBytes.Write(stringToBytes(strTmpObj), 0, strTmpObj.Length) + + + 'OBJECT 5...8...11...n : Page resource object (xobject resource that transforms the image) + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 5,8,11,14,17... + Dim xObjR As String = getXObjResource(itr) + PDFBytes.Write(stringToBytes(xObjR), 0, xObjR.Length) + + 'OBJECT 6...9...12...n : Binary xobject of the page (image) + Dim imgBA As Byte() = addImageToPDF(itr, isCompressed) + xRefList.Add(calculateXPos(CInt(PDFBytes.Length))) + 'refenrece to obj 6,9,12,15,18... + PDFBytes.Write(imgBA, 0, imgBA.Length) + Next + + 'xrefs compilation + xRefList(0) += ((xRefList.Count - 1) & vbLf) + + 'get trailer + Dim trailer As String = getTrailer(CInt(PDFBytes.Length), xRefList.Count - 1) + + 'write xref and trailer to PDF + Dim strXRefs As String = String.Join("", DirectCast(xRefList.ToArray(GetType(String)), String())) + PDFBytes.Write(stringToBytes(strXRefs), 0, strXRefs.Length) + ' + PDFBytes.Write(stringToBytes(trailer), 0, trailer.Length) + + 'write EOF + Dim strEOF As String = "%%EOF" & vbLf + PDFBytes.Write(stringToBytes(strEOF), 0, strEOF.Length) + + PDFBytes.Close() + Return PDFBytes.ToArray() + + End Function + + + 'Build Image resource object that transforms the image from First Quadrant system to Second Quadrant system + Private Function getXObjResource() As String + Return getXObjResource(0) + End Function + Private Function getXObjResource(itr As Integer) As String + + Dim width As String = getMeta("width", itr) + Dim height As String = getMeta("height", itr) + Return (((itr + 2) * 3) - 1) & " 0 obj" & vbLf & "<< /Length " & (24 + (width & height).Length) & " >>" & vbLf & "stream" & vbLf & "q" & vbLf & width & " 0 0 " & height & " 0 0 cm" & vbLf & "/R" & (itr + 1) & " Do" & vbLf & "Q" & vbLf & "endstream" & vbLf & "endobj" & vbLf + End Function + + Private Function calculateXPos(posn As Integer) As String + Return posn.ToString().PadLeft(10, "0"c) & " 00000 n " & vbLf + End Function + + + Private Function getTrailer(xrefpos As Integer) As String + Return getTrailer(xrefpos, 7) + End Function + + Private Function getTrailer(xrefpos As Integer, numxref As Integer) As String + Return "trailer" & vbLf & "<<" & vbLf & "/Size " & numxref.ToString() & vbLf & "/Root 2 0 R" & vbLf & "/Info 1 0 R" & vbLf & ">>" & vbLf & "startxref" & vbLf & xrefpos.ToString() & vbLf + End Function + + + Private Function getBitmapData24() As Byte() + Return getBitmapData24(0, True) + End Function + Private Function getBitmapData24(id As Integer, isCompressed As Boolean) As Byte() + + Dim rawImageData As String = getMeta("imagedata", id) + Dim bgColor As String = getMeta("bgcolor", id) + + Dim imageData24 As New MemoryStream() + + ' Split the data into rows using ; as separator + Dim rows As String() = rawImageData.Split(";"c) + + For yPixel As Integer = 0 To rows.Length - 1 + 'Split each row into 'color_count' columns. + Dim color_count As String() = rows(yPixel).Split(","c) + + For col As Integer = 0 To color_count.Length - 1 + 'Now, if it's not empty, we process it + 'Split the 'color_count' into color and repeat factor + Dim split_data As String() = color_count(col).Split("_"c) + + 'Reference to color + Dim hexColor As String = If(split_data(0) <> "", split_data(0), bgColor) + 'If the hexadecimal code is less than 6 characters, pad with 0 + hexColor = If(hexColor.Length < 6, hexColor.PadLeft(6, "0"c), hexColor) + + 'refer to repeat factor + Dim fRepeat As Integer = Integer.Parse(split_data(1)) + + ' convert color string to byte[] array + Dim rgb As Byte() = hexToBytes(hexColor) + + ' Set the repeated pixel in MemoryStream + For cRepeat As Integer = 0 To fRepeat - 1 + imageData24.Write(rgb, 0, 3) + + Next + Next + Next + + Dim len As Integer = CInt(imageData24.Length) + imageData24.Close() + + 'Compress image binary + If isCompressed Then + Return New PDFCompress(imageData24.ToArray()).RLECompress() + Else + Return imageData24.ToArray() + End If + End Function + + ' converts a hexadecimal colour string to it's respective byte value + Private Function hexToBytes(strHex As String) As Byte() + If strHex Is Nothing OrElse strHex.Trim().Length = 0 Then + strHex = "00" + End If + strHex = Regex.Replace(strHex, "[^0-9a-fA-f]", "") + If strHex.Length Mod 2 <> 0 Then + strHex = "0" & strHex + End If + + Dim len As Integer = strHex.Length \ 2 + Dim bytes As Byte() = New Byte(len - 1) {} + + For i As Integer = 0 To len - 1 + Dim hex As String = strHex.Substring(i * 2, 2) + bytes(i) = Byte.Parse(hex, System.Globalization.NumberStyles.HexNumber) + Next + Return bytes + + End Function + + Private Function getMeta(metaName As String) As String + Return getMeta(metaName, 0) + End Function + + Private Function getMeta(metaName As String, id As Integer) As String + If metaName Is Nothing Then + metaName = "" + End If + Dim chartData As Hashtable = DirectCast(arrExportData(id), Hashtable) + Return (If(chartData(metaName) Is Nothing, "", chartData(metaName).ToString())) + End Function + + Private Function stringToBytes(str As String) As Byte() + If str Is Nothing Then + str = "" + End If + Return System.Text.Encoding.ASCII.GetBytes(str) + End Function + + +End Class + + +''' <summary> +''' This is an ad-hoc class to compress PDF stream. +''' Currently this class compresses binary (byte) stream using RLE which +''' PDF 1.3 specification has thus formulated: +''' +''' The RunLengthDecode filter decodes data that has been encoded in a simple +''' byte-oriented format based on run length. The encoded data is a sequence of +''' runs, where each run consists of a length byte followed by 1 to 128 bytes of data. If +''' the length byte is in the range 0 to 127, the following length + 1 (1 to 128) bytes +''' are copied literally during decompression. If length is in the range 129 to 255, the +''' following single byte is to be copied 257 - length (2 to 128) times during decompression. +''' A length value of 128 denotes EOD. +''' +''' The chart image compression ratio comes to around 10:3 +''' +''' </summary> +Public Class PDFCompress + + ''' <summary> + ''' stores the output compressed data in MemoryStream object later to be converted to byte[] array + ''' </summary> + Private _Compressed As New MemoryStream() + + ''' <summary> + ''' Uncompresses data as byte[] array + ''' </summary> + Private _UnCompressed As Byte() + + + ''' <summary> + ''' Takes the uncompressed byte array + ''' </summary> + ''' <param name="UnCompressed">uncompressed data</param> + Public Sub New(UnCompressed As Byte()) + _UnCompressed = UnCompressed + End Sub + + ''' <summary> + ''' Write compressed data as RunLength + ''' </summary> + ''' <param name="length">The length of repeated data</param> + ''' <param name="encodee">The byte to be repeated</param> + ''' <returns></returns> + Private Function WriteRunLength(length As Integer, encodee As Byte) As Integer + ' write the repeat length + _Compressed.WriteByte(CByte(257 - length)) + ' write the byte to be repeated + _Compressed.WriteByte(encodee) + + 're-set repeat length + length = 1 + Return length + End Function + + Private Sub WriteNoRepeater(NoRepeatBytes As MemoryStream) + ' write the length of non repeted data + _Compressed.WriteByte(CByte(CInt(NoRepeatBytes.Length) - 1)) + ' write the non repeated data put literally + _Compressed.Write(NoRepeatBytes.ToArray(), 0, CInt(NoRepeatBytes.Length)) + + ' re-set non repeat byte storage stream + NoRepeatBytes.SetLength(0) + End Sub + + ''' <summary> + ''' compresses uncompressed data to compressed data in byte array + ''' </summary> + ''' <returns></returns> + Public Function RLECompress() As Byte() + ' stores non repeatable data + Dim NoRepeat As New MemoryStream() + + ' repeat counter + Dim _RL As Integer = 1 + + ' 2 consecutive bytes to compare + Dim preByte As Byte = 0, postByte As Byte = 0 + + ' iterate through the uncompressed bytes + For i As Integer = 0 To _UnCompressed.Length - 2 + ' get 2 consecutive bytes + preByte = _UnCompressed(i) + postByte = _UnCompressed(i + 1) + + ' if both are same there is scope for repitition + If preByte = postByte Then + ' but flush the non repeatable data (if present) to compressed stream + If NoRepeat.Length > 0 Then + WriteNoRepeater(NoRepeat) + End If + + ' increase repeat count + _RL += 1 + + ' if repeat count reaches limit of repeat i.e. 128 + ' write the repeat data and reset the repeat counter + If _RL > 128 Then + _RL = WriteRunLength(_RL - 1, preByte) + + End If + Else + ' when consecutive bytes do not match + + ' store non-repeatable data + If _RL = 1 Then + NoRepeat.WriteByte(preByte) + End If + + ' write repeated length and byte (if present ) to output stream + If _RL > 1 Then + _RL = WriteRunLength(_RL, preByte) + End If + + ' write non repeatable data to out put stream if the length reaches limit + If NoRepeat.Length = 128 Then + WriteNoRepeater(NoRepeat) + End If + End If + Next + + ' at the end of iteration + ' take care of the last byte + + ' if repeated + If _RL > 1 Then + ' write run length and byte (if present ) to output stream + _RL = WriteRunLength(_RL, preByte) + Else + ' if non repeated byte is left behind + ' write non repeatable data to output stream + NoRepeat.WriteByte(postByte) + WriteNoRepeater(NoRepeat) + End If + + + ' wrote EOD + _Compressed.WriteByte(CByte(128)) + + 'close streams + NoRepeat.Close() + _Compressed.Close() + + ' return compressed data in byte array + Return _Compressed.ToArray() + End Function + +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Web.config b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Web.config new file mode 100755 index 0000000000000000000000000000000000000000..2fdba300bff1252047c61767def1c6c528221b8c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/Web.config @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + For more information on how to configure your ASP.NET application, please visit + http://go.microsoft.com/fwlink/?LinkId=169433 + --> +<configuration> + <configSections> + <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + + <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + + + + + </sectionGroup> + </sectionGroup> + </sectionGroup> + </configSections> + <system.web> + <compilation debug="true" strict="false" explicit="true"> + <assemblies> + <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add assembly="PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add assembly="PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </assemblies> + </compilation> + <pages> + <controls> + <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </controls> + </pages> + <httpHandlers> + <remove verb="*" path="*.asmx" /> + <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </httpHandlers> + <httpModules> + <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </httpModules> + <httpRuntime executionTimeout="999999" maxRequestLength="2000000000" requestValidationMode="2.0" /> + </system.web> + <system.codedom> + <compilers> + <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> + <providerOption name="CompilerVersion" value="v3.5" /> + <providerOption name="WarnAsError" value="false" /> + </compiler> + <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> + <providerOption name="CompilerVersion" value="v3.5" /> + <providerOption name="OptionInfer" value="true" /> + <providerOption name="WarnAsError" value="false" /> + </compiler> + </compilers> + </system.codedom> + <system.webServer> + <validation validateIntegratedModeConfiguration="false" /> + <modules> + <remove name="ScriptModule" /> + <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </modules> + <handlers> + <remove name="WebServiceHandlerFactory-Integrated" /> + <remove name="ScriptHandlerFactory" /> + <remove name="ScriptHandlerFactoryAppServices" /> + <remove name="ScriptResource" /> + <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </handlers> + </system.webServer> + <runtime> + <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" /> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" /> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> + </dependentAssembly> + </assemblyBinding> + </runtime> +</configuration> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/readme.md b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/readme.md new file mode 100755 index 0000000000000000000000000000000000000000..4a86b3837a306540e0d3283eeb34069444668f3c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/chart-export-handler/readme.md @@ -0,0 +1,86 @@ +FusionCharts ASP.NET Export Handler +===================================== + +What is FusionCharts .NET export handler? +----------------------------------------- +FusionCharts Suite XT uses JavaScript to generate charts in the browser, using SVG and VML (for older IE). If you need +to export the charts as images or PDF, you need a server-side helper library to convert the SVG to image/PDF. These +export handlers allow you to take the SVG from FusionCharts charts and convert to image/PDF. + +How does the export handler work? +--------------------------------- +- A chart is generated in the browser. When the export to image or PDF button is clicked, the chart generates the SVG string + to represent the current state and sends to the export handler. The export handler URL is configured via chart attributes. +- The export handler accepts the SVG string along with chart configuration like chart type, width, height etc., and uses + SharpVectors library to convert to image or PDF. +- The export handler either writes the image or PDF to disk, based on the configuration provided by chart, or streams it + back to the browser. + +Version +---- + +4.0.1 + +Requirements +------------ +- .NET Framework 3.5 or higher + + +Installation +------------ +- Unzip the 'asp-net-vb-exporter.zip' in your IIS wwwroot folder (e.g. C:\inetpub\wwwroot) +- Add an application in your server and set physical path to the above folder +- Set the URL of 'FCExporter.aspx' from the above web application into the chart's 'exportHandler' attribute +- Make sure 'IUSR' has proper read/write permission in the 'Exported_Images' folder +- FusionCharts' export request contains some XML data, which is restricted in .NET 4 or above. You may need to add the following configuration in your 'web.config' file: +``` +<system.web> + <httpRuntime requestValidationMode="2.0"/> +</system.web> +``` +- JS error is thrown during svg export if any image, present in same domain, is used in chart. You may need to add the following configuration in your 'web.config' file: +``` +<system.web> + <httpRuntime executionTimeout="999999" maxRequestLength="2000000000" requestValidationMode="2.0" /> +</system.web> +``` + + +Licensing +--------- + +FUSIONCHARTS: + +Copyright (c) FusionCharts Technologies LLP +License Information at <http://www.fusioncharts.com/license> + + +SHARPVECTORS: + +The SharpVectors software modified and redistributed herein is covered under the New BSD License (BSD), +and is subject to the following conditions from that license: + +Copyright (c) 2010, SharpVectorGraphics +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the name of SharpVectorGraphics nor the names of its contributors may be used to endorse or promote + products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +SharpVectors source code is available from https://sharpvectors.codeplex.com/ \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-assembly/FusionCharts.XML b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-assembly/FusionCharts.XML new file mode 100755 index 0000000000000000000000000000000000000000..ced6412f5ad3ac04003c197f305d5690912ab930 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-assembly/FusionCharts.XML @@ -0,0 +1,518 @@ +<?xml version="1.0"?> +<doc> +<assembly> +<name> +FusionCharts +</name> +</assembly> +<members> +<member name="T:FusionCharts.My.Resources.Resources"> +<summary> + A strongly-typed resource class, for looking up localized strings, etc. +</summary> +</member> +<member name="P:FusionCharts.My.Resources.Resources.ResourceManager"> +<summary> + Returns the cached ResourceManager instance used by this class. +</summary> +</member> +<member name="P:FusionCharts.My.Resources.Resources.Culture"> +<summary> + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. +</summary> +</member> +<member name="T:FusionCharts.FusionCharts.Charts.Chart"> + <summary> + Contains static methods to render FusionCharts in the Page. + </summary> +</member> +<member name="T:FusionCharts.FusionCharts.Charts.Chart.ChartParameter"> + <summary> + User configurable chart parameter list + </summary> +</member> +<member name="T:FusionCharts.FusionCharts.Charts.Chart.DataFormat"> + <summary> + List of supported data formats + </summary> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor"> + <summary> + Chart constructor + Chart configuration parameters can be supplyed to the constructor also. + </summary> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Background color of the chart container</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.#ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Chart constructor + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Back-ground-color of the chart container</param> + <param name="bgOpacity">Background opacity of the chart container</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.RenderChartALL"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Clone"> + <summary> + Public method to clone an exiting FusionCharts instance + To make the chartId unique, this function will add "_clone" as suffix in the clone chart's Id. + </summary> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Background color of the chart container</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.Render(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> + <summary> + Public method to generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartType">The type of chart that you intend to plot</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + <param name="dataSource">Data for the chart</param> + <param name="bgColor">Background color of the chart container</param> + <param name="bgOpacity">Background opacity of the chart container</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.SetChartParameter(FusionCharts.FusionCharts.Charts.Chart.ChartParameter,System.Object)"> + <summary> + SetChartParameter sets various configurations of a FusionCharts instance + </summary> + <param name="param">Name of chart parameter</param> + <param name="value">Value of chart parameter</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.GetChartParameter(FusionCharts.FusionCharts.Charts.Chart.ChartParameter)"> + <summary> + GetChartParameter returns the value of a parameter of a FusionCharts instance + </summary> + <param name="param">Name of chart parameter</param> + <returns>String</returns> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.SetData(System.String)"> + <summary> + This method to set the data for the chart + </summary> + <param name="dataSource">Data for the chart</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.SetData(System.String,FusionCharts.FusionCharts.Charts.Chart.DataFormat)"> + <summary> + This method to set the data for the chart + </summary> + <param name="dataSource">Data for the chart</param> + <param name="format">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.SetChartParameter(System.String,System.Object)"> + <summary> + SetConfiguration sets various configurations of FusionCharts + It takes configuration names as first parameter and its value a second parameter + There are config groups which can contain common configuration names. All config names in all groups gets set with this value + unless group is specified explicitly + </summary> + <param name="setting">Name of configuration</param> + <param name="value">Value of configuration</param> +</member> +<member name="M:FusionCharts.FusionCharts.Charts.Chart.boolToNum(System.Boolean)"> + <summary> + Transform the meaning of boolean value in integer value + </summary> + <param name="value">true/false value to be transformed</param> + <returns>1 if the value is true, 0 if the value is false</returns> +</member> +<member name="T:FusionCharts.InfoSoftGlobal.FusionCharts"> + <summary> + Contains static methods to render FusionCharts in the Page. + + @version: v3.2.2.2 + @date: 15 August 2012 + + </summary> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChartALL(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChartHTMLALL(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns></returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChart(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChart(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChart(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Generate html code for rendering chart + This function assumes that you've already included the FusionCharts JavaScript class in your page + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns>JavaScript + HTML code required to embed a chart</returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <returns></returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <returns></returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <returns></returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.RenderChartHTML(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.String,System.String,System.String)"> + <summary> + Renders the HTML code for the chart. This + method does NOT embed the chart using JavaScript class. Instead, it uses + direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + see the "Click to activate..." message on the chart. + </summary> + <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + <param name="chartWidth">Intended width for the chart (in pixels)</param> + <param name="chartHeight">Intended height for the chart (in pixels)</param> + <param name="debugMode">Whether to start the chart in debug mode</param> + <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + <param name="bgColor">Back Ground Color</param> + <param name="scaleMode">Set Scale Mode</param> + <param name="language">Set SWF file Language</param> + <returns></returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.EncodeDataURL(System.String,System.Boolean)"> + <summary> + encodes the dataURL before it's served to FusionCharts + If you have parameters in your dataURL, you'll necessarily need to encode it + </summary> + <param name="dataUrl">dataURL to be fed to chart</param> + <param name="noCacheStr">Whether to add aditional string to URL to disable caching of data</param> + <returns>Encoded dataURL, ready to be consumed by FusionCharts</returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.EnablePrintManager"> + <summary> + Enables Print Manager for Mozilla browsers + This function returns a small JavaScript snippet which can be added to ClientScript's RegisterClientScriptBlock method + </summary> + <example>ClientScript.RegisterClientScriptBlock(Page.GetType(), "", FusionCharts.enableFCPrintManager());</example> + <returns>String with the JavaScript code</returns> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.EnablePrintManager(System.Object)"> + <summary> + Enables Print Manager for Mozilla browsers + </summary> + <param name="CurrentPage">Current page reference</param> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.SetDataFormat(System.String)"> + <summary> + Sets the dataformat to be provided to charts (json/xml) + </summary> + <param name="format">Data format. Default is 'xml'. Other format is 'json'</param> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.SetRenderer(System.String)"> + <summary> + Sets renderer type (flash/javascript) + </summary> + <param name="renderer"> Name of the renderer. Default is 'flash'. Other possibility is 'javascript'</param> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.SetWindowMode(System.String)"> + <summary> + Explicitely sets window mode (window[detault]/transpatent/opaque) + </summary> + <param name="mode">Name of the mode. Default is 'window'. Other possibilities are 'transparent'/'opaque'</param> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.SetConfiguration(System.String,System.Object)"> + <summary> + FC_SetConfiguration sets various configurations of FusionCharts + It takes configuration names as first parameter and its value a second parameter + There are config groups which can contain common configuration names. All config names in all groups gets set with this value + unless group is specified explicitly + </summary> + <param name="setting">Name of configuration</param> + <param name="value">Value of configuration</param> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.SetConfiguration(System.Collections.Hashtable@,System.String,System.Object)"> + <summary> + FC_SetConfiguration sets various configurations of FusionCharts + It takes configuration names as first parameter and its value a second parameter + There are config groups which can contain common configuration names. All config names in all groups gets set with this value + unless group is specified explicitly + </summary> + <param name="setting">Name of configuration</param> + <param name="value">Value of configuration</param> +</member> +<member name="M:FusionCharts.InfoSoftGlobal.FusionCharts.boolToNum(System.Boolean)"> + <summary> + Transform the meaning of boolean value in integer value + </summary> + <param name="value">true/false value to be transformed</param> + <returns>1 if the value is true, 0 if the value is false</returns> +</member> +</members> +</doc> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-assembly/FusionCharts.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-assembly/FusionCharts.dll new file mode 100755 index 0000000000000000000000000000000000000000..cbfc3ff54da0aabbc43d701ee3635924467c2f48 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-assembly/FusionCharts.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-source/FusionCharts.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-source/FusionCharts.vb new file mode 100755 index 0000000000000000000000000000000000000000..772160d4a16397c737351b597ea88e69b5b0ebc7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/fusioncharts-wrapper-source/FusionCharts.vb @@ -0,0 +1,1295 @@ +Imports Microsoft.VisualBasic + +Imports System.Text +Imports System.Collections +Imports System.Web.UI.WebControls +Imports System.Web +Imports System.Collections.Generic +Imports System.Globalization + +Namespace FusionCharts.Charts + ''' <summary> + ''' Contains static methods to render FusionCharts in the Page. + ''' </summary> + Public Class Chart + 'Implements System.ICloneable + Private __CONFIG__ As Hashtable = Nothing + Private Shared __PARAMMAP__ As Hashtable = Nothing + Private events As String = "" + + ''' <summary> + ''' User configurable chart parameter list + ''' </summary> + Public Enum ChartParameter + chartType + chartId + chartWidth + chartHeight + dataFormat + dataSource + renderAt + bgColor + bgOpacity + End Enum + + ''' <summary> + ''' List of supported data formats + ''' </summary> + Public Enum DataFormat + json + jsonurl + xml + xmlurl + csv + End Enum + +#Region "constructor methods" + ''' <summary> + ''' Chart constructor + ''' Chart configuration parameters can be supplyed to the constructor also. + ''' </summary> + Public Sub New() + __INIT() + End Sub + + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + Public Sub New(chartType As String) + __INIT() + + SetChartParameter("type", chartType) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + Public Sub New(chartType As String, chartId As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("id", chartId) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + Public Sub New(chartType As String, chartId As String, chartWidth As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + Public Sub New(chartType As String, chartId As String, chartWidth As String, chartHeight As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + Public Sub New(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <param name="dataSource">Data for the chart</param> + Public Sub New(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String, dataSource As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetData(dataSource) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <param name="dataSource">Data for the chart</param> + ''' <param name="bgColor">Background color of the chart container</param> + Public Sub New(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String, dataSource As String, _ + bgColor As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetData(dataSource) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + SetChartParameter("containerBackgroundColor", bgColor) + End Sub + + ''' <summary> + ''' Chart constructor + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <param name="dataSource">Data for the chart</param> + ''' <param name="bgColor">Back-ground-color of the chart container</param> + ''' <param name="bgOpacity">Background opacity of the chart container</param> + Public Sub New(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String, dataSource As String, _ + bgColor As String, bgOpacity As String) + __INIT() + + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetData(dataSource) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + SetChartParameter("containerBackgroundColor", bgColor) + SetChartParameter("containerBackgroundOpacity", bgOpacity) + End Sub +#End Region + +#Region "RenderALL methods" + + ''' <summary> + ''' Generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + Private Function RenderChartALL() As String + + Dim dataSource As String = GetChartParameter("dataSource") + Dim dataFormat As String = GetChartParameter("dataFormat") + Dim chartId As String = GetChartParameter("id") + Dim renderAt As String = GetChartParameter("renderAt") + + + + Dim builder As New StringBuilder() + builder.AppendFormat("<!-- Using ASP.NET FusionCharts Wrapper and JavaScript rendering --><!-- START Script Block for Chart {0} -->" + Environment.NewLine, chartId) + ' if the user has provided renderAt then assume that the HTML container is already present in the page. + If renderAt.Trim().Length = 0 Then + renderAt = chartId & Convert.ToString("_div") + ' Now create the container div also. + builder.AppendFormat("<div id='{0}' >" + Environment.NewLine, renderAt) + builder.Append("Chart..." + Environment.NewLine) + builder.Append("</div>" + Environment.NewLine) + End If + + Dim chartConfigJSON As String = fc_encodeJSON(GetConfigurationGroup("params"), True) + + ' Removes the extra trailing commas in generated JavaScript Object + Dim Place As Integer = chartConfigJSON.LastIndexOf(","c) + chartConfigJSON = If((Place >= 0), chartConfigJSON.Remove(Place, 1).Insert(Place, ""), chartConfigJSON) + + builder.Append("<script type=""text/javascript"">" + Environment.NewLine) + builder.Append("FusionCharts && FusionCharts.ready(function () {" + Environment.NewLine) + builder.AppendFormat("if (FusionCharts(""{0}"") ) FusionCharts(""{0}"").dispose();" & vbLf, chartId) + builder.AppendFormat("var chart_{0} = new FusionCharts({1}).render();" + Environment.NewLine, chartId, chartConfigJSON) + builder.Append(events) + builder.Append("});" + Environment.NewLine) + builder.Append("</script>" + Environment.NewLine) + builder.AppendFormat("<!-- END Script Block for Chart {0} -->" + Environment.NewLine, chartId) + + Return builder.ToString() + + End Function + +#End Region + +#Region "Public Methods" + ' <summary> + ' public method to attach event from client side + ' </summary> + ' <param name="eventName"></param> + ' <param name="funcName"></param> + Public Sub AddEvent(ByVal eventName As String, ByVal funcName As String) + Dim eventHTML As String + Dim chartId As String = GetChartParameter("id") + eventHTML = String.Format("FusionCharts(""{0}"").addEventListener(""{1}"",{2});" & Environment.NewLine, chartId, eventName, funcName) + events += eventHTML + End Sub + ' <summary> + ' public method to add attributes for message customization + ' </summary> + ' <param name="messageAttribute"></param> + ' <param name="messageAttributeValue"></param> + Public Sub AddMessage(ByVal messageAttribute As String, ByVal messageAttributeValue As String) + Dim messageHTML As String + messageHTML = String.Format("{0}:""{1}"",", messageAttribute, messageAttributeValue) + SetChartParameter("message", messageHTML) + End Sub + ''' <summary> + ''' Public method to clone an exiting FusionCharts instance + ''' To make the chartId unique, this function will add "_clone" as suffix in the clone chart's Id. + ''' </summary> + Public Function Clone() As Object + Dim ChartClone As New Chart() + ChartClone.__CONFIG__ = DirectCast(Me.__CONFIG__.Clone(), Hashtable) + ChartClone.SetChartParameter("id", DirectCast(ChartClone.__CONFIG__("params"), Hashtable)("id").ToString() + "_clone") + + Return ChartClone + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + Public Function Render() As String + Return RenderChartALL() + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String) As String + SetChartParameter("type", chartType) + + Return RenderChartALL() + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String) As String + SetChartParameter("type", chartType) + SetChartParameter("id", chartId) + + Return RenderChartALL() + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String, chartWidth As String) As String + SetChartParameter("type", chartType) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + + Return RenderChartALL() + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String, chartWidth As String, chartHeight As String) As String + SetChartParameter("type", chartType) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + + Return RenderChartALL() + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String) As String + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + + Return RenderChartALL() + End Function + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <param name="dataSource">Data for the chart</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String, dataSource As String) As String + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetData(dataSource) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + + Return RenderChartALL() + End Function + + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <param name="dataSource">Data for the chart</param> + ''' <param name="bgColor">Background color of the chart container</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String, dataSource As String, _ + bgColor As String) As String + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetData(dataSource) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + SetChartParameter("containerBackgroundColor", bgColor) + + Return RenderChartALL() + End Function + + + ''' <summary> + ''' Public method to generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartType">The type of chart that you intend to plot</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + ''' <param name="dataSource">Data for the chart</param> + ''' <param name="bgColor">Background color of the chart container</param> + ''' <param name="bgOpacity">Background opacity of the chart container</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + + Public Function Render(chartType As String, chartId As String, chartWidth As String, chartHeight As String, dataFormat As String, dataSource As String, _ + bgColor As String, bgOpacity As String) As String + SetChartParameter("type", chartType) + SetChartParameter("dataFormat", dataFormat) + SetData(dataSource) + SetChartParameter("id", chartId) + SetChartParameter("width", chartWidth) + SetChartParameter("height", chartHeight) + SetChartParameter("containerBackgroundColor", bgColor) + SetChartParameter("containerBackgroundOpacity", bgOpacity) + + Return RenderChartALL() + End Function + + + + + + ''' <summary> + ''' SetChartParameter sets various configurations of a FusionCharts instance + ''' </summary> + ''' <param name="param">Name of chart parameter</param> + ''' <param name="value">Value of chart parameter</param> + Public Sub SetChartParameter(param As ChartParameter, value As Object) + + SetChartParameter(__PARAMMAP__(param.ToString()).ToString(), value) + End Sub + + ''' <summary> + ''' GetChartParameter returns the value of a parameter of a FusionCharts instance + ''' </summary> + ''' <param name="param">Name of chart parameter</param> + ''' <returns>String</returns> + + Public Function GetChartParameter(param As ChartParameter) As String + Return GetChartParameter(__PARAMMAP__(param.ToString()).ToString()) + End Function + + ''' <summary> + ''' This method to set the data for the chart + ''' </summary> + ''' <param name="dataSource">Data for the chart</param> + + Public Sub SetData(dataSource As String) + SetChartParameter("dataSource", dataSource) + End Sub + + ''' <summary> + ''' This method to set the data for the chart + ''' </summary> + ''' <param name="dataSource">Data for the chart</param> + ''' <param name="format">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> + Public Sub SetData(dataSource As String, format As DataFormat) + SetChartParameter("dataSource", dataSource) + SetChartParameter("dataFormat", format.ToString()) + End Sub + +#End Region + + + +#Region "Helper Private Methods" + + ''' <summary> + ''' SetConfiguration sets various configurations of FusionCharts + ''' It takes configuration names as first parameter and its value a second parameter + ''' There are config groups which can contain common configuration names. All config names in all groups gets set with this value + ''' unless group is specified explicitly + ''' </summary> + ''' <param name="setting">Name of configuration</param> + ''' <param name="value">Value of configuration</param> + Private Sub SetChartParameter(setting As String, value As Object) + If DirectCast(__CONFIG__("params"), Hashtable).ContainsKey(setting) Then + If setting.Equals("message", StringComparison.InvariantCultureIgnoreCase) Then + DirectCast(__CONFIG__("params"), Hashtable)(setting) += value.ToString() + Else + DirectCast(__CONFIG__("params"), Hashtable)(setting) = value + End If + End If + End Sub + + + Private Sub SetParamsMap() + If __PARAMMAP__ Is Nothing Then + __PARAMMAP__ = New Hashtable(StringComparer.InvariantCultureIgnoreCase) + __PARAMMAP__("chartType") = "type" + __PARAMMAP__("chartId") = "id" + __PARAMMAP__("chartWidth") = "width" + __PARAMMAP__("chartHeight") = "height" + __PARAMMAP__("message") = "message" + __PARAMMAP__("dataFormat") = "dataFormat" + __PARAMMAP__("dataSource") = "dataSource" + __PARAMMAP__("renderAt") = "renderAt" + __PARAMMAP__("bgColor") = "containerBackgroundColor" + __PARAMMAP__("bgOpacity") = "containerBackgroundOpacity" + End If + + End Sub + + Private Sub __INIT() + __CONFIG__ = New Hashtable(StringComparer.InvariantCultureIgnoreCase) + Dim param As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + param("type") = "" + param("width") = "" + param("height") = "" + param("message") = "" + param("renderAt") = "" + param("dataSource") = "" + param("dataFormat") = "" + param("id") = Guid.NewGuid().ToString().Replace("-", "_") + param("containerBackgroundColor") = "" + param("containerBackgroundOpacity") = "" + + __CONFIG__("params") = param + + param = Nothing + SetParamsMap() + End Sub + + + + ''' <summary> + ''' Transform the meaning of boolean value in integer value + ''' </summary> + ''' <param name="value">true/false value to be transformed</param> + ''' <returns>1 if the value is true, 0 if the value is false</returns> + Private Shared Function boolToNum(value As Boolean) As Integer + Return If(value, 1, 0) + End Function + + + Private Function GetChartParameter(setting As String) As String + If DirectCast(__CONFIG__("params"), Hashtable).ContainsKey(setting) Then + Return DirectCast(__CONFIG__("params"), Hashtable)(setting).ToString() + End If + Return Nothing + End Function + + + Private Function fc_encodeJSON(json As Hashtable, enclosed As Boolean) As String + Dim strjson As String = "", Key As String = "", Value As String = "" + + For Each ds As DictionaryEntry In json + If ds.Value.ToString().Trim() <> "" Then + Key = ds.Key.ToString() + Value = ds.Value.ToString() + ' If this is not the dataSource then convert the value as JavaScript string + If Key.ToLower().Equals("datasource") Then + ' Remove new line char from the dataSource + Value.Replace(vbLf & vbCr, "") + ' detect if non-JSON format then wrap with quot '"' + If Not (Value.StartsWith("{") AndAlso Value.EndsWith("}")) Then + Value = (Convert.ToString("""") & Value) + """" + End If + strjson = (Convert.ToString((Convert.ToString(strjson + Environment.NewLine & Convert.ToString("""")) & Key) + """ : ") & Value) + ", " + ElseIf Key.ToLower().Equals("message") Then + strjson = strjson + Environment.NewLine + Value.ToString() + + Else + Value = (Convert.ToString("""") & Value) + """" + strjson = (Convert.ToString((Convert.ToString(strjson + Environment.NewLine & Convert.ToString("""")) & Key) + """ : ") & Value) + ", " + End If + + ElseIf ds.Key.ToString().Equals("renderAt") Then + strjson = (strjson + Environment.NewLine & Convert.ToString("""renderAt"" : """)) + DirectCast(json, Hashtable)("id").ToString() + "_div"", " + End If + Next + ' remove ending comma + If strjson.EndsWith(",") Then + strjson = strjson.Remove(strjson.Length - 1) + End If + + If enclosed = True Then + strjson = (Convert.ToString("{") & strjson) + Environment.NewLine + "}" + End If + + Return strjson + End Function + + Private Function GetConfigurationGroup(setting As String) As Hashtable + If __CONFIG__.ContainsKey(setting) Then + Return DirectCast(__CONFIG__(setting), Hashtable) + End If + Return Nothing + End Function + +#End Region + + End Class +End Namespace + + + +Namespace InfoSoftGlobal + ''' <summary> + ''' Contains static methods to render FusionCharts in the Page. + ''' + ''' @version: v3.2.2.2 + ''' @date: 15 August 2012 + ''' + ''' </summary> + Public Class FusionCharts + + 'private static Hashtable __CONFIG__ = new Hashtable(new CaseInsensitiveHashCodeProvider(), new CaseInsensitiveComparer()); + Private Shared __CONFIG__ As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + Private Shared __CONFIG__Initialized As Boolean = False + +#Region "RenderALL methods" + + ''' <summary> + ''' Generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + ''' <param name="bgColor">Back Ground Color</param> + ''' <param name="scaleMode">Set Scale Mode</param> + ''' <param name="language">Set SWF file Language</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + Private Shared Function RenderChartALL(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean, allowTransparent As Boolean, bgColor As String, scaleMode As String, language As String) As String + __INIT() + + ' Creating a local copy of global Configuration. + Dim __CONFIGCLONE__ As Hashtable = DirectCast(__CONFIG__.Clone(), Hashtable) + + ' string dataprovider_js_code; + SetConfiguration(__CONFIGCLONE__, "debugMode", boolToNum(debugMode)) + SetConfiguration(__CONFIGCLONE__, "registerWithJS", boolToNum(True)) + + ' setup debug mode js parameter + Dim debugMode_js_param As Integer = boolToNum(debugMode) + ' setup register with js js parameter + Dim registerWithJS_js_param As Integer = boolToNum(True) + Dim dataFormat As String = GetConfiguration(__CONFIGCLONE__, "dataFormat") + dataFormat = (If(dataFormat = "", "xml" + (If(dataStr = "", "url", "")), dataFormat & Convert.ToString((If(dataStr = "", "url", ""))))) + + If GetConfiguration(__CONFIGCLONE__, "renderAt") = "" Then + SetConfiguration(__CONFIGCLONE__, "renderAt", chartId & Convert.ToString("Div")) + End If + + Dim wmode As String = GetConfiguration(__CONFIGCLONE__, "wMode") + If wmode.Trim() = "" OrElse wmode Is Nothing Then + wmode = If(allowTransparent, "transparent", "opaque") + End If + + SetConfiguration(__CONFIGCLONE__, "swfUrl", chartSWF) + SetConfiguration(__CONFIGCLONE__, "dataFormat", dataFormat) + SetConfiguration(__CONFIGCLONE__, "id", chartId) + SetConfiguration(__CONFIGCLONE__, "width", chartWidth) + SetConfiguration(__CONFIGCLONE__, "height", chartHeight) + SetConfiguration(__CONFIGCLONE__, "wMode", wmode) + + SetConfiguration(__CONFIGCLONE__, "bgColor", bgColor) + SetConfiguration(__CONFIGCLONE__, "scaleMode", scaleMode) + SetConfiguration(__CONFIGCLONE__, "lang", language) + + + Dim dataSource As String = (If(dataStr = "", dataUrl, dataStr.Replace(vbLf & vbCr, ""))) + Dim dataSourceJSON As String = """dataSource"" : " + (If(dataFormat = "json", dataSource, (Convert.ToString("""") & dataSource) + """")) + Dim chartConfigJSON As String = (Convert.ToString((Convert.ToString("{") & fc_encodeJSON(GetConfigurationGroup(__CONFIGCLONE__, "params"), False)) + ",") & dataSourceJSON) + "}" + + ' Removes the extra trailing commas in generated JavaScript Object + Dim Place As Integer = chartConfigJSON.LastIndexOf(","c) + chartConfigJSON = If((Place >= 0), chartConfigJSON.Remove(Place, 1).Insert(Place, ""), chartConfigJSON) + + Dim builder As New StringBuilder() + builder.AppendFormat("<!-- Using ASP.NET FusionCharts v3.2.2.1 Wrapper and JavaScript rendering --><!-- START Script Block for Chart {0} -->" + Environment.NewLine, chartId) + builder.AppendFormat("<div id='{0}Div' >" + Environment.NewLine, chartId) + builder.Append("Chart." + Environment.NewLine) + builder.Append("</div>" + Environment.NewLine) + builder.Append("<script type=""text/javascript"">" + Environment.NewLine) + builder.AppendFormat("if (FusionCharts && FusionCharts(""{0}"") ) FusionCharts(""{0}"").dispose();" & vbLf, chartId) + builder.AppendFormat("var chart_{0} = new FusionCharts({1}).render();", chartId, chartConfigJSON) + builder.Append("</script>" + Environment.NewLine) + builder.AppendFormat("<!-- END Script Block for Chart {0} -->" + Environment.NewLine, chartId) + + ' Re-Initializing... + __fc__initialize__() + + __CONFIGCLONE__ = Nothing + + Return builder.ToString() + + + + End Function + + + + + ''' <summary> + ''' Renders the HTML code for the chart. This + ''' method does NOT embed the chart using JavaScript class. Instead, it uses + ''' direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + ''' see the "Click to activate..." message on the chart. + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + ''' <param name="bgColor">Back Ground Color</param> + ''' <param name="scaleMode">Set Scale Mode</param> + ''' <param name="language">Set SWF file Language</param> + ''' <returns></returns> + Private Shared Function RenderChartHTMLALL(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean, allowTransparent As Boolean, bgColor As String, scaleMode As String, language As String) As String + __INIT() + + ' Creating a local copy of global Configuration. + Dim __CONFIGCLONE__ As Hashtable = DirectCast(__CONFIG__.Clone(), Hashtable) + + Dim wmode As String = GetConfiguration(__CONFIGCLONE__, "wMode") + If wmode.Trim() = "" OrElse wmode Is Nothing Then + wmode = If(allowTransparent, "transparent", "opaque") + End If + + SetConfiguration(__CONFIGCLONE__, "data", chartSWF) + SetConfiguration(__CONFIGCLONE__, "movie", chartSWF) + + SetConfiguration(__CONFIGCLONE__, "dataURL", dataUrl) + SetConfiguration(__CONFIGCLONE__, "dataXML", dataStr) + + SetConfiguration(__CONFIGCLONE__, "DOMId", chartId) + SetConfiguration(__CONFIGCLONE__, "id", chartId) + + SetConfiguration(__CONFIGCLONE__, "width", chartWidth) + SetConfiguration(__CONFIGCLONE__, "chartWidth", chartWidth) + + SetConfiguration(__CONFIGCLONE__, "height", chartHeight) + SetConfiguration(__CONFIGCLONE__, "chartHeight", chartHeight) + + SetConfiguration(__CONFIGCLONE__, "debugMode", boolToNum(debugMode)) + SetConfiguration(__CONFIGCLONE__, "registerWithJS", boolToNum(True)) + + SetConfiguration(__CONFIGCLONE__, "wMode", wmode) + + SetConfiguration(__CONFIGCLONE__, "bgColor", bgColor) + SetConfiguration(__CONFIGCLONE__, "scaleMode", scaleMode) + SetConfiguration(__CONFIGCLONE__, "lang", language) + + + Dim strFlashVars As String = FC_Transform(GetConfigurationGroup(__CONFIGCLONE__, "fvars"), "&{key}={value}", True) + SetConfiguration(__CONFIGCLONE__, "flashvars", strFlashVars) + + Dim strObjectNode As String = FC_Transform(GetConfigurationGroup(__CONFIGCLONE__, "object"), " {key}=""{value}""", True) + Dim strObjectParamsNode As String = FC_Transform(GetConfigurationGroup(__CONFIGCLONE__, "objparams"), vbTab & "<param name=""{key}"" value=""{value}"">" & vbLf, True) + + + Dim htmlcodes As New StringBuilder() + + htmlcodes.AppendFormat("<!-- Using ASP.NET FusionCharts v3.2.2.1 Wrapper --><!-- START HTML Code Block for Chart {0} -->" & vbLf, chartId) + htmlcodes.AppendFormat("<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' {0}>" & vbLf, strObjectNode) + htmlcodes.Append(strObjectParamsNode + Environment.NewLine) + htmlcodes.AppendFormat("<!--[if !IE]>-->" & vbLf & "<object type='application/x-shockwave-flash' {0}>" & vbLf & "{1}</object>" & vbLf & "<!--<![endif]-->" & vbLf & "</object>" & vbLf, strObjectNode, strObjectParamsNode) + htmlcodes.AppendFormat("<!-- END HTML Code Block for Chart {0} -->" & vbLf, chartId) + + ' Re-Initializing... + __fc__initialize__() + + Return htmlcodes.ToString() + End Function +#End Region + + ''' <summary> + ''' Generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + <Obsolete("")> _ + Public Shared Function RenderChart(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean) As String + Return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, registerWithJS, False, "", "noScale", "EN") + End Function + + ''' <summary> + ''' Generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + <Obsolete("")> _ + Public Shared Function RenderChart(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean, allowTransparent As Boolean) As String + Return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, registerWithJS, allowTransparent, "", "noScale", "EN") + End Function + + ''' <summary> + ''' Generate html code for rendering chart + ''' This function assumes that you've already included the FusionCharts JavaScript class in your page + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + ''' <param name="bgColor">Back Ground Color</param> + ''' <param name="scaleMode">Set Scale Mode</param> + ''' <param name="language">Set SWF file Language</param> + ''' <returns>JavaScript + HTML code required to embed a chart</returns> + <Obsolete("")> _ + Public Shared Function RenderChart(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean, allowTransparent As Boolean, bgColor As String, scaleMode As String, language As String) As String + Return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, registerWithJS, allowTransparent, bgColor, scaleMode, language) + End Function + + ''' <summary> + ''' Renders the HTML code for the chart. This + ''' method does NOT embed the chart using JavaScript class. Instead, it uses + ''' direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + ''' see the "Click to activate..." message on the chart. + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <returns></returns> + <Obsolete("")> _ + Public Shared Function RenderChartHTML(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean) As String + Return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, False, False, "", "noScale", "EN") + End Function + + ''' <summary> + ''' Renders the HTML code for the chart. This + ''' method does NOT embed the chart using JavaScript class. Instead, it uses + ''' direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + ''' see the "Click to activate..." message on the chart. + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <returns></returns> + <Obsolete("")> _ + Public Shared Function RenderChartHTML(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean) As String + Return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, registerWithJS, False, "", "noScale", "EN") + End Function + + ''' <summary> + ''' Renders the HTML code for the chart. This + ''' method does NOT embed the chart using JavaScript class. Instead, it uses + ''' direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + ''' see the "Click to activate..." message on the chart. + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + ''' <returns></returns> + <Obsolete("")> _ + Public Shared Function RenderChartHTML(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean, allowTransparent As Boolean) As String + Return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, registerWithJS, allowTransparent, "", "noScale", "EN") + End Function + + ''' <summary> + ''' Renders the HTML code for the chart. This + ''' method does NOT embed the chart using JavaScript class. Instead, it uses + ''' direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll + ''' see the "Click to activate..." message on the chart. + ''' </summary> + ''' <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> + ''' <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> + ''' <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> + ''' <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> + ''' <param name="chartWidth">Intended width for the chart (in pixels)</param> + ''' <param name="chartHeight">Intended height for the chart (in pixels)</param> + ''' <param name="debugMode">Whether to start the chart in debug mode</param> + ''' <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> + ''' <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> + ''' <param name="bgColor">Back Ground Color</param> + ''' <param name="scaleMode">Set Scale Mode</param> + ''' <param name="language">Set SWF file Language</param> + ''' <returns></returns> + <Obsolete("")> _ + Public Shared Function RenderChartHTML(chartSWF As String, dataUrl As String, dataStr As String, chartId As String, chartWidth As String, chartHeight As String, _ + debugMode As Boolean, registerWithJS As Boolean, allowTransparent As Boolean, bgColor As String, scaleMode As String, language As String) As String + Return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, _ + debugMode, registerWithJS, allowTransparent, bgColor, scaleMode, language) + End Function + + + ''' <summary> + ''' encodes the dataURL before it's served to FusionCharts + ''' If you have parameters in your dataURL, you'll necessarily need to encode it + ''' </summary> + ''' <param name="dataUrl">dataURL to be fed to chart</param> + ''' <param name="noCacheStr">Whether to add aditional string to URL to disable caching of data</param> + ''' <returns>Encoded dataURL, ready to be consumed by FusionCharts</returns> + <Obsolete("")> _ + Public Shared Function EncodeDataURL(dataUrl As String, noCacheStr As Boolean) As String + + Dim result As String = dataUrl + If noCacheStr Then + result += If((dataUrl.IndexOf("?") <> -1), "&", "?") + 'Replace : in time with _, as FusionCharts cannot handle : in URLs + result += "FCCurrTime=" + DateTime.Now.ToString().Replace(":", "_") + End If + + Return System.Web.HttpUtility.UrlEncode(result) + End Function + + ''' <summary> + ''' Enables Print Manager for Mozilla browsers + ''' This function returns a small JavaScript snippet which can be added to ClientScript's RegisterClientScriptBlock method + ''' </summary> + ''' <example>ClientScript.RegisterClientScriptBlock(Page.GetType(), "", FusionCharts.enableFCPrintManager());</example> + ''' <returns>String with the JavaScript code</returns> + <Obsolete("")> _ + Public Shared Function EnablePrintManager() As String + Dim strHTML As String = "<script type=""text/javascript""><!--" & vbLf & " if(FusionCharts && FusionCharts.printManager) FusionCharts.printManager.enabled(true);" & vbLf & "// --></script>" + Return (strHTML) + End Function + + + ''' <summary> + ''' Enables Print Manager for Mozilla browsers + ''' </summary> + ''' <param name="CurrentPage">Current page reference</param> + <Obsolete("")> _ + Public Shared Sub EnablePrintManager(CurrentPage As Object) + Dim HostPage As System.Web.UI.Page + HostPage = DirectCast(CurrentPage, System.Web.UI.Page) + Dim strHTML As String = "<script type=""text/javascript""><!--" & vbLf & " if(FusionCharts && FusionCharts.printManager) FusionCharts.printManager.enabled(true);" & vbLf & "// --></script>" + HostPage.ClientScript.RegisterClientScriptBlock(HostPage.[GetType](), "", strHTML) + End Sub + + + Private Shared Sub __INIT() + If __CONFIG__Initialized = False Then + __fc__initialize__() + __fc__initstatic__() + __CONFIG__Initialized = True + End If + End Sub + + ''' <summary> + ''' Sets the dataformat to be provided to charts (json/xml) + ''' </summary> + ''' <param name="format">Data format. Default is 'xml'. Other format is 'json'</param> + <Obsolete("")> _ + Public Shared Sub SetDataFormat(format As String) + __INIT() + + If format.Trim().Length = 0 Then + format = "xml" + End If + ' Stores the dataformat in global configuration store + SetConfiguration("dataFormat", format) + End Sub + + ''' <summary> + ''' Sets renderer type (flash/javascript) + ''' </summary> + ''' <param name="renderer"> Name of the renderer. Default is 'flash'. Other possibility is 'javascript'</param> + <Obsolete("")> _ + Public Shared Sub SetRenderer(renderer As String) + __INIT() + + If renderer.Trim().Length = 0 Then + renderer = "flash" + End If + ' stores the renderer name in global configuration store + SetConfiguration("renderer", renderer) + End Sub + + ''' <summary> + ''' Explicitely sets window mode (window[detault]/transpatent/opaque) + ''' </summary> + ''' <param name="mode">Name of the mode. Default is 'window'. Other possibilities are 'transparent'/'opaque'</param> + <Obsolete("")> _ + Public Shared Sub SetWindowMode(mode As String) + __INIT() + SetConfiguration("wMode", mode) + End Sub + + ''' <summary> + ''' FC_SetConfiguration sets various configurations of FusionCharts + ''' It takes configuration names as first parameter and its value a second parameter + ''' There are config groups which can contain common configuration names. All config names in all groups gets set with this value + ''' unless group is specified explicitly + ''' </summary> + ''' <param name="setting">Name of configuration</param> + ''' <param name="value">Value of configuration</param> + <Obsolete("")> _ + Public Shared Sub SetConfiguration(setting As String, value As Object) + For Each de As DictionaryEntry In __CONFIG__ + If DirectCast(__CONFIG__(de.Key), Hashtable).ContainsKey(setting) Then + DirectCast(__CONFIG__(de.Key), Hashtable)(setting) = value + End If + Next + End Sub + + ''' <summary> + ''' FC_SetConfiguration sets various configurations of FusionCharts + ''' It takes configuration names as first parameter and its value a second parameter + ''' There are config groups which can contain common configuration names. All config names in all groups gets set with this value + ''' unless group is specified explicitly + ''' </summary> + ''' <param name="setting">Name of configuration</param> + ''' <param name="value">Value of configuration</param> + Private Shared Sub SetConfiguration(ByRef __TEMPHASH__ As Hashtable, setting As String, value As Object) + For Each de As DictionaryEntry In __TEMPHASH__ + If DirectCast(__TEMPHASH__(de.Key), Hashtable).ContainsKey(setting) Then + DirectCast(__TEMPHASH__(de.Key), Hashtable)(setting) = value + End If + Next + End Sub + + +#Region "Helper Private Methods" + Private Shared Function GetHTTP() As String + 'Checks for protocol type. + Dim isHTTPS As String = HttpContext.Current.Request.ServerVariables("HTTPS") + 'Checks browser type. + Dim isMSIE As Boolean = HttpContext.Current.Request.ServerVariables("HTTP_USER_AGENT").Contains("MSIE") + 'Protocol initially sets to http. + Dim sHTTP As String = "http" + If isHTTPS.ToLower() = "on" Then + sHTTP = "https" + End If + Return sHTTP + End Function + + ''' <summary> + ''' Transform the meaning of boolean value in integer value + ''' </summary> + ''' <param name="value">true/false value to be transformed</param> + ''' <returns>1 if the value is true, 0 if the value is false</returns> + Private Shared Function boolToNum(value As Boolean) As Integer + Return If(value, 1, 0) + End Function + + Private Shared Sub SetCONSTANTConfiguration(setting As String, value As Object) + DirectCast(__CONFIG__("constants"), Hashtable)(setting) = value + End Sub + + Private Shared Function GetConfiguration(setting As String) As String + For Each de As DictionaryEntry In __CONFIG__ + If DirectCast(__CONFIG__(de.Key), Hashtable).ContainsKey(setting) Then + Return DirectCast(__CONFIG__(de.Key), Hashtable)(setting).ToString() + End If + Next + Return Nothing + End Function + + Private Shared Function GetConfiguration(ByRef __TEMPHASH__ As Hashtable, setting As String) As String + For Each de As DictionaryEntry In __TEMPHASH__ + If DirectCast(__TEMPHASH__(de.Key), Hashtable).ContainsKey(setting) Then + Return DirectCast(__TEMPHASH__(de.Key), Hashtable)(setting).ToString() + End If + Next + Return Nothing + End Function + + Private Shared Function GetConfigurationGroup(setting As String) As Hashtable + If __CONFIG__.ContainsKey(setting) Then + Return DirectCast(__CONFIG__(setting), Hashtable) + End If + Return Nothing + End Function + + Private Shared Function GetConfigurationGroup(ByRef __TEMPHASH__ As Hashtable, setting As String) As Hashtable + If __TEMPHASH__.ContainsKey(setting) Then + Return DirectCast(__TEMPHASH__(setting), Hashtable) + End If + Return Nothing + End Function + + Private Shared Function FC_Transform(arr As Hashtable, tFormat As String, ignoreBlankValues As Boolean) As String + Dim converted As String = "" + Dim Key As String = "", Value As String = "" + For Each ds As DictionaryEntry In arr + If ignoreBlankValues = True AndAlso ds.Value.ToString().Trim() = "" Then + Continue For + End If + Key = ds.Key.ToString() + Value = ds.Value.ToString() + If Key.ToLower().Equals("codebase") Then + Value = Value.Replace("http", GetHTTP()) + End If + Dim TFApplied As String = tFormat.Replace("{key}", Key) + TFApplied = TFApplied.Replace("{value}", Value) + converted = converted & TFApplied + Next + Return converted + End Function + + Private Shared Function fc_encodeJSON(json As Hashtable, enclosed As Boolean) As String + Dim strjson As String = "" + If enclosed = True Then + strjson = "{" + End If + + strjson = strjson & FC_Transform(json, """{key}"" : ""{value}"", ", True) + strjson = strjson.Trim() + + If strjson.EndsWith(",") Then + strjson = strjson.Remove(strjson.Length - 1) + End If + + Return strjson + End Function + + Private Shared Sub __fc__initstatic__() + Dim constant As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + constant("scriptbaseUri") = "" + __CONFIG__("constants") = constant + constant = Nothing + End Sub + + Private Shared Sub __fc__initialize__() + __CONFIG__ = Nothing + __CONFIG__ = New Hashtable(StringComparer.InvariantCultureIgnoreCase) + + Dim param As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + param("swfUrl") = "" + param("width") = "" + param("height") = "" + param("renderAt") = "" + param("renderer") = "" + param("dataSource") = "" + param("dataFormat") = "" + param("id") = "" + param("lang") = "" + param("debugMode") = "" + param("registerWithJS") = "" + param("detectFlashVersion") = "" + param("autoInstallRedirect") = "" + param("wMode") = "" + param("scaleMode") = "" + param("menu") = "" + param("bgColor") = "" + param("quality") = "" + + + __CONFIG__("params") = param + + + Dim fvar As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + fvar("dataURL") = "" + fvar("dataXML") = "" + fvar("chartWidth") = "" + fvar("chartHeight") = "" + fvar("DOMId") = "" + fvar("registerWithJS") = "1" + fvar("debugMode") = "0" + fvar("scaleMode") = "noScale" + fvar("lang") = "EN" + fvar("animation") = "undefined" + __CONFIG__("fvars") = fvar + + Dim [oBject] As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + [oBject]("height") = "" + [oBject]("width") = "" + [oBject]("id") = "" + [oBject]("lang") = "EN" + [oBject]("class") = "FusionCharts" + [oBject]("data") = "" + __CONFIG__("object") = [oBject] + + Dim objparam As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + objparam("movie") = "noScale" + objparam("scaleMode") = "noScale" + objparam("scale") = "" + objparam("wMode") = "" + objparam("allowScriptAccess") = "always" + objparam("quality") = "best" + objparam("FlashVars") = "" + objparam("bgColor") = "" + objparam("swLiveConnect") = "" + objparam("base") = "" + objparam("align") = "" + objparam("salign") = "" + objparam("menu") = "" + __CONFIG__("objparams") = objparam + + Dim embeds As New Hashtable(StringComparer.InvariantCultureIgnoreCase) + embeds("height") = "" + embeds("width") = "" + embeds("id") = "" + embeds("src") = "" + embeds("flashvars") = "" + embeds("name") = "" + embeds("scaleMode") = "noScale" + embeds("wMode") = "" + embeds("bgColor") = "" + embeds("quality") = "best" + embeds("allowScriptAccess") = "always" + embeds("type") = "application/x-shockwave-flash" + embeds("pluginspage") = "http://www.macromedia.com/go/getflashplayer" + embeds("swLiveConnect") = "" + embeds("base") = "" + embeds("align") = "" + embeds("salign") = "" + embeds("scale") = "" + embeds("menu") = "" + __CONFIG__("embed") = embeds + + param = Nothing + fvar = Nothing + [oBject] = Nothing + objparam = Nothing + embeds = Nothing + End Sub +#End Region + End Class +End Namespace diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Bin/FusionCharts.dll b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Bin/FusionCharts.dll new file mode 100755 index 0000000000000000000000000000000000000000..cc452e2c34ce2fda07bace55e4c1378fe5fdcf6b Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Bin/FusionCharts.dll differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Bin/FusionCharts.dll.refresh b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Bin/FusionCharts.dll.refresh new file mode 100755 index 0000000000000000000000000000000000000000..ec62345e6e2c55d8023154c84c2507388e633f38 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Bin/FusionCharts.dll.refresh differ diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Data/jsonData.json b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Data/jsonData.json new file mode 100755 index 0000000000000000000000000000000000000000..df0998a5901519f1ae78834819f62ff60d230ebe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Data/jsonData.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Data/xmlData.xml b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Data/xmlData.xml new file mode 100755 index 0000000000000000000000000000000000000000..a1e859da31666e6d213a5ca3d0e283d48972965a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Data/xmlData.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" plotgradientcolor="" bgcolor="FFFFFF" showplotborder="0" divlinecolor="CCCCCC" showvalues="1" showcanvasborder="0" canvasbordercolor="CCCCCC" canvasborderthickness="1" showyaxisvalues="0" showlegend="1" showshadow="0" labelsepchar=": " basefontcolor="000000" labeldisplay="AUTO" numberscalevalue="1000,1000,1000" numberscaleunit="K,M,B" palettecolors="#008ee4,#9b59b6,#6baa01,#e44a00,#f8bd19,#d35400,#bdc3c7,#95a5a6,#34495e,#1abc9c" showborder="0"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" color="e44a00" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Default.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Default.aspx new file mode 100755 index 0000000000000000000000000000000000000000..d81cb9da9eaa85886b9b6fce61d5506bc6d223ca --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Default.aspx @@ -0,0 +1,52 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Samples for ASP.NET(VB)</title> +</head> +<body> + <form id="form1" runat="server"> + <h3>Samples for ASP.NET(VB)</h3> + <div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="Pages/FirstChart.aspx" Text="Simple Chart Using Array" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink2" NavigateUrl="Pages/FirstGauge.aspx" Text="Simple Widget Using Array" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink3" NavigateUrl="Pages/FirstMap.aspx" Text="Simple Map Using Array" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink4" NavigateUrl="Pages/AngularGauge.aspx" Text="Angular Gauge" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink5" NavigateUrl="Pages/ClientSideExportEnabled.aspx" Text="Export Chart As Image (client-side)" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink6" NavigateUrl="Pages/ChartExportByExportHandler.aspx" Text="Export Chart As Image (server-side)" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink7" NavigateUrl="Pages/DrillDown.aspx" Text="Chart with Drill-Down Feature" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink8" NavigateUrl="Pages/MSCOlumn2d.aspx" Text="Multiseries Column 2D Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink9" NavigateUrl="Pages/MSCombi3d.aspx" Text="Multiseries Combination 3D Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink10" NavigateUrl="Pages/Pie3d.aspx" Text="Pie 3D Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink11" NavigateUrl="Pages/StackedColumn2DLine.aspx" Text="Stacked Column 2D with Line Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink12" NavigateUrl="Pages/DataBaseExample.aspx" Text="Chart Using Database (MSSQL)" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink13" NavigateUrl="Pages/UsaMap.aspx" Text="USA Map" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink14" NavigateUrl="Pages/CommonThemeUsage.aspx" Text="Chart Themes" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink15" NavigateUrl="Pages/XmlDataUrl.aspx" Text="Chart using data from XML URL" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink16" NavigateUrl="Pages/JsonUrlData.aspx" Text="Chart using data from JSON URL" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink17" NavigateUrl="Pages/RenderCharWithPercentageWidthHeight.aspx" Text="Dynamic Chart Resize" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink18" NavigateUrl="Pages/DynamicChartTypeChange.aspx" Text="Chart Type Change At Runtime" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink19" NavigateUrl="Pages/ChartAnnotation.aspx" Text="Using Annotations On Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink20" NavigateUrl="Pages/ChartUpdateOnClick.aspx" Text="Updating Different Chart" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink21" NavigateUrl="Pages/ChartLanguage.aspx" Text="Different language example" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink22" NavigateUrl="Pages/ChartSpclChar.aspx" Text="Chart using special character in XML data format" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink24" NavigateUrl="Pages/HighlightDataPoint.aspx" Text="HighLight one Data Point" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink23" NavigateUrl="Pages/ChartTooltipCustomization.aspx" Text="Customizing tooltip" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink24" NavigateUrl="Pages/ChartInstanceLevelAPI.aspx" Text="Add event to a chart dyamically" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink25" NavigateUrl="Pages/ChartMessageExample.aspx" Text="Configure chart message" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink26" NavigateUrl="Pages/GetDataSelectScatterChart.aspx" Text="Get data from select scatter chart and show them in tabular format" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink27" NavigateUrl="Pages/NumberFormatModule.aspx" Text="Use of fusioncharts number module API" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink28" NavigateUrl="Pages/InteractiveEvent.aspx" Text="Show data plot value on click" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink29" NavigateUrl="Pages/ProductLevelAPI.aspx" Text="Change chart properties dynamically" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink30" NavigateUrl="Pages/ProductLifeCycleEvent.aspx" Text="sample to showcase one product life cycle event attachment" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink31" NavigateUrl="Pages/SpecialChartTypeAPI.aspx" Text="shocasing use special chart type API" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink32" NavigateUrl="Pages/SpecialEvent.aspx" Text="example of data update event" runat="server"/></span></div> + <div><span><asp:HyperLink id="hyperlink33" NavigateUrl="Pages/UpdateDataRuntime.aspx" Text="update dial value on runtime" runat="server"/></span></div> + + </div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Default.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Default.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..65b2b304e0834e54018b4b9e29ddac3d2392ed1d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Default.aspx.vb @@ -0,0 +1,5 @@ + +Partial Class _Default + Inherits System.Web.UI.Page + +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/AngularGauge.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/AngularGauge.aspx new file mode 100755 index 0000000000000000000000000000000000000000..6abb47365c74d69576688efdb33837dc781127ae --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/AngularGauge.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="AngularGauge.aspx.vb" Inherits="AngularGauge" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Angular Gauge</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Angular Gauge</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/AngularGauge.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/AngularGauge.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..9bcd0d807aff9442ad044448f26a03ba0d390421 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/AngularGauge.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class AngularGauge + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{'chart': {'caption': 'Nordstorm\'s Customer Satisfaction Score for 2017','lowerLimit': '0','upperLimit': '100','showValue': '1','numberSuffix': '%','theme': 'fusion','showToolTip': '0'},'colorRange': {'color': [{'minValue': '0','maxValue': '50','code': '#F2726F'}, {'minValue': '50','maxValue': '75','code': '#FFC533'}, {'minValue': '75','maxValue': '100','code': '#62B58F'}]},'dials': {'dial': [{'value': '81'}]}}" + 'create gauge instance + 'gauge type, gauge id, width, height, data format, data source as string + Dim gauge As New Chart("angulargauge", "gauge", "400", "400", "json", jsonData) + 'render gauge + Literal1.Text = gauge.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartAnnotation.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartAnnotation.aspx new file mode 100755 index 0000000000000000000000000000000000000000..9aa64080229ee4c121c6d92b24b1c4732d115c34 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartAnnotation.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartAnnotation.aspx.vb" Inherits="Pages_ChartAnnotation" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Using Annotations On Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Using Annotations On Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartAnnotation.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartAnnotation.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..580bbcbc838b83dbe3c3319730e7e24d26f59ba1 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartAnnotation.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class Pages_ChartAnnotation + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Bakersfield Central - Total footfalls', 'subCaption': 'Last week', 'xAxisName': 'Day', 'yAxisName': 'No. of Visitors (In 1000s)', 'showValues': '0', 'theme': 'fusion' }, 'annotations':{ 'groups': [ { 'id': 'anchor-highlight', 'items': [ { 'id': 'high-star', 'type': 'circle', 'x': '$dataset.0.set.2.x', 'y': '$dataset.0.set.2.y', 'radius': '12', 'color': '#6baa01', 'border': '2', 'borderColor': '#f8bd19' }, { 'id': 'label', 'type': 'text', 'text': 'Highest footfall 25.5K', 'fillcolor': '#6baa01', 'rotate': '90', 'x': '$dataset.0.set.2.x+75', 'y': '$dataset.0.set.2.y-2' } ] } ] }, 'data': [ { 'label': 'Mon', 'value': '15123' }, { 'label': 'Tue', 'value': '14233' }, { 'label': 'Wed', 'value': '25507' }, { 'label': 'Thu', 'value': '9110' }, { 'label': 'Fri', 'value': '15529' }, { 'label': 'Sat', 'value': '20803' }, { 'label': 'Sun', 'value': '19202' } ] }" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "json", jsonData) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartExportByExportHandler.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartExportByExportHandler.aspx new file mode 100755 index 0000000000000000000000000000000000000000..89b58ce83561efa7b2a1c37a624bda25c26f1b3a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartExportByExportHandler.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartExportByExportHandler.aspx.vb" Inherits="Pages_ChartExportByExportHandler" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Export Chart As Image (server-side)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Export Chart As Image (server-side)</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartExportByExportHandler.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartExportByExportHandler.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..9e410ffd4a70f6be02663f9aa76f05bc116543ca --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartExportByExportHandler.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class Pages_ChartExportByExportHandler + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Salary Hikes by Country', 'subCaption': '2016 - 2017', 'showhovereffect': '1', 'numberSuffix': '%', 'rotatelabels': '1', 'exportEnabled':'1', 'exportMode': 'server' , 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Australia' }, { 'label': 'New-Zealand' }, { 'label': 'India' }, { 'label': 'China' }, { 'label': 'Myanmar' }, { 'label': 'Bangladesh' }, { 'label': 'Thailand' }, { 'label': 'South Korea' }, { 'label': 'Hong Kong' }, { 'label': 'Singapore' }, { 'label': 'Taiwan' }, { 'label': 'Vietnam' }] }], 'dataset': [{ 'seriesName': '2016 Actual Salary Increase', 'plotToolText' : 'Salaries increased by <b>$dataValue</b> in 2016', 'data': [{ 'value': '3' }, { 'value': '3' }, { 'value': '10' }, { 'value': '7' }, { 'value': '7.4' }, { 'value': '10' }, { 'value': '5.4' }, { 'value': '4.5' }, { 'value': '4.1' }, { 'value': '4' }, { 'value': '3.7' }, { 'value': '9.3' }] }, { 'seriesName': '2017 Projected Salary Increase', 'plotToolText' : 'Salaries expected to increase by <b>$dataValue</b> in 2017', 'renderAs': 'line', 'data': [{ 'value': '3' }, { 'value': '2.8' }, { 'value': '10' }, { 'value': '6.9' }, { 'value': '6.7' }, { 'value': '9.4' }, { 'value': '5.5' }, { 'value': '5' }, { 'value': '4' }, { 'value': '4' }, { 'value': '4.5' }, { 'value': '9.8' }] }, { 'seriesName': 'Inflation rate', 'plotToolText' : '$dataValue projected inflation', 'renderAs': 'area', 'showAnchors':'0', 'data': [{ 'value': '1.6' }, { 'value': '0.6' }, { 'value': '5.6' }, { 'value': '2.3' }, { 'value': '7' }, { 'value': '5.6' }, { 'value': '0.2' }, { 'value': '1' }, { 'value': '2.6' }, { 'value': '0' }, { 'value': '1.1' }, { 'value': '2.4' }] }] }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim mscombi As New Chart("mscombi3d", "ms_combi_3d", "800", "400", "json", jsonData) + 'render chart + Literal1.Text = mscombi.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartInstanceLevelAPI.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartInstanceLevelAPI.aspx new file mode 100755 index 0000000000000000000000000000000000000000..36ac04f3180b9584cd0e1e0d07610aaa2214d860 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartInstanceLevelAPI.aspx @@ -0,0 +1,97 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartInstanceLevelAPI.aspx.vb" Inherits="Pages_ChartInstanceLevelAPI" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + + </style> + <title>FusionCharts | Add event to a chart dyamically</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + track = function(){ + FusionCharts.addEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click on the plot to see the value along with the label"; + + }; + clickHandler = function(e){ + document.getElementById("message").innerHTML = "You have clicked on plot <b>"+ e.data.categoryLabel + "</b> whose value is <b>" + e.data.displayValue + "</b>"; + }; + removeEvent = function(){ + FusionCharts.removeEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click the below buttons to add an event dynamically to the chart"; + + } + </script> + <form id="form1" runat="server"> + <h3>Add event to a chart dyamically</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name= "radios" onclick="track()" /> + <label for="radio1">LISTEN TO DATAPLOTCLICK EVENT</label> + <input type="radio" id="radio2" name="radios" onclick="removeEvent()" /> + <label for="radio2">REMOVE DATAPLOTCLICK EVENT</label> + + </div> + + + <br/> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartInstanceLevelAPI.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartInstanceLevelAPI.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..9f44aca3213eda6337916a1bdc5f88d6935584f6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartInstanceLevelAPI.aspx.vb @@ -0,0 +1,9 @@ +Imports FusionCharts.Charts +Partial Class Pages_ChartInstanceLevelAPI + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartLanguage.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartLanguage.aspx new file mode 100755 index 0000000000000000000000000000000000000000..e57f6d1ede2352dce5ad22aee42d1a7bfab11663 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartLanguage.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartLanguage.aspx.vb" Inherits="Pages_ChartLanguage" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Different language example</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <h3>Different language example</h3> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> + +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartLanguage.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartLanguage.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..b8586d1130c7135ce264187a62856bf11a44dcaa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartLanguage.aspx.vb @@ -0,0 +1,11 @@ +Imports FusionCharts.Charts + +Partial Class Pages_ChartLanguage + Inherits System.Web.UI.Page + + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'سوبرماركت هاري', 'subcaption': 'الإيرادات الشهرية للعام الماضي', 'xaxisname': 'الشهر', 'yaxisname': 'كمية', 'numberprefix': '$', 'theme': 'fusion', 'rotatevalues': '1', 'exportenabled': '1' }, 'data': [ { 'label': 'يناير', 'value': '420000' }, { 'label': 'فبراير', 'value': '810000' }, { 'label': 'مارس', 'value': '720000' }, { 'label': 'أبريل', 'value': '550000' }, { 'label': 'مايو', 'value': '910000' }, { 'label': 'يونيو', 'value': '510000' }, { 'label': 'يوليو', 'value': '680000' }, { 'label': 'أغسطس', 'value': '620000' }, { 'label': 'سبتمبر', 'value': '610000' }, { 'label': 'أكتوبر', 'value': '490000' }, { 'label': 'نوفمبر', 'value': '900000' }, { 'label': 'ديسمبر', 'value': '730000' } ] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartMessageExample.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartMessageExample.aspx new file mode 100755 index 0000000000000000000000000000000000000000..bcbdfb3daaebb00ce368aeccdaf4d161e260a1ae --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartMessageExample.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartMessageExample.aspx.vb" Inherits="Pages_ChartMessageExample" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Configure chart message</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Configure chart message</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartMessageExample.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartMessageExample.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..7971be226dc920963f0d30a3906f57465c27a737 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartMessageExample.aspx.vb @@ -0,0 +1,11 @@ +Imports FusionCharts.Charts +Partial Class Pages_ChartMessageExample + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', 'exportEnabled':'1' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + column2d.AddMessage("loadMessage", "please wait data is being loaded") + column2d.AddMessage("loadMessageFontSize", "18") + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartSpclChar.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartSpclChar.aspx new file mode 100755 index 0000000000000000000000000000000000000000..f4e0af3db61ede0f0a678de7b3ce2d4ca23e3a83 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartSpclChar.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartSpclChar.aspx.vb" Inherits="Pages_ChartSpclChar" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using special character in XML data format</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <h3>Chart using special character in XML data format</h3> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartSpclChar.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartSpclChar.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..8147024ae09ebb6bca01a329c1ae43a16a5bbccd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartSpclChar.aspx.vb @@ -0,0 +1,11 @@ +Imports FusionCharts.Charts + +Partial Class Pages_ChartSpclChar + Inherits System.Web.UI.Page + + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim xmlData As String = "<chart caption='Harry's SuperMart' subcaption='Monthly revenue for last year' xaxisname='Month' yaxisname='Amount' numberprefix='¥' theme='fusion' rotatevalues='1' exportenabled='1'> <set label='Jan' value='420000' /> <set label='Feb' value='810000' /> <set label='Mar' value='720000' /> <set label='Apr' value='550000' /> <set label='May' value='910000' /> <set label='Jun' value='510000' /> <set label='Jul' value='680000' /> <set label='Aug' value='620000' /> <set label='Sep' value='610000' /> <set label='Oct' value='490000' /> <set label='Nov' value='900000' /> <set label='Dec' value='730000' /> </chart>" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "xml", xmlData) + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartTooltipCustomization.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartTooltipCustomization.aspx new file mode 100755 index 0000000000000000000000000000000000000000..3bfd417ce43f912761747bb82807f56a8d870a86 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartTooltipCustomization.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartTooltipCustomization.aspx.vb" Inherits="Pages_ChartTooltipCustomization" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Customizing tooltip</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <h3>Customizing tooltip</h3> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartTooltipCustomization.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartTooltipCustomization.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..c9a55a88cd7f5fb1d840d41e3b564b4cc394ba1d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartTooltipCustomization.aspx.vb @@ -0,0 +1,12 @@ +Imports System +Imports FusionCharts.Charts + +Partial Class Pages_ChartTooltipCustomization + Inherits System.Web.UI.Page + + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Top 3 Electronic Brands in Top 3 Revenue Earning States', 'subcaption': 'Last month', 'aligncaptiontocanvas': '0', 'yaxisname': 'Statewise Sales (in %)', 'xaxisname': 'Brand', 'numberprefix': '$', 'showxaxispercentvalues': '1', 'showsum': '1', 'showPlotBorder': '1', 'plottooltext': '<div id=\'nameDiv\' style=\'font-size: 14px; border-bottom: 1px dashed #666666; font-weight:bold; padding-bottom: 3px; margin-bottom: 5px; display: inline-block;\'>$label :</div>{br}State: <b>$seriesName</b>{br}Sales : <b>$dataValue</b>{br}Market share in State : <b>$percentValue</b>{br}Overall market share of $label: <b>$xAxisPercentValue</b>', 'theme': 'fusion' }, 'categories': [ { 'category': [ { 'label': 'Bose' }, { 'label': 'Dell' }, { 'label': 'Apple' } ] } ], 'dataset': [ { 'seriesname': 'California', 'data': [ { 'value': '335000' }, { 'value': '225100' }, { 'value': '164200' } ] }, { 'seriesname': 'Washington', 'data': [ { 'value': '215000' }, { 'value': '198000' }, { 'value': '120000' } ] }, { 'seriesname': 'Nevada', 'data': [ { 'value': '298000' }, { 'value': '109300' }, { 'value': '153600' } ] } ] }" + Dim marimekko As Chart = New Chart("marimekko", "first_chart", "700", "400", "json", jsonData) + Literal1.Text = marimekko.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartUpdateOnClick.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartUpdateOnClick.aspx new file mode 100755 index 0000000000000000000000000000000000000000..59e33dab767bf80659f94d267481f513e0eee353 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartUpdateOnClick.aspx @@ -0,0 +1,105 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartUpdateOnClick.aspx.vb" Inherits="Pages_ChartUpdateOnClick" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Updating Different Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript"> + + function updateChart(value) { + var chartData = ""; + switch (value) { + case 'Europe': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488" + }, { + "label": "Belgium", + "value": "35132" + }, { + "label": "Denmark", + "value": "34779" + }, { + "label": "Finland", + "value": "19776" + }] + } + break; + + case 'NA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + }, { + "label": "Mexico", + "value": "24072", + }, { + "label": "USA", + "value": "263546", + }] + } + break; + case 'SA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119" + }, { + "label": "Brazil", + "value": "114954" + }, { + "label": "Venezuela", + "value": "60806" + }] + } + break; + } // switch ends + + FusionCharts.items["second_chart"].setJSONData(chartData); + } + + </script> + <form id="form1" runat="server"> + <asp:Table runat ="server" style="width: 100%;"> + <asp:TableRow> + <asp:TableCell> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </asp:TableCell> + <asp:TableCell> + <asp:Literal ID="Literal2" runat="server"></asp:Literal> + </asp:TableCell> + </asp:TableRow> + </asp:Table> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartUpdateOnClick.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartUpdateOnClick.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..48ec3aeb1489353f0335a9f504f2e78765e1f2bb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartUpdateOnClick.aspx.vb @@ -0,0 +1,17 @@ +Imports FusionCharts.Charts +Partial Class Pages_ChartUpdateOnClick + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim firstChartData, secondChartData As String + firstChartData = "{ 'chart': { 'caption': 'Sales by Region', 'xaxisname': 'Region', 'yaxisname': 'Total Sales', 'numbersuffix': 'K', 'theme': 'fusion' }, 'data': [{ 'label': 'Europe', 'value': '827508', 'link': 'j-updateChart-Europe' }, { 'label': 'North America', 'value': '342947', 'link': 'j-updateChart-NA' }, { 'label': 'South America', 'value': '183881', 'link': 'j-updateChart-SA' }] }" + secondChartData = "{ 'chart': { } }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim firstChart As New Chart("column2d", "first_chart", "600", "400", "json", firstChartData) + Dim secondChart As New Chart("column2d", "second_chart", "600", "400", "json", secondChartData) + 'render chart + Literal1.Text = firstChart.Render() + Literal2.Text = secondChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartWithXmlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartWithXmlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..09d428d4030762edb5c6faf7e8dc6465744d7ff3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartWithXmlData.aspx @@ -0,0 +1,18 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ChartWithXmlData.aspx.vb" Inherits="ChartWithXmlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <title></title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartWithXmlData.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartWithXmlData.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..afc8c67467298db6e22548645ee0d8e9ad5d2055 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ChartWithXmlData.aspx.vb @@ -0,0 +1,47 @@ +Imports System.Xml.Linq.XElement +Imports FusionCharts.Charts +Partial Class ChartWithXmlData + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store label-value pair + Dim dataValuePair As New Dictionary(Of String, Double) + dataValuePair.Add("Venezuela", 290) + dataValuePair.Add("Saudi", 260) + dataValuePair.Add("Canada", 180) + dataValuePair.Add("Iran", 140) + dataValuePair.Add("Russia", 115) + dataValuePair.Add("UAE", 100) + dataValuePair.Add("US", 30) + dataValuePair.Add("China", 30) + + 'store chart config name-config value pair + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Countries With Most Oil Reserves [2017-18]") + chartConfig.Add("subCaption", "In MMbbl = One Million barrels") + chartConfig.Add("xAxisName", "Country") + chartConfig.Add("yAxisName", "Reserves (MMbbl)") + chartConfig.Add("numberSuffix", "k") + chartConfig.Add("theme", "fusion") + ' create root element as + Dim root As New XElement("chart") + For Each config In chartConfig + root.SetAttributeValue(config.Key, config.Value) + Next + ' iterate through data-value pair + For Each pair In dataValuePair + Dim setEleemnt As New XElement("set") + setEleemnt.SetAttributeValue("label", pair.Key) + setEleemnt.SetAttributeValue("value", pair.Value) + root.Add(setEleemnt) + Next + ' convert xml root element to string + Dim xmlData As String + xmlData = root.ToString().Replace("""", "'").Replace(vbLf, " ").Replace(vbCr, " ") + ' Create chart instance + ' charttype, chartID, width, height, data format, data + Dim first_chart As New Chart("column2d", "column_chart", "600", "350", "xml", xmlData) + Literal1.Text = first_chart.Render() + + End Sub + +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ClientSideExportEnabled.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ClientSideExportEnabled.aspx new file mode 100755 index 0000000000000000000000000000000000000000..352a0b1e2fa5c6a5c385b4a5f91262f93c4c9c59 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ClientSideExportEnabled.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ClientSideExportEnabled.aspx.vb" Inherits="ClientSideExportEnabled" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Export Chart As Image (client-side)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Export Chart As Image (client-side)</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ClientSideExportEnabled.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ClientSideExportEnabled.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..0f92c48be3993ed3faf598e564e0dfcf8196e5db --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ClientSideExportEnabled.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class ClientSideExportEnabled + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', 'exportEnabled':'1' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "json", jsonData) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/CommonThemeUsage.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/CommonThemeUsage.aspx new file mode 100755 index 0000000000000000000000000000000000000000..a2e1e58abc780439ca02e4c375ff34aa84b5f5ce --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/CommonThemeUsage.aspx @@ -0,0 +1,73 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="CommonThemeUsage.aspx.vb" Inherits="Pages_CommonThemeUsage" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Use of Common Theme</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + <form id="form1" runat="server"> + <h3>Use of Common Theme</h3> + <div style="width: 100%; display: table;"> + <div style="display: table-row"> + <div style="width: 40%; display: table-cell;"><asp:Literal ID="Literal1" runat="server"></asp:Literal></div> + <div style="width: 40%; display: table-cell;"><asp:Literal ID="Literal2" runat="server"></asp:Literal> </div> + </div> + </div> + </form> + <script> + FusionCharts && FusionCharts.ready(function () { + + //FusionCharts.options.defaultTheme = "fint"; + + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + ChangeTheme(this.value); + }; + } + } + }); + + function ChangeTheme(theme) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].setChartAttribute('theme', theme); + } + } + }; + </script> + <div align="center" style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <label style="padding: 0px 5px !important;">Select a theme for all charts </label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" checked value="fusion"/> Fusion + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="gammel"/> Gammel + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="zune"/> Zune + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="carbon"/> Carbon + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="ocean"/> Ocean + </label> + </div> + <div><span><a href ="../Default.aspx">Go Back</a></span></div> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/CommonThemeUsage.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/CommonThemeUsage.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..ced4f401ee4b8030721793cfdab3c8e8d2e9954e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/CommonThemeUsage.aspx.vb @@ -0,0 +1,17 @@ +Imports FusionCharts.Charts +Partial Class Pages_CommonThemeUsage + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim firstChartData, secondChartData As String + firstChartData = "{ 'chart': { 'caption': 'Split of Sales by Product Category', 'subCaption': '5 top performing stores - last month', 'plotToolText': '<div><b>\\$label</b><br/>Product : <b>\\$seriesname</b><br/>Sales : <b>\\$\\$value</b></div>', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Garden Groove harbour' }, { 'label': 'Bakersfield Central' }, { 'label': 'Los Angeles Topanga' }, { 'label': 'Compton-Rancho Dom' }, { 'label': 'Daly City Serramonte' }] }], 'dataset': [{ 'seriesname': 'Non-Food Products', 'data': [{ 'value': '28800' }, { 'value': '25400' }, { 'value': '21800' }, { 'value': '19500' }, { 'value': '11500' }] }, { 'seriesname': 'Food Products', 'data': [{ 'value': '17000' }, { 'value': '19500' }, { 'value': '12500' }, { 'value': '14500' }, { 'value': '17500' }] }] }" + secondChartData = "{ 'chart': { 'caption': 'Harry\'s SuperMart', 'subCaption': 'Top 5 stores in last month by revenue', 'theme': 'fusion' }, 'data':[ { 'label': 'Bakersfield Central', 'value': '880000' }, { 'label': 'Garden Groove harbour', 'value': '730000' }, { 'label': 'Los Angeles Topanga', 'value': '590000' }, { 'label': 'Compton-Rancho Dom', 'value': '520000' }, { 'label': 'Daly City Serramonte', 'value': '330000' } ] }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim overlappedColumnChart As New Chart("overlappedcolumn2d", "overlap_chart", "600", "400", "json", firstChartData) + Dim columnChart As New Chart("column2d", "column_Chart", "600", "400", "json", secondChartData) + 'render chart + Literal1.Text = overlappedColumnChart.Render() + Literal2.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DataBaseExample.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DataBaseExample.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c74d12c0f1d43cdd6bfb70371bd5ad42ee56dfaa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DataBaseExample.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DataBaseExample.aspx.vb" Inherits="Pages_DataBaseExample" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart Using Database (MSSQL)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart Using Database (MSSQL)</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DataBaseExample.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DataBaseExample.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..3f9b882fb1d63444445e75804a5ee5183f7717b4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DataBaseExample.aspx.vb @@ -0,0 +1,65 @@ +Imports FusionCharts.Charts +Imports System.Data +Imports System.Data.SqlClient +Partial Class Pages_DataBaseExample + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Dim query As String = "select Region, SUM([Total Sales]) as [Total Sales] from Sales_Record group by Region" + Dim dt As DataTable + ' establish DB connection and fetch chart data + dt = GetChartData(query) + + Dim chartJsonData As String = ProcessChartData(dt) + + 'create chart instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "json", chartJsonData) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub + Private Function ProcessChartData(ByVal dt As DataTable) As String + Dim jsonData As New StringBuilder + Dim data As New StringBuilder + + 'store chart config name-config value pair + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Total Sales by Reigion") + chartConfig.Add("xAxisName", "Region") + chartConfig.Add("yAxisName", "Total Sales") + chartConfig.Add("numberSuffix", "k") + chartConfig.Add("theme", "fusion") + + ' json data to use as chart data source + jsonData.Append("{""chart"":{") + For Each config In chartConfig + jsonData.AppendFormat("""{0}"":""{1}"",", config.Key, config.Value) + Next + jsonData.Replace(",", "},", jsonData.Length - 1, 1) + + ' build data object from label-value pair + data.Append("""data"":[") + For Each row As DataRow In dt.Rows + data.AppendFormat("{{""label"":""{0}"",""value"": ""{1}""}},", row(0).ToString(), row(1).ToString()) + + Next row + data.Replace(",", "]", data.Length - 1, 1) + + jsonData.Append(data.ToString()) + jsonData.Append("}") + ProcessChartData = jsonData.ToString() + + End Function + Private Function GetChartData(ByVal query As String) As DataTable + Dim dt As New DataTable + Dim serverName As String = "POUSHALI-PC\SHAREPOINT" + Dim databaseName As String = "DrillDownDB" + Dim connetionString As String = "Data Source=" + serverName + ";Initial Catalog=" + databaseName + ";Trusted_Connection=True;" + Dim connection As SqlConnection = New SqlConnection() + connection.ConnectionString = connetionString + connection.Open() + Dim adp As SqlDataAdapter = New SqlDataAdapter(query, connection) + adp.Fill(dt) + connection.Close() + GetChartData = dt + End Function +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DrillDown.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DrillDown.aspx new file mode 100755 index 0000000000000000000000000000000000000000..782bdb2008cd3203100aa425cad0ffee7297b3f4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DrillDown.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DrillDown.aspx.vb" Inherits="DrillDown" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart with Drill-Down Feature</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart with Drill-Down Feature</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DrillDown.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DrillDown.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..27e7f6472be7364bf4e20dca6fbc73ec819dd15f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DrillDown.aspx.vb @@ -0,0 +1,11 @@ +Imports FusionCharts.Charts +Partial Class DrillDown + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'create chart instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "jsonurl", "Handler/Handler.ashx") + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DynamicChartTypeChange.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DynamicChartTypeChange.aspx new file mode 100755 index 0000000000000000000000000000000000000000..53e3ecf42969d011c9ed58cb2e6aac69a46c7d06 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DynamicChartTypeChange.aspx @@ -0,0 +1,58 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DynamicChartTypeChange.aspx.vb" Inherits="Pages_DynamicChartTypeChange" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart Type Change At Runtime (client-side)</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeChartType(this.value); + }; + } + } + }); + + + function changeChartType(chartType) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].chartType(chartType); + } + } + }; + </script> + <h3>Chart Type Change At Runtime</h3> + <div align="center"> + <label style="padding: 0px 5px !important;">Select The Chart Type</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="column2d"/>Column 2D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="pie3d"/>Pie 3D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="bar2d"/>Bar 2D + </label> + </div> + <form id="form1" runat="server"> + + <div style="width: 100%; display: block;" align="center"> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DynamicChartTypeChange.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DynamicChartTypeChange.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..11895fb20e163bcf2e980df0b426821d5fd762a3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/DynamicChartTypeChange.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class Pages_DynamicChartTypeChange + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "json", jsonData) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstChart.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstChart.aspx new file mode 100755 index 0000000000000000000000000000000000000000..50445c127ea3fa6329c65fea6543595607276c00 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstChart.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="FirstChart.aspx.vb" Inherits="FirstChart" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Simple Chart Using Array</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Simple Chart Using Array</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstChart.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstChart.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..4e6ce930c08aa04b94ca5fae0ef5d4d7f436908c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstChart.aspx.vb @@ -0,0 +1,55 @@ +Imports FusionCharts.Charts +Partial Class FirstChart + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store label-value pair + Dim dataValuePair As New Dictionary(Of String, Double) + dataValuePair.Add("Venezuela", 290) + dataValuePair.Add("Saudi", 260) + dataValuePair.Add("Canada", 180) + dataValuePair.Add("Iran", 140) + dataValuePair.Add("Russia", 115) + dataValuePair.Add("UAE", 100) + dataValuePair.Add("US", 30) + dataValuePair.Add("China", 30) + + Dim jsonData As New StringBuilder + Dim data As New StringBuilder + + 'store chart config name-config value pair + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Countries With Most Oil Reserves [2017-18]") + chartConfig.Add("subCaption", "In MMbbl = One Million barrels") + chartConfig.Add("xAxisName", "Country") + chartConfig.Add("yAxisName", "Reserves (MMbbl)") + chartConfig.Add("numberSuffix", "k") + chartConfig.Add("theme", "fusion") + + ' json data to use as chart data source + jsonData.Append("{'chart':{") + For Each config In chartConfig + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value) + Next + + + jsonData.Replace(",", "},", jsonData.Length - 1, 1) + + ' build data object from label-value pair + data.Append("'data':[") + + For Each pair In dataValuePair + data.AppendFormat("{{'label':'{0}','value':'{1}'}},", pair.Key, pair.Value) + Next + + + data.Replace(",", "]", data.Length - 1, 1) + + jsonData.Append(data.ToString()) + jsonData.Append("}") + ' Create chart instance + ' charttype, chartID, width, height, data format, data + Dim first_chart As New Chart("column2d", "first_chart", "600", "350", "json", jsonData.ToString()) + Literal1.Text = first_chart.Render() + + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstGauge.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstGauge.aspx new file mode 100755 index 0000000000000000000000000000000000000000..65945d6a50572ce944e107b4a5bf2fc4370c9ae3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstGauge.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="FirstGauge.aspx.vb" Inherits="FirstGauge" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Simple Widget Using Array</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Simple Widget Using Array</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstGauge.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstGauge.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..c002e557a90d688baf7f8f7767e4e7494ceb6837 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstGauge.aspx.vb @@ -0,0 +1,110 @@ +Imports FusionCharts.Charts +Partial Class FirstGauge + Inherits System.Web.UI.Page + 'Create colorRange class + 'It will store Min range Max range And specific color code for each range + Class ColorRange + Private lowerLimit As Integer + Private upprLimit As Integer + Private code As String + 'lower value of range set as property + Property Min() As Integer + Get + Return lowerLimit + + End Get + Set(value As Integer) + lowerLimit = value + End Set + End Property + 'upper value of range set as property + Property Max() As Integer + Get + Return upprLimit + + End Get + Set(value As Integer) + upprLimit = value + End Set + End Property + ' specific color code for this range + Property ColorCode() As String + Get + Return code + + End Get + Set(value As String) + code = value + End Set + End Property + 'constructor + Public Sub New(ByVal lowerLimit As Integer, ByVal upperLimit As Integer, ByVal code As String) + Min = lowerLimit + Max = upperLimit + ColorCode = code + End Sub + + End Class + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config name-config value pair + + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Nordstorm\'s Customer Satisfaction Score for 2017") + chartConfig.Add("lowerLimit", "0") + chartConfig.Add("upperLimit", "100") + chartConfig.Add("showValue", "1") + chartConfig.Add("numberSuffix", "%") + chartConfig.Add("theme", "fusion") + chartConfig.Add("showToolTip", "0") + + Dim color As New List(Of ColorRange) + color.Add(New ColorRange(0, 50, "#F2726F")) + color.Add(New ColorRange(50, 75, "#FFC533")) + color.Add(New ColorRange(75, 100, "#62B58F")) + + 'store dial configuration + + Dim dial As New Dictionary(Of String, String) + dial.Add("value", "81") + 'json data to use as chart data source + Dim jsonData As New StringBuilder + 'build chart config object + jsonData.Append("{'chart':{") + + For Each config In chartConfig + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value) + Next + + jsonData.Replace(",", "},", jsonData.Length - 1, 1) + + Dim range As New StringBuilder + 'build colorRange object + range.Append("'colorRange':{") + range.Append("'color':[") + For Each clr In color + + range.AppendFormat("{{'minValue':'{0}','maxValue':'{1}','code':'{2}'}},", clr.Min, clr.Max, clr.ColorCode) + Next + range.Replace(",", "]},", range.Length - 1, 1) + 'build dials object + Dim dials As New StringBuilder + dials.Append("'dials':{") + dials.Append("'dial':[") + For Each dialCnf In dial + + dials.AppendFormat("{{'{0}':'{1}'}},", dialCnf.Key, dialCnf.Value) + Next + dials.Replace(",", "]}", dials.Length - 1, 1) + + jsonData.Append(range.ToString()) + jsonData.Append(dials.ToString()) + jsonData.Append("}") + + 'Create gauge instance + 'charttype, chartID, width, height, data format, data + + Dim gauge As New Chart("angulargauge", "first_gauge", "400", "350", "json", jsonData.ToString()) + 'render gauge + Literal1.Text = gauge.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstMap.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstMap.aspx new file mode 100755 index 0000000000000000000000000000000000000000..4ca858cc9f145517a6716170c4254815b27c2fe0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstMap.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="FirstMap.aspx.vb" Inherits="FirstMap" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Simple Map Using Array</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/maps/fusioncharts.world.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Simple Map Using Array</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstMap.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstMap.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..3c3e7fdc4b1f0a95478143eefeb920296d93d27f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/FirstMap.aspx.vb @@ -0,0 +1,156 @@ +Imports FusionCharts.Charts +Partial Class FirstMap + Inherits System.Web.UI.Page + 'Create colorRange class + 'It will store Min range Max range And specific color code for each range + Class ColorRange + Private lowerLimit As Double + Private upprLimit As Double + Private code As String + 'lower value of range set as property + Property Min() As Double + Get + Return lowerLimit + + End Get + Set(value As Double) + lowerLimit = value + End Set + End Property + 'upper value of range set as property + Property Max() As Double + Get + Return upprLimit + + End Get + Set(value As Double) + upprLimit = value + End Set + End Property + ' specific color code for this range + Property ColorCode() As String + Get + Return code + + End Get + Set(value As String) + code = value + End Set + End Property + 'constructor + Public Sub New(ByVal lowerLimit As Double, ByVal upperLimit As Double, ByVal code As String) + Min = lowerLimit + Max = upperLimit + ColorCode = code + End Sub + + End Class + 'Create countryData class + 'It will store id, value And show label for each country + Class CountryData + Private cid As String + Private cvalue As Double + Private label As Integer + 'country id set as a property + Property ID() As String + Get + Return cid + + End Get + Set(value As String) + cid = value + End Set + End Property + 'data value for a country set as property + Property Value() As Double + Get + Return cvalue + + End Get + Set(value As Double) + cvalue = value + End Set + End Property + ' whether show label or not + Property ShowLabel() As Integer + Get + Return label + + End Get + Set(value As Integer) + label = value + End Set + End Property + 'constructor + Public Sub New(ByVal cntryid As String, ByVal val As Double, ByVal lbl As Integer) + ID = cntryid + Value = val + ShowLabel = lbl + End Sub + + End Class + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + ' store chart config name-config value pair + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Average Annual Population Growth") + chartConfig.Add("subCaption", " 1955-2015") + chartConfig.Add("includevalueinlabels", "1") + chartConfig.Add("labelsepchar", ": ") + chartConfig.Add("numberSuffix", "%") + chartConfig.Add("entityFillHoverColor", "#FFF9C4") + chartConfig.Add("theme", "fusion") + + 'store color code for different range + Dim color As New List(Of ColorRange) + color.Add(New ColorRange(0.5, 1.0, "#FFD74D")) + color.Add(New ColorRange(1.0, 2.0, "#FB8C00")) + color.Add(New ColorRange(2.0, 3.0, "#E65100")) + + 'store country data + Dim countries As New List(Of CountryData) + countries.Add(New CountryData("NA", 0.82, 1)) + countries.Add(New CountryData("SA", 2.04, 1)) + countries.Add(New CountryData("AS", 1.78, 1)) + countries.Add(New CountryData("EU", 0.4, 1)) + countries.Add(New CountryData("AF", 2.58, 1)) + countries.Add(New CountryData("AU", 1.3, 1)) + + 'json data to use as chart data source + Dim jsonData As New StringBuilder + 'build chart config object + jsonData.Append("{'chart':{") + For Each config In chartConfig + + jsonData.AppendFormat("'{0}':'{1}',", config.Key, config.Value) + Next + jsonData.Replace(",", "},", jsonData.Length - 1, 1) + + Dim range As New StringBuilder + 'build colorRange object + range.Append("'colorRange':{") + range.Append("'color':[") + For Each clr In color + + range.AppendFormat("{{'minValue':'{0}','maxValue':'{1}','code':'{2}'}},", clr.Min, clr.Max, clr.ColorCode) + Next + range.Replace(",", "]},", range.Length - 1, 1) + + 'build data object + Dim data As New StringBuilder + data.Append("'data':[") + For Each country In countries + + data.AppendFormat("{{'id':'{0}','value':'{1}','showLabel':'{2}'}},", country.ID, country.Value, country.ShowLabel) + Next + data.Replace(",", "]", data.Length - 1, 1) + jsonData.Append(range) + jsonData.Append(data) + jsonData.Append("}") + 'Create map instance + 'map type, mapid, width, height, data format, data + + Dim first_map As New Chart("world", "first_map", "800", "500", "json", jsonData.ToString()) + 'render map + Literal1.Text = first_map.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/GetDataSelectScatterChart.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/GetDataSelectScatterChart.aspx new file mode 100755 index 0000000000000000000000000000000000000000..3d57c7f453ee53488e849c0b4361e12f976cf5f4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/GetDataSelectScatterChart.aspx @@ -0,0 +1,102 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="GetDataSelectScatterChart.aspx.vb" Inherits="Pages_GetDataSelectScatterChart" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Get data from select scatter chart and show them in tabular format</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + onRenderComplete = function (evtObj, argObj) { + + // creating div for controllers + var controllers = document.createElement('div'); + controllers.setAttribute('id', 'controllers'); + controllers.style.display = "inline-block"; + controllers.innerHTML = "<div id='tableView-1' style='width:500px;display:none;margin-left:0px;max-height:250px;overflow:scroll;border: 1px solid #CCCCCC;margin: 3px;float: left;display:none; color: #666666;font-family:'Arial','Helvetica';font-size: 12px;'></div>"; + //Display container div and write table + document.getElementById("showData").appendChild(controllers); + // argObj.container.parentNode.insertBefore(controllers, argObj.container.nextSibling); + /* + * getDataFromChart method prepares the + * tabular string from selection and + * write in a div and display it. + */ + evtObj.sender.getDataFromChart = function() { + var i, + j, + str, + ds = "", + dataArr, + flagData = false, + objDataset = evtObj.sender.getJSONData && evtObj.sender.getJSONData().dataset, + tableContainer = document.getElementById("tableView-1"); + + //Form tabular string + str = "<div style='margin:3px;font-family:'Arial','Helvetica';font-size: 12px;'> Data is returned by the chart as Array. The data is converted into tabular format using JavaScript.</div>"; + str += '<table border="1" cellpadding="1" cellspacing="0" bordercolor="#ffffff" width="100%">'; + for (i in objDataset) { + dataArr = objDataset[i].data; + if (dataArr.length > 0) { + flagData = true; + str += ' <tr>'; + str += ' <td width="20%" style="font-weight: bold;font-size: 14px;vertical-align: top;text-align:right;padding: 3px" color="' + objDataset[i].color + '">' + objDataset[i].seriesname + '</td>'; + + ds = '<table border="1" cellpadding="1" cellspacing="0" bordercolor="' + objDataset[i].color + '" width="100%">'; + ds += '<tr>'; + ds += '<td width="20%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Id</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Price (in USD)</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Quantity Sold</td>'; + ds += '</tr>'; + for (j = 0; j < dataArr.length; j++) { + var id = String(dataArr[j].id), + price = String(dataArr[j].x), + qty = String(dataArr[j].y); + + ds += '<tr>'; + ds += '<td width="20%" align="center">' + id + '</td>'; + ds += '<td width="40%" align="center">$' + price + ' </td>'; + ds += '<td width="40%" align="center">' + qty + ' units</td>'; + ds += '</tr>'; + } + ds += '</table>'; + str += ' <td width="80%" style="padding: 3px">' + ds + '</td>'; + str += ' </tr>'; + } + + } + str += '</table>'; + if (!flagData) { + str = "No Data Selected"; + } + tableContainer.style.display = "block"; + tableContainer.innerHTML = str; + } + }, + onBeforeDataSubmit = function (evtObj, argObj) { + + evtObj.sender.getDataFromChart(); + }, + onDataRestored = function (evtObj, argObj) { + + document.getElementById("tableView-1").style.display = "none"; + document.getElementById("tableView-1").innerHTML = ""; + } + + </script> + <form id="form1" runat="server"> + <h3>Get data from select scatter chart and show them in tabular format</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div id ="showData"></div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/GetDataSelectScatterChart.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/GetDataSelectScatterChart.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..39ea95c57cc69073aabd6a3023660960076b24b6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/GetDataSelectScatterChart.aspx.vb @@ -0,0 +1,12 @@ +Imports FusionCharts.Charts +Partial Class Pages_GetDataSelectScatterChart + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'theme': 'fusion', 'caption': 'Products Sold vs. Price points', 'subcaption': 'Harry\'s SuperMart - Last Week', 'yaxisname': 'Quantity Sold', 'xaxisname': 'Price(In US $)', 'xaxismaxvalue': '1000', 'xaxisminvalue': '100', 'yaxismaxvalue': '200', 'xnumberprefix': '$', 'ynumbersuffix': ' units', 'showcanvasborder': '1', 'canvasborderthickness': '0.4', 'canvasborderalpha': '50', 'showXAxisLine': '0', 'showformbtn': '1', 'formAction': '#', 'submitdataasxml': '1' }, 'categories': [ { 'verticallinecolor': '666666', 'verticallinethickness': '1', 'alpha': '40', 'category': [ { 'label': '$100', 'x': '100', 'showverticalline': '0' }, { 'label': '$200', 'x': '200', 'showverticalline': '1' }, { 'label': '$300', 'x': '300', 'showverticalline': '1' }, { 'label': '$400', 'x': '400', 'showverticalline': '1' }, { 'label': '$500', 'x': '500', 'showverticalline': '1' }, { 'label': '$600', 'x': '600', 'showverticalline': '1' }, { 'label': '$700', 'x': '700', 'showverticalline': '1' }, { 'label': '$800', 'x': '800', 'showverticalline': '1' }, { 'label': '$900', 'x': '900', 'showverticalline': '1' }, { 'label': '$1000', 'x': '1000', 'showverticalline': '0' } ] } ], 'dataset': [ { 'drawline': '0', 'seriesname': 'Televisions', 'color': '#6baa01', 'anchorsides': '3', 'anchorradius': '4', 'anchorbgcolor': '#6baa01', 'anchorbordercolor': '#6baa01', 'data': [ { 'id': 'TV_1', 'y': '559', 'x': '714' }, { 'id': 'TV_2', 'y': '293', 'x': '988' }, { 'id': 'TV_3', 'y': '231', 'x': '970' }, { 'id': 'TV_4', 'y': '528', 'x': '142' }, { 'id': 'TV_5', 'y': '95', 'x': '800' }, { 'id': 'TV_6', 'y': '515', 'x': '813' }, { 'id': 'TV_7', 'y': '444', 'x': '928' }, { 'id': 'TV_8', 'y': '592', 'x': '238' }, { 'id': 'TV_9', 'y': '229', 'x': '959' }, { 'id': 'TV_10', 'y': '238', 'x': '521' }, { 'id': 'TV_11', 'y': '285', 'x': '222' }, { 'id': 'TV_12', 'y': '524', 'x': '863' }, { 'id': 'TV_13', 'y': '422', 'x': '820' }, { 'id': 'TV_14', 'y': '344', 'x': '894' }, { 'id': 'TV_15', 'y': '510', 'x': '800' }, { 'id': 'TV_16', 'y': '132', 'x': '785' }, { 'id': 'TV_17', 'y': '381', 'x': '214' }, { 'id': 'TV_18', 'y': '210', 'x': '961' }, { 'id': 'TV_19', 'y': '496', 'x': '575' }, { 'id': 'TV_20', 'y': '330', 'x': '847' }, { 'id': 'TV_21', 'y': '436', 'x': '893' }, { 'id': 'TV_22', 'y': '406', 'x': '157' }, { 'id': 'TV_23', 'y': '125', 'x': '349' }, { 'id': 'TV_24', 'y': '450', 'x': '818' }, { 'id': 'TV_25', 'y': '455', 'x': '615' }, { 'id': 'TV_26', 'y': '328', 'x': '256' }, { 'id': 'TV_27', 'y': '188', 'x': '460' }, { 'id': 'TV_28', 'y': '565', 'x': '350' }, { 'id': 'TV_29', 'y': '149', 'x': '582' }, { 'id': 'TV_30', 'y': '425', 'x': '970' } ] }, { 'seriesname': 'Cell Phones', 'color': '#f8bd19', 'anchorsides': '4', 'anchorradius': '4', 'anchorbgcolor': '#f8bd19', 'anchorbordercolor': '#f8bd19', 'data': [ { 'id': 'Mob_1', 'y': '335', 'x': '156' }, { 'id': 'Mob_2', 'y': '339', 'x': '927' }, { 'id': 'Mob_3', 'y': '328', 'x': '847' }, { 'id': 'Mob_4', 'y': '1', 'x': '177' }, { 'id': 'Mob_5', 'y': '246', 'x': '175' }, { 'id': 'Mob_6', 'y': '368', 'x': '441' }, { 'id': 'Mob_7', 'y': '146', 'x': '200' }, { 'id': 'Mob_8', 'y': '347', 'x': '482' }, { 'id': 'Mob_9', 'y': '1', 'x': '463' }, { 'id': 'Mob_10', 'y': '63', 'x': '440' }, { 'id': 'Mob_11', 'y': '77', 'x': '211' }, { 'id': 'Mob_12', 'y': '108', 'x': '824' }, { 'id': 'Mob_13', 'y': '44', 'x': '850' }, { 'id': 'Mob_14', 'y': '77', 'x': '712' }, { 'id': 'Mob_15', 'y': '15', 'x': '199' }, { 'id': 'Mob_16', 'y': '333', 'x': '836' }, { 'id': 'Mob_17', 'y': '31', 'x': '482' }, { 'id': 'Mob_18', 'y': '90', 'x': '604' }, { 'id': 'Mob_19', 'y': '294', 'x': '716' }, { 'id': 'Mob_20', 'y': '241', 'x': '870' }, { 'id': 'Mob_21', 'y': '258', 'x': '421' }, { 'id': 'Mob_22', 'y': '186', 'x': '456' }, { 'id': 'Mob_23', 'y': '255', 'x': '327' }, { 'id': 'Mob_24', 'y': '203', 'x': '995' }, { 'id': 'Mob_25', 'y': '35', 'x': '792' } ] } ] }" + Dim scatter As Chart = New Chart("selectscatter", "select_scatter", "500", "400", "json", jsonData) + scatter.AddEvent("renderComplete", "onRenderComplete") + scatter.AddEvent("beforeDataSubmit", "onBeforeDataSubmit") + scatter.AddEvent("dataRestored", "onDataRestored") + Literal1.Text = scatter.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Handler/Handler.ashx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Handler/Handler.ashx new file mode 100755 index 0000000000000000000000000000000000000000..0d0c45dec9fd97e280d7fa6f62bd0ebefb901f90 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Handler/Handler.ashx @@ -0,0 +1,113 @@ +<%@ WebHandler Language="VB" Class="Handler" %> + + +Imports System.Data +Imports System.Data.SqlClient + + +Public Class Handler : Implements IHttpHandler + + Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest + context.Response.ContentType = "application/json" + ' array to store level mapping for each column + Dim levelValueMapping() As String = {"region", "country", "city"} + Dim drillLevel, query, label As String + drillLevel = context.Request("drillLevel") + query = "" + label = "" + If String.IsNullOrEmpty(drillLevel) Then + + drillLevel = "0" + ' build custom query + ' parameter: column to be fetch + query = BuildQuery(levelValueMapping((Convert.ToInt16(drillLevel)))) + Else + + drillLevel = (Convert.ToInt16(drillLevel) + 1).ToString() + label = context.Request("label") + ' build custom query + ' parameter: column to be fetch, previously clicked value, previous level column name + query = BuildQuery(levelValueMapping((Convert.ToInt16(drillLevel))), label, levelValueMapping((Convert.ToInt16(drillLevel) - 1))) + End If + Dim dt As DataTable + ' establish DB connection and fetch chart data + dt = GetChartData(query) + + Dim chartJsonData As String = ProcessChartData(dt, levelValueMapping((Convert.ToInt16(drillLevel))), drillLevel, levelValueMapping.Length) + context.Response.Write(chartJsonData) + End Sub + + Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable + Get + Return False + End Get + End Property + + Private Function ProcessChartData(ByVal dt As DataTable, ByVal columnName As String, ByVal drillLevel As String, ByVal maxLevel As Integer) As String + Dim linkParam As String = "newchart-jsonurl-Handler/Handler.ashx?label={0}&drillLevel={1}" + Dim jsonData As New StringBuilder + Dim data As New StringBuilder + + 'store chart config name-config value pair + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Total Sales by " + columnName) + chartConfig.Add("xAxisName", columnName) + chartConfig.Add("yAxisName", "Total Sales") + chartConfig.Add("numberSuffix", "k") + chartConfig.Add("theme", "fusion") + + ' json data to use as chart data source + jsonData.Append("{""chart"":{") + For Each config In chartConfig + jsonData.AppendFormat("""{0}"":""{1}"",", config.Key, config.Value) + Next + jsonData.Replace(",", "},", jsonData.Length - 1, 1) + + ' build data object from label-value pair + data.Append("""data"":[") + For Each row As DataRow In dt.Rows + If Convert.ToInt16(drillLevel) < maxLevel - 1 Then + Dim link As String = String.Format(linkParam, row(0).ToString(), drillLevel) + ' String link = String.Format(linkParam, row[0].ToString(), drillLevel); + data.AppendFormat("{{""label"":""{0}"",""value"":""{1}"", ""link"": ""{2}""}},", row(0).ToString(), row(1).ToString(), link) + Else + data.AppendFormat("{{""label"":""{0}"",""value"": ""{1}""}},", row(0).ToString(), row(1).ToString()) + End If + + Next row + data.Replace(",", "]", data.Length - 1, 1) + + jsonData.Append(data.ToString()) + jsonData.Append("}") + ProcessChartData = jsonData.ToString() + + End Function + + Private Function BuildQuery(ByVal columnName As String) As String + Dim query As String + query = "select " + columnName + ", SUM([Total Sales]) as [Total Sales]" + "from Sales_Record group by " + columnName + BuildQuery = query + End Function + + Private Function BuildQuery(ByVal columnName As String, ByVal parentValue As String, ByVal parentName As String) As String + Dim query As String + query = "select " + columnName + ", SUM([Total Sales]) as [Total Sales]" + "from Sales_Record where " + parentName + "= '" + parentValue + "'Group by " + columnName + BuildQuery = query + End Function + + Private Function GetChartData(ByVal query As String) As DataTable + Dim dt As New DataTable + Dim serverName As String = "POUSHALI-PC\SHAREPOINT" + Dim databaseName As String = "DrillDownDB" + Dim connetionString As String = "Data Source=" + serverName + ";Initial Catalog=" + databaseName + ";Trusted_Connection=True;" + Dim connection As SqlConnection = New SqlConnection() + connection.ConnectionString = connetionString + connection.Open() + Dim adp As SqlDataAdapter = New SqlDataAdapter(query, connection) + adp.Fill(dt) + connection.Close() + GetChartData = dt + End Function + + +End Class \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/HighlightDataPoint.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/HighlightDataPoint.aspx new file mode 100755 index 0000000000000000000000000000000000000000..2cb422c95d78dc4bdd1a75faa2c224012b0a4e92 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/HighlightDataPoint.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="HighlightDataPoint.aspx.vb" Inherits="Pages_ChartlightDataPoint" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | HighLight one Data Point</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>HighLight one Data Point</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/HighlightDataPoint.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/HighlightDataPoint.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..7f3b53182424bdf616dadebde9ba1ee707a3315a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/HighlightDataPoint.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class Pages_ChartlightDataPoint + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Bakersfield Central - Total footfalls', 'subCaption': 'Last week', 'xAxisName': 'Day', 'yAxisName': 'No. of Visitors (In 1000s)', 'showValues': '0', 'theme': 'fusion' }, 'annotations':{ 'groups': [ { 'id': 'anchor-highlight', 'items': [ { 'id': 'high-star', 'type': 'circle', 'x': '$dataset.0.set.2.x', 'y': '$dataset.0.set.2.y', 'radius': '12', 'color': '#6baa01', 'border': '2', 'borderColor': '#f8bd19' }, { 'id': 'label', 'type': 'text', 'text': 'Highest footfall 25.5K', 'fillcolor': '#6baa01', 'rotate': '90', 'x': '$dataset.0.set.2.x+75', 'y': '$dataset.0.set.2.y-2' } ] } ] }, 'data': [ { 'label': 'Mon', 'value': '15123' }, { 'label': 'Tue', 'value': '14233' }, { 'label': 'Wed', 'value': '25507' }, { 'label': 'Thu', 'value': '9110' }, { 'label': 'Fri', 'value': '15529' }, { 'label': 'Sat', 'value': '20803' }, { 'label': 'Sun', 'value': '19202' } ] }" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "json", jsonData) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/InteractiveEvent.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/InteractiveEvent.aspx new file mode 100755 index 0000000000000000000000000000000000000000..f4509f1fd3c93ba51cd44c3876012b3f777998f2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/InteractiveEvent.aspx @@ -0,0 +1,35 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="InteractiveEvent.aspx.vb" Inherits="Pages_InteractiveEvent" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Show data plot value on click</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onDataplotClick(eventObj) { + var dataValue = eventObj.data.dataValue; + var categoryLabel = eventObj.data.categoryLabel; + + document.getElementById("plotclick").innerHTML = "category: " + categoryLabel + "\n" + "value: " + dataValue; + + } + </script> + <form id="form1" runat="server"> + <h3>Show data plot value on click</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p id="plotclick"></p> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/InteractiveEvent.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/InteractiveEvent.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..24131ba188a1db500a0082b201a57e58f66e9b5d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/InteractiveEvent.aspx.vb @@ -0,0 +1,10 @@ +Imports FusionCharts.Charts +Partial Class Pages_InteractiveEvent + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + column2d.AddEvent("dataplotClick", "onDataplotClick") + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/JsonDataUrl.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/JsonDataUrl.aspx new file mode 100755 index 0000000000000000000000000000000000000000..cec117a5aef09bc232c8e9978429aa259e3df5cf --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/JsonDataUrl.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="JsonDataUrl.aspx.vb" Inherits="JsonDataUrl" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from JSON URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from JSON URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/JsonDataUrl.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/JsonDataUrl.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..147cf8babce6e0be87a865335926862ad39fb504 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/JsonDataUrl.aspx.vb @@ -0,0 +1,15 @@ +Imports FusionCharts.Charts +Partial Class JsonDataUrl + Inherits System.Web.UI.Page + + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim jsonDataUrl As String + jsonDataUrl = "../Data/jsonData.json" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "jsonurl", jsonDataUrl) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCOlumn2D.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCOlumn2D.aspx new file mode 100755 index 0000000000000000000000000000000000000000..fc25014b4228d898dc991985239b25725552b4fe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCOlumn2D.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MSCOlumn2D.aspx.vb" Inherits="MSCOlumn2D" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Multiseries Column 2D Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Multiseries Column 2D Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCOlumn2D.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCOlumn2D.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..9016f4371240a00c54b1db353a039cd2628d29b2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCOlumn2D.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class MSCOlumn2D + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'App Publishing Trend', 'subCaption': '2012-2016', 'xAxisName': 'Years', 'yAxisName' : 'Total number of apps in store', 'formatnumberscale': '1', 'drawCrossLine':'1', 'plotToolText' : '<b>$dataValue</b> apps on $seriesName in $label', 'theme': 'fusion' }, 'categories': [{ 'category': [{'label': '2012' }, {'label': '2013' }, {'label': '2014' }, {'label': '2015' },{ 'label': '2016' } ] }], 'dataset': [{ 'seriesname': 'iOS App Store', 'data': [{'value': '125000' }, {'value': '300000' }, {'value': '480000' }, {'value': '800000' }, {'value': '1100000' }] }, { 'seriesname': 'Google Play Store', 'data': [{'value': '70000' }, {'value': '150000' }, {'value': '350000' }, {'value': '600000' },{'value': '1400000' }] }, { 'seriesname': 'Amazon AppStore', 'data': [{'value': '10000' }, {'value': '100000' }, {'value': '300000' }, {'value': '600000' },{'value': '900000' }] }] }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim mscombi As New Chart("mscolumn2d", "column_chart", "800", "400", "json", jsonData) + 'render chart + Literal1.Text = mscombi.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCombi3D.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCombi3D.aspx new file mode 100755 index 0000000000000000000000000000000000000000..5c829cac2820d946dff5b8d61e968fea59c8dc94 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCombi3D.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MSCombi3D.aspx.vb" Inherits="MSCombi3D" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Multiseries Combination 3D Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Multiseries Combination 3D Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCombi3D.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCombi3D.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..85a831a2eb9f315a2826a0032e2e03f244eb39a5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MSCombi3D.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class MSCombi3D + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Salary Hikes by Country', 'subCaption': '2016 - 2017', 'showhovereffect': '1', 'numberSuffix': '%', 'rotatelabels': '1', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Australia' }, { 'label': 'New-Zealand' }, { 'label': 'India' }, { 'label': 'China' }, { 'label': 'Myanmar' }, { 'label': 'Bangladesh' }, { 'label': 'Thailand' }, { 'label': 'South Korea' }, { 'label': 'Hong Kong' }, { 'label': 'Singapore' }, { 'label': 'Taiwan' }, { 'label': 'Vietnam' }] }], 'dataset': [{ 'seriesName': '2016 Actual Salary Increase', 'plotToolText' : 'Salaries increased by <b>$dataValue</b> in 2016', 'data': [{ 'value': '3' }, { 'value': '3' }, { 'value': '10' }, { 'value': '7' }, { 'value': '7.4' }, { 'value': '10' }, { 'value': '5.4' }, { 'value': '4.5' }, { 'value': '4.1' }, { 'value': '4' }, { 'value': '3.7' }, { 'value': '9.3' }] }, { 'seriesName': '2017 Projected Salary Increase', 'plotToolText' : 'Salaries expected to increase by <b>$dataValue</b> in 2017', 'renderAs': 'line', 'data': [{ 'value': '3' }, { 'value': '2.8' }, { 'value': '10' }, { 'value': '6.9' }, { 'value': '6.7' }, { 'value': '9.4' }, { 'value': '5.5' }, { 'value': '5' }, { 'value': '4' }, { 'value': '4' }, { 'value': '4.5' }, { 'value': '9.8' }] }, { 'seriesName': 'Inflation rate', 'plotToolText' : '$dataValue projected inflation', 'renderAs': 'area', 'showAnchors':'0', 'data': [{ 'value': '1.6' }, { 'value': '0.6' }, { 'value': '5.6' }, { 'value': '2.3' }, { 'value': '7' }, { 'value': '5.6' }, { 'value': '0.2' }, { 'value': '1' }, { 'value': '2.6' }, { 'value': '0' }, { 'value': '1.1' }, { 'value': '2.4' }] }] }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim mscombi As New Chart("mscombi3d", "ms_combi_3d", "800", "400", "json", jsonData) + 'render chart + Literal1.Text = mscombi.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MapWithXmlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MapWithXmlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c428b678eaea727558ac4e4618e9b6883e54ac61 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MapWithXmlData.aspx @@ -0,0 +1,18 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MapWithXmlData.aspx.vb" Inherits="MapWithXmlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <title></title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MapWithXmlData.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MapWithXmlData.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..7e10eebd7f8957c590a539672c5b08b1c391d57e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/MapWithXmlData.aspx.vb @@ -0,0 +1,152 @@ +Imports System.Xml.Linq.XElement +Imports FusionCharts.Charts +Partial Class MapWithXmlData + Inherits System.Web.UI.Page + 'Create colorRange class + 'It will store Min range Max range And specific color code for each range + Class ColorRange + Private lowerLimit As Double + Private upprLimit As Double + Private code As String + 'lower value of range set as property + Property Min() As Double + Get + Return lowerLimit + + End Get + Set(value As Double) + lowerLimit = value + End Set + End Property + 'upper value of range set as property + Property Max() As Double + Get + Return upprLimit + + End Get + Set(value As Double) + upprLimit = value + End Set + End Property + ' specific color code for this range + Property ColorCode() As String + Get + Return code + + End Get + Set(value As String) + code = value + End Set + End Property + 'constructor + Public Sub New(ByVal lowerLimit As Double, ByVal upperLimit As Double, ByVal code As String) + Min = lowerLimit + Max = upperLimit + ColorCode = code + End Sub + + End Class + 'Create countryData class + 'It will store id, value And show label for each country + Class CountryData + Private cid As String + Private cvalue As Double + Private label As Integer + 'country id set as a property + Property ID() As String + Get + Return cid + + End Get + Set(value As String) + cid = value + End Set + End Property + 'data value for a country set as property + Property Value() As Double + Get + Return cvalue + + End Get + Set(value As Double) + cvalue = value + End Set + End Property + ' whether show label or not + Property ShowLabel() As Integer + Get + Return label + + End Get + Set(value As Integer) + label = value + End Set + End Property + 'constructor + Public Sub New(ByVal cntryid As String, ByVal val As Double, ByVal lbl As Integer) + ID = cntryid + Value = val + ShowLabel = lbl + End Sub + + End Class + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + ' store chart config name-config value pair + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Average Annual Population Growth") + chartConfig.Add("subCaption", " 1955-2015") + chartConfig.Add("includevalueinlabels", "1") + chartConfig.Add("labelsepchar", ": ") + chartConfig.Add("numberSuffix", "%") + chartConfig.Add("entityFillHoverColor", "#FFF9C4") + chartConfig.Add("theme", "fusion") + + 'store color code for different range + Dim color As New List(Of ColorRange) + color.Add(New ColorRange(0.5, 1.0, "#FFD74D")) + color.Add(New ColorRange(1.0, 2.0, "#FB8C00")) + color.Add(New ColorRange(2.0, 3.0, "#E65100")) + + 'store country data + Dim countries As New List(Of CountryData) + countries.Add(New CountryData("NA", 0.82, 1)) + countries.Add(New CountryData("SA", 2.04, 1)) + countries.Add(New CountryData("AS", 1.78, 1)) + countries.Add(New CountryData("EU", 0.4, 1)) + countries.Add(New CountryData("AF", 2.58, 1)) + countries.Add(New CountryData("AU", 1.3, 1)) + + ' create root element as + Dim root As New XElement("chart") + For Each config In chartConfig + root.SetAttributeValue(config.Key, config.Value) + Next + + ' colorRange element + Dim colorrange As New XElement("colorrange") + For Each clr In color + Dim colorElement As New XElement("color") + colorElement.SetAttributeValue("minvalue", clr.Min.ToString()) + colorElement.SetAttributeValue("maxvalue", clr.Max.ToString()) + colorElement.SetAttributeValue("code", clr.ColorCode.ToString()) + colorrange.Add(colorElement) + + Next + root.Add(colorrange) + 'itarate through country-data store + For Each country In countries + Dim setElement As New XElement("set") + setElement.SetAttributeValue("id", country.ID.ToString()) + setElement.SetAttributeValue("value", country.Value.ToString()) + setElement.SetAttributeValue("showlabel", country.ShowLabel.ToString()) + root.Add(setElement) + Next + ' convert xml root element to string + Dim xmlData As String + xmlData = root.ToString().Replace("""", "'").Replace(vbLf, " ").Replace(vbCr, " ") + ' Create chart instance + ' charttype, chartID, width, height, data format, data + Dim first_chart As New Chart("world", "worldmap", "800", "500", "xml", xmlData) + Literal1.Text = first_chart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/NumberFormatModule.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/NumberFormatModule.aspx new file mode 100755 index 0000000000000000000000000000000000000000..20a22bcd1df88511d02c821e1930d27722a02a9f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/NumberFormatModule.aspx @@ -0,0 +1,32 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="NumberFormatModule.aspx.vb" Inherits="Pages_NumberFormatModule" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Use of fusioncharts number module API</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onRenderComplete(eventObj) { + var formattedNumber = eventObj.sender.formatNumber(1234.5); + document.getElementById("rendered").innerHTML = "format 1234.5 : " + formattedNumber; + + } + </script> + <form id="form1" runat="server"> + <h3>Use of fusioncharts number module API</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + <div> + <p id ="rendered"></p> + </div> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/NumberFormatModule.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/NumberFormatModule.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..9000c28bb583cf68d3da25226e800e3cf0ad4656 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/NumberFormatModule.aspx.vb @@ -0,0 +1,10 @@ +Imports FusionCharts.Charts +Partial Class Pages_NumberFormatModule + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberPrefix': '$', 'decimals': '2', 'forceDecimals': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + column2d.AddEvent("renderComplete", "onRenderComplete") + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Pie3D.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Pie3D.aspx new file mode 100755 index 0000000000000000000000000000000000000000..c9b6b83daa4ea6d08034b8bb0246a08aa8186c01 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Pie3D.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Pie3D.aspx.vb" Inherits="Pie3D" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Pie 3D Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Pie 3D Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Pie3D.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Pie3D.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..db002a6e16383e38829a4b48af46ed08b47983f6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/Pie3D.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class Pie3D + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Recommended Portfolio Split', 'subCaption' : 'For a net-worth of $1M', 'showValues':'1', 'showPercentInTooltip' : '0', 'numberPrefix' : '$', 'enableMultiSlicing':'1', 'theme': 'fusion' }, 'data': [{ 'label': 'Equity', 'value': '300000' }, { 'label': 'Debt', 'value': '230000' }, { 'label': 'Bullion', 'value': '180000' }, { 'label': 'Real-estate', 'value': '270000' }, { 'label': 'Insurance', 'value': '20000' }] }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim pie3d As New Chart("pie3d", "pie_chart", "800", "400", "json", jsonData) + 'render chart + Literal1.Text = pie3d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLevelAPI.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLevelAPI.aspx new file mode 100755 index 0000000000000000000000000000000000000000..78e756ee0f7236c6d4aea279d56fafe74fa4da88 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLevelAPI.aspx @@ -0,0 +1,99 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ProductLevelAPI.aspx.vb" Inherits="Pages_ProductLevelAPI" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + <title>FusionCharts | Change chart properties dynamically</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + changeCaption = function () { + debugger; + FusionCharts("first_chart").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(){ + FusionCharts("first_chart").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(){ + FusionCharts("first_chart").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + resetChanges = function () { + + FusionCharts("first_chart").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("first_chart").setChartAttribute('xAxisName', 'Country'); + FusionCharts("first_chart").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } + </script> + <form id="form1" runat="server"> + <h3>Change chart properties dynamically</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onclick="changeCaption()" /> + <label for="radio1">Change Caption: Test Caption</label> + <input type="radio" id="radio2" name="radios" onclick="changeXAxisName()" /> + <label for="radio2">Change X-Axis Name: Test X-Axis</label> + <input type="radio" id="radio3" name="radios" onclick="changeYAxisName()" /> + <label for="radio3">Change Y-Axis Name: Test Y-Axis</label> + <input type="radio" id="radio4" name="radios" onclick="resetChanges()" /> + <label for="radio4">Reset</label> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLevelAPI.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLevelAPI.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..1f4eb1f33cd94d2dcf41b1f8780cd73b451e24e6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLevelAPI.aspx.vb @@ -0,0 +1,9 @@ +Imports FusionCharts.Charts +Partial Class Pages_ProductLevelAPI + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLifeCycleEvent.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLifeCycleEvent.aspx new file mode 100755 index 0000000000000000000000000000000000000000..76453ad2abfe5470b3f8d9ac83d18ad9240cb797 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLifeCycleEvent.aspx @@ -0,0 +1,32 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ProductLifeCycleEvent.aspx.vb" Inherits="Pages_ProductLifeCycleEvent" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | sample to showcase one product life cycle event attachment</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onDataLoaded() { + document.getElementById("dataLoaded").innerHTML = "chart data is loaded succesfully"; + + } + </script> + <form id="form1" runat="server"> + <h3>sample to showcase one product life cycle event attachment</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p id ="dataLoaded"></p> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLifeCycleEvent.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLifeCycleEvent.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..64d7a932ad96a6781d45103d8f9817b6565c6b59 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/ProductLifeCycleEvent.aspx.vb @@ -0,0 +1,10 @@ +Imports FusionCharts.Charts +Partial Class Pages_ProductLifeCycleEvent + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + Dim column2d As Chart = New Chart("column2d", "first_chart", "700", "400", "json", jsonData) + column2d.AddEvent("dataLoaded", "onDataLoaded") + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/RenderCharWithPercentageWidthHeight.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/RenderCharWithPercentageWidthHeight.aspx new file mode 100755 index 0000000000000000000000000000000000000000..497ec1239a0904343d23dbccb8701dcd5a23b5c6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/RenderCharWithPercentageWidthHeight.aspx @@ -0,0 +1,55 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="RenderCharWithPercentageWidthHeight.aspx.vb" Inherits="Pages_RenderCharWithPercentageWidthHeight" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart Auto Resize Sample</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeSize(this.value); + }; + } + } + }); + + + function changeSize(size) { + document.getElementById('chartContainer').style.width = size.split('x')[0] + 'px'; + document.getElementById('chartContainer').style.height = size.split('x')[1] + 'px'; + }; + </script> + <h3>Chart Auto Resize Sample</h3> + <div align="center"> + <label style="padding: 0px 5px !important;">Select Chart Container Size (in pixels)</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="400x300"/>400x300 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="600x500"/>600x500 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="800x600"/>800x600 + </label> + </div> + <form id="form1" runat="server"> + + <div id="chartContainer" style="border-style: solid;border-color:#5a5a5a;width: 400px; height: 300px;" align="center"> + <asp:Literal ID="Literal1" runat="server" ></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/RenderCharWithPercentageWidthHeight.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/RenderCharWithPercentageWidthHeight.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..7af58be2594ab3ec2f4eb3c682393287a350cbc7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/RenderCharWithPercentageWidthHeight.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class Pages_RenderCharWithPercentageWidthHeight + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "100%", "100%", "json", jsonData) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialChartTypeAPI.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialChartTypeAPI.aspx new file mode 100755 index 0000000000000000000000000000000000000000..bbf67b1b0afe4636d31f0cb85949401ed65596df --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialChartTypeAPI.aspx @@ -0,0 +1,70 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SpecialChartTypeAPI.aspx.vb" Inherits="Pages_SpecialChartTypeAPI" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | shocasing use special chart type API</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + plotClickHandler = function(event){ + clickedPlot = (event.data.categoryLabel).toLowerCase(); + if (selectedItem !== clickedPlot) { + selectedItem = clickedPlot; + } else{ + selectedItem = 'none'; + } + }; + selectedItem = "none"; + noneChecked = function(){ + FusionCharts("first_chart").slicePlotItem(0,false); + FusionCharts("first_chart").slicePlotItem(1,false); + FusionCharts("first_chart").slicePlotItem(2,false); + FusionCharts("first_chart").slicePlotItem(3,false); + } + apacheChecked = function(){ + FusionCharts("first_chart").slicePlotItem(0,true); + } + microsoftChecked = function(){ + FusionCharts("first_chart").slicePlotItem(1,true); + } + zeusChecked = function(){ + FusionCharts("first_chart").slicePlotItem(2,true); + } + otherChecked = function(){ + FusionCharts("first_chart").slicePlotItem(3,true); + } + </script> + <form id="form1" runat="server"> + <h3>shocasing use special chart type API</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" checked="checked" onclick="noneChecked()"/> None + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="apacheChecked()"/> Apache + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="microsoftChecked()"/> Microsoft + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="zeusChecked()"/> Zeus + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="otherChecked()"/> Other + </label> + </div> + <br/> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialChartTypeAPI.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialChartTypeAPI.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..db8095ec415b148b76ba0cf33d5c513be5fa020d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialChartTypeAPI.aspx.vb @@ -0,0 +1,10 @@ +Imports FusionCharts.Charts +Partial Class Pages_SpecialChartTypeAPI + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Market Share of Web Servers', 'plottooltext': '<b>$percentValue</b> of web servers run on $label servers', 'showLegend': '0', 'enableMultiSlicing': '0', 'showPercentValues': '1', 'legendPosition': 'bottom', 'useDataPlotColorForLabels': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Apache', 'value': '32647479' }, { 'label': 'Microsoft', 'value': '22100932' }, { 'label': 'Zeus', 'value': '14376' }, { 'label': 'Other', 'value': '18674221' }] }" + Dim column2d As Chart = New Chart("pie2d", "first_chart", "700", "400", "json", jsonData) + column2d.AddEvent("dataplotClick", "plotClickHandler") + Literal1.Text = column2d.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialEvent.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialEvent.aspx new file mode 100755 index 0000000000000000000000000000000000000000..9220a168c522df72802fa27810260dd3a94cea92 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialEvent.aspx @@ -0,0 +1,31 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SpecialEvent.aspx.vb" Inherits="Pages_SpecialEvent" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | example of data update event</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "previous value: " + eventObj.data.prevData; + + } + </script> + <form id="form1" runat="server"> + <h3>example of data update event</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div> + <p id ="dataUpdate"></p> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> + + </body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialEvent.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialEvent.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..89954e9d4ed0ba1e82b198dac675a04bc49aea43 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/SpecialEvent.aspx.vb @@ -0,0 +1,10 @@ +Imports FusionCharts.Charts +Partial Class Pages_SpecialEvent + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Server CPU Utilization', 'subcaption': 'food.hsm.com', 'lowerLimit': '0', 'upperLimit': '100', 'numberSuffix': '%', 'valueAbovePointer': '0', 'editmode':'1' }, 'colorRange': { 'color': [ { 'minValue': '0', 'maxValue': '35', 'label': 'Low', 'code': '#1aaf5d' }, { 'minValue': '35', 'maxValue': '70', 'label': 'Moderate', 'code': '#f2c500' }, { 'minValue': '70', 'maxValue': '100', 'label': 'High', 'code': '#c02d00' } ] }, 'pointers': { 'pointer': [ { 'value': '72.5' } ] } }" + Dim lineargauge As Chart = New Chart("hlineargauge", "horizontal_lineargauge", "500", "150", "json", jsonData) + lineargauge.AddEvent("realtimeUpdateComplete", "onUpdate") + Literal1.Text = lineargauge.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/StackedColumnLine2D.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/StackedColumnLine2D.aspx new file mode 100755 index 0000000000000000000000000000000000000000..83cc35acfefdd8d859484f6536b9bf941d9cc4cd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/StackedColumnLine2D.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="StackedColumnLine2D.aspx.vb" Inherits="StackedColumnLine2D" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Stacked Column 2D with Line Chart</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Stacked Column 2D with Line Chart</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> + +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/StackedColumnLine2D.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/StackedColumnLine2D.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..f0878ccfc044c4c20bad55494724624b20b4c7c0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/StackedColumnLine2D.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class StackedColumnLine2D + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{ 'chart': { 'showvalues': '0', 'caption': 'Apple\'s Revenue & Profit', 'subCaption': '(2013-2016)', 'numberprefix': '$', 'numberSuffix' : 'B', 'plotToolText' : 'Sales of $seriesName in $label was <b>$dataValue</b>', 'showhovereffect': '1', 'yaxisname': '$ (In billions)', 'showSum':'1', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': '2013' }, { 'label': '2014' }, { 'label': '2015' }, { 'label': '2016' }] }], 'dataset': [{ 'seriesname': 'iPhone', 'data': [{ 'value': '21' }, { 'value': '24' }, { 'value': '27' }, { 'value': '30' }] }, { 'seriesname': 'iPad', 'data': [{ 'value': '8' }, { 'value': '10' }, { 'value': '11' }, { 'value': '12' }] }, { 'seriesname': 'Macbooks', 'data': [{ 'value': '2' }, { 'value': '4' }, { 'value': '5' }, { 'value': '5.5' }] }, { 'seriesname': 'Others', 'data': [{ 'value': '2' }, { 'value': '4' }, { 'value': '9' }, { 'value': '11' }] }, { 'seriesname': 'Profit', 'plotToolText' : 'Total profit in $label was <b>$dataValue</b>', 'renderas': 'Line', 'data': [{ 'value': '17' }, { 'value': '19' }, { 'value': '13' }, { 'value': '18' }] }] }" + 'create chart instance + 'chart type, chart id, width, height, data format, data source as string + Dim stackLineCombi As New Chart("stackedColumn2DLine", "stackLineCombi", "600", "350", "json", jsonData) + 'render chart + Literal1.Text = stackLineCombi.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UpdateDataRuntTime.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UpdateDataRuntTime.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..480acca805cfac3793fb35c69654ddc11a29ed39 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UpdateDataRuntTime.aspx.vb @@ -0,0 +1,9 @@ +Imports FusionCharts.Charts +Partial Class Pages_UpdateDataRuntTime + Inherits System.Web.UI.Page + Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load + Dim jsonData As String = "{ 'chart': { 'caption': 'Customer Satisfaction Score', 'subcaption': 'Los Angeles Topanga', 'plotToolText': 'Current Score: $value', 'theme': 'fint', 'chartBottomMargin': '50', 'showValue': '1' }, 'colorRange': { 'color': [{ 'minValue': '0', 'maxValue': '45', 'code': '#e44a00' }, { 'minValue': '45', 'maxValue': '75', 'code': '#f8bd19' }, { 'minValue': '75', 'maxValue': '100', 'code': '#6baa01' }] }, 'dials': { 'dial': [{ 'value': '70', 'id': 'dial1' }] } }" + Dim lineargauge As Chart = New Chart("angulargauge", "angular_gauge", "500", "400", "json", jsonData) + Literal1.Text = lineargauge.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UsaMap.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UsaMap.aspx new file mode 100755 index 0000000000000000000000000000000000000000..065bc05d803176d23e3c9192a6b5d4f22c591fe6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UsaMap.aspx @@ -0,0 +1,22 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="UsaMap.aspx.vb" Inherits="UsaMap" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | USA Map</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/maps/fusioncharts.usa.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>USA Map</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UsaMap.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UsaMap.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..aa8eb35026a907c2a98190b058daa62fc8a6f271 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/UsaMap.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class UsaMap + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config data as json string + Dim jsonData As String + jsonData = "{ 'chart': { 'caption': 'Average Temperature of US States', 'subcaption': '1979 - 2000', 'entityFillHoverColor': '#F8F8E9', 'numberSuffix': '°F', 'showLabels': '1', 'borderThickness': '0.4', 'theme': 'fusion', 'entityToolText': '<b>$lname</b> has an average temperature of <b>$datavalue</b>' }, 'colorrange': { 'minvalue': '20', 'code': '#00A971', 'gradient': '1', 'color': [{ 'minvalue': '20', 'maxvalue': '40', 'code': '#EFD951' }, { 'minvalue': '40', 'maxvalue': '60', 'code': '#FD8963' }, { 'minvalue': '60', 'maxvalue': '80', 'code': '#D60100' } ] }, 'data': [{ 'id': 'HI', 'value': '70.0' }, { 'id': 'DC', 'value': '52.3' }, { 'id': 'MD', 'value': '54.2' }, { 'id': 'DE', 'value': '55.3' }, { 'id': 'RI', 'value': '50.1' }, { 'id': 'WA', 'value': '48.3' }, { 'id': 'OR', 'value': '48.4' }, { 'id': 'CA', 'value': '59.4' }, { 'id': 'AK', 'value': '26.6', }, { 'id': 'ID', 'value': '44.4' }, { 'id': 'NV', 'value': '49.9' }, { 'id': 'AZ', 'value': '60.3' }, { 'id': 'MT', 'value': '42.7' }, { 'id': 'WY', 'value': '42.0' }, { 'id': 'UT', 'value': '48.6' }, { 'id': 'CO', 'value': '45.1' }, { 'id': 'NM', 'value': '53.4' }, { 'id': 'ND', 'value': '40.4' }, { 'id': 'SD', 'value': '45.2' }, { 'id': 'NE', 'value': '48.8' }, { 'id': 'KS', 'value': '54.3' }, { 'id': 'OK', 'value': '59.6' }, { 'id': 'TX', 'value': '64.8' }, { 'id': 'MN', 'value': '41.2' }, { 'id': 'IA', 'value': '47.8' }, { 'id': 'MO', 'value': '54.5' }, { 'id': 'AR', 'value': '60.4' }, { 'id': 'LA', 'value': '66.4' }, { 'id': 'WI', 'value': '43.1' }, { 'id': 'IL', 'value': '51.8' }, { 'id': 'KY', 'value': '55.6' }, { 'id': 'TN', 'value': '57.6' }, { 'id': 'MS', 'value': '63.4' }, { 'id': 'AL', 'value': '62.8' }, { 'id': 'GA', 'value': '63.5' }, { 'id': 'MI', 'value': '44.4' }, { 'id': 'IN', 'value': '51.7' }, { 'id': 'OH', 'value': '50.7' }, { 'id': 'PA', 'value': '48.8' }, { 'id': 'NY', 'value': '45.4' }, { 'id': 'VT', 'value': '42.9' }, { 'id': 'NH', 'value': '43.8' }, { 'id': 'ME', 'value': '41.0' }, { 'id': 'MA', 'value': '47.9' }, { 'id': 'CT', 'value': '49.0' }, { 'id': 'NJ', 'value': '52.7' }, { 'id': 'WV', 'value': '51.8' }, { 'id': 'VA', 'value': '55.1' }, { 'id': 'NC', 'value': '59.0' }, { 'id': 'SC', 'value': '62.4' }, { 'id': 'FL', 'value': '70.7' } ] }" + 'create chart instance + 'map type, map id, width, height, data format, data source as string + Dim usaMap As New Chart("usa", "usa_map", "800", "600", "json", jsonData) + 'render map + Literal1.Text = usaMap.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/WidgetWithXmlData.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/WidgetWithXmlData.aspx new file mode 100755 index 0000000000000000000000000000000000000000..faf5daa885a1c46bccf19d087e4a3e1529fdc0fe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/WidgetWithXmlData.aspx @@ -0,0 +1,18 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="WidgetWithXmlData.aspx.vb" Inherits="WidgetWithXmlData" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <title></title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/WidgetWithXmlData.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/WidgetWithXmlData.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..2f7da3279105d562a8ea375b71506e11c66fe086 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/WidgetWithXmlData.aspx.vb @@ -0,0 +1,102 @@ +Imports System.Xml.Linq.XElement +Imports FusionCharts.Charts +Partial Class WidgetWithXmlData + Inherits System.Web.UI.Page + 'Create colorRange class + 'It will store Min range Max range And specific color code for each range + Class ColorRange + Private lowerLimit As Integer + Private upprLimit As Integer + Private code As String + 'lower value of range set as property + Property Min() As Integer + Get + Return lowerLimit + + End Get + Set(value As Integer) + lowerLimit = value + End Set + End Property + 'upper value of range set as property + Property Max() As Integer + Get + Return upprLimit + + End Get + Set(value As Integer) + upprLimit = value + End Set + End Property + ' specific color code for this range + Property ColorCode() As String + Get + Return code + + End Get + Set(value As String) + code = value + End Set + End Property + 'constructor + Public Sub New(ByVal lowerLimit As Integer, ByVal upperLimit As Integer, ByVal code As String) + Min = lowerLimit + Max = upperLimit + ColorCode = code + End Sub + + End Class + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart config name-config value pair + + Dim chartConfig As New Dictionary(Of String, String) + chartConfig.Add("caption", "Nordstorm&s Customer Satisfaction Score for 2017") + chartConfig.Add("lowerLimit", "0") + chartConfig.Add("upperLimit", "100") + chartConfig.Add("showValue", "1") + chartConfig.Add("numberSuffix", "%") + chartConfig.Add("theme", "fusion") + chartConfig.Add("showToolTip", "0") + + Dim color As New List(Of ColorRange) + color.Add(New ColorRange(0, 50, "#F2726F")) + color.Add(New ColorRange(50, 75, "#FFC533")) + color.Add(New ColorRange(75, 100, "#62B58F")) + + 'store dial configuration + + Dim dial As New Dictionary(Of String, String) + dial.Add("value", "81") + ' create root element as + Dim root As New XElement("chart") + For Each config In chartConfig + root.SetAttributeValue(config.Key, config.Value) + Next + + ' colorRange element + Dim colorrange As New XElement("colorrange") + For Each clr In color + Dim colorElement As New XElement("color") + colorElement.SetAttributeValue("minvalue", clr.Min.ToString()) + colorElement.SetAttributeValue("maxvalue", clr.Max.ToString()) + colorElement.SetAttributeValue("code", clr.ColorCode.ToString()) + colorrange.Add(colorElement) + + Next + root.Add(colorrange) + Dim dialsElement As New XElement("dials") + For Each dialCnf In dial + Dim dialElement As New XElement("dial") + dialElement.SetAttributeValue(dialCnf.Key, dialCnf.Value) + dialsElement.Add(dialElement) + Next + root.Add(dialsElement) + ' convert xml root element to string + Dim xmlData As String + xmlData = root.ToString().Replace("""", "'").Replace(vbLf, " ").Replace(vbCr, " ") + ' Create chart instance + ' charttype, chartID, width, height, data format, data + Dim gauge As New Chart("angulargauge", "widget", "400", "350", "xml", xmlData) + Literal1.Text = gauge.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/XmlDataUrl.aspx b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/XmlDataUrl.aspx new file mode 100755 index 0000000000000000000000000000000000000000..a7c4bef7b1be30b8af2144b9c349e22741d9452e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/XmlDataUrl.aspx @@ -0,0 +1,21 @@ +<%@ Page Language="VB" AutoEventWireup="false" CodeFile="XmlDataUrl.aspx.vb" Inherits="XmlDataUrl" %> + +<!DOCTYPE html> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head runat="server"> + <link href="../Styles/SampleStyleSheet.css" rel="stylesheet" /> + <title>FusionCharts | Chart using data from XML URL</title> +</head> +<body> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <form id="form1" runat="server"> + <h3>Chart using data from XML URL</h3> + <div> + <asp:Literal ID="Literal1" runat="server"></asp:Literal> + </div> + <div><span><asp:HyperLink id="hyperlink1" NavigateUrl="../Default.aspx" Text="Go Back" runat="server"/></span></div> + </form> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/XmlDataUrl.aspx.vb b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/XmlDataUrl.aspx.vb new file mode 100755 index 0000000000000000000000000000000000000000..7f1ac3352af9bd12705561b9bf739519dc3eff12 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Pages/XmlDataUrl.aspx.vb @@ -0,0 +1,14 @@ +Imports FusionCharts.Charts +Partial Class XmlDataUrl + Inherits System.Web.UI.Page + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load + 'store chart data url as string + Dim xmlDataUrl As String + xmlDataUrl = "../Data/xmlData.xml" + 'create gauge instance + 'chart type, chart id, width, height, data format, data source as url + Dim columnChart As New Chart("column2d", "columnchart", "700", "400", "xmlurl", xmlDataUrl) + 'render gauge + Literal1.Text = columnChart.Render() + End Sub +End Class diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Sql-Dump/sales_records_mssql.sql b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Sql-Dump/sales_records_mssql.sql new file mode 100755 index 0000000000000000000000000000000000000000..83e4fc5e81e3180f4a7f6ff87822eee38529670f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Sql-Dump/sales_records_mssql.sql @@ -0,0 +1,28024 @@ +CREATE DATABASE DrillDownDB +USE DrillDownDB + +CREATE TABLE Sales_Record( + Region varchar(MAX), + Country varchar(MAX), + City varchar(MAX), + [Total Sales] Numeric +); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 174 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 167.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 1696 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 77 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1483.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 251.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 100.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 233.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 2591.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 49.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1088 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 604.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 53.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 403.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 304 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 486.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 1320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 393 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 124.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 877.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 156 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 759.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1104.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 153.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 80 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 20.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 122.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 780 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 590.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 251.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 160 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 203.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 60.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 833.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1241.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 287.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 532 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 192.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 936 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 735 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 3079.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 215.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 990 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 111.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 119.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 555.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 920 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 388.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 667.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 595.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 149.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 881.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 475.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 344 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 194.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 43.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 263.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 372 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 728 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 472.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 248 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 280.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 467.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 43.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 384 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 186 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 7.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 21.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 57.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 124.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 31.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 248 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 131.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 952 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 83.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 526.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 325.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 543.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 55.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 647.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 587.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 943 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1576 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 555.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 224 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 143.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 58.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 29.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 239.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1485 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 104 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 371.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 84.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1296 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 175.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 37.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 259.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 552 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 571.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 37.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 121.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 417 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 864 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 556 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 607.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1319.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 591 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 109.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 408 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 147 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1248 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1019.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 441.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 587.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 503.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 149.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 480 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 34.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 1249.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 2474.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 431.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 207 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 262 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 29.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 394 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 30 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 28.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 352 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 22.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 736 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 51.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 139 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 197 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 67.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 145.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 883.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 524 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 182.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1023.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 317.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 984.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 156.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 77 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2758 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 154 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 249.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 509.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 516 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 44.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 57.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 291.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1007.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1759.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2807.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 57.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 167.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 422.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 249.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 839.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 724.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 317.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 396 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 672 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 72.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 165.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 4215.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1244.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 694.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 88.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1999.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 111.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 121.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 186 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 79.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 687.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 44.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 106.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 249.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 153.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 2035 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 316.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 597.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 304 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 582.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 695 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 624 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 310.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 176 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 2183.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1103.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 999.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 92.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1471.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 16 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 395.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 364.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 559.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 607.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 767.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1330 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 39.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 216 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 616 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 2239.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 584 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1123.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 719.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 58.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 37.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 215.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 141.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 194.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 518.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 4215.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 100.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1193.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 167.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 117.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 201.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 10539.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 172.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 396 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 230.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 576 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 743.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 398.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 217.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 35.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 111.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 303.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 778.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 699.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 2175.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1092 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 3465 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 2108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 165.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 777.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1495.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 848 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 141.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 74.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 172.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 864 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 86 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 403.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 52 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 403.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 106.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 252 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 72.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 39.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 473.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 930.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 1980 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 546.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 215.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 798 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 159.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 91 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 777.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 8431.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1903.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1167.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 847.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 859.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 279 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 59 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 419.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 727.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 287.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 103.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 61.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 561.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 335.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 372.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 523.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 163.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 544 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1386 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1814.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 408 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 239.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 543.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 79.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 218.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 528 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 113.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 111.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1048 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 396.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 788 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 599.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 575.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 667.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 780.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 78.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1742.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 394 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 268.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1833.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 230.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1032 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 583.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 79.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 763.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2303.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 516 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 145.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 2079 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 480 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 372.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2128 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1032 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2281.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 291.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 713.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 746.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 447.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 479.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 239.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1528.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 75.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 29.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 208 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 35.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1379 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 223.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 704 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 192.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 619.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 395.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 371.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 345.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 1576 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 131.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 62.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 146 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 262 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 312 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 10540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 18.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 359.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 364 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 418 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 364.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 1631.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 575.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 1551.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 9.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 239.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 29.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 747 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 392.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 103.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 49.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 880 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 863.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 10329 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 299.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 191.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 287.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 186.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 651 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 192 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1228.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1403.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3079.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1559.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 734.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 227.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 249 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 236 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 851.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 259.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 201.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 278 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1215.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 797.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 148.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 393 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 109.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 223.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 233.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 222.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 159.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 683.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 680.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2375.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2051.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 1755 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 472 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 816 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 100.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 436.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 312 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 373.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 115.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 231 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 86.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 88.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 87.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 71.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 29.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 83.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 292 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 588 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 34.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 149.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 294 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 347.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1379 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 495.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 35.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2303.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 930.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 470.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 571.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 546 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1549.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 152.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 299.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 277.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 39.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 95.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 516 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 319.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 335.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1584 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 747 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1092 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 736 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 860 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 383.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 191.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 1112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 209.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 24.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 319.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 579.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1151.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 4.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 151.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 153.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 281.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 911.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 544 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 1781.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 294 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 227.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 325 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 100.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 134.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 165.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 552 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 607.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 486.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 30.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 212.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 287.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 763.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 24 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 206.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 223.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 655.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 308.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 349.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 815.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 604.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 38.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 216 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 167.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 287.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 495.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 6324 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 733.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 798 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 228 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 528 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 384 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1088 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Walla Walla', + 147 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 391.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 311.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 112 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 147 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 127.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 303.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 159.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 575.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 719.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 128 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 36.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 747 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 141.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 239.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 251.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 250.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 2640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 223.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 232.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 72.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 671.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 223.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 251.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 135.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 287.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 154 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 52 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 199.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 425.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 695 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 260 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 92 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 185.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 149 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 199.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 196.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1627.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 421 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 228 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 328 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 712.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 147.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 251.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 209.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 689.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 191.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 136.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 4456.44 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 278.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1099.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1499.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 399.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 44.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 107.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 56.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 407.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 399.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 1599.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 427.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1596 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 820.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 387.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1551.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 872.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 5268 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 39.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2855.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1562.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 771.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 220 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 22.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 3952.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 175.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 495.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 339.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 164 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 96.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 719.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 960 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 517.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 459.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 974.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1214.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 467.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 57.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 258.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 2760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 111.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 275.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 143.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1139.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1099.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 569.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 19.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 313.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 900 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 110 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 408 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1099.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 835.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 359.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 258.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 183.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 74.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 1049.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 183.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 97.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 824.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 569.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1189.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 318 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 265 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 730.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 135 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 105 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 34.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 37.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1249.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 7905 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 437.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 157.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1053.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 757.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 193.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 314.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 178.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1139.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 629.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 319.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Walla Walla', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 1972 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 767.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 139.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 135.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 687.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 949.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2543.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 311.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 92 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 59.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 284.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 697.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 778 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 648 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 232.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 244.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 523.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 179.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 985.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 129.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 697.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 321.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 80.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1059.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1519.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 835.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 997.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 237.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 590.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 115.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 431.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 517.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 739.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 194.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 2650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 49.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 492.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 475 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 490 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 623.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 74.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 599.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 112.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 598.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 734.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 1124.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 749.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 2199.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 437.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 314.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 2279.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 255.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 391.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 209.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 319.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 920 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 116.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 702 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 820 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 36.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 493 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 199.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 263.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 1044 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 408.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 117 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 162.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 348.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 86.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 631.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 387.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 78 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 252 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1237.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 815.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 624.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 27.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 187.38 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 260 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2499.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1399.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 779.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 372.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 387.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 156.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1700.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 719.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 71.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 168 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 397.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 539.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3419.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2339.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 189.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1053.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 232.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 157.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 252.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 193.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 493 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 29.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1925 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 64.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1008 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 499.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 76.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 179.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 523.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1099.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 2379.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 322.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 439.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 479.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 492.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3900 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 772.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 417.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 1064 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 398.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 2170 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1045 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 47.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 294 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 80 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 3952.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 532 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 224.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 322.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 1649.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 1750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 187.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 22.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 46 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 322.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 224.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 488.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 137.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 249.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 13.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 539.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 456 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 742.74 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 194.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 69.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 393.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 680 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 430 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 739.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 524.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 2475.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 299.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 287.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 630 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 61.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 569.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 49.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1367.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 77.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1092.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3943.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1050 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 3125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 795 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 15.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 219.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 320.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 550 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 79.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 406.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 2279.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 442.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 2088 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 719.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 224.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 950 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1104 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 299.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 569.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 683.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 377.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 23.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 249.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 920 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 251.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 269.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 557.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 644.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 454.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 276 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 67.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 522 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 776.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 819.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 223.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 110.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 419.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 51.53 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 523.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 679.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 263.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 359.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 44.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 192.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 69.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 544.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 56.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 775 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 231.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1710 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1020 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1287.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1869.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 909.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 249.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 441.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 599.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Elgin', + 1701 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 53.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 649.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 551.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 419.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1059.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 743.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 455.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 315.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 4456.44 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 210.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1619.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 300.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 99.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 498.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 193.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 174.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 493 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 252.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 3952.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 52.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 276 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 697.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 328 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 397.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 62 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 64.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 408.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 936.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 19.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1158 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 223.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 660 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 872.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 249.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 559.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 275.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 119.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 931 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 68 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 232.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 368 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 1020 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 620 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 38.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1169.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 468.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 4849.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1237.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 113.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 557.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 2735.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 196 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 629.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 759.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 389.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 4951.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 466.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2366.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 878 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 582 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 446.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1079.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 224.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2700 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 780 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 216 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 64.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 161.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 397.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 449.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 311.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1485.43 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1368.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 119.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 89.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 167.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 499.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1289.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 2309.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 429.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 629.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 270 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1925 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 132 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 157.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 306 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 128 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 349 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 1104 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 780 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 419.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 85.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 1600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 1484 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 46 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 47.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 405.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3936 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 98.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 558 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 936.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1045 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 569.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1052.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 474.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 683.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 158.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 651 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 645 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 50 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 371 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 319.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 111.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 899.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1368 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 349 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 986 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 749.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 77.42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 297.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 378 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 172 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 972.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 57 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 562.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 325.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 468.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 496 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Montréal', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 28 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 550 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 105 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 779.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 379.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 549.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 900 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 261.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 37.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 210.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 399.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1589.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 372 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 175 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 569.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 25.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 842 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 24 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 52.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Reims', + 126 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 227.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 629.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 531.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 284.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1700 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1218 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 335.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 919.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 311.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2475 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 243.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 392 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 443.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1440 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 100 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 337.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 395.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 396 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 736 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1064 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 330 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 116.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 379.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 1374.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 374.66 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 776.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 324.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 225 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 38 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 50 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 55.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 284.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1139.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 272.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 899.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 1312.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 74.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 719.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 385 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1479 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 798 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 624.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 167.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 1756 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 1379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 489.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 139.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 288 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1484 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 2280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 126 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 199.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2339.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1683.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 1050 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 28 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 84 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 258 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 289.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 104.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 739.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 314.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 344 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 2228.22 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 1375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1287 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 874.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 54.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 24.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 850 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 186 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 199.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 167.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 256.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 6359.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 279.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 96.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 349 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 986 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 22.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 759.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 12.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1317.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 570 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 35.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 1043.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Caracas', + 77.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1199.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 388.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 325.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 284.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 2475.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 459.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 309.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1875 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 270 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 1317 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lille', + 225 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 89.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 759.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1733.01 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 192.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 22.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 187.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 135.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 56 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 348.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 44.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1134.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1364.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 655.63 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 194.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1163.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 863.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 98.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 348 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 119.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 89.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1049.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 529.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 52.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 1559.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 2475.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 647 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 1589.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 1439.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 246.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 220.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 209.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 824.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1116 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1094.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 79.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 2635 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 42.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 149.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 18.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 759.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 899.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Vancouver', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 138 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 162 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 552 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 199.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 1391.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 260 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 227.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 193 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 919.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 101.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 854.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 7904.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 985.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1249.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 7905 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1103.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1232.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 193 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 322 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 155 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 318 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 147.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Kirkland', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 419.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 292.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 2199.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 194.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 135 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 374.76 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 656 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 437.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Strasbourg', + 292.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 465 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 378 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 405 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 527 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 714 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 504 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1020 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 18.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 2108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 414 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 17.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 139.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 311 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 99.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 599.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 112.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 295.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 990.27 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 517.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 825 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 25.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1092 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 2040 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 997.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 460 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 377.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 71.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 1562.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 949.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 397.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 521.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 83.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 179.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 496 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 2750 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 230 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 211.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 735 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 629.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 449.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 587.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 794.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1596 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 462 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1439.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 110.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1559.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 341.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1529.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1182.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 640.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 291 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 490 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 561.99 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 279.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 9.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Lyon', + 449.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 94.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 139.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 194.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 2309.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 2465 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3099.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 389.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 872.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 175 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 315.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1092.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1237.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 439 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 179.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 260.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 997.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 159 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1638 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 87.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 147.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 56 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 158.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 15809.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1439.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 398.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 26.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1035.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 98.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 624.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 839.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 106 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 1249.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 209.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 623.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 239.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 985.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 498.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 442 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 136.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 310 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 230 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 199.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 252 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 665 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 523.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1562.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1619.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 220.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 210.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 269.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 854.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 749.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 150 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 399.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 238.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 399.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 797.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'San Francisco', + 252.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 325 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 2170 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 437.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 225 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 10540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 585 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 135.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 388.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 2199.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 2970.96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 906.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 167.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1799.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 929.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 495 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 810 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1674.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3400 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 608 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 9903.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 932.04 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 30 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 143.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 44.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 289.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 645 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 719.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 295.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 442.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 198.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1725.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 359.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 427.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 108.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 599.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 97.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 261.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 48.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 142.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 839.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 7427.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 659.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 99.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 198.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 537.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 74.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 104.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 192 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 25.89 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 340 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1079.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 849.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 418.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 368 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 1756 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 585 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 157.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 139.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 459.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 335.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 619.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 1367.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Luleå', + 46.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 474.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 83.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 64.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 348 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 405 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 47.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Barcelona', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 379.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1097.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 599.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 397.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 251.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 585 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 523.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 690.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 556.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 154.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 65.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'Cowes', + 855 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 378 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 249.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Resende', + 71.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 569.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 364.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 119.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1103.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1665.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 752.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 189.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 559.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 240 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 549.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1478.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 999.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1740 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 441 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 104.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 349.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 684 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Leipzig', + 125 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 775 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 112.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 520 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 220 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 146.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 2120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 930 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 2958 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Bergamo', + 110 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 37.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 57.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 387.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 399.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 91.2 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 4049.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 624.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 488.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 312.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 815.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 92.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 133 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 424 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 776.7 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 720 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 266 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 427 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 174 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 154.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 44.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 231.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 41.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1350 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 462 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 656 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 324 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 792 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 67.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 375 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 1317.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 848 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 208 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 455.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 591.45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 110.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Münster', + 800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1140 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 135 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 133 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 279.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Nantes', + 1733.06 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 17.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 156.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 57.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Versailles', + 77.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Lander', + 439 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 77.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 285 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 530 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 878 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 799.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 399.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 184 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 116.55 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 540 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1317 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1536.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 309.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 15810 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 414 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 503.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 292.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 959.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 628.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 499.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 1119.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 630 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 1215 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 195 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 276 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 696 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 1971.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1000 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 315 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 38.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 839.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1559.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1880.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 949.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 299.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1619.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 69.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 6189.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 337.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'Århus', + 989.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 136 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 560 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 1600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 239.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 139.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 199.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 232.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 192.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 794.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 272.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 549.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 134.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 1800 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 300 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 336 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 269.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 335.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 960 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 72 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 184 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Butte', + 70 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 187.38 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Bruxelles', + 108 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Helsinki', + 550 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 144 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 247.33 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 1237.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Portugal', + 'Lisboa', + 196 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 3191.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 1259.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 451.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 54 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 341.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 306 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 600 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 529.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Berlin', + 430 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 459.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1223.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'München', + 1289.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 56 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Madrid', + 25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 270.1 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 388.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Norway', + 'Stavern', + 234 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 187.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 304 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 6050 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 450 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 625 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Portland', + 190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 36 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Köln', + 743.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 208.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1215 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1967.49 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 2331.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Cunewalde', + 1218 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 322 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 120 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1380 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 374.76 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 442.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1075 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 179.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Finland', + 'Oulu', + 119.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 500 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 530 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 134.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1035.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Brandenburg', + 1320 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 760 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 526.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1899.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 1494.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 7427.15 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 5499.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 810 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 480 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 94.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 665 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 344 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 665 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 6587.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 1650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 2295.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 1295.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 149.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 233.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Anchorage', + 171 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 1080 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 74.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 42 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 1650 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Spain', + 'Sevilla', + 60 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 91.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 14 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Belgium', + 'Charleroi', + 645 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 912 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 432 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'I. de Margarita', + 546 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 569.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Bern', + 1317 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 291.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Paris', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Poland', + 'Warszawa', + 591.6 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 37.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 1272 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 759.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 479.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Stuttgart', + 323.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 449.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 640.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Canada', + 'Tsawassen', + 525 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 189.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Campinas', + 151.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Sweden', + 'Bräcke', + 899.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Toulouse', + 44.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1379.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 284.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 2187.3 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 640 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Salzburg', + 831.05 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Argentina', + 'Buenos Aires', + 280 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 67.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 1060 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'San Cristóbal', + 390 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1200 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 840 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 1700 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'UK', + 'London', + 45 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 30 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 714 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Mannheim', + 114 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 180 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 468 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'Rio de Janeiro', + 1190 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 136 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Torino', + 130 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Eugene', + 510 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 327.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Italy', + 'Reggio Emilia', + 179.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 420 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 735.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Ireland', + 'Cork', + 289.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 3002.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 115.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 819.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 95.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Boise', + 687.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 103.31 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 148.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 52.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 386.4 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Seattle', + 490 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Aachen', + 86.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 364.65 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 1655.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Brazil', + 'São Paulo', + 363.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 360 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 719.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 379.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 523.35 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Germany', + 'Frankfurt a.M. ', + 250 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 449.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'South America', + 'Venezuela', + 'Barquisimeto', + 59.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 152 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 386 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 357.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Austria', + 'Graz', + 4322.5 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 210 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'Mexico', + 'México D.F.', + 90 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Denmark', + 'København', + 244.25 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 189.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 359.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'Switzerland', + 'Genève', + 35.85 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 499.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 464.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'Europe', + 'France', + 'Marseille', + 91.75 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 455.8 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 40 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 22 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 24.98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 29.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 79.9 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 31 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 75.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 24 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 23.22 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 34.87 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 80.96 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 18 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 32 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 35.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 28.95 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 35.98 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 14 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 48 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 67.94 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 66.47 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 17 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 29.99 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 31 + ); + +INSERT INTO Sales_Record ( + Region, + Country, + City, + [Total Sales] + ) + VALUES ( + 'North America', + 'USA', + 'Albuquerque', + 26 + ); diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Styles/ChartSampleStyleSheet.css b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Styles/ChartSampleStyleSheet.css new file mode 100755 index 0000000000000000000000000000000000000000..f7d056fd360ed87996a3c8a10e9542a92463395c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Styles/ChartSampleStyleSheet.css @@ -0,0 +1,4 @@ +body { + font-family: Helvetica Neue, Arial; + font-size: 16px; +} diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Web.Debug.config b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Web.Debug.config new file mode 100755 index 0000000000000000000000000000000000000000..da6e960b8d1e55c546e22c9868460f3b2c2027a0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Web.Debug.config @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- For more information on using web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=125889 --> + +<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> + <!-- + In the example below, the "SetAttributes" transform will change the value of + "connectionString" to use "ReleaseSQLServer" only when the "Match" locator + finds an attribute "name" that has a value of "MyDB". + + <connectionStrings> + <add name="MyDB" + connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" + xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> + </connectionStrings> + --> + <system.web> + <compilation xdt:Transform="RemoveAttributes(debug)" /> + <!-- + In the example below, the "Replace" transform will replace the entire + <customErrors> section of your web.config file. + Note that because there is only one customErrors section under the + <system.web> node, there is no need to use the "xdt:Locator" attribute. + + <customErrors defaultRedirect="GenericError.htm" + mode="RemoteOnly" xdt:Transform="Replace"> + <error statusCode="500" redirect="InternalError.htm"/> + </customErrors> + --> + </system.web> +</configuration> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Web.config b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Web.config new file mode 100755 index 0000000000000000000000000000000000000000..481382bdbf3a8f18473467e8bee39cf0100eff9a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/asp.net-vb/samples/Web.config @@ -0,0 +1,139 @@ +<?xml version="1.0"?> +<configuration> + + <configSections> + <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> + <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> + <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> + <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> + <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> + <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> + </sectionGroup> + </sectionGroup> + </sectionGroup> + </configSections> + <appSettings/> + <connectionStrings/> + <system.web> + <!-- + Visual Basic options: + Set strict="true" to disallow all data type conversions + where data loss can occur. + Set explicit="true" to force declaration of all variables. + --> + <compilation debug="true" strict="false" explicit="true"> + <assemblies> + <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> + <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> + <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> + </assemblies> + </compilation> + <!-- + The <authentication> section enables configuration + of the security authentication mode used by + ASP.NET to identify an incoming user. + --> + <authentication mode="Windows" /> + <!-- + The <customErrors> section enables configuration + of what to do if/when an unhandled error occurs + during the execution of a request. Specifically, + it enables developers to configure html error pages + to be displayed in place of a error stack trace. + + <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> + <error statusCode="403" redirect="NoAccess.htm" /> + <error statusCode="404" redirect="FileNotFound.htm" /> + </customErrors> + --> + <pages> + <namespaces> + <clear /> + <add namespace="System" /> + <add namespace="System.Collections" /> + <add namespace="System.Collections.Generic" /> + <add namespace="System.Collections.Specialized" /> + <add namespace="System.Configuration" /> + <add namespace="System.Text" /> + <add namespace="System.Text.RegularExpressions" /> + <add namespace="System.Linq" /> + <add namespace="System.Xml.Linq" /> + <add namespace="System.Web" /> + <add namespace="System.Web.Caching" /> + <add namespace="System.Web.SessionState" /> + <add namespace="System.Web.Security" /> + <add namespace="System.Web.Profile" /> + <add namespace="System.Web.UI" /> + <add namespace="System.Web.UI.WebControls" /> + <add namespace="System.Web.UI.WebControls.WebParts" /> + <add namespace="System.Web.UI.HtmlControls" /> + </namespaces> + <controls> + <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + </controls> + </pages> + <httpHandlers> + <remove verb="*" path="*.asmx"/> + <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> + </httpHandlers> + <httpModules> + <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + </httpModules> + </system.web> + <system.codedom> + <compilers> + <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" + type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <providerOption name="CompilerVersion" value="v3.5"/> + <providerOption name="WarnAsError" value="false"/> + </compiler> + <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" + type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <providerOption name="CompilerVersion" value="v3.5"/> + <providerOption name="OptionInfer" value="true"/> + <providerOption name="WarnAsError" value="false"/> + </compiler> + </compilers> + </system.codedom> + <!-- + The system.webServer section is required for running ASP.NET AJAX under Internet + Information Services 7.0. It is not necessary for previous version of IIS. + --> + <system.webServer> + <validation validateIntegratedModeConfiguration="false"/> + <modules> + <remove name="ScriptModule" /> + <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + </modules> + <handlers> + <remove name="WebServiceHandlerFactory-Integrated"/> + <remove name="ScriptHandlerFactory" /> + <remove name="ScriptHandlerFactoryAppServices" /> + <remove name="ScriptResource" /> + <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" + type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" + type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> + <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> + </handlers> + </system.webServer> + <runtime> + <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1"> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> + </dependentAssembly> + </assemblyBinding> + </runtime> + +</configuration> diff --git a/graphs/fusioncharts-suite-xt/integrations/django/fusioncharts-wrapper/fusioncharts.py b/graphs/fusioncharts-suite-xt/integrations/django/fusioncharts-wrapper/fusioncharts.py new file mode 100755 index 0000000000000000000000000000000000000000..6f9e9980c96e13b037d2d2292e327e521c7e31ad --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/fusioncharts-wrapper/fusioncharts.py @@ -0,0 +1,66 @@ +from django.http import HttpResponse +import json +from collections import OrderedDict + +# Common base class for FC +class FusionCharts: + + baseTemplate = """ + <script type="text/javascript"> + FusionCharts.ready(function () { + __FC__ + }); + </script>""" + + constructorTemplate = """new FusionCharts(__constructorOptions__);""" + renderTemplate = """FusionCharts("__chartId__").render();""" + eventTemplate = """FusionCharts("__chartId__").addEventListener("_fceventname_",_fceventbody_);""" + + + # constructor + def __init__(self, type, id, width, height, renderAt, dataFormat, dataSource): + self.eventOptions = OrderedDict() + self.constructorOptions = {} + self.constructorOptions['type'] = type + self.constructorOptions['id'] = id + self.constructorOptions['width'] = width + self.constructorOptions['height'] = height + self.constructorOptions['renderAt'] = renderAt + self.constructorOptions['dataFormat'] = dataFormat + #dataSource = unicode(dataSource, errors='replace') + self.constructorOptions['dataSource'] = dataSource + + def addEvent(self, eventName, funcName): + self.eventOptions[eventName] = funcName + + def addMessage(self, messageName, messageValue): + self.constructorOptions[messageName] = messageValue + + # render the chart created + # It prints a script and calls the FusionCharts javascript render method of created chart + def render(self): + + # Serialize constructorOptions to a JSON formatted + self.readyJson = json.dumps(self.constructorOptions, ensure_ascii=False) + + # Create Fusioncharts constructor from template and insert JSON data in it + self.readyJson = FusionCharts.constructorTemplate.replace('__constructorOptions__', self.readyJson) + + # Iterate and attach EventHandler from template + for key, value in self.eventOptions.items(): + self.readyJson = self.readyJson + FusionCharts.eventTemplate.replace('__chartId__', self.constructorOptions['id']) + self.readyJson = self.readyJson.replace("_fceventname_", key).replace("_fceventbody_", value) + + # FusionCharts Render method will create chart + self.readyJson = self.readyJson + FusionCharts.renderTemplate.replace('__chartId__', self.constructorOptions['id']) + self.readyJson = FusionCharts.baseTemplate.replace("__FC__", self.readyJson) + + self.readyJson = self.readyJson.replace('\\n', '') + self.readyJson = self.readyJson.replace('\\t', '') + + if(self.constructorOptions['dataFormat'] == 'json'): + self.readyJson = self.readyJson.replace('\\', '') + self.readyJson = self.readyJson.replace('"{', "{") + self.readyJson = self.readyJson.replace('}"', "}") + + return self.readyJson \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/db.sqlite3 b/graphs/fusioncharts-suite-xt/integrations/django/samples/db.sqlite3 new file mode 100755 index 0000000000000000000000000000000000000000..23ffc78f208a27150638707c1266551eb26a8183 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/django/samples/db.sqlite3 differ diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/__init__.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/__init__.py new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/admin.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/admin.py new file mode 100755 index 0000000000000000000000000000000000000000..bb5f42b80d27e9a25cde3c544f4d51d0fbff2862 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + +# Register your models here. +from .models import * +admin.site.register(SalesRecord) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/datahandler.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/datahandler.py new file mode 100755 index 0000000000000000000000000000000000000000..bba294122cbc2aca2a45d0ac6a0af497acde9ce4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/datahandler.py @@ -0,0 +1,104 @@ +from django.shortcuts import render +from django.http import HttpResponse +from django.http import QueryDict +from fusioncharts.models import * + +import json + +def getdata(request): + + levelValueMapping = BuildColumnLevel() + urlQueryString = request.META['QUERY_STRING'] + drillLevel = getQueryStringValueByKey(urlQueryString, "drillLevel", "" ) + query = "" + label = "" + + if not drillLevel: + drillLevel = "1" + # build custom query & parameter column to be fetch + query = BuildQuery(levelValueMapping[int(drillLevel)]) + else: + drillLevel = (int(drillLevel) + 1) + label = getQueryStringValueByKey(urlQueryString, "label", "" ) + # build custom query + # parameter column to be fetch, previously clicked value, previous level column name + query = BuildQuery(levelValueMapping[int(drillLevel)], label, levelValueMapping[int(drillLevel) - 1]) + + + # fetch chart data from DB data create chart compatible json + chartJsonData = ProcessChartData(query, levelValueMapping[(int(drillLevel))], drillLevel, len(levelValueMapping)) + + # send response + return HttpResponse(chartJsonData) + + +def getQueryStringValueByKey(queryString, searchKey, defaultValue): + + queryDict = QueryDict(queryString) + + for key, value in queryDict.items(): + if key.lower() == searchKey.lower(): + defaultValue = value + break + + return defaultValue + + +def BuildColumnLevel(): + mapDict = { + 1: "Region", + 2: "Country", + 3: "City" + } + return mapDict + + +def BuildQuery(columnName, parentValue=None, parentName=None): + + query = "" + + if parentValue is None: + query = "select 1 as id," + columnName + ", SUM([TotalSales]) as [TotalSales]" + "from SalesRecord group by " + columnName + else: + query = "select 1 as id," + columnName + ", SUM([TotalSales]) as [TotalSales]" + "from SalesRecord where " + parentName + "= '" + parentValue + "' Group by " + columnName + + return query + + + +def ProcessChartData(sqlQuery, columnName, drillLevel, maxLevel): + + # Chart data is passed to the `dataSource` parameter. + dataSource = {} + dataSource['chart'] = { + "caption" : "Total Sales by " + columnName, + "xAxisName" : columnName, + "yAxisName" : "Total Sales", + "numberSuffix": "K", + "theme": "fusion" + } + + dataSource['data'] = [] + + # Iterate rows by invoking 'RawQuerySet' in `SalesRecord` model and insert in to the `dataSource['data']` list. + + for key in SalesRecord.objects.raw(sqlQuery): + data = {} + # region-sales, country-sales, city-sales + if str(drillLevel) == "1": + data['label'] = key.Region + data['value'] = key.TotalSales + # Create link for each Region when a data plot is clicked. + data['link'] = "newchart-jsonurl-/datahandler?" + "label=" + key.Region + "&drillLevel=" + str(drillLevel) + elif str(drillLevel) == "2": + data['label'] = key.Country + data['value'] = key.TotalSales + # Create link for each country when a data plot is clicked. + data['link'] = "newchart-jsonurl-/datahandler?" + "label=" + key.Country + "&drillLevel=" + str(drillLevel) + elif str(drillLevel) == "3": + data['label'] = key.City + data['value'] = key.TotalSales + + dataSource['data'].append(data) + + return json.dumps(dataSource) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/fusioncharts.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/fusioncharts.py new file mode 100755 index 0000000000000000000000000000000000000000..23f376151bea4c949e295d6eb41d2821a592a734 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/fusioncharts.py @@ -0,0 +1,66 @@ +from django.http import HttpResponse +import json +from collections import OrderedDict + +# Common base class for FC +class FusionCharts: + + baseTemplate = """ + <script type="text/javascript"> + FusionCharts.ready(function () { + __FC__ + }); + </script>""" + + constructorTemplate = """new FusionCharts(__constructorOptions__);""" + renderTemplate = """FusionCharts("__chartId__").render();""" + eventTemplate = """FusionCharts("__chartId__").addEventListener("_fceventname_",_fceventbody_);""" + + + # constructor + def __init__(self, type, id, width, height, renderAt, dataFormat, dataSource): + self.eventOptions = OrderedDict() + self.constructorOptions = {} + self.constructorOptions['type'] = type + self.constructorOptions['id'] = id + self.constructorOptions['width'] = width + self.constructorOptions['height'] = height + self.constructorOptions['renderAt'] = renderAt + self.constructorOptions['dataFormat'] = dataFormat + #dataSource = unicode(dataSource, errors='replace') + self.constructorOptions['dataSource'] = dataSource + + def addEvent(self, eventName, funcName): + self.eventOptions[eventName] = funcName + + def addMessage(self, messageName, messageValue): + self.constructorOptions[messageName] = messageValue + + # render the chart created + # It prints a script and calls the FusionCharts javascript render method of created chart + def render(self): + + # Serialize constructorOptions to a JSON formatted + self.readyJson = json.dumps(self.constructorOptions, ensure_ascii=False) + + # Create Fusioncharts constructor from template and insert JSON data in it + self.readyJson = FusionCharts.constructorTemplate.replace('__constructorOptions__', self.readyJson) + + # Iterate and attach EventHandler from template + for key, value in self.eventOptions.items(): + self.readyJson = self.readyJson + FusionCharts.eventTemplate.replace('__chartId__', self.constructorOptions['id']) + self.readyJson = self.readyJson.replace("_fceventname_", key).replace("_fceventbody_", value) + + # FusionCharts Render method will create chart + self.readyJson = self.readyJson + FusionCharts.renderTemplate.replace('__chartId__', self.constructorOptions['id']) + self.readyJson = FusionCharts.baseTemplate.replace("__FC__", self.readyJson) + + self.readyJson = self.readyJson.replace('\\n', '') + self.readyJson = self.readyJson.replace('\\t', '') + + if(self.constructorOptions['dataFormat'] == 'json'): + self.readyJson = self.readyJson.replace('\\', '') + self.readyJson = self.readyJson.replace('"{', "{") + self.readyJson = self.readyJson.replace('}"', "}") + + return self.readyJson diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/models.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/models.py new file mode 100755 index 0000000000000000000000000000000000000000..fb4c13e6af34bfb783b79e54c0a823260686f0fe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/models.py @@ -0,0 +1,14 @@ +from __future__ import unicode_literals +from django.db import models + +import json + +# Create your models here. +class SalesRecord(models.Model): + Region = models.CharField(max_length=100) + Country = models.CharField(max_length=50) + City = models.CharField(max_length=50) + TotalSales = models.IntegerField() + + def __unicode__(self): + return u'%s %s %s %s' % (self.Region, self.Country, self.City, self.TotalSales) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/__init__.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/__init__.py new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_annotation.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_annotation.py new file mode 100755 index 0000000000000000000000000000000000000000..133d06d5d5059c3c417aad2c955a5541e035e628 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_annotation.py @@ -0,0 +1,86 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a spline chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the spline chart using the FusionCharts class constructor + spline = FusionCharts("spline", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Bakersfield Central - Total footfalls", + "subCaption": "Last week", + "xAxisName": "Day", + "yAxisName": "No. of Visitors (In 1000s)", + "showValues": "0", + "theme": "fusion" + }, + "annotations":{ + "groups": [ + { + "id": "anchor-highlight", + "items": [ + { + "id": "high-star", + "type": "circle", + "x": "$dataset.0.set.2.x", + "y": "$dataset.0.set.2.y", + "radius": "12", + "color": "#6baa01", + "border": "2", + "borderColor": "#f8bd19" + }, + { + "id": "label", + "type": "text", + "text": "Highest footfall 25.5K", + "fillcolor": "#6baa01", + "rotate": "90", + "x": "$dataset.0.set.2.x+75", + "y": "$dataset.0.set.2.y-2" + } + ] + } + ] + }, + "data": [ + { + "label": "Mon", + "value": "15123" + }, + { + "label": "Tue", + "value": "14233" + }, + { + "label": "Wed", + "value": "25507" + }, + { + "label": "Thu", + "value": "9110" + }, + { + "label": "Fri", + "value": "15529" + }, + { + "label": "Sat", + "value": "20803" + }, + { + "label": "Sun", + "value": "19202" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : spline.render(),'chartTitle': 'Chart Annotation'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_instance_level_api.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_instance_level_api.py new file mode 100755 index 0000000000000000000000000000000000000000..8500b6eb13b53d7af8248ce8f771215b387e3d81 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_instance_level_api.py @@ -0,0 +1,54 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'chart-instance-level-api.html', {'output' : column2d.render(),'chartTitle': 'Add/Remove event at runtime(Chart instance level API)'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_message.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_message.py new file mode 100755 index 0000000000000000000000000000000000000000..4c4f09e21e4d7ec6948c4c09a57abd248c879619 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_message.py @@ -0,0 +1,59 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show how to attach message in chart. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '700', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + "exportEnabled":"1" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # Attach message with message string. + column2d.addMessage("loadMessage", "please wait data is being loaded") + column2d.addMessage("loadMessageFontSize", "18") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(),'chartTitle': 'Message related attributes and configuration'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_product_level_api.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_product_level_api.py new file mode 100755 index 0000000000000000000000000000000000000000..98eae9ef256ccf5c510bdf285ccc29926984982a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_product_level_api.py @@ -0,0 +1,54 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'chart-product-level-api.html', {'output' : column2d.render(),'chartTitle': 'Example of product level API'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_special_chart.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_special_chart.py new file mode 100755 index 0000000000000000000000000000000000000000..f6cb886a3835a1f466fd569d836e36682fff3f0d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_special_chart.py @@ -0,0 +1,35 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static XML String +# It is a example to show a Column 2D chart where data is passed as XML string format. +# The `chart` method is defined to load chart data from an XML string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '600', '400', "chart-1", "xml", + # The chart data is passed as a string to the `dataSource` parameter. + """ + <chart caption='Harry's SuperMart' + subcaption='Monthly revenue for last year' xaxisname='Month' + yaxisname='Amount' numberprefix='¥' theme='fusion' + rotatevalues='1' exportenabled='1'> + <set label='Jan' value='420000' /> + <set label='Feb' value='810000' /> + <set label='Mar' value='720000' /> + <set label='Apr' value='550000' /> + <set label='May' value='910000' /> + <set label='Jun' value='510000' /> + <set label='Jul' value='680000' /> + <set label='Aug' value='620000' /> + <set label='Sep' value='610000' /> + <set label='Oct' value='490000' /> + <set label='Nov' value='900000' /> + <set label='Dec' value='730000' /> + </chart> + """) + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(),'chartTitle': 'Chart using special character in XML data format'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_tooltip.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_tooltip.py new file mode 100755 index 0000000000000000000000000000000000000000..cba7685c8a9e3d1a449b286fee0a07ff0f3803a2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_tooltip.py @@ -0,0 +1,92 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a marimekko chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the marimekko chart using the FusionCharts class constructor + marimekko = FusionCharts("marimekko", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + # Custom tool-text string built using a combination of HTML and chart macro variables + """{ + "chart": { + "caption": "Top 3 Electronic Brands in Top 3 Revenue Earning States", + "subcaption": "Last month", + "aligncaptiontocanvas": "0", + "yaxisname": "Statewise Sales (in %)", + "xaxisname": "Brand", + "numberprefix": "$", + "showxaxispercentvalues": "1", + "showsum": "1", + "showPlotBorder": "1", + "plottooltext": "<div id='nameDiv' style='font-size: 14px; border-bottom: 1px dashed #666666; font-weight:bold; padding-bottom: 3px; margin-bottom: 5px; display: inline-block;'>$label :</div>{br}State: <b>$seriesName</b>{br}Sales : <b>$dataValue</b>{br}Market share in State : <b>$percentValue</b>{br}Overall market share of $label: <b>$xAxisPercentValue</b>", + "theme": "fusion" + }, + "categories": [ + { + "category": [ + { + "label": "Bose" + }, + { + "label": "Dell" + }, + { + "label": "Apple" + } + ] + } + ], + "dataset": [ + { + "seriesname": "California", + "data": [ + { + "value": "335000" + }, + { + "value": "225100" + }, + { + "value": "164200" + } + ] + }, + { + "seriesname": "Washington", + "data": [ + { + "value": "215000" + }, + { + "value": "198000" + }, + { + "value": "120000" + } + ] + }, + { + "seriesname": "Nevada", + "data": [ + { + "value": "298000" + }, + { + "value": "109300" + }, + { + "value": "153600" + } + ] + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : marimekko.render(),'chartTitle': 'Customizing tooltip'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_update_onclick.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_update_onclick.py new file mode 100755 index 0000000000000000000000000000000000000000..849207911c51fff559fb7f19f9cb9e5aa7ad47e2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/chart_update_onclick.py @@ -0,0 +1,49 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '600', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Sales by Region", + "xaxisname": "Region", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Europe", + "value": "827508", + "link": "j-updateChart-Europe" + }, { + "label": "North America", + "value": "342947", + "link": "j-updateChart-NA" + }, { + "label": "South America", + "value": "183881", + "link": "j-updateChart-SA" + }] + }""") + + # Create an object for the column2d chart using the FusionCharts class constructor + secondColumn2d = FusionCharts("column2d", "chartTwo", '600', '400', "chart-2", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": { + + } + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'chart-update-onclick.html', {'output1' : column2d.render(), 'output2' : secondColumn2d.render(),'chartTitle': 'Updating Different Chart'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/client_side_chart_export.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/client_side_chart_export.py new file mode 100755 index 0000000000000000000000000000000000000000..cff5647fe56f045184a49056b1c0a7bdab3d1f63 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/client_side_chart_export.py @@ -0,0 +1,49 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption":"Harry\'s SuperMart", + "subCaption":"Top 5 stores in last month by revenue", + "exportEnabled":"1", + "theme":"fusion" + }, + "data": + [ + { + "label":"Bakersfield Central", + "value":"880000" + }, + { + "label":"Garden Groove harbour", + "value":"730000" + }, + { + "label":"Los Angeles Topanga", + "value":"590000" + }, + { + "label":"Compton-Rancho Dom", + "value":"520000" + }, + { + "label":"Daly City Serramonte", + "value":"330000" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(),'chartTitle': 'Export Chart As Image (client-side)'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/drilldown_from_database_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/drilldown_from_database_example.py new file mode 100755 index 0000000000000000000000000000000000000000..36a9771c9ccc89ba79cdb552fe03bdebd5f7f22d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/drilldown_from_database_example.py @@ -0,0 +1,19 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +from ..models import * + +# The `chart` function is defined to load data from a `SalesRecord` Model. +# This data will be converted to JSON and the chart will be rendered. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor and pass the + # json url datahandler in the `dataSource` as parameter. + column2d = FusionCharts("column2d", "ex1" , "600", "400", "chart-1", "jsonurl","/datahandler") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render()}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/dynamic_chart_resize.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/dynamic_chart_resize.py new file mode 100755 index 0000000000000000000000000000000000000000..c6e4501d7d7f2caf71c77df2a5fdb18734a30bf0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/dynamic_chart_resize.py @@ -0,0 +1,53 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '100%', '100%', "chartContainer", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'dynamic-resize.html', {'output' : column2d.render(),'chartTitle': 'Chart Auto-Resise Sample'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/dynamic_chart_type.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/dynamic_chart_type.py new file mode 100755 index 0000000000000000000000000000000000000000..e8f3162d2980dd44a40ce59580ec30b81e1f5ec3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/dynamic_chart_type.py @@ -0,0 +1,53 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chartContainer", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'dynamic-chart-type.html', {'output' : column2d.render(),'chartTitle': 'Dynamic Chart Type Change'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/export_chart_using_export_handler.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/export_chart_using_export_handler.py new file mode 100755 index 0000000000000000000000000000000000000000..c4d7a149948ae232e1462903f73c7a274d747c07 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/export_chart_using_export_handler.py @@ -0,0 +1,50 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption":"Harry\'s SuperMart", + "subCaption":"Top 5 stores in last month by revenue", + "exportEnabled":"1", + "exportMode":"server", + "theme":"fusion" + }, + "data": + [ + { + "label":"Bakersfield Central", + "value":"880000" + }, + { + "label":"Garden Groove harbour", + "value":"730000" + }, + { + "label":"Los Angeles Topanga", + "value":"590000" + }, + { + "label":"Compton-Rancho Dom", + "value":"520000" + }, + { + "label":"Daly City Serramonte", + "value":"330000" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(),'chartTitle': 'Export Chart As Image (server-side)'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_data_from_database.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_data_from_database.py new file mode 100755 index 0000000000000000000000000000000000000000..6a717c666a59b326f01f66b793eb676dc5dd7752 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_data_from_database.py @@ -0,0 +1,34 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +from ..models import * + +# The `chart` function is defined to load data from a Python Dictionary. This data will be converted to +# JSON and the chart will be rendered. + +def chart(request): + # Chart data is passed to the `dataSource` parameter, as dict, in the form of key-value pairs. + dataSource = {} + dataSource['chart'] = { + "caption" : "Top 10 Most Populous Countries", + "theme":"fusion" + } + + # Convert the data in the `actualData` array into a format that can be consumed by FusionCharts. + # The data for the chart should be in an array wherein each element of the array is a JSON object + # having the `label` and `value` as keys. + + dataSource['data'] = [] + # Iterate through the data in `Country` model and insert in to the `dataSource['data']` list. + for key in SalesRecord.objects.raw("select 1 as id, Region, SUM([TotalSales]) as [TotalSales] from SalesRecord group by Region"): + data = {} + data['label'] = key.Region + data['value'] = key.TotalSales + dataSource['data'].append(data) + + # Create an object for the Column 2D chart using the FusionCharts class constructor + column2D = FusionCharts("column2D", "ex1" , "600", "400", "chart-1", "json", dataSource) + return render(request, 'index.html', {'output': column2D.render(),'chartTitle': 'Chart Using Database (SQLite3)'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_json_data_from_url.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_json_data_from_url.py new file mode 100755 index 0000000000000000000000000000000000000000..7899c5a19b0e02a519d35f1cfa77b91aecb0cbe6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_json_data_from_url.py @@ -0,0 +1,16 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1" , "600", "400", "chart-1", "jsonurl","/static/data/data.json") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(),'chartTitle': 'Chart using data from JSON URL'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_xml_data_from_url.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_xml_data_from_url.py new file mode 100755 index 0000000000000000000000000000000000000000..1a6734dbd62167e7c6d87c22c6d23c6ab7d71aac --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/fetching_xml_data_from_url.py @@ -0,0 +1,16 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1" , "600", "400", "chart-1", "xmlurl","/static/data/data.xml") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(), 'chartTitle': 'Chart using data from XML URL'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/get_data_from_scatter_chart.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/get_data_from_scatter_chart.py new file mode 100755 index 0000000000000000000000000000000000000000..79faba84e092339f7d87f77fa4da95ea9206024e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/get_data_from_scatter_chart.py @@ -0,0 +1,334 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a selectscatter chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the selectscatter chart using the FusionCharts class constructor + selectscatter = FusionCharts("selectscatter", "ex1", 700, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "theme": "fusion", + "caption": "Products Sold vs. Price points", + "subcaption": "Harry\\'s SuperMart - Last Week", + "yaxisname": "Quantity Sold", + "xaxisname": "Price(In US $)", + "xaxismaxvalue": "1000", + "xaxisminvalue": "100", + "yaxismaxvalue": "200", + "xnumberprefix": "$", + "ynumbersuffix": " units", + "showcanvasborder": "1", + "canvasborderthickness": "0.4", + "canvasborderalpha": "50", + "showXAxisLine": "0", + "showformbtn": "1", + "formAction": "#", + "submitdataasxml": "1" + }, + "categories": [ + { + "verticallinecolor": "666666", + "verticallinethickness": "1", + "alpha": "40", + "category": [ + { + "label": "$100", + "x": "100", + "showverticalline": "0" + }, { + "label": "$200", + "x": "200", + "showverticalline": "1" + }, { + "label": "$300", + "x": "300", + "showverticalline": "1" + }, { + "label": "$400", + "x": "400", + "showverticalline": "1" + }, { + "label": "$500", + "x": "500", + "showverticalline": "1" + }, { + "label": "$600", + "x": "600", + "showverticalline": "1" + }, { + "label": "$700", + "x": "700", + "showverticalline": "1" + }, { + "label": "$800", + "x": "800", + "showverticalline": "1" + }, { + "label": "$900", + "x": "900", + "showverticalline": "1" + }, { + "label": "$1000", + "x": "1000", + "showverticalline": "0" + }] + } + ], + "dataset": [ + { + "drawline": "0", + "seriesname": "Televisions", + "color": "#6baa01", + "anchorsides": "3", + "anchorradius": "4", + "anchorbgcolor": "#6baa01", + "anchorbordercolor": "#6baa01", + "data": [ + { + "id": "TV_1", + "y": "559", + "x": "714" + }, { + "id": "TV_2", + "y": "293", + "x": "988" + }, { + "id": "TV_3", + "y": "231", + "x": "970" + }, { + "id": "TV_4", + "y": "528", + "x": "142" + }, { + "id": "TV_5", + "y": "95", + "x": "800" + }, { + "id": "TV_6", + "y": "515", + "x": "813" + }, { + "id": "TV_7", + "y": "444", + "x": "928" + }, { + "id": "TV_8", + "y": "592", + "x": "238" + }, { + "id": "TV_9", + "y": "229", + "x": "959" + }, { + "id": "TV_10", + "y": "238", + "x": "521" + }, { + "id": "TV_11", + "y": "285", + "x": "222" + }, { + "id": "TV_12", + "y": "524", + "x": "863" + }, { + "id": "TV_13", + "y": "422", + "x": "820" + }, { + "id": "TV_14", + "y": "344", + "x": "894" + }, { + "id": "TV_15", + "y": "510", + "x": "800" + }, { + "id": "TV_16", + "y": "132", + "x": "785" + }, { + "id": "TV_17", + "y": "381", + "x": "214" + }, { + "id": "TV_18", + "y": "210", + "x": "961" + }, { + "id": "TV_19", + "y": "496", + "x": "575" + }, { + "id": "TV_20", + "y": "330", + "x": "847" + }, { + "id": "TV_21", + "y": "436", + "x": "893" + }, { + "id": "TV_22", + "y": "406", + "x": "157" + }, { + "id": "TV_23", + "y": "125", + "x": "349" + }, { + "id": "TV_24", + "y": "450", + "x": "818" + }, { + "id": "TV_25", + "y": "455", + "x": "615" + }, { + "id": "TV_26", + "y": "328", + "x": "256" + }, { + "id": "TV_27", + "y": "188", + "x": "460" + }, { + "id": "TV_28", + "y": "565", + "x": "350" + }, { + "id": "TV_29", + "y": "149", + "x": "582" + }, { + "id": "TV_30", + "y": "425", + "x": "970" + }] + }, { + "seriesname": "Cell Phones", + "color": "#f8bd19", + "anchorsides": "4", + "anchorradius": "4", + "anchorbgcolor": "#f8bd19", + "anchorbordercolor": "#f8bd19", + "data": [ + { + "id": "Mob_1", + "y": "335", + "x": "156" + }, { + "id": "Mob_2", + "y": "339", + "x": "927" + }, { + "id": "Mob_3", + "y": "328", + "x": "847" + }, { + "id": "Mob_4", + "y": "1", + "x": "177" + }, { + "id": "Mob_5", + "y": "246", + "x": "175" + }, { + "id": "Mob_6", + "y": "368", + "x": "441" + }, { + "id": "Mob_7", + "y": "146", + "x": "200" + }, { + "id": "Mob_8", + "y": "347", + "x": "482" + }, { + "id": "Mob_9", + "y": "1", + "x": "463" + }, { + "id": "Mob_10", + "y": "63", + "x": "440" + }, { + "id": "Mob_11", + "y": "77", + "x": "211" + }, { + "id": "Mob_12", + "y": "108", + "x": "824" + }, { + "id": "Mob_13", + "y": "44", + "x": "850" + }, { + "id": "Mob_14", + "y": "77", + "x": "712" + }, { + "id": "Mob_15", + "y": "15", + "x": "199" + }, { + "id": "Mob_16", + "y": "333", + "x": "836" + }, { + "id": "Mob_17", + "y": "31", + "x": "482" + }, { + "id": "Mob_18", + "y": "90", + "x": "604" + }, { + "id": "Mob_19", + "y": "294", + "x": "716" + }, { + "id": "Mob_20", + "y": "241", + "x": "870" + }, { + "id": "Mob_21", + "y": "258", + "x": "421" + }, { + "id": "Mob_22", + "y": "186", + "x": "456" + }, { + "id": "Mob_23", + "y": "255", + "x": "327" + }, { + "id": + "Mob_24", + "y": "203", + "x": "995" + }, { + "id": "Mob_25", + "y": "35", + "x": "792" + }] + }] + }""") + + selectscatter.addEvent("renderComplete", "onRenderComplete") + selectscatter.addEvent("beforeDataSubmit", "onBeforeDataSubmit") + selectscatter.addEvent("dataRestored", "onDataRestored") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'data-from-scatter-chart.html', {'output' : selectscatter.render(),'chartTitle': 'Get data from select scatter chart and show them in tabular format'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/highlight_specific_data_points.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/highlight_specific_data_points.py new file mode 100755 index 0000000000000000000000000000000000000000..cff844b43ba31bbc194a2109152ed4ec712b3543 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/highlight_specific_data_points.py @@ -0,0 +1,86 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a spline chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the spline chart using the FusionCharts class constructor + spline = FusionCharts("spline", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Bakersfield Central - Total footfalls", + "subCaption": "Last week", + "xAxisName": "Day", + "yAxisName": "No. of Visitors (In 1000s)", + "showValues": "0", + "theme": "fusion" + }, + "annotations":{ + "groups": [ + { + "id": "anchor-highlight", + "items": [ + { + "id": "high-star", + "type": "circle", + "x": "$dataset.0.set.2.x", + "y": "$dataset.0.set.2.y", + "radius": "12", + "color": "#6baa01", + "border": "2", + "borderColor": "#f8bd19" + }, + { + "id": "label", + "type": "text", + "text": "Highest footfall 25.5K", + "fillcolor": "#6baa01", + "rotate": "90", + "x": "$dataset.0.set.2.x+75", + "y": "$dataset.0.set.2.y-2" + } + ] + } + ] + }, + "data": [ + { + "label": "Mon", + "value": "15123" + }, + { + "label": "Tue", + "value": "14233" + }, + { + "label": "Wed", + "value": "25507" + }, + { + "label": "Thu", + "value": "9110" + }, + { + "label": "Fri", + "value": "15529" + }, + { + "label": "Sat", + "value": "20803" + }, + { + "label": "Sun", + "value": "19202" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : spline.render(),'chartTitle': 'Highlight specific data points through API'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/interactive_event.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/interactive_event.py new file mode 100755 index 0000000000000000000000000000000000000000..fddc23af9deeb22204ef4ab68f73e7ef64eb935c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/interactive_event.py @@ -0,0 +1,57 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show how to attach event in chart. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '700', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # Attach event with method name, and the callee method defined in html page. + column2d.addEvent("dataplotClick", "onDataplotClick") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'interactive-event.html', {'output' : column2d.render(),'chartTitle': 'Example of event(interactive event)'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/number_format_module.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/number_format_module.py new file mode 100755 index 0000000000000000000000000000000000000000..1c6355f82a1dda762065f018fcb8e90182eff7e0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/number_format_module.py @@ -0,0 +1,57 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show how to attach event in chart. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '700', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # Attach event with method name, and the callee method defined in html page. + column2d.addEvent("renderComplete", "onRenderComplete") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'number-format.html', {'output' : column2d.render(),'chartTitle': 'Example of event(Number format)'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/product_life_cycle_event.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/product_life_cycle_event.py new file mode 100755 index 0000000000000000000000000000000000000000..c29f424b2775e7ce7f10e0089d1db139927fae0b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/product_life_cycle_event.py @@ -0,0 +1,57 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show how to attach event in chart. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", '700', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # Attach event with method name, and the callee method defined in html page. + column2d.addEvent("dataLoaded", "onDataLoaded") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'product-life-cycle-event.html', {'output' : column2d.render(),'chartTitle': 'Example of event(product life cycle event)'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_angular_gauge_using_dictionary_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_angular_gauge_using_dictionary_example.py new file mode 100755 index 0000000000000000000000000000000000000000..ac54a99cf5cf81a6af8f7077351e33bd532120b0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_angular_gauge_using_dictionary_example.py @@ -0,0 +1,74 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the widget in html page +from ..fusioncharts import FusionCharts +from collections import OrderedDict + + +# Loading Data from a Ordered Dictionary +# Example to create a Angular Gauge with the data passed as Dictionary format. +# The `chart` method is defined to load widget data from Dictionary. + +def chart(request): + + # Load dial indicator values from simple string array + # e.g. dialValues = ["52", "10", "81", "95"] + dialValues = ["81"] + + # widget data is passed to the `dataSource` parameter, as dict, in the form of key-value pairs. + dataSource = OrderedDict() + + # The `widgetConfig` dict contains key-value pairs data for widget attribute + widgetConfig = OrderedDict() + widgetConfig["caption"] = "Nordstorm's Customer Satisfaction Score for 2017" + widgetConfig["lowerLimit"] = "0" + widgetConfig["upperLimit"] = "100" + widgetConfig["showValue"] = "1" + widgetConfig["numberSuffix"] = "%" + widgetConfig["theme"] = "fusion" + widgetConfig["showToolTip"] = "0" + + + # The `colorData` dict contains key-value pairs data for ColorRange of dial + colorRangeData = OrderedDict() + colorRangeData["color"] = [ + { + "minValue": "0", + "maxValue": "50", + "code": "#F2726F" + }, + { + "minValue": "50", + "maxValue": "75", + "code": "#FFC533" + }, + { + "minValue": "75", + "maxValue": "100", + "code": "#62B58F" + } + ] + + # Convert the data in the `dialData` array into a format that can be consumed by FusionCharts. + dialData = OrderedDict() + dialData["dial"] = [] + + dataSource["chart"] = widgetConfig + dataSource["colorRange"] = colorRangeData + dataSource["dials"] = dialData + + + # Iterate through the data in `dialValues` and insert in to the `dialData["dial"]` list. + # The data for the `dial` should be in an array wherein each element of the array is a JSON object + # having the `value` as keys. + for i in range(len(dialValues)): + dialData["dial"].append({"value": dialValues[i]}) + + + # Create an object for the angular-gauge using the FusionCharts class constructor + # The widget data is passed to the `dataSource` parameter. + angularChart = FusionCharts("angulargauge", "ex1", "100%", "200", "chart-1", "json", dataSource) + + # returning complete JavaScript and HTML code, which is used to generate widget in the browsers. + return render(request, 'index.html', {'output' : angularChart.render(), 'chartTitle': 'Simple Widget Using Array'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_angular_gauge_using_json_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_angular_gauge_using_json_example.py new file mode 100755 index 0000000000000000000000000000000000000000..9685cf4c54032b73e4c1da3bb2e749b864f975c4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_angular_gauge_using_json_example.py @@ -0,0 +1,49 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# Example to create a Angular Gauge with the chart data passed as JSON string format. +# The `chart` method is defined to load chart data from a JSON string. + +def chart(request): + + # Create an object for the angualar gauge using the FusionCharts class constructor + angularGauge = FusionCharts("angulargauge", "ex1" , "450", "270", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "Nordstorm's Customer Satisfaction Score for 2017", + "lowerLimit": "0", + "upperLimit": "100", + "showValue": "1", + "numberSuffix": "%", + "theme": "fusion", + "showToolTip": "0" + }, + "colorRange": { + "color": [{ + "minValue": "0", + "maxValue": "50", + "code": "#F2726F" + }, { + "minValue": "50", + "maxValue": "75", + "code": "#FFC533" + }, { + "minValue": "75", + "maxValue": "100", + "code": "#62B58F" + }] + }, + "dials": { + "dial": [{ + "value": "81" + }] + } + }""") + # Alternatively, you can assign this string to a string variable in a separate JSON file + # and pass the URL of that file to the `dataSource` parameter. + return render(request, 'index.html', {'output' : angularGauge.render(),'chartTitle': 'Angular Gauge'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_chart_with_different_language.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_chart_with_different_language.py new file mode 100755 index 0000000000000000000000000000000000000000..3b13a89943df6c51784fd76f843071bf6a2a0926 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_chart_with_different_language.py @@ -0,0 +1,79 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a different language other than english using column2d chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": { + "caption": "سوبرماركت هاري", + "subCaption": "الإيرادات الشهرية للعام الماضي", + "xAxisName": "الشهر", + "yAxisName": "كمية", + "numberPrefix": "$", + "theme": "fusion", + "rotateValues": "1", + "exportEnabled": "1" + }, + "data": [ + { + "label": "يناير", + "value": "420000" + }, + { + "label": "فبراير", + "value": "810000" + }, + { + "label": "مارس", + "value": "720000" + }, + { + "label": "أبريل", + "value": "550000" + }, + { + "label": "مايو", + "value": "910000" + }, + { + "label": "يونيو", + "value": "510000" + }, + { + "label": "يوليو", + "value": "680000" + }, + { + "label": "أغسطس", + "value": "620000" + }, + { + "label": "سبتمبر", + "value": "610000" + }, + { + "label": "أكتوبر", + "value": "490000" + }, + { + "label": "نوفمبر", + "value": "900000" + }, + { + "label": "ديسمبر", + "value": "730000" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : column2d.render(),'chartTitle': 'Different language example'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_charts_by_common_theme.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_charts_by_common_theme.py new file mode 100755 index 0000000000000000000000000000000000000000..196857f85c82251be868980e204fbc8a2c70725f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_charts_by_common_theme.py @@ -0,0 +1,100 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Overlapped Bar 2D and column 2d chart where data is passed as JSON string format. +# These charts are rendering with a common theme. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the overlappedbar2d chart using the FusionCharts class constructor + overlappedcolumn2d = FusionCharts("overlappedcolumn2d", "ex1" , "600", "400", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "Split of Sales by Product Category", + "subCaption": "5 top performing stores - last month", + "plotToolText": "<div><b>$label</b><br/>Product : <b>$seriesname</b><br/>Sales : <b>$$value</b></div>", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "Garden Groove harbour" + }, { + "label": "Bakersfield Central" + }, { + "label": "Los Angeles Topanga" + }, { + "label": "Compton-Rancho Dom" + }, { + "label": "Daly City Serramonte" + }] + }], + "dataset": [{ + "seriesname": "Non-Food Products", + "data": [{ + "value": "28800" + }, { + "value": "25400" + }, { + "value": "21800" + }, { + "value": "19500" + }, { + "value": "11500" + }] + }, { + "seriesname": "Food Products", + "data": [{ + "value": "17000" + }, { + "value": "19500" + }, { + "value": "12500" + }, { + "value": "14500" + }, { + "value": "17500" + }] + }] + }""") + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex2" , "600", "400", "chart-2", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart":{ + "caption":"Harry\'s SuperMart", + "subCaption":"Top 5 stores in last month by revenue", + "numberPrefix":"$", + "theme": "fusion" + }, + "data":[ + { + "label":"Bakersfield Central", + "value":"880000" + }, + { + "label":"Garden Groove harbour", + "value":"730000" + }, + { + "label":"Los Angeles Topanga", + "value":"590000" + }, + { + "label":"Compton-Rancho Dom", + "value":"520000" + }, + { + "label":"Daly City Serramonte", + "value":"330000" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'chart-theme.html', {'output1' : overlappedcolumn2d.render(), 'output2' : column2d.render(),'chartTitle': 'Chart Themes'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_column2d_chart_using_dictionary_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_column2d_chart_using_dictionary_example.py new file mode 100755 index 0000000000000000000000000000000000000000..55ea23b9e69462d68337a9ee1477557818e9aa34 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_column2d_chart_using_dictionary_example.py @@ -0,0 +1,58 @@ +from django.shortcuts import render +from django.http import HttpResponse + +from collections import OrderedDict + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +# Loading Data from a Ordered Dictionary +# Example to create a column 2D chart with the chart data passed as Dictionary format. +# The `chart` method is defined to load chart data from Dictionary. + +def chart(request): + + # Chart data is passed to the `dataSource` parameter, as dictionary in the form of key-value pairs. + dataSource = OrderedDict() + + # The `chartConfig` dict contains key-value pairs data for chart attribute + chartConfig = OrderedDict() + chartConfig["caption"] = "Countries With Most Oil Reserves [2017-18]" + chartConfig["subCaption"] = "In MMbbl = One Million barrels" + chartConfig["xAxisName"] = "Country" + chartConfig["yAxisName"] = "Reserves (MMbbl)" + chartConfig["numberSuffix"] = "K" + chartConfig["theme"] = "fusion" + + # The `chartData` dict contains key-value pairs data + chartData = OrderedDict() + chartData["Venezuela"] = 290 + chartData["Saudi"] = 260 + chartData["Canada"] = 180 + chartData["Iran"] = 140 + chartData["Russia"] = 115 + chartData["UAE"] = 100 + chartData["US"] = 30 + chartData["China"] = 30 + + + dataSource["chart"] = chartConfig + dataSource["data"] = [] + + # Convert the data in the `chartData` array into a format that can be consumed by FusionCharts. + # The data for the chart should be in an array wherein each element of the array is a JSON object + # having the `label` and `value` as keys. + + # Iterate through the data in `chartData` and insert in to the `dataSource['data']` list. + for key, value in chartData.items(): + data = {} + data["label"] = key + data["value"] = value + dataSource["data"].append(data) + + + # Create an object for the column 2D chart using the FusionCharts class constructor + # The chart data is passed to the `dataSource` parameter. + column2D = FusionCharts("column2d", "ex1" , "600", "400", "chart-1", "json", dataSource) + + return render(request, 'index.html', {'output' : column2D.render(), 'chartTitle': 'Simple Chart Using Array'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_column_line_area_combi_using_json_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_column_line_area_combi_using_json_example.py new file mode 100755 index 0000000000000000000000000000000000000000..7a6adfde51eadb2584aead3fed9d735b0b65046f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_column_line_area_combi_using_json_example.py @@ -0,0 +1,142 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a MsCombi 3D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the mscombi3d chart using the FusionCharts class constructor + mscombi3dChart = FusionCharts("mscombi3d", "ex3", "100%", 400, "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "Salary Hikes by Country", + "subCaption": "2016 - 2017", + "numberSuffix": "%", + "rotatelabels": "1", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "Australia" + }, { + "label": "New-Zealand" + }, { + "label": "India" + }, { + "label": "China" + }, { + "label": "Myanmar" + }, { + "label": "Bangladesh" + }, { + "label": "Thailand" + }, { + "label": "South Korea" + }, { + "label": "Hong Kong" + }, { + "label": "Singapore" + }, { + "label": "Taiwan" + }, { + "label": "Vietnam" + }] + }], + "dataset": [{ + "seriesName": "2016 Actual Salary Increase", + "plotToolText" : "Salaries increased by <b>$dataValue</b> in 2016", + "data": [{ + "value": "3" + }, { + "value": "3" + }, { + "value": "10" + }, { + "value": "7" + }, { + "value": "7.4" + }, { + "value": "10" + }, { + "value": "5.4" + }, { + "value": "4.5" + }, { + "value": "4.1" + }, { + "value": "4" + }, { + "value": "3.7" + }, { + "value": "9.3" + }] + }, { + "seriesName": "2017 Projected Salary Increase", + "plotToolText" : "Salaries expected to increase by <b>$dataValue</b> in 2017", + "renderAs": "line", + "data": [{ + "value": "3" + }, { + "value": "2.8" + }, { + "value": "10" + }, { + "value": "6.9" + }, { + "value": "6.7" + }, { + "value": "9.4" + }, { + "value": "5.5" + }, { + "value": "5" + }, { + "value": "4" + }, { + "value": "4" + }, { + "value": "4.5" + }, { + "value": "9.8" + }] + }, { + "seriesName": "Inflation rate", + "plotToolText" : "$dataValue projected inflation", + "renderAs": "area", + "showAnchors":"0", + "data": [{ + "value": "1.6" + }, { + "value": "0.6" + }, { + "value": "5.6" + }, { + "value": "2.3" + }, { + "value": "7" + }, { + "value": "5.6" + }, { + "value": "0.2" + }, { + "value": "1" + }, { + "value": "2.6" + }, { + "value": "0" + }, { + "value": "1.1" + }, { + "value": "2.4" + }] + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : mscombi3dChart.render(), 'chartTitle': 'Multiseries Combination 3D Chart'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_map_using_dictionary_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_map_using_dictionary_example.py new file mode 100755 index 0000000000000000000000000000000000000000..77a93f20049670b4a1e6636d6ed9f96fe1cde556 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_map_using_dictionary_example.py @@ -0,0 +1,62 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts +from collections import OrderedDict + +# Loading Data from a Ordered Dictionary +# Example to create a World Map with the chart data passed as Dictionary format. +# The `chart` method is defined to load chart data from Dictionary. + +def chart(request): + + # Chart data is passed to the `dataSource` parameter, as dict, in the form of key-value pairs. + dataSource = OrderedDict() + + # The `mapConfig` dict contains key-value pairs data for chart attribute + mapConfig = OrderedDict() + mapConfig["caption"] = "Average Annual Population Growth" + mapConfig["subcaption"] = "1955-2015" + mapConfig["numbersuffix"] = "%" + mapConfig["includevalueinlabels"] = "1" + mapConfig["labelsepchar"] = ":" + mapConfig["theme"] = "fusion" + + # Map color range data + colorDataObj = { "minvalue": "0", "code" : "#FFE0B2", "gradient": "1", + "color" : [ + { "minValue" : "0.5", "maxValue" : "1", "code" : "#FFD74D" }, + { "minValue" : "1.0", "maxValue" : "2.0", "code" : "#FB8C00" }, + { "minValue" : "2.0", "maxValue" : "3.0", "code" : "#E65100" } + ] + } + + dataSource["chart"] = mapConfig + dataSource["colorrange"] = colorDataObj + dataSource["data"] = [] + + + # Map data array + mapDataArray = [ + ["NA", "0.82", "1"], + ["SA", "2.04", "1"], + ["AS", "1.78", "1"], + ["EU", "0.40", "1"], + ["AF", "2.58", "1"], + ["AU", "1.30", "1"] + ] + + + # Iterate through the data in `mapDataArray` and insert in to the `dataSource["data"]` list. + # The data for the `data` should be in an array wherein each element of the array is a JSON object + # having the `id`, `value` and `showlabel` as keys. + for i in range(len(mapDataArray)): + dataSource["data"].append({"id": mapDataArray[i][0], "value": mapDataArray[i][1], "showLabel": mapDataArray[i][2] }) + + # Create an object for the world map using the FusionCharts class constructor + # The chart data is passed to the `dataSource` parameter. + fusionMap = FusionCharts("maps/world", "ex1" , "650", "450", "chart-1", "json", dataSource) + + # returning complete JavaScript and HTML code, which is used to generate map in the browsers. + return render(request, 'index.html', {'output' : fusionMap.render(), 'chartTitle': 'Simple Map Using Array'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_map_using_json_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_map_using_json_example.py new file mode 100755 index 0000000000000000000000000000000000000000..99b0bcc9f1e4b19fadfd6fa0d77a8f916d627785 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_map_using_json_example.py @@ -0,0 +1,260 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts +from collections import OrderedDict + +# Loading Data from a Ordered Dictionary +# Example to create a Map with the chart data passed as Dictionary format. +# The `chart` method is defined to load chart data from Dictionary. + +def chart(request): + + # Create an object for the map using the FusionCharts class constructor + # The chart data is passed to the `dataSource` parameter. + fusionMap = FusionCharts("maps/usa", "ex1" , "650", "450", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "Average Temperature of US States", + "subcaption": "1979 - 2000", + "numberSuffix": "°F", + "showLabels": "1", + "borderThickness": "0.4", + "theme": "fusion", + "entityToolText": "<b>$lname</b> has an average temperature of <b>$datavalue</b>" + }, + "colorrange": { + "minvalue": "20", + "code": "#00A971", + "gradient": "1", + "color": [{ + "minvalue": "20", + "maxvalue": "40", + "code": "#EFD951" + }, { + "minvalue": "40", + "maxvalue": "60", + "code": "#FD8963" + }, + { + "minvalue": "60", + "maxvalue": "80", + "code": "#D60100" + } + + ] + }, + "data": [{ + "id": "HI", + "value": "70.0" + }, + { + "id": "DC", + "value": "52.3" + }, + { + "id": "MD", + "value": "54.2" + }, + { + "id": "DE", + "value": "55.3" + }, + { + "id": "RI", + "value": "50.1" + }, + { + "id": "WA", + "value": "48.3" + }, + { + "id": "OR", + "value": "48.4" + }, + { + "id": "CA", + "value": "59.4" + }, + { + "id": "AK", + "value": "26.6", + }, + { + "id": "ID", + "value": "44.4" + }, + { + "id": "NV", + "value": "49.9" + }, + { + "id": "AZ", + "value": "60.3" + }, + { + "id": "MT", + "value": "42.7" + }, + { + "id": "WY", + "value": "42.0" + }, + { + "id": "UT", + "value": "48.6" + }, + { + "id": "CO", + "value": "45.1" + }, + { + "id": "NM", + "value": "53.4" + }, + { + "id": "ND", + "value": "40.4" + }, + { + "id": "SD", + "value": "45.2" + }, + { + "id": "NE", + "value": "48.8" + }, + { + "id": "KS", + "value": "54.3" + }, + { + "id": "OK", + "value": "59.6" + }, + { + "id": "TX", + "value": "64.8" + }, + { + "id": "MN", + "value": "41.2" + }, + { + "id": "IA", + "value": "47.8" + }, + { + "id": "MO", + "value": "54.5" + }, + { + "id": "AR", + "value": "60.4" + }, + { + "id": "LA", + "value": "66.4" + }, + { + "id": "WI", + "value": "43.1" + }, + { + "id": "IL", + "value": "51.8" + }, + { + "id": "KY", + "value": "55.6" + }, + { + "id": "TN", + "value": "57.6" + }, + { + "id": "MS", + "value": "63.4" + }, + { + "id": "AL", + "value": "62.8" + }, + { + "id": "GA", + "value": "63.5" + }, + { + "id": "MI", + "value": "44.4" + }, + { + "id": "IN", + "value": "51.7" + }, + { + "id": "OH", + "value": "50.7" + }, + { + "id": "PA", + "value": "48.8" + }, + { + "id": "NY", + "value": "45.4" + }, + { + "id": "VT", + "value": "42.9" + }, + { + "id": "NH", + "value": "43.8" + }, + { + "id": "ME", + "value": "41.0" + }, + { + "id": "MA", + "value": "47.9" + }, + { + "id": "CT", + "value": "49.0" + }, + { + "id": "NJ", + "value": "52.7" + }, + { + "id": "WV", + "value": "51.8" + }, + { + "id": "VA", + "value": "55.1" + }, + { + "id": "NC", + "value": "59.0" + }, + { + "id": "SC", + "value": "62.4" + }, + { + "id": "FL", + "value": "70.7" + } + ] + }""") + + # returning complete JavaScript and HTML code, which is used to generate map in the browsers. + return render(request, 'index.html', {'output' : fusionMap.render(), 'chartTitle': 'USA Map'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_multiseries_StackedColumn2dline_using_json_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_multiseries_StackedColumn2dline_using_json_example.py new file mode 100755 index 0000000000000000000000000000000000000000..05bca1b1538da1058d137804b380bfc1adb291a3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_multiseries_StackedColumn2dline_using_json_example.py @@ -0,0 +1,101 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +# The `chart` function is defined to load data from a Python Dictionary. This data will be converted to +# JSON and the chart will be rendered in the browser. + +def chart(request): + + # Create an object for the Multiseries column 2D charts using the FusionCharts class constructor + mscol2D = FusionCharts("stackedColumn2DLine", "ex1" , "600", "400", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "showvalues": "0", + "caption": "Apple's Revenue & Profit", + "subCaption": "(2013-2016)", + "numberprefix": "$", + "numberSuffix" : "B", + "plotToolText" : "Sales of $seriesName in $label was <b>$dataValue</b>", + "showhovereffect": "1", + "yaxisname": "$ (In billions)", + "showSum":"1", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "2013" + }, { + "label": "2014" + }, { + "label": "2015" + }, { + "label": "2016" + }] + }], + "dataset": [{ + "seriesname": "iPhone", + "data": [{ + "value": "21" + }, { + "value": "24" + }, { + "value": "27" + }, { + "value": "30" + }] + }, { + "seriesname": "iPad", + "data": [{ + "value": "8" + }, { + "value": "10" + }, { + "value": "11" + }, { + "value": "12" + }] + }, { + "seriesname": "Macbooks", + "data": [{ + "value": "2" + }, { + "value": "4" + }, { + "value": "5" + }, { + "value": "5.5" + }] + }, { + "seriesname": "Others", + "data": [{ + "value": "2" + }, { + "value": "4" + }, { + "value": "9" + }, { + "value": "11" + }] + }, { + "seriesname": "Profit", + "plotToolText" : "Total profit in $label was <b>$dataValue</b>", + "renderas": "Line", + "data": [{ + "value": "17" + }, { + "value": "19" + }, { + "value": "13" + }, { + "value": "18" + }] + }] + }""") + + return render(request, 'index.html', {'output': mscol2D.render(), 'chartTitle': 'Stacked Column 2D with Line Chart'}) + + diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_multiseries_column2d_chart_using_json_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_multiseries_column2d_chart_using_json_example.py new file mode 100755 index 0000000000000000000000000000000000000000..1e337f822ef0fb797d8194e3c4e3704298443fa0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_multiseries_column2d_chart_using_json_example.py @@ -0,0 +1,85 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +# The `chart` function is defined to load data from a Python Dictionary. This data will be converted to +# JSON and the chart will be rendered in the browser. + +def chart(request): + + # Create an object for the Multiseries column 2D charts using the FusionCharts class constructor + mscol2D = FusionCharts("mscolumn2d", "ex1" , "600", "400", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "App Publishing Trend", + "subCaption": "2012-2016", + "xAxisName": "Years", + "yAxisName" : "Total number of apps in store", + "formatnumberscale": "1", + "drawCrossLine":"1", + "plotToolText" : "<b>$dataValue</b> apps on $seriesName in $label", + "theme": "fusion" + }, + + "categories": [{ + "category": [{ + "label": "2012" + }, { + "label": "2013" + }, { + "label": "2014" + }, { + "label": "2015" + },{ + "label": "2016" + } + ] + }], + "dataset": [{ + "seriesname": "iOS App Store", + "data": [{ + "value": "125000" + }, { + "value": "300000" + }, { + "value": "480000" + }, { + "value": "800000" + }, { + "value": "1100000" + }] + }, { + "seriesname": "Google Play Store", + "data": [{ + "value": "70000" + }, { + "value": "150000" + }, { + "value": "350000" + }, { + "value": "600000" + },{ + "value": "1400000" + }] + }, { + "seriesname": "Amazon AppStore", + "data": [{ + "value": "10000" + }, { + "value": "100000" + }, { + "value": "300000" + }, { + "value": "600000" + },{ + "value": "900000" + }] + }] + }""") + + return render(request, 'index.html', {'output': mscol2D.render(), 'chartTitle': 'Multiseries Column 2D Chart'}) + + diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_pie3d_using_json_example.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_pie3d_using_json_example.py new file mode 100755 index 0000000000000000000000000000000000000000..2a79013606f1997afcd46fb3170700a580cc06bb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/rendering_pie3d_using_json_example.py @@ -0,0 +1,44 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Pie 3D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + # Create an object for the pie3d chart using the FusionCharts class constructor + pie3d = FusionCharts("pie3d", "ex2" , "100%", "400", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "Recommended Portfolio Split", + "subCaption" : "For a net-worth of $1M", + "showValues":"1", + "showPercentInTooltip" : "0", + "numberPrefix" : "$", + "enableMultiSlicing":"1", + "theme": "fusion" + }, + "data": [{ + "label": "Equity", + "value": "300000" + }, { + "label": "Debt", + "value": "230000" + }, { + "label": "Bullion", + "value": "180000" + }, { + "label": "Real-estate", + "value": "270000" + }, { + "label": "Insurance", + "value": "20000" + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'index.html', {'output' : pie3d.render(), 'chartTitle': 'Pie 3D Chart'}) diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/special_chart_type_api.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/special_chart_type_api.py new file mode 100755 index 0000000000000000000000000000000000000000..465acdf22f8383f6436dd8dceb4cc87f466306d6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/special_chart_type_api.py @@ -0,0 +1,47 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show how to attach event in chart. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the pie2d chart using the FusionCharts class constructor + pie2d = FusionCharts("pie2d", "ex1", '700', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Market Share of Web Servers", + "plottooltext": "<b>$percentValue</b> of web servers run on $label servers", + "showLegend": "0", + "enableMultiSlicing": "0", + "showPercentValues": "1", + "legendPosition": "bottom", + "useDataPlotColorForLabels": "1", + "theme": "fusion" + }, + "data": [{ + "label": "Apache", + "value": "32647479" + }, { + "label": "Microsoft", + "value": "22100932" + }, { + "label": "Zeus", + "value": "14376" + }, { + "label": "Other", + "value": "18674221" + }] + }""") + + # Attach event with method name, and the callee method defined in html page.) + pie2d.addEvent("dataplotClick", "plotClickHandler") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'special-chart-type-api.html', {'output' : pie2d.render(),'chartTitle': 'Special chart type API'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/special_event.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/special_event.py new file mode 100755 index 0000000000000000000000000000000000000000..838ef8b0674be29947678dc7c593cf766f140ea5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/special_event.py @@ -0,0 +1,57 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show how to attach event in chart. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the hlineargauge chart using the FusionCharts class constructor + lineargauge = FusionCharts("hlineargauge", "ex1", '700', '400', "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": { + "caption": "Server CPU Utilization", + "subcaption": "food.hsm.com", + "lowerLimit": "0", + "upperLimit": "100", + "numberSuffix": "%", + "valueAbovePointer": "0", + "editmode":"1" + }, + "colorRange": { + "color": [ + { + "minValue": "0", + "maxValue": "35", + "label": "Low", + "code": "#1aaf5d" + }, { + "minValue": "35", + "maxValue": "70", + "label": "Moderate", + "code": "#f2c500" + }, { + "minValue": "70", + "maxValue": "100", + "label": "High", + "code": "#c02d00" + } ] + }, + "pointers": + { + "pointer": [{ + "value": "72.5" + }] + } + }""") + + # Attach event with method name, and the callee method defined in html page. + lineargauge.addEvent("realtimeUpdateComplete", "onUpdate") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'special-event.html', {'output' : lineargauge.render(),'chartTitle': 'Example of event(interactive event)'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/update_data_runtime.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/update_data_runtime.py new file mode 100755 index 0000000000000000000000000000000000000000..475cf30028d10105fe7fe83f52cb283d7516b0b9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/update_data_runtime.py @@ -0,0 +1,49 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file that contains functions to embed the charts. +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# Example to create a Angular Gauge with the chart data passed as JSON string format. +# The `chart` method is defined to load chart data from a JSON string. + +def chart(request): + + # Create an object for the angualar gauge using the FusionCharts class constructor + angularGauge = FusionCharts("angulargauge", "ex1" , "450", "270", "chart-1", "json", + # The data is passed as a string in the `dataSource` as parameter. + """{ + "chart": { + "caption": "Customer Satisfaction Score", + "subcaption": "Los Angeles Topanga", + "plotToolText": "Current Score: $value", + "theme": "fint", + "chartBottomMargin": "50", + "showValue": "1" + }, + "colorRange": { + "color": [{ + "minValue": "0", + "maxValue": "45", + "code": "#e44a00" + }, { + "minValue": "45", + "maxValue": "75", + "code": "#f8bd19" + }, { + "minValue": "75", + "maxValue": "100", + "code": "#6baa01" + }] + }, + "dials": { + "dial": [{ + "value": "70", + "id": "dial1" + }] + } + }""") + # Alternatively, you can assign this string to a string variable in a separate JSON file + # and pass the URL of that file to the `dataSource` parameter. + return render(request, 'update-data-runtime.html', {'output' : angularGauge.render(),'chartTitle': 'Update data at runtime'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/updating_chart_properties.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/updating_chart_properties.py new file mode 100755 index 0000000000000000000000000000000000000000..80d110def01d6c54a7b76f8b391f981f0ff40e97 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/samples/updating_chart_properties.py @@ -0,0 +1,54 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Include the `fusioncharts.py` file which has required functions to embed the charts in html page +from ..fusioncharts import FusionCharts + +# Loading Data from a Static JSON String +# It is a example to show a Column 2D chart where data is passed as JSON string format. +# The `chart` method is defined to load chart data from an JSON string. + +def chart(request): + + # Create an object for the column2d chart using the FusionCharts class constructor + column2d = FusionCharts("column2d", "ex1", 600, 400, "chart-1", "json", + # The chart data is passed as a string to the `dataSource` parameter. + """{ + "chart": + { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + }""") + + # returning complete JavaScript and HTML code, which is used to generate chart in the browsers. + return render(request, 'chart-product-level-api.html', {'output' : column2d.render(),'chartTitle': 'Updating chart properties at runtime'}) \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/settings.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/settings.py new file mode 100755 index 0000000000000000000000000000000000000000..323c121ca077e72e8006ec65b7618fc2780c6ab9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/settings.py @@ -0,0 +1,125 @@ +""" +Django settings for fusioncharts project. + +Generated by 'django-admin startproject' using Django 1.10. + +For more information on this file, see +https://docs.djangoproject.com/en/dev/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/dev/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/dev/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 's7iz@a=9@)k1fn9pwcktke0a_9#8j344^tn69i6qwdi%an77ql' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'fusioncharts' +] + +MIDDLEWARE_CLASSES = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'fusioncharts.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': ['fusioncharts/templates'], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'fusioncharts.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/dev/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + + +# Password validation +# https://docs.djangoproject.com/en/dev/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/dev/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/dev/howto/static-files/ + +STATIC_URL = '/static/' + +STATICFILES_DIRS = [ + os.path.join(BASE_DIR, "fusioncharts/templates/static"), +] diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/catalogue.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/catalogue.html new file mode 100755 index 0000000000000000000000000000000000000000..4ecbef3dbd29a2bc74ec52ba67ce9a5303e2c0a5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/catalogue.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> +<html> + <head> + <title>FusionCharts || www.fusioncharts.com</title> + </head> + <body style="font-family:‘Helvetica Neue’, Arial; font-size: 16px;"> + <h1>FusionCharts Samples for Django</h1> + <ol> + <li><a href="/rendering-column2d-chart-using-dictionary-example">Simple Chart Using Array</a></li> + <li><a href="/rendering-angular-gauge-using-dictionary-example">Simple Widget Using Array</a></li> + <li><a href="/rendering-map-using-dictionary-example">Simple Map Using Array</a></li> + <li><a href="/rendering-angular-gauge-using-json-example">Angular Gauge</a></li> + <li><a href="/client-side-chart-export">Export Chart As Image (client-side)</a></li> + <li><a href="/export-chart-using-export-handler">Export Chart As Image (server-side)</a></li> + <li><a href="/drilldown-from-database-example">Chart with Drill-Down Feature</a></li> + <li><a href="/rendering-multiseries-column2d-chart-using-json-example">Multiseries Column 2D Chart</a></li> + <li><a href="/rendering-column-line-area-combi-using-json-example">Multiseries Combination 3D Chart</a></li> + <li><a href="/rendering-pie3d-using-json-example">Pie 3D Chart</a></li> + <li><a href="/rendering-multiseries-StackedColumn2dline-using-json-example">Stacked Column 2D with Line Chart</a></li> + <li><a href="/fetching-data-from-database">Chart Using Database (SQLite3)</a></li> + <li><a href="/rendering-map-using-json-example">USA Map</a></li> + <li><a href="/rendering-charts-by-common-theme">Chart Themes</a></li> + <li><a href="/fetching-xml-data-from-url">Chart using data from XML URL</a></li> + <li><a href="/fetching-json-data-from-url">Chart using data from JSON URL</a></li> + <li><a href="/dynamic-chart-resize">Dynamic Chart Resize</a></li> + <li><a href="/dynamic-chart-type">Chart Type Change At Runtime</a></li> + <li><a href="/chart-annotation">Using Annotations On Chart</a></li> + <li><a href="/chart-update-onclick">Updating Different Chart</a></li> + <li><a href="/rendering-chart-with-different-language">Different language example</a></li> + <li><a href="/chart-special-chart">Chart using special character in XML data format</a></li> + <li><a href="/chart-tooltip">Customizing tooltip</a></li> + <li><a href="/product-life-cycle-event">Example of event(product life cycle event)</a></li> + <li><a href="/special-event">Example of event(interactive event)</a></li> + <li><a href="/chart-message">Message related attributes and configuration</a></li> + <li><a href="/interactive-event">Example of event(interactive event)</a></li> + <li><a href="/number-format-module">Example of event(Number format)</a></li> + <li><a href="/special-chart-type-api">Example of event(SpecialChartType API)</a></li> + <li><a href="/chart-instance-level-api">Add/Remove event at runtime(Chart instance level API)</a></li> + <li><a href="/chart-product-level-api">Example of product level API</a></li> + <li><a href="/updating-chart-properties">Updating chart properties at runtime</a></li> + <li><a href="/highlight-specific-data-points">Highlight specific data points through API</a></li> + <li><a href="/update-data-runtime">Update data at runtime</a></li> + <li><a href="/get-data-from-scatter-chart">Get data from select scatter chart and show them in tabular format</a></li> + + + </ol> + </body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-instance-level-api.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-instance-level-api.html new file mode 100755 index 0000000000000000000000000000000000000000..c630d569c3fa1db1beeb05f901d8bc9f58e19a3f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-instance-level-api.html @@ -0,0 +1,98 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + track = function(){ + FusionCharts.addEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click on the plot to see the value along with the label"; + //trackButton = disableStyle; + //resetButton = activeStyle; + }; + clickHandler = function(e){ + document.getElementById("message").innerHTML = "You have clicked on plot <b>"+ e.data.categoryLabel + "</b> whose value is <b>" + e.data.displayValue + "</b>"; + }; + reset = function(){ + FusionCharts.removeEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click the below buttons to add an event dynamically to the chart"; + //trackButton = activeStyle; + //resetButton = disableStyle; + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div align="center" id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onClick="track()"> + <label for="radio1">LISTEN TO DATAPLOTCLICK EVENT</label> + <input type="radio" id="radio2" name="radios"value="false" onClick="reset()"> + <label for="radio2">REMOVE DATAPLOTCLICK EVENT</label> + </div> + + + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-product-level-api.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-product-level-api.html new file mode 100755 index 0000000000000000000000000000000000000000..58b85ba275c8ba52a4a9660600205bdcb7391f24 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-product-level-api.html @@ -0,0 +1,84 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + <style> + .button { + display:inline-block; + margin:5px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + </style> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + changeCaption = function(){ + FusionCharts("ex1").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(e){ + FusionCharts("ex1").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(e){ + FusionCharts("ex1").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + reset = function(e){ + FusionCharts("ex1").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("ex1").setChartAttribute('xAxisName', 'Country'); + FusionCharts("ex1").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div align="center" id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="button" class="button" onClick="changeCaption()" value='Change Caption: Test Caption'/> + <input type="button" class="button" onClick="changeXAxisName()" value='Change X-Axis Name: Test X-Axis'/> + <input type="button" class="button" onClick="changeYAxisName()" value='Change Y-Axis Name: Test Y-Axis'/> + <input type="button" class="button" onClick="reset()" value='Reset'/> + </div> + + + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-theme.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-theme.html new file mode 100755 index 0000000000000000000000000000000000000000..58eb4dfc2ca797e845e0e60c74a638df962ed8aa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-theme.html @@ -0,0 +1,86 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + <!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> + <!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.gammel.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.zune.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.carbon.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.ocean.js" %}"></script> + --> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + + //FusionCharts.options.defaultTheme = "fusion"; + + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + ChangeTheme(this.value); + }; + } + } + }); + + function ChangeTheme(theme) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].setChartAttribute('theme', theme); + } + } + }; + + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + + <div style="width: 100%; display: table;"> + <div style="display: table-row"> + <div id="chart-1" style="width: 40%; display: table-cell;">{{ output1|safe }}</div> + <div id="chart-2" style="width: 40%; display: table-cell;">{{ output2|safe }}</div> + </div> + </div> + <br/> + <br/> + + <div align="center" style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <label style="padding: 0px 5px !important;">Select a theme for all charts</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" checked value="fusion"/> Fusion + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="gammel"/> Gammel + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="zune"/> Zune + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="carbon"/> Carbon + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="ocean"/> Ocean + </label> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> + + diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-update-onclick.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-update-onclick.html new file mode 100755 index 0000000000000000000000000000000000000000..667afc81b1b22b426d8c9e04d870939cde36153c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/chart-update-onclick.html @@ -0,0 +1,111 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + + <script type="text/javascript"> + + function updateChart(value) { + var chartData = ""; + switch (value) { + case 'Europe': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488" + }, { + "label": "Belgium", + "value": "35132" + }, { + "label": "Denmark", + "value": "34779" + }, { + "label": "Finland", + "value": "19776" + }] + } + break; + + case 'NA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + }, { + "label": "Mexico", + "value": "24072", + }, { + "label": "USA", + "value": "263546", + }] + } + break; + case 'SA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119" + }, { + "label": "Brazil", + "value": "114954" + }, { + "label": "Venezuela", + "value": "60806" + }] + } + break; + } // switch ends + FusionCharts.items["chartTwo"].setJSONData(chartData); + } + </script> + <table style="width: 100%;" > + <tr> + <td> + <div id="chart-1">{{ output1|safe }}</div> + </td> + <td> + <span>Click on the left chart to update this one</span> + <div id="chart-2">{{ output2|safe }}</div> + </td> + </tr> + </table> + <br/> + <br/> + <a href="/">Go Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/data-from-scatter-chart.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/data-from-scatter-chart.html new file mode 100755 index 0000000000000000000000000000000000000000..a842eb1b92a02f29895f1300a8ff16a94ce30aef --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/data-from-scatter-chart.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + onRenderComplete = function (evtObj, argObj) { + + // creating div for controllers + var controllers = document.createElement('div'); + controllers.setAttribute('id', 'controllers'); + controllers.style.display = "inline-block"; + controllers.innerHTML = "<div id='tableView-1' style='width:500px;display:none;margin-left:0px;max-height:250px;overflow:scroll;border: 1px solid #CCCCCC;margin: 3px;float: left;display:none; color: #666666;font-family:'Arial','Helvetica';font-size: 12px;'></div>"; + //Display container div and write table + document.getElementById("showData").appendChild(controllers); + // argObj.container.parentNode.insertBefore(controllers, argObj.container.nextSibling); + /* + * getDataFromChart method prepares the + * tabular string from selection and + * write in a div and display it. + */ + evtObj.sender.getDataFromChart = function() { + var i, + j, + str, + ds = "", + dataArr, + flagData = false, + objDataset = evtObj.sender.getJSONData && evtObj.sender.getJSONData().dataset, + tableContainer = document.getElementById("tableView-1"); + + //Form tabular string + str = "<div style='margin:3px;font-family:'Arial','Helvetica';font-size: 12px;'> Data is returned by the chart as Array. The data is converted into tabular format using JavaScript.</div>"; + str += '<table border="1" cellpadding="1" cellspacing="0" bordercolor="#ffffff" width="100%">'; + for (i in objDataset) { + dataArr = objDataset[i].data; + if (dataArr.length > 0) { + flagData = true; + str += ' <tr>'; + str += ' <td width="20%" style="font-weight: bold;font-size: 14px;vertical-align: top;text-align:right;padding: 3px" color="' + objDataset[i].color + '">' + objDataset[i].seriesname + '</td>'; + + ds = '<table border="1" cellpadding="1" cellspacing="0" bordercolor="' + objDataset[i].color + '" width="100%">'; + ds += '<tr>'; + ds += '<td width="20%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Id</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Price (in USD)</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Quantity Sold</td>'; + ds += '</tr>'; + for (j = 0; j < dataArr.length; j++) { + var id = String(dataArr[j].id), + price = String(dataArr[j].x), + qty = String(dataArr[j].y); + + ds += '<tr>'; + ds += '<td width="20%" align="center">' + id + '</td>'; + ds += '<td width="40%" align="center">$' + price + ' </td>'; + ds += '<td width="40%" align="center">' + qty + ' units</td>'; + ds += '</tr>'; + } + ds += '</table>'; + str += ' <td width="80%" style="padding: 3px">' + ds + '</td>'; + str += ' </tr>'; + } + + } + str += '</table>'; + if (!flagData) { + str = "No Data Selected"; + } + tableContainer.style.display = "block"; + tableContainer.innerHTML = str; + } + }, + onBeforeDataSubmit = function (evtObj, argObj) { + + evtObj.sender.getDataFromChart(); + }, + onDataRestored = function (evtObj, argObj) { + + document.getElementById("tableView-1").style.display = "none"; + document.getElementById("tableView-1").innerHTML = ""; + } + +</script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <br/> + <div id ="showData"></div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/dynamic-chart-type.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/dynamic-chart-type.html new file mode 100755 index 0000000000000000000000000000000000000000..ed271d5b690c56e79bcc024984b33b32c9015c05 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/dynamic-chart-type.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeChartType(this.value); + }; + } + } + }); + + function changeChartType(chartType) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].chartType(chartType); + } + } + }; + </script> + <div align="center"> + <label style="padding: 0px 5px !important;">Select The Chart Type</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="column2d"/>Column 2D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="pie3d"/>Pie 3D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="bar2d"/>Bar 2D + </label> + </div> + <br/> + <br/> + <br/> + <div style="width: 100%; display: block;" align="center"> + <div id="chartContainer">{{ output|safe }}</div> + </div> + <br/> + <br/> + <a href="/">Go Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/dynamic-resize.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/dynamic-resize.html new file mode 100755 index 0000000000000000000000000000000000000000..c8d3602b40d46637418b4417ec688b5ff2b9f7ae --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/dynamic-resize.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeSize(this.value); + }; + } + } + }); + + function changeSize(size) { + document.getElementById('chartContainer').style.width = size.split('x')[0] + 'px'; + document.getElementById('chartContainer').style.height = size.split('x')[1] + 'px'; + }; + </script> + <div align="center"> + <label style="padding: 0px 5px !important;">Select Chart Container Size (in pixels)</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="400x300"/>400x300 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="600x500"/>600x500 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="800x600"/>800x600 + </label> + </div> + <br/> + <br/> + <br/> + <div style="width: 100%; display: block;" align="center"> + <div id="chartContainer" style="border-style: solid;border-color:#5a5a5a;width: 400px; height: 300px;">{{ output|safe }}</div> + </div> + <br/> + <br/> + <a href="/">Go Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/index.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/index.html new file mode 100755 index 0000000000000000000000000000000000000000..eccb1aefe49c2bfbb3b8468c65918d6d3ca9603d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/index.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <div id="chart-2">{{ output_2|safe }}</div> + <br/> + <a href="/">Back</a> +</body> +</html> + + diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/interactive-event.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/interactive-event.html new file mode 100755 index 0000000000000000000000000000000000000000..679e8b1a69b4001049678d4235c5aa606b33313d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/interactive-event.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onDataplotClick(eventObj) { + var dataValue = eventObj.data.dataValue; + var categoryLabel = eventObj.data.categoryLabel; + + document.getElementById("plotclick").innerHTML = "category: " + categoryLabel + "\n" + "value: " + dataValue; + + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <p id ="plotclick"></p> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/number-format.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/number-format.html new file mode 100755 index 0000000000000000000000000000000000000000..e8e37e4427867debf6bebff3bf1bf6e95a6f21fa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/number-format.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onRenderComplete(eventObj) { + var formattedNumber = eventObj.sender.formatNumber(1234.5); + document.getElementById("rendered").innerHTML = "Number format of 1234.5 : " + formattedNumber; + + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <p id ="rendered"></p> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/product-life-cycle-event.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/product-life-cycle-event.html new file mode 100755 index 0000000000000000000000000000000000000000..42d12b2ffc4db4ab94a0e8efe290fbdcc0d1bf23 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/product-life-cycle-event.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onDataLoaded() { + document.getElementById("dataLoaded").innerHTML = "chart data is loaded succesfully"; + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <p id ="dataLoaded"></p> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/special-chart-type-api.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/special-chart-type-api.html new file mode 100755 index 0000000000000000000000000000000000000000..21e40cf52a9ea20da3a61aa73b43280250cb9ce4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/special-chart-type-api.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + plotClickHandler = function(event){ + clickedPlot = (event.data.categoryLabel).toLowerCase(); + if (selectedItem !== clickedPlot) { + selectedItem = clickedPlot; + } else{ + selectedItem = 'none'; + } + }; + selectedItem = "none"; + getFusionChart = function(){ + return FusionCharts("ex1"); + } + + noneChecked = function(){ + getFusionChart().slicePlotItem(0,false); + getFusionChart().slicePlotItem(1,false); + getFusionChart().slicePlotItem(2,false); + getFusionChart().slicePlotItem(3,false); + } + apacheChecked = function(){ + getFusionChart().slicePlotItem(0,true); + } + microsoftChecked = function(){ + getFusionChart().slicePlotItem(1,true); + } + zeusChecked = function(){ + getFusionChart().slicePlotItem(2,true); + } + otherChecked = function(){ + getFusionChart().slicePlotItem(3,true); + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div align="center" id="chart-1">{{ output|safe }}</div> + <br/> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" checked onClick="noneChecked()"/> None + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="apacheChecked()"/> Apache + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="microsoftChecked()"/> Microsoft + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="zeusChecked()"/> Zeus + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="otherChecked()"/> Other + </label> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/special-event.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/special-event.html new file mode 100755 index 0000000000000000000000000000000000000000..81214299909f8cbec29de45641bba5e03d73c86b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/special-event.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "previous value: " + eventObj.data.prevData; + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <p id ="dataUpdate"></p> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/static/data/data.json b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/static/data/data.json new file mode 100755 index 0000000000000000000000000000000000000000..df0998a5901519f1ae78834819f62ff60d230ebe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/static/data/data.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/static/data/data.xml b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/static/data/data.xml new file mode 100755 index 0000000000000000000000000000000000000000..a886d89da926fe36e63c5702c935197944619aa7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/static/data/data.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" labelsepchar=": " numberscalevalue="1000,1000,1000" numberscaleunit="K,M,B" theme="fusion"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/update-data-runtime.html b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/update-data-runtime.html new file mode 100755 index 0000000000000000000000000000000000000000..c5f911f9787f09b01f52aa9e6bf7d676a4fe1971 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/templates/update-data-runtime.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> +<head> + <title>FC-python wrapper</title> + +<!-- If you are using downloaded FusionCharts libraries, uncomment the below code --> +<!-- + + {% load static %} + <script type="text/javascript" src="{% static "fusioncharts/fusioncharts.js" %}"></script> + <script type="text/javascript" src="{% static "fusioncharts/themes/fusioncharts.theme.fusion.js" %}"></script> + +--> + + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + updateData = function () { + var value = document.getElementById("dial-val").value; + FusionCharts("ex1").setDataForId("dial1",value); + } + </script> +</head> +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h3>{{ chartTitle|safe }}</h3> + <div id="chart-1">{{ output|safe }}</div> + <br/> + <div> + <label for="dial-val">Input dial value</label> + <input name="dial-val" id="dial-val" type= "number"/> + <input type ="button" name ="update dial" value ="update dial"onclick ="updateData()" /> + </div> + <br/> + <a href="/">Back</a> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/urls.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/urls.py new file mode 100755 index 0000000000000000000000000000000000000000..787e984f727f2381f3dfc966f337bb10b7f16074 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/urls.py @@ -0,0 +1,72 @@ +"""fusioncharts URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/dev/topics/http/urls/ +Examples: +Function views + 1. Add an import: from samples import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +""" +from django.urls import path +from django.conf.urls import url +from django.contrib import admin +from fusioncharts.views import catalogue + +from fusioncharts import datahandler +from fusioncharts.samples import rendering_angular_gauge_using_dictionary_example, rendering_column2d_chart_using_dictionary_example +from fusioncharts.samples import rendering_map_using_dictionary_example, rendering_multiseries_column2d_chart_using_json_example +from fusioncharts.samples import rendering_multiseries_StackedColumn2dline_using_json_example, rendering_pie3d_using_json_example +from fusioncharts.samples import rendering_column_line_area_combi_using_json_example, rendering_map_using_json_example +from fusioncharts.samples import rendering_angular_gauge_using_json_example, client_side_chart_export +from fusioncharts.samples import fetching_json_data_from_url, fetching_xml_data_from_url, fetching_data_from_database +from fusioncharts.samples import drilldown_from_database_example, rendering_charts_by_common_theme +from fusioncharts.samples import export_chart_using_export_handler +from fusioncharts.samples import dynamic_chart_resize, dynamic_chart_type, chart_annotation, chart_update_onclick +from fusioncharts.samples import chart_tooltip, rendering_chart_with_different_language, chart_special_chart +from fusioncharts.samples import product_life_cycle_event, special_event, chart_message, interactive_event, number_format_module +from fusioncharts.samples import special_chart_type_api, chart_instance_level_api, chart_product_level_api +from fusioncharts.samples import updating_chart_properties, highlight_specific_data_points, update_data_runtime +from fusioncharts.samples import get_data_from_scatter_chart + +urlpatterns = [ + url(r'^$', catalogue), + url(r'^admin/', admin.site.urls), + url(r'^datahandler', datahandler.getdata), + url(r'^rendering-angular-gauge-using-dictionary-example', rendering_angular_gauge_using_dictionary_example.chart, name='chart'), + url(r'^rendering-angular-gauge-using-json-example', rendering_angular_gauge_using_json_example.chart, name='chart'), + url(r'^rendering-column2d-chart-using-dictionary-example', rendering_column2d_chart_using_dictionary_example.chart, name='chart'), + url(r'^rendering-map-using-dictionary-example', rendering_map_using_dictionary_example.chart, name='chart'), + url(r'^rendering-map-using-json-example', rendering_map_using_json_example.chart, name='chart'), + url(r'^rendering-multiseries-column2d-chart-using-json-example', rendering_multiseries_column2d_chart_using_json_example.chart, name='chart'), + url(r'^rendering-multiseries-StackedColumn2dline-using-json-example', rendering_multiseries_StackedColumn2dline_using_json_example.chart, name='chart'), + url(r'^rendering-pie3d-using-json-example', rendering_pie3d_using_json_example.chart, name='chart'), + url(r'^rendering-column-line-area-combi-using-json-example', rendering_column_line_area_combi_using_json_example.chart, name='chart'), + url(r'^client-side-chart-export', client_side_chart_export.chart, name='chart'), + url(r'^fetching-json-data-from-url', fetching_json_data_from_url.chart, name='chart'), + url(r'^fetching-xml-data-from-url', fetching_xml_data_from_url.chart, name='chart'), + url(r'^fetching-data-from-database', fetching_data_from_database.chart, name='chart'), + url(r'^drilldown-from-database-example', drilldown_from_database_example.chart, name='chart'), + url(r'^rendering-charts-by-common-theme', rendering_charts_by_common_theme.chart, name='chart'), + url(r'^export-chart-using-export-handler', export_chart_using_export_handler.chart, name='chart'), + url(r'^dynamic-chart-resize', dynamic_chart_resize.chart, name='chart'), + url(r'^dynamic-chart-type', dynamic_chart_type.chart, name='chart'), + url(r'^chart-annotation', chart_annotation.chart, name='chart'), + url(r'^chart-update-onclick', chart_update_onclick.chart, name='chart'), + url(r'^rendering-chart-with-different-language', rendering_chart_with_different_language.chart, name='chart'), + url(r'^chart-special-chart', chart_special_chart.chart, name='chart'), + url(r'^chart-tooltip', chart_tooltip.chart, name='chart'), + url(r'^product-life-cycle-event', product_life_cycle_event.chart, name='chart'), + url(r'^special-event', special_event.chart, name='chart'), + url(r'^chart-message', chart_message.chart, name='chart'), + url(r'^interactive-event', interactive_event.chart, name='chart'), + url(r'^number-format-module', number_format_module.chart, name='chart'), + url(r'^special-chart-type-api', special_chart_type_api.chart, name='chart'), + url(r'^chart-instance-level-api', chart_instance_level_api.chart, name='chart'), + url(r'^chart-product-level-api', chart_product_level_api.chart, name='chart'), + url(r'^updating-chart-properties', updating_chart_properties.chart, name='chart'), + url(r'^highlight-specific-data-points', highlight_specific_data_points.chart, name='chart'), + url(r'^update-data-runtime', update_data_runtime.chart, name='chart'), + url(r'^get-data-from-scatter-chart', get_data_from_scatter_chart.chart, name='chart') + + +] \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/views.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/views.py new file mode 100755 index 0000000000000000000000000000000000000000..fc9101df2bd11b9ffa0dbbf5c0fe2b8ac0d29952 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/views.py @@ -0,0 +1,7 @@ +from django.shortcuts import render + +# it is a default view. +# please go to the samples folder for others view + +def catalogue(request): + return render(request, 'catalogue.html') \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/wsgi.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/wsgi.py new file mode 100755 index 0000000000000000000000000000000000000000..fff5f798cb0014dea66a322ebdbce72b02df790f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/fusioncharts/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for fusioncharts project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fusioncharts.settings") + +application = get_wsgi_application() diff --git a/graphs/fusioncharts-suite-xt/integrations/django/samples/manage.py b/graphs/fusioncharts-suite-xt/integrations/django/samples/manage.py new file mode 100755 index 0000000000000000000000000000000000000000..0e014509056899eeea7ebbf3dd245caa9c12b08c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/django/samples/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fusioncharts.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/graphs/fusioncharts-suite-xt/integrations/ember/README.md b/graphs/fusioncharts-suite-xt/integrations/ember/README.md new file mode 100755 index 0000000000000000000000000000000000000000..eff50a6ab7977a1970f12ceba4df34291ba1884e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/ember/README.md @@ -0,0 +1,156 @@ + +#### [Demos and Documentation](https://fusioncharts.github.io/ember-fusioncharts/) + +# Ember-Fusioncharts + +A lightweight EmberJS component which provides bindings for FusionCharts JavaScript Charting Library. It easily adds rich and interactive charts to any ambitious Ember application. + +## Installation + +To install `ember-fusioncharts` to any existing ember project, run: + +For Modern Ember CLI: +```bash +$ ember install ember-fusioncharts +``` + +For Earlier Ember CLI (and addon developers): +```bash +$ npm install ember-fusioncharts --save-dev +$ ember g ember-fusioncharts +``` + +Then import `fusioncharts` library to your `ember-cli-build.js` build file: +```javascript +/* eslint-env node */ +'use strict'; + +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); + +module.exports = function(defaults) { + let app = new EmberApp(defaults, { + // Add options here + }); + + // Import fusioncharts library + app.import('bower_components/fusioncharts/fusioncharts.js'); + app.import('bower_components/fusioncharts/fusioncharts.charts.js'); + app.import('bower_components/fusioncharts/themes/fusioncharts.theme.fint.js'); + app.import('bower_components/fusioncharts/themes/fusioncharts.theme.ocean.js'); + + // Use `app.import` to add additional libraries to the generated + // output files. + // + // If you need to use different assets in different + // environments, specify an object as the first parameter. That + // object's keys should be the environment name and the values + // should be the asset to use in that environment. + // + // If the library that you are including contains AMD or ES6 + // modules that you would like to import into your application + // please specify an object with the list of modules as keys + // along with the exports of each module as its value. + + return app.toTree(); +}; + +``` + +## Getting Started + +After installing `ember-fusioncharts`, create a simple component(e.g. `chart-viewer`, also you can use it anywhere in your application) to show your interactive charts, run: +```bash +$ ember g component chart-viewer +``` + +Write your chart logic in `chart-viewer.js` file: +```javascript +import Component from '@ember/component'; + +const myDataSource = { + "chart": { + "caption": "Harry's SuperMart", + "subCaption": "Top 5 stores in last month by revenue", + "numberPrefix": "$", + "theme": "fint" + }, + "data": [ + { + "label": "Bakersfield Central", + "value": "880000" + }, + { + "label": "Garden Groove harbour", + "value": "730000" + }, + { + "label": "Los Angeles Topanga", + "value": "590000" + }, + { + "label": "Compton-Rancho Dom", + "value": "520000" + }, + { + "label": "Daly City Serramonte", + "value": "330000" + } + ] +}; + +export default Component.extend({ + title: 'Ember FusionCharts Sample', + width: 600, + height: 400, + type: 'column2d', + dataFormat: 'json', + dataSource: myDataSource +}); +``` + +And use `fusioncharts-xt` component in your `chart-viewer.hbs` template to show your charts: +```html +<h1>{{ title }}</h1> + +{{fusioncharts-xt + width=width + height=height + type=type + dataFormat=dataFormat + dataSource=dataSource}} +``` + +Then, use `chart-viewer` component in your `application.hbs` template: + +```html +{{chart-viewer}} + +{{outlet}} +``` + +## Test + +```sh +$ npm test +``` + +## Contributing + +* Clone the repository. +* Install dependencies. +* Run `npm start` to start the dev server. +* Open `http://localhost:4200/` in your browser. + +```sh +$ git clone https://github.com/fusioncharts/ember-fusioncharts.git +$ cd ember-fusioncharts +$ npm i && bower install +$ npm start +``` + +To build, run: +```sh +$ npm run build +``` + +### [Demos and Documentation](https://fusioncharts.github.io/ember-fusioncharts/) diff --git a/graphs/fusioncharts-suite-xt/integrations/ember/sample/README.md b/graphs/fusioncharts-suite-xt/integrations/ember/sample/README.md new file mode 100755 index 0000000000000000000000000000000000000000..df627e8f9f0016cf52a691995af7aac4d53d0224 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/ember/sample/README.md @@ -0,0 +1,2 @@ +# Ember FusionCharts +We have created multiple samples using **Ember FusionCharts** for your reference. To view the samples click [here](https://fusioncharts.github.io/ember-fusioncharts "Ember FusionCharts"). \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/chart-export-handler/fcexporter.jar b/graphs/fusioncharts-suite-xt/integrations/java/chart-export-handler/fcexporter.jar new file mode 100755 index 0000000000000000000000000000000000000000..c517dc85999e72246a207bf873a1e3a9ce8be84e Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/java/chart-export-handler/fcexporter.jar differ diff --git a/graphs/fusioncharts-suite-xt/integrations/java/chart-export-handler/readme.txt b/graphs/fusioncharts-suite-xt/integrations/java/chart-export-handler/readme.txt new file mode 100755 index 0000000000000000000000000000000000000000..3ca9f43a9070acac4d507dd2ef8a61829f94452c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/chart-export-handler/readme.txt @@ -0,0 +1,110 @@ +FusionCharts J2EE Export Handler +================================== + +What is FusionCharts J2EE export handler? + +FusionCharts Suite XT uses JavaScript to generate charts in the browser, using SVG and VML (for older IE). If you need +to export the charts as images or PDF, you need a server-side helper library to convert the SVG to image/PDF. These +export handlers allow you to take the SVG from FusionCharts charts and convert to image/PDF. + +How does the export handler work? + +- A chart is generated in the browser. When the export to image or PDF button is clicked, the chart generates the SVG +string to represent the current state and sends to the export handler. The export handler URL is configured via chart +attributes. +- The export handler accepts the SVG string along with chart configuration like chart type, width, height etc., and uses +InkScape & ImageMagick library to convert to image or PDF. +- The export handler either writes the image or PDF to disk, based on the configuration provided by chart, or streams it +back to the browser. + +Version +======= + +3.0 + +Requirements +============ + +Inkscape: + +Inkscape is an open source vector graphics editor. What sets Inkscape apart is its use of Scalable Vector Graphics +(SVG), an open XML-based W3C standard, as the native format. Inkscape has a powerful command line interface and can +be used in scripts for a variety of tasks, such as exporting and format conversions. For details, refer to the +following page. + +http://inkscape.org/doc/inkscape-man.html + + +ImageMagick: + +ImageMagick is a free and open-source software suite for displaying, converting, and editing raster image and vector +image files. The software mainly consists of a number of command-line interface utilities for manipulating images. +For further details, please refer to the the following page. + +http://www.imagemagick.org/ + +Installation +============ + +* You should have a Windows/Linux based server with Administrative facility to install softwares. This is particularly +important, if you are using a shared hosting service. +* Both Inkscape and ImageMagick need to be installed in order to make the whole system work. Please visit to +the respective sites and follow the instructions on installation. +* Edit web.xml and add the following servlet mapping in your application's web.xml : +<servlet> +<display-name>FCExporter</display-name> +<servlet-name>FCExporter</servlet-name> +<servlet-class>com.fusioncharts.exporter.servlet.FCExporter</servlet-class> +<load-on-startup>1</load-on-startup> +</servlet> +<servlet-mapping> +<servlet-name>FCExporter</servlet-name> +<url-pattern>/JSP/ExportExample/FCExporter</url-pattern> +</servlet-mapping> +* Modify the URL-pattern as per your application needs. +* Specify the xml attribute exportHandler='FCExporter' assuming that the jsp rendering the chart is present in /JSP/ExportExample folder +* Configuration of the folder where the generated image is to be saved in server is to be set in fusioncharts_export.properties file inside the Classes directory. +* Configuration of Inkscape and ImageMagick path(Only for Windows Environment) : Open fusioncharts_export.properties file present in the Classes directory and make changes in the following values there: + +********************************fusioncharts_export.properties************************************* +#Please specify the path to a folder with write permissions relative to web application root +#The exported image/PDF files would be saved here(for Linux based server SAVEPATH should be changed to relative or absolute path accordingly) +SAVEPATH=/JSP/ExportExample/ExportedImages/ + +#This constant HTTP_URI stores the HTTP reference to +#the folder where exported charts will be saved. +#Please enter the HTTP representation of that folder +#in this constant e.g., http://www.yourdomain.com/images/ +HTTP_URI=http://localhost:8081/ExportHandler/JSP/ExportExample/ExportedImages/ + +#OVERWRITEFILE sets whether the export handler would overwrite an existing file +#the newly created exported file. If it is set to false the export handler would +#not overwrite. In this case if INTELLIGENTFILENAMING is set to true the handler +#would add a suffix to the new file name. The suffix is a randomly generated UUID. +#Additionally, you can add a timestamp or random number as additional prefix. +FILESUFFIXFORMAT=TIMESTAMP +OVERWRITEFILE=false +INTELLIGENTFILENAMING=true + +#Set the path of Inkscape here(Only for Windows) +INKSCAPE_PATH=C:\\Program Files (x86)\\Inkscape + +#Set the path of ImageMagick here(Only for Windows) +IMAGEMAGICK_PATH=C:\\Program Files\\ImageMagick-6.9.0-Q16 +********************************************************************************************* +License +------- + +FUSIONCHARTS: + +Copyright (c) FusionCharts Technologies LLP +License Information at http://www.fusioncharts.com/license + +Known Issues / limitations: +--------------------------- + +* When we export to an SVG file. The file renders correctly in browsers, but may not render properly in other image +softwares. +* If the chart has any external images as in logo, background or in anchors they will not get exported in the exported +image. +* The whole system is configured for Windows/Linux based server. \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/fusioncharts-wrapper/FusionCharts.java b/graphs/fusioncharts-suite-xt/integrations/java/fusioncharts-wrapper/FusionCharts.java new file mode 100755 index 0000000000000000000000000000000000000000..0e62a71932b005f3510ceadd94b2aa67f87513b7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/fusioncharts-wrapper/FusionCharts.java @@ -0,0 +1,84 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package fusioncharts; + +public class FusionCharts { + private String constructorTemplate = "<script type=\"text/javascript\">\nFusionCharts.ready(function () {\n\tvar fc_chart = new FusionCharts(%s);\n%sfc_chart.render();\n});\n</script>"; + private String eventTemplate = " fc_chart.addEventListener(\"%s\",%s);\n"; + private String messageTemplate = ",%s:\"%s\""; + private String[] chartOptions = new String[10]; + private String chartDataSource = ""; + private String fusionChartsEvents = ""; + private String fusionChartsMessages = ""; + + public FusionCharts(String type, String id, String width, String height, String renderAt, String dataFormat, String dataSource) { + this.chartOptions[0] = id; + this.chartOptions[1] = width; + this.chartOptions[2] = height; + this.chartOptions[3] = renderAt; + this.chartOptions[4] = type; + this.chartOptions[5] = dataFormat; + //this.chartOptions[6] = "%s"; + if(this.chartOptions[5].contains("url")) { + this.chartOptions[7] = "\""+dataSource+"\""; + } else { + this.chartOptions[7] = "%s"; + this.chartDataSource = this.addSlashes(dataSource.replaceAll("\n", "")); + } + + } + + private String addSlashes(String str) { + str = str.replaceAll("\\\\", "\\\\\\\\"); + str = str.replaceAll("\\n", "\\\\n"); + str = str.replaceAll("\\r", "\\\\r"); + str = str.replaceAll("\\00", "\\\\0"); + str = str.replaceAll("u003d", "="); + str = str.replaceAll("'", "\\\\'"); + str = str.replaceAll("\\\\", ""); + str = str.replaceAll("\"\\{", "{"); + str = str.replaceAll("\"\\[", "["); + str = str.replaceAll("\\}\\]\"", "}]"); + str = str.replaceAll("\"\\}\"", "\"}"); + str = str.replaceAll("\\}\"\\}", "}}"); + return str; + } + + private String jsonEncode(String[] data){ + String json = "{type: \""+this.chartOptions[4]+"\",renderAt: \""+this.chartOptions[3]+"\",width: \""+this.chartOptions[1]+"\",height: \""+this.chartOptions[2]+"\",dataFormat: \""+this.chartOptions[5] + "\"," + + "id:\"" + this.chartOptions[0] + "\"" + this.fusionChartsMessages + ",dataSource: "+this.chartOptions[7]+"}"; + return json; + } + + public String render() { + String outputHTML; + if(this.chartOptions[5].contains("url")) { + outputHTML = String.format(this.constructorTemplate, this.jsonEncode(this.chartOptions)); + + } else { + if("json".equals(this.chartOptions[5])) { + this.chartOptions[7] = String.format(this.chartOptions[7], this.chartDataSource); + outputHTML = String.format(this.constructorTemplate, this.jsonEncode(this.chartOptions), fusionChartsEvents); + } else { + this.chartOptions[7] = String.format(this.chartOptions[7], "\'"+ this.chartDataSource + "\'"); + outputHTML = String.format(this.constructorTemplate, this.jsonEncode(this.chartOptions), fusionChartsEvents); + } + } + return outputHTML; + } + + public void addEvent(String eventName, String funcName){ + String eventHTML; + eventHTML = String.format(this.eventTemplate, eventName, funcName); + this.fusionChartsEvents += eventHTML; + } + + public void addMessage(String messageName, String messageText){ + String messageString; + messageString = String.format(this.messageTemplate, messageName, messageText); + this.fusionChartsMessages += messageString; + } +} diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Data/jsonData.json b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Data/jsonData.json new file mode 100755 index 0000000000000000000000000000000000000000..df0998a5901519f1ae78834819f62ff60d230ebe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Data/jsonData.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Data/xmlData.xml b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Data/xmlData.xml new file mode 100755 index 0000000000000000000000000000000000000000..a1e859da31666e6d213a5ca3d0e283d48972965a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Data/xmlData.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" plotgradientcolor="" bgcolor="FFFFFF" showplotborder="0" divlinecolor="CCCCCC" showvalues="1" showcanvasborder="0" canvasbordercolor="CCCCCC" canvasborderthickness="1" showyaxisvalues="0" showlegend="1" showshadow="0" labelsepchar=": " basefontcolor="000000" labeldisplay="AUTO" numberscalevalue="1000,1000,1000" numberscaleunit="K,M,B" palettecolors="#008ee4,#9b59b6,#6baa01,#e44a00,#f8bd19,#d35400,#bdc3c7,#95a5a6,#34495e,#1abc9c" showborder="0"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" color="e44a00" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Index.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Index.jsp new file mode 100755 index 0000000000000000000000000000000000000000..2482337719116134e8fb76967c806d1ea51304e7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Index.jsp @@ -0,0 +1,49 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<title>FusionCharts | Samples for Java</title> +</head> +<body> +<h3>Samples for Java</h3> +<div> + <div><span><a href ="jsp/first_chart.jsp">Simple Chart Using Array</a></span></div> + <div><span><a href ="jsp/gauge.jsp">Simple Widget Using Array</a></span></div> + <div><span><a href = "jsp/map.jsp">Simple Map Using Array</a></span></div> + <div><span><a href = "jsp/angulargauge.jsp">Angular Gauge</a></span></div> + <div><span><a href = "jsp/chartClientSideExport.jsp">Export Chart As Image (client-side)</a></span></div> + <div><span><a href = "jsp/ChartExportByExportHandler.jsp" >Export Chart As Image (server-side)</a></span></div> + <div><span><a href = "jsp/drillDown.jsp">Chart with Drill-Down Feature</a></span></div> + <div><span><a href = "jsp/MSColumn2D.jsp">Multiseries Column 2D Chart</a></span></div> + <div><span><a href = "jsp/msCombi3d.jsp">Multiseries Combination 3D Chart</a></span></div> + <div><span><a href = "jsp/pie3d.jsp">Pie 3D Chart</a></span></div> + <div><span><a href = "jsp/StackedColumn2DLinr.jsp">Stacked Column 2D with Line Chart</a></span></div> + <div><span><a href = "jsp/dataBaseExample.jsp">Chart Using Database (MySQL)</a></span></div> + <div><span><a href = "jsp/usa_map.jsp">USA Map</a></span></div> + <div><span><a href = "jsp/CommonTheme.jsp">Chart Themes</a></span></div> + <div><span><a href = "jsp/xmlUrlData.jsp">Chart using data from XML URL</a></span></div> + <div><span><a href = "jsp/jsonUrlData.jsp">Chart using data from JSON URL</a></span></div> + <div><span><a href = "jsp/ChartResize.jsp">Dynamic Chart Resize</a></span></div> + <div><span><a href = "jsp/DynamicChartType.jsp">Chart Type Change At Runtime</a></span></div> + <div><span><a href = "jsp/ChartAnnotations.jsp">Using Annotations On Chart</a></span></div> + <div><span><a href = "jsp/ChartUpdateOnClick.jsp">Updating Different Chart</a></span></div> + <div><span><a href = "jsp/ChartSpclChar.jsp">Use of specia characters</a></span></div> + <div><span><a href = "jsp/ChartTooltipCustomization.jsp">customize chart tooltip</a></span></div> + <div><span><a href ="jsp/ChartLanguage.jsp">Use of different language</a></span></div> + <div><span><<a href ="jsp/ChartInstanceLevelAPI.jsp">"Add event to a chart dyamically" </a></span></div> + <div><span><a href ="jsp/ChartInstanceLevelAPI.jsp">Add event to a chart dyamically </a></span></div> + <div><span><a href ="jsp/ChartMessageExample.jsp">Configure chart message </a></span></div> + <div><span><a href="jsp/GetDataSelectScatterChart.jsp">Get data from select scatter chart and show them in tabular format </a></span></div> + <div><span><a href="jsp/NumberFormatModule.jsp">Use of fusioncharts number module API </a></span></div> + <div><span><a href ="jsp/InteractiveEvent.jsp">Show data plot value on click </a></span></div> + <div><span><a href="jsp/ProductLevelAPI.jsp">Change chart properties dynamically </a></span></div> + <div><span><a href="jsp/ProductLifeCycleEvent.jsp">sample to showcase one product life cycle event attachment </a></span></div> + <div><span><a href="jsp/SpecialChartTypeAPI.jsp">shocasing use special chart type API </a></span></div> + <div><span><a href="jsp/SpecialEvent.jsp">example of data update event </a></span></div> + <div><span><a href="jsp/UpdateDataRuntime.jsp">update dial value on runtime </a></span></div> +</div> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/META-INF/MANIFEST.MF b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/META-INF/MANIFEST.MF new file mode 100755 index 0000000000000000000000000000000000000000..5e9495128c0376427420c4189993b3851770b702 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Styles/ChartSampleStyleSheet.css b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Styles/ChartSampleStyleSheet.css new file mode 100755 index 0000000000000000000000000000000000000000..2b1a6d0d6cd17ce822671ca6b9cd0f81223d02cd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/Styles/ChartSampleStyleSheet.css @@ -0,0 +1,5 @@ +@CHARSET "ISO-8859-1"; +body { + font-family: Helvetica Neue, Arial; + font-size: 16px; +} diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/FusionCharts.java b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/FusionCharts.java new file mode 100755 index 0000000000000000000000000000000000000000..a34ecf2270b41510069579ae0f51f336b1d21efc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/FusionCharts.java @@ -0,0 +1,59 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package fusioncharts; + +public class FusionCharts { + private String constructorTemplate = "<script type=\"text/javascript\">FusionCharts.ready(function () {new FusionCharts(__constructorOptions__);});</script>"; + private String renderTemplate = "<script type=\"text/javascript\">FusionCharts.ready(function () { FusionCharts(\"__chartId__\").render();});</script>"; + private String[] chartOptions = new String[10]; + private String chartDataSource = ""; + public FusionCharts(String type, String id, String width, String height, String renderAt, String dataFormat, String dataSource) { + this.chartOptions[0] = id; + this.chartOptions[1] = width; + this.chartOptions[2] = height; + this.chartOptions[3] = renderAt; + this.chartOptions[4] = type; + this.chartOptions[5] = dataFormat; + if(this.chartOptions[5].contains("url")) { + this.chartOptions[6] = "\""+dataSource+"\""; + } else { + this.chartOptions[6] = "__dataSource__"; + this.chartDataSource = this.addSlashes(dataSource.replaceAll("\n", "")); + } + } + private String addSlashes(String str) { + str = str.replaceAll("\\\\", "\\\\\\\\"); + str = str.replaceAll("\\n", "\\\\n"); + str = str.replaceAll("\\r", "\\\\r"); + str = str.replaceAll("\\00", "\\\\0"); + str = str.replaceAll("u003d", "="); + str = str.replaceAll("'", "\\\\'"); + str = str.replaceAll("\\\\", ""); + str = str.replaceAll("\"\\{", "{"); + str = str.replaceAll("\"\\[", "["); + str = str.replaceAll("\\}\\]\"", "}]"); + str = str.replaceAll("\"\\}\"", "\"}"); + str = str.replaceAll("\\}\"\\}", "}}"); + return str; + } + private String jsonEncode(String[] data){ + String json = "{type: \""+this.chartOptions[4]+"\",renderAt: \""+this.chartOptions[3]+"\",width: \""+this.chartOptions[1]+"\",height: \""+this.chartOptions[2]+"\",dataFormat: \""+this.chartOptions[5]+"\",id: \""+this.chartOptions[0]+"\",dataSource: "+this.chartOptions[6]+"}"; + return json; + } + public String render() { + String outputHTML; + if(this.chartOptions[5].contains("url")) { + outputHTML = this.constructorTemplate.replace("__constructorOptions__", this.jsonEncode(this.chartOptions))+this.renderTemplate.replace("__chartId__", this.chartOptions[0]); + } else { + if("json".equals(this.chartOptions[5])) { + outputHTML = this.constructorTemplate.replace("__constructorOptions__", this.jsonEncode(this.chartOptions).replace("__dataSource__",this.chartDataSource))+this.renderTemplate.replace("__chartId__", this.chartOptions[0]); + } else { + outputHTML = this.constructorTemplate.replace("__constructorOptions__", this.jsonEncode(this.chartOptions).replace("__dataSource__","\'"+this.chartDataSource+"\'"))+this.renderTemplate.replace("__chartId__", this.chartOptions[0]); + } + } + return outputHTML; + } +} diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/lib/com.mysql.jdbc_5.1.5.jar b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/lib/com.mysql.jdbc_5.1.5.jar new file mode 100755 index 0000000000000000000000000000000000000000..1523bef6b0f8bcc2fda411eb8130cba2509180d9 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/lib/com.mysql.jdbc_5.1.5.jar differ diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/lib/servlet.jar b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/lib/servlet.jar new file mode 100755 index 0000000000000000000000000000000000000000..74ecdecdfe5d1653cd69f7cb241df8cfeb4bbcc6 Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/WEB-INF/lib/servlet.jar differ diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartAnnotations.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartAnnotations.jsp new file mode 100755 index 0000000000000000000000000000000000000000..f8ba43265475c93d6ccb4aeb22d819526d387611 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartAnnotations.jsp @@ -0,0 +1,33 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | Using Annotations On Chart</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<h3>Using Annotations On Chart</h3> +<div id="chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Bakersfield Central - Total footfalls', 'subCaption': 'Last week', 'xAxisName': 'Day', 'yAxisName': 'No. of Visitors (In 1000s)', 'showValues': '0', 'theme': 'fusion' }, 'annotations':{ 'groups': [ { 'id': 'anchor-highlight', 'items': [ { 'id': 'high-star', 'type': 'circle', 'x': '$dataset.0.set.2.x', 'y': '$dataset.0.set.2.y', 'radius': '12', 'color': '#6baa01', 'border': '2', 'borderColor': '#f8bd19' }, { 'id': 'label', 'type': 'text', 'text': 'Highest footfall 25.5K', 'fillcolor': '#6baa01', 'rotate': '90', 'x': '$dataset.0.set.2.x+75', 'y': '$dataset.0.set.2.y-2' } ] } ] }, 'data': [ { 'label': 'Mon', 'value': '15123' }, { 'label': 'Tue', 'value': '14233' }, { 'label': 'Wed', 'value': '25507' }, { 'label': 'Thu', 'value': '9110' }, { 'label': 'Fri', 'value': '15529' }, { 'label': 'Sat', 'value': '20803' }, { 'label': 'Sun', 'value': '19202' } ] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartExportByExportHandler.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartExportByExportHandler.jsp new file mode 100755 index 0000000000000000000000000000000000000000..7bc6741b448518a50e1dfd252821c90d60282280 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartExportByExportHandler.jsp @@ -0,0 +1,39 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Export Chart As Image (server-side)</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +<script> +function onRenderComplete() { + console.log("event: render"); +} +</script> +</head> +<body> +<h3>Export Chart As Image (server-side)</h3> +<div id="mscombi_3d"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Salary Hikes by Country', 'subCaption': '2016 - 2017', 'showhovereffect': '1', 'numberSuffix': '%', 'rotatelabels': '1', 'exportEnabled':'1', 'exportMode': 'server' , 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Australia' }, { 'label': 'New-Zealand' }, { 'label': 'India' }, { 'label': 'China' }, { 'label': 'Myanmar' }, { 'label': 'Bangladesh' }, { 'label': 'Thailand' }, { 'label': 'South Korea' }, { 'label': 'Hong Kong' }, { 'label': 'Singapore' }, { 'label': 'Taiwan' }, { 'label': 'Vietnam' }] }], 'dataset': [{ 'seriesName': '2016 Actual Salary Increase', 'plotToolText' : 'Salaries increased by <b>$dataValue</b> in 2016', 'data': [{ 'value': '3' }, { 'value': '3' }, { 'value': '10' }, { 'value': '7' }, { 'value': '7.4' }, { 'value': '10' }, { 'value': '5.4' }, { 'value': '4.5' }, { 'value': '4.1' }, { 'value': '4' }, { 'value': '3.7' }, { 'value': '9.3' }] }, { 'seriesName': '2017 Projected Salary Increase', 'plotToolText' : 'Salaries expected to increase by <b>$dataValue</b> in 2017', 'renderAs': 'line', 'data': [{ 'value': '3' }, { 'value': '2.8' }, { 'value': '10' }, { 'value': '6.9' }, { 'value': '6.7' }, { 'value': '9.4' }, { 'value': '5.5' }, { 'value': '5' }, { 'value': '4' }, { 'value': '4' }, { 'value': '4.5' }, { 'value': '9.8' }] }, { 'seriesName': 'Inflation rate', 'plotToolText' : '$dataValue projected inflation', 'renderAs': 'area', 'showAnchors':'0', 'data': [{ 'value': '1.6' }, { 'value': '0.6' }, { 'value': '5.6' }, { 'value': '2.3' }, { 'value': '7' }, { 'value': '5.6' }, { 'value': '0.2' }, { 'value': '1' }, { 'value': '2.6' }, { 'value': '0' }, { 'value': '1.1' }, { 'value': '2.4' }] }] }"; + + FusionCharts column_chart = new FusionCharts( + "mscombi3d", + "combi_chart", + "700", + "400", + "mscombi_3d", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> + <%=column_chart.addEvent("renderComplete","onRenderComplete")%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartInstanceLevelAPI.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartInstanceLevelAPI.jsp new file mode 100755 index 0000000000000000000000000000000000000000..b98e496c68d8ba7a885a3d983ab33d439ee27818 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartInstanceLevelAPI.jsp @@ -0,0 +1,104 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +<style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + + </style> + <title>FusionCharts | Add event to a chart dyamically</title> +</head> +<body> +<script> + track = function(){ + FusionCharts.addEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click on the plot to see the value along with the label"; + + }; + clickHandler = function(e){ + document.getElementById("message").innerHTML = "You have clicked on plot <b>"+ e.data.categoryLabel + "</b> whose value is <b>" + e.data.displayValue + "</b>"; + }; + removeEvent = function(){ + FusionCharts.removeEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click the below buttons to add an event dynamically to the chart"; + + } + </script> + <h3>Add event to a chart dyamically</h3> + <div id ="chart"></div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name= "radios" onclick="track()" /> + <label for="radio1">LISTEN TO DATAPLOTCLICK EVENT</label> + <input type="radio" id="radio2" name="radios" onclick="removeEvent()" /> + <label for="radio2">REMOVE DATAPLOTCLICK EVENT</label> + + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartLanguage.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartLanguage.jsp new file mode 100755 index 0000000000000000000000000000000000000000..3328c4bbf0fbc194bc63e586ca234c50bbc41f69 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartLanguage.jsp @@ -0,0 +1,32 @@ +<%@ page language="java" contentType="text/html;" pageEncoding="utf-8" %> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> + +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html;"> +<title>FusionCharts | use of different languages</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<h3>use of different languages</h3> +<div id="chartContainer"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +String jsonData = "{ \"chart\": { \"caption\": \"سوبرماركت هاري\", \"subCaption\": \"الإيرادات الشهرية للعام الماضي\", \"xAxisName\": \"الشهر\", \"yAxisName\": \"كمية\", \"numberPrefix\": \"$\", \"theme\": \"fusion\", \"rotateValues\": \"1\", \"exportEnabled\": \"1\" }, \"data\": [{ \"label\": \"يناير\", \"value\": \"420000\" }, { \"label\": \"فبراير\", \"value\": \"810000\" }, { \"label\": \"مارس\", \"value\": \"720000\" }, { \"label\": \"أبريل\", \"value\": \"550000\" }, { \"label\": \"مايو\", \"value\": \"910000\" }, { \"label\": \"يونيو\", \"value\": \"510000\" }, { \"label\": \"يوليو\", \"value\": \"680000\" }, { \"label\": \"أغسطس\", \"value\": \"620000\" }, { \"label\": \"سبتمبر\", \"value\": \"610000\" }, { \"label\": \"أكتوبر\", \"value\": \"490000\" }, { \"label\": \"نوفمبر\", \"value\": \"900000\" }, { \"label\": \"ديسمبر\", \"value\": \"730000\" } ]}"; +FusionCharts column = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chartContainer", + "json", + jsonData + ); +%> +<%=column.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartMessageExample.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartMessageExample.jsp new file mode 100755 index 0000000000000000000000000000000000000000..a3baad5176bcafb47a7f805e27f56e51b6fa5bdc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartMessageExample.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | Configure chart message</title> +</head> +<body> + <h3>Configure chart message</h3> + <div id ="chart"></div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + + column_chart.addMessage("loadMessage", "please wait data is being loaded"); + column_chart.addMessage("loadMessageFontSize", "18"); + %> + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartResize.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartResize.jsp new file mode 100755 index 0000000000000000000000000000000000000000..e5eb9d32e64f1680eadc7423cff2f75cef35ffe2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartResize.jsp @@ -0,0 +1,73 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | Dynamic Chart Resize</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeSize(this.value); + }; + } + } + }); + + + function changeSize(size) { + document.getElementById('chartContainer').style.width = size.split('x')[0] + 'px'; + document.getElementById('chartContainer').style.height = size.split('x')[1] + 'px'; + }; +</script> + +<h3>Dynamic Chart Resize</h3> +<div align="center"> + <label style="padding: 0px 5px !important;">Select Chart Container Size (in pixels)</label> +</div> +<br/> +<div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="400x300"/>400x300 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="600x500"/>600x500 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="800x600"/>800x600 + </label> +</div> + + +<div style="width: 100%; display: block;" align="center"> + <div id="chartContainer" style="border-style: solid;border-color:#5a5a5a;width: 400px; height: 300px;"></div> +</div> + +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion'}, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chartContainer", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> + +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartSpclChar.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartSpclChar.jsp new file mode 100755 index 0000000000000000000000000000000000000000..ddd67965be40996762df2140602c9a0697f948bd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartSpclChar.jsp @@ -0,0 +1,46 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | use of special character</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<h3>use of special character</h3> +<div id="chartContainer"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +String xmlData; +xmlData = "<chart caption=\"Harry's SuperMart\" subcaption=\"Monthly revenue for last year\" xaxisname=\"Month\" yaxisname=\"Amount\" numberprefix=\"�\" theme=\"fusion\" rotatevalues=\"1\" exportenabled=\"1\">"; +xmlData += "<set label=\"Jan\" value=\"420000\" />"; +xmlData += "<set label=\"Feb\" value=\"810000\" />"; +xmlData += "<set label=\"Mar\" value=\"720000\" />"; +xmlData += "<set label=\"Apr\" value=\"550000\" />"; +xmlData += "<set label=\"May\" value=\"910000\" />"; +xmlData += "<set label=\"Jun\" value=\"510000\" />"; +xmlData += "<set label=\"Jul\" value=\"680000\" />"; +xmlData += "<set label=\"Aug\" value=\"620000\" />"; +xmlData += "<set label=\"Sep\" value=\"610000\" />"; +xmlData += "<set label=\"Oct\" value=\"490000\" />"; +xmlData += "<set label=\"Nov\" value=\"900000\" />"; +xmlData += "<set label=\"Dec\" value=\"730000\" />"; +xmlData += "</chart>"; +FusionCharts column2d = new FusionCharts( + "column2d", + "column2d_chart", + "700", + "400", + "chartContainer", + "xml", + xmlData + ); +%> +<%=column2d.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartTooltipCustomization.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartTooltipCustomization.jsp new file mode 100755 index 0000000000000000000000000000000000000000..6beaa3b30111135863e81e23ae269201774867ed --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartTooltipCustomization.jsp @@ -0,0 +1,32 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | Customizing tooltip</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<h3>Customizing tooltip</h3> +<div id="chartContainer"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +String jsonData = "{ \"chart\": { \"caption\": \"Top 3 Electronic Brands in Top 3 Revenue Earning States\", \"subcaption\": \"Last month\", \"aligncaptiontocanvas\": \"0\", \"yaxisname\": \"Statewise Sales (in %)\", \"xaxisname\": \"Brand\", \"numberprefix\": \"$\", \"showxaxispercentvalues\": \"1\", \"showsum\": \"1\", \"showPlotBorder\": \"1\",\"plottooltext\": \"<div id='nameDiv' style='font-size: 14px; border-bottom: 1px dashed #666666; font-weight:bold; padding-bottom: 3px; margin-bottom: 5px; display: inline-block;'>$label :</div>{br}State: <b>$seriesName</b>{br}Sales : <b>$dataValue</b>{br}Market share in State : <b>$percentValue</b>{br}Overall market share of $label: <b>$xAxisPercentValue</b>\", \"theme\": \"fusion\" }, \"categories\": [ { \"category\": [ { \"label\": \"Bose\" }, { \"label\": \"Dell\" }, { \"label\": \"Apple\" } ] } ], \"dataset\": [ { \"seriesname\": \"California\", \"data\": [ { \"value\": \"335000\" }, { \"value\": \"225100\" }, { \"value\": \"164200\" } ] }, { \"seriesname\": \"Washington\", \"data\": [ { \"value\": \"215000\" }, { \"value\": \"198000\" }, { \"value\": \"120000\" } ] }, { \"seriesname\": \"Nevada\", \"data\": [ { \"value\": \"298000\" }, { \"value\": \"109300\" }, { \"value\": \"153600\" } ] } ] }"; +FusionCharts marimekko = new FusionCharts( + "marimekko", + "marimekko_chart", + "700", + "400", + "chartContainer", + "json", + jsonData + ); +%> +<%=marimekko.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartUpdateOnClick.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartUpdateOnClick.jsp new file mode 100755 index 0000000000000000000000000000000000000000..7977dcb5295e4098c355100abe6685260564a924 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ChartUpdateOnClick.jsp @@ -0,0 +1,138 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | Dynamic Chart Resize</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<script type="text/javascript"> + + function updateChart(value) { + var chartData = ""; + switch (value) { + case 'Europe': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488" + }, { + "label": "Belgium", + "value": "35132" + }, { + "label": "Denmark", + "value": "34779" + }, { + "label": "Finland", + "value": "19776" + }] + } + break; + + case 'NA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + }, { + "label": "Mexico", + "value": "24072", + }, { + "label": "USA", + "value": "263546", + }] + } + break; + case 'SA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119" + }, { + "label": "Brazil", + "value": "114954" + }, { + "label": "Venezuela", + "value": "60806" + }] + } + break; + } // switch ends + + FusionCharts.items["second_column_chart"].setJSONData(chartData); + } + + </script> + + <h3>Dynamic Chart Resize</h3> + <table style="width: 100%;" > + <tr> + <td> + <div id="first_chart"></div> + </td> + <td> + <span>Click on the left chart to update this one</span> + <div id="second_chart" ></div> + </td> + </tr> + </table> + <br/> + <br/> + <br/> +<br/> +<br/> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +String multiSeriesData = "{ 'chart': { 'caption': 'Sales by Region', 'xaxisname': 'Region', 'yaxisname': 'Total Sales', 'numbersuffix': 'K', 'theme': 'fusion' }, 'data': [{ 'label': 'Europe', 'value': '827508', 'link': 'j-updateChart-Europe' }, { 'label': 'North America', 'value': '342947', 'link': 'j-updateChart-NA' }, { 'label': 'South America', 'value': '183881', 'link': 'j-updateChart-SA' }] }"; +String singlesSeriesData = "{ 'chart': { } }"; +//Create chart instance +// charttype, chartID, width, height,containerid, data format, data +FusionCharts firstChart = new FusionCharts( + "column2d", + "first_column_chart", + "600", + "300", + "first_chart", + "json", + multiSeriesData +); +FusionCharts secondChart = new FusionCharts( + "column2d", + "second_column_chart", + "600", + "300", + "second_chart", + "json", + singlesSeriesData +); +%> +<%=firstChart.render() %> +<%=secondChart.render() %> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/CommonTheme.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/CommonTheme.jsp new file mode 100755 index 0000000000000000000000000000000000000000..7277a462bb703de25002475c496d421eca176fb6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/CommonTheme.jsp @@ -0,0 +1,99 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Use of Common Theme</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> +</head> +<body> +<script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + FusionCharts.options.defaultTheme="fusion"; + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + ChangeTheme(this.value); + }; + } + } + }); + + function ChangeTheme(theme) { + /* for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].setChartAttribute('theme', theme); + } + } */ + FusionCharts.options.defaultTheme=theme; + }; + + </script> +<h3>Use of Common Theme</h3> +<div style="width: 100%; display: table;"> + <div style="display: table-row"> + <div id="first_chart" style="width: 40%; display: table-cell;"></div> + <div id="second_chart" style="width: 40%; display: table-cell;"></div> + </div> + </div> + <br/> + <br/> + + <div align="center" style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <label style="padding: 0px 5px !important;">Select a theme for all charts</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" checked value="fusion"/> Fusion + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="gammel"/> Gammel + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="zune"/> Zune + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="carbon"/> Carbon + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="ocean"/> Ocean + </label> + </div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +String multiSeriesData = "{ 'chart': { 'caption': 'App Publishing Trend', 'subCaption': '2012-2016', 'xAxisName': 'Years', 'yAxisName' : 'Total number of apps in store', 'formatnumberscale': '1', 'drawCrossLine':'1', 'plotToolText' : '<b>$dataValue</b> apps on $seriesName in $label' }, 'categories': [{ 'category': [{ 'label': '2012' }, { 'label': '2013' }, { 'label': '2014' }, { 'label': '2015' },{ 'label': '2016' } ] }], 'dataset': [{ 'seriesname': 'iOS App Store', 'data': [{ 'value': '125000' }, { 'value': '300000' }, { 'value': '480000' }, { 'value': '800000' }, { 'value': '1100000' }] }, { 'seriesname': 'Google Play Store', 'data': [{ 'value': '70000' }, { 'value': '150000' }, { 'value': '350000' }, { 'value': '600000' },{ 'value': '1400000' }] }, { 'seriesname': 'Amazon AppStore', 'data': [{ 'value': '10000' }, { 'value': '100000' }, { 'value': '300000' }, { 'value': '600000' },{ 'value': '900000' }] }] }"; +String singlesSeriesData = "{ 'chart': { 'caption': 'Average Fastball Velocity', 'yAxisName' : 'Velocity (in mph)', 'subCaption': '[2005-2016]', 'numberSuffix': ' mph', 'rotateLabels': '1', 'setAdaptiveYMin': '1', }, 'data': [{ 'label': '2005', 'value': '89.45' }, { 'label': '2006', 'value': '89.87' }, { 'label': '2007', 'value': '89.64' }, { 'label': '2008', 'value': '90.13' }, { 'label': '2009', 'value': '90.67' }, { 'label': '2010', 'value': '90.54' }, { 'label': '2011', 'value': '90.75' }, { 'label': '2012', 'value': '90.8' }, { 'label': '2013', 'value': '91.16' }, { 'label': '2014', 'value': '91.37' }, { 'label': '2015', 'value': '91.66' }, { 'label': '2016', 'value': '91.8' }, ] }"; +//Create chart instance +// charttype, chartID, width, height,containerid, data format, data +FusionCharts firstChart = new FusionCharts( + "overlappedcolumn2d", + "overlappedcolumn_chart", + "600", + "300", + "first_chart", + "json", + multiSeriesData +); +FusionCharts secondChart = new FusionCharts( + "column2d", + "column_chart", + "600", + "300", + "second_chart", + "json", + singlesSeriesData +); +%> +<%=firstChart.render() %> +<%=secondChart.render() %> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/DynamicChartType.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/DynamicChartType.jsp new file mode 100755 index 0000000000000000000000000000000000000000..a03b4d14827e2d272122cc46c5cc8d915199cb8b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/DynamicChartType.jsp @@ -0,0 +1,73 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | Chart type Change at Runtime</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> +</head> +<body> +<script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeChartType(this.value); + }; + } + } + }); + + + function changeChartType(chartType) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].chartType(chartType); + } + } + }; +</script> + +<h3>Chart type Change at Runtime</h3> +<div align="center"> + <label style="padding: 0px 5px !important;">Select The Chart Type</label> +</div> +<br/> +<div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="column2d"/>Column 2D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="pie3d"/>Pie 3D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="bar2d"/>Bar 2D + </label> +</div> + + +<div id="chartContainer" style="width: 100%; display: block;" align="center"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion'}, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chartContainer", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> + +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/GetDataSelectScatterChart.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/GetDataSelectScatterChart.jsp new file mode 100755 index 0000000000000000000000000000000000000000..d37dabd6770bd3699e7a758e1620e5e258dfe511 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/GetDataSelectScatterChart.jsp @@ -0,0 +1,116 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | Get data from select scatter chart and show them in tabular format</title> +</head> +<body> +<script> + onRenderComplete = function (evtObj, argObj) { + + // creating div for controllers + var controllers = document.createElement('div'); + controllers.setAttribute('id', 'controllers'); + controllers.style.display = "inline-block"; + controllers.innerHTML = "<div id='tableView-1' style='width:500px;display:none;margin-left:0px;max-height:250px;overflow:scroll;border: 1px solid #CCCCCC;margin: 3px;float: left;display:none; color: #666666;font-family:'Arial','Helvetica';font-size: 12px;'></div>"; + //Display container div and write table + document.getElementById("showData").appendChild(controllers); + // argObj.container.parentNode.insertBefore(controllers, argObj.container.nextSibling); + /* + * getDataFromChart method prepares the + * tabular string from selection and + * write in a div and display it. + */ + evtObj.sender.getDataFromChart = function() { + var i, + j, + str, + ds = "", + dataArr, + flagData = false, + objDataset = evtObj.sender.getJSONData && evtObj.sender.getJSONData().dataset, + tableContainer = document.getElementById("tableView-1"); + + //Form tabular string + str = "<div style='margin:3px;font-family:'Arial','Helvetica';font-size: 12px;'> Data is returned by the chart as Array. The data is converted into tabular format using JavaScript.</div>"; + str += '<table border="1" cellpadding="1" cellspacing="0" bordercolor="#ffffff" width="100%">'; + for (i in objDataset) { + dataArr = objDataset[i].data; + if (dataArr.length > 0) { + flagData = true; + str += ' <tr>'; + str += ' <td width="20%" style="font-weight: bold;font-size: 14px;vertical-align: top;text-align:right;padding: 3px" color="' + objDataset[i].color + '">' + objDataset[i].seriesname + '</td>'; + + ds = '<table border="1" cellpadding="1" cellspacing="0" bordercolor="' + objDataset[i].color + '" width="100%">'; + ds += '<tr>'; + ds += '<td width="20%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Id</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Price (in USD)</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Quantity Sold</td>'; + ds += '</tr>'; + for (j = 0; j < dataArr.length; j++) { + var id = String(dataArr[j].id), + price = String(dataArr[j].x), + qty = String(dataArr[j].y); + + ds += '<tr>'; + ds += '<td width="20%" align="center">' + id + '</td>'; + ds += '<td width="40%" align="center">$' + price + ' </td>'; + ds += '<td width="40%" align="center">' + qty + ' units</td>'; + ds += '</tr>'; + } + ds += '</table>'; + str += ' <td width="80%" style="padding: 3px">' + ds + '</td>'; + str += ' </tr>'; + } + + } + str += '</table>'; + if (!flagData) { + str = "No Data Selected"; + } + tableContainer.style.display = "block"; + tableContainer.innerHTML = str; + } + }, + onBeforeDataSubmit = function (evtObj, argObj) { + + evtObj.sender.getDataFromChart(); + }, + onDataRestored = function (evtObj, argObj) { + + document.getElementById("tableView-1").style.display = "none"; + document.getElementById("tableView-1").innerHTML = ""; + } + + </script> + <h3>Get data from select scatter chart and show them in tabular format</h3> + <div id ="chart"></div> + <div id ="showData"></div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ \"chart\": { \"theme\": \"fusion\", \"caption\": \"Products Sold vs. Price points\", \"subcaption\": \"Harry's SuperMart - Last Week\", \"yaxisname\": \"Quantity Sold\", \"xaxisname\": \"Price(In US $)\", \"xaxismaxvalue\": \"1000\", \"xaxisminvalue\": \"100\", \"yaxismaxvalue\": \"200\", \"xnumberprefix\": \"$\", \"ynumbersuffix\": \" units\", \"showcanvasborder\": \"1\", \"canvasborderthickness\": \"0.4\", \"canvasborderalpha\": \"50\", \"showXAxisLine\": \"0\", \"showformbtn\": \"1\", \"formAction\": \"#\", \"submitdataasxml\": \"1\" }, \"categories\": [ { \"verticallinecolor\": \"666666\", \"verticallinethickness\": \"1\", \"alpha\": \"40\", \"category\": [ { \"label\": \"$100\", \"x\": \"100\", \"showverticalline\": \"0\" }, { \"label\": \"$200\", \"x\": \"200\", \"showverticalline\": \"1\" }, { \"label\": \"$300\", \"x\": \"300\", \"showverticalline\": \"1\" }, { \"label\": \"$400\", \"x\": \"400\", \"showverticalline\": \"1\" }, { \"label\": \"$500\", \"x\": \"500\", \"showverticalline\": \"1\" }, { \"label\": \"$600\", \"x\": \"600\", \"showverticalline\": \"1\" }, { \"label\": \"$700\", \"x\": \"700\", \"showverticalline\": \"1\" }, { \"label\": \"$800\", \"x\": \"800\", \"showverticalline\": \"1\" }, { \"label\": \"$900\", \"x\": \"900\", \"showverticalline\": \"1\" }, { \"label\": \"$1000\", \"x\": \"1000\", \"showverticalline\": \"0\" } ] } ], \"dataset\": [ { \"drawline\": \"0\", \"seriesname\": \"Televisions\", \"color\": \"#6baa01\", \"anchorsides\": \"3\", \"anchorradius\": \"4\", \"anchorbgcolor\": \"#6baa01\", \"anchorbordercolor\": \"#6baa01\", \"data\": [ { \"id\": \"TV_1\", \"y\": \"559\", \"x\": \"714\" }, { \"id\": \"TV_2\", \"y\": \"293\", \"x\": \"988\" }, { \"id\": \"TV_3\", \"y\": \"231\", \"x\": \"970\" }, { \"id\": \"TV_4\", \"y\": \"528\", \"x\": \"142\" }, { \"id\": \"TV_5\", \"y\": \"95\", \"x\": \"800\" }, { \"id\": \"TV_6\", \"y\": \"515\", \"x\": \"813\" }, { \"id\": \"TV_7\", \"y\": \"444\", \"x\": \"928\" }, { \"id\": \"TV_8\", \"y\": \"592\", \"x\": \"238\" }, { \"id\": \"TV_9\", \"y\": \"229\", \"x\": \"959\" }, { \"id\": \"TV_10\", \"y\": \"238\", \"x\": \"521\" }, { \"id\": \"TV_11\", \"y\": \"285\", \"x\": \"222\" }, { \"id\": \"TV_12\", \"y\": \"524\", \"x\": \"863\" }, { \"id\": \"TV_13\", \"y\": \"422\", \"x\": \"820\" }, { \"id\": \"TV_14\", \"y\": \"344\", \"x\": \"894\" }, { \"id\": \"TV_15\", \"y\": \"510\", \"x\": \"800\" }, { \"id\": \"TV_16\", \"y\": \"132\", \"x\": \"785\" }, { \"id\": \"TV_17\", \"y\": \"381\", \"x\": \"214\" }, { \"id\": \"TV_18\", \"y\": \"210\", \"x\": \"961\" }, { \"id\": \"TV_19\", \"y\": \"496\", \"x\": \"575\" }, { \"id\": \"TV_20\", \"y\": \"330\", \"x\": \"847\" }, { \"id\": \"TV_21\", \"y\": \"436\", \"x\": \"893\" }, { \"id\": \"TV_22\", \"y\": \"406\", \"x\": \"157\" }, { \"id\": \"TV_23\", \"y\": \"125\", \"x\": \"349\" }, { \"id\": \"TV_24\", \"y\": \"450\", \"x\": \"818\" }, { \"id\": \"TV_25\", \"y\": \"455\", \"x\": \"615\" }, { \"id\": \"TV_26\", \"y\": \"328\", \"x\": \"256\" }, { \"id\": \"TV_27\", \"y\": \"188\", \"x\": \"460\" }, { \"id\": \"TV_28\", \"y\": \"565\", \"x\": \"350\" }, { \"id\": \"TV_29\", \"y\": \"149\", \"x\": \"582\" }, { \"id\": \"TV_30\", \"y\": \"425\", \"x\": \"970\" } ] }, { \"seriesname\": \"Cell Phones\", \"color\": \"#f8bd19\", \"anchorsides\": \"4\", \"anchorradius\": \"4\", \"anchorbgcolor\": \"#f8bd19\", \"anchorbordercolor\": \"#f8bd19\", \"data\": [ { \"id\": \"Mob_1\", \"y\": \"335\", \"x\": \"156\" }, { \"id\": \"Mob_2\", \"y\": \"339\", \"x\": \"927\" }, { \"id\": \"Mob_3\", \"y\": \"328\", \"x\": \"847\" }, { \"id\": \"Mob_4\", \"y\": \"1\", \"x\": \"177\" }, { \"id\": \"Mob_5\", \"y\": \"246\", \"x\": \"175\" }, { \"id\": \"Mob_6\", \"y\": \"368\", \"x\": \"441\" }, { \"id\": \"Mob_7\", \"y\": \"146\", \"x\": \"200\" }, { \"id\": \"Mob_8\", \"y\": \"347\", \"x\": \"482\" }, { \"id\": \"Mob_9\", \"y\": \"1\", \"x\": \"463\" }, { \"id\": \"Mob_10\", \"y\": \"63\", \"x\": \"440\" }, { \"id\": \"Mob_11\", \"y\": \"77\", \"x\": \"211\" }, { \"id\": \"Mob_12\", \"y\": \"108\", \"x\": \"824\" }, { \"id\": \"Mob_13\", \"y\": \"44\", \"x\": \"850\" }, { \"id\": \"Mob_14\", \"y\": \"77\", \"x\": \"712\" }, { \"id\": \"Mob_15\", \"y\": \"15\", \"x\": \"199\" }, { \"id\": \"Mob_16\", \"y\": \"333\", \"x\": \"836\" }, { \"id\": \"Mob_17\", \"y\": \"31\", \"x\": \"482\" }, { \"id\": \"Mob_18\", \"y\": \"90\", \"x\": \"604\" }, { \"id\": \"Mob_19\", \"y\": \"294\", \"x\": \"716\" }, { \"id\": \"Mob_20\", \"y\": \"241\", \"x\": \"870\" }, { \"id\": \"Mob_21\", \"y\": \"258\", \"x\": \"421\" }, { \"id\": \"Mob_22\", \"y\": \"186\", \"x\": \"456\" }, { \"id\": \"Mob_23\", \"y\": \"255\", \"x\": \"327\" }, { \"id\": \"Mob_24\", \"y\": \"203\", \"x\": \"995\" }, { \"id\": \"Mob_25\", \"y\": \"35\", \"x\": \"792\" } ] } ] }"; + FusionCharts scatter = new FusionCharts( + "selectscatter", + "scatter_chart", + "500", + "400", + "chart", + "json", + jsonData + ); + + scatter.addEvent("renderComplete", "onRenderComplete"); + scatter.addEvent("beforeDataSubmit", "onBeforeDataSubmit"); + scatter.addEvent("dataRestored", "onDataRestored"); + + %> + <%=scatter.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/Handler/RequestHandler.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/Handler/RequestHandler.jsp new file mode 100755 index 0000000000000000000000000000000000000000..2d88c485a6c109ddc0242f395212df976effea07 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/Handler/RequestHandler.jsp @@ -0,0 +1,134 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<%@page import="java.sql.*" %> +<%@page import="java.util.*" %> +<%@page import="java.io.IOException" %> +<%@page import="java.io.*" %> +<%@page import="java.util.*" %> +<%@page import="java.lang.*" %> +<%! + public Connection con = null; +%> +<% +//Set response content type +response.setContentType("application/json"); + +// level mapping for each column +String[] levelValueMapping = { "region","country","city"}; + +String drillLevel = request.getParameter("drillLevel"); +String query = ""; + String label = ""; + if (drillLevel == null || drillLevel.isEmpty()) + { + drillLevel = "0"; + // build custom query + // parameter: column to be fetch + query = BuildQuery(levelValueMapping[Integer.parseInt(drillLevel)]); + } + else + { + drillLevel = Integer.toString((Integer.parseInt(drillLevel) + 1)); + + label = request.getParameter("label"); + // build custom query + // parameter: column to be fetch, previously clicked value, previous level column name + query = BuildQuery(levelValueMapping[(Integer.parseInt(drillLevel))],label,levelValueMapping[(Integer.parseInt(drillLevel)-1)]); + } + ResultSet rs = GetChartData(query); + String chartJsonData = ProcessChartData(rs, levelValueMapping[(Integer.parseInt(drillLevel))], drillLevel, levelValueMapping.length); + + response.getWriter().write(chartJsonData); + + +%> +<%! + private String BuildQuery(String columnName) + { + String query; + query = "select `" + columnName + "`, SUM(`Total sales`) as `Total Sales`" + "from `Sales_Record` group by `" + columnName + "`"; + return query; + } + + private String BuildQuery(String columnName, String parentValue,String parentName) + { + String query; + query = "select `" + columnName + "`, SUM(`Total sales`) as `Total Sales`" + "from `Sales_Record` where `" + parentName + "` = '" + parentValue + "'Group by `" + columnName +"`"; + return query; + + } + private ResultSet GetChartData(String query) throws SQLException + { + + String url = "jdbc:mysql://localhost:3306/drilldowndb"; + String user = "root"; + String password = "P@ssw0rd"; + //String query = "SELECT `Region`, SUM(`Total sales`) FROM `Sales_Record` group by Region"; + try { + Class.forName("com.mysql.jdbc.Driver").newInstance(); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + con = DriverManager.getConnection(url,user,password); + Statement st = con.createStatement(); + String sql = (query); + ResultSet rs = st.executeQuery(sql); + return rs; + } + + private String ProcessChartData(ResultSet rs,String columnName, String drillLevel, int maxLevel) throws NumberFormatException, SQLException + { + String linkParam = "newchart-jsonurl-Handler/RequestHandler.jsp?label=%s&drillLevel=%s"; + //store chart config name-config value pair + Map<String, String> chartConfig = new HashMap<String, String>(); + chartConfig.put("caption", "Total Sales by" + columnName); + chartConfig.put("xAxisName", columnName); + chartConfig.put("yAxisName", "Total Sales"); + chartConfig.put("numberSuffix", "k"); + chartConfig.put("theme", "fusion"); + + StringBuilder jsonData = new StringBuilder(); + StringBuilder data = new StringBuilder(); + // json data to use as chart data source + jsonData.append("{\"chart\":{"); + for(Map.Entry conf:chartConfig.entrySet()) + { + jsonData.append("\"" + conf.getKey()+"\":\""+conf.getValue() + "\","); + } + + jsonData.replace(jsonData.length() - 1, jsonData.length() ,"},"); + + // build data object from label-value pair + data.append("\"data\":["); + + while (rs.next()) + { + if(Integer.parseInt(drillLevel) < maxLevel - 1) + { + String link = String.format(linkParam,rs.getString(1).toString(), drillLevel); + + data.append("{\"label\":\"" + rs.getString(1) + "\",\"value\":\"" + rs.getString(2) +"\",\"link\":\"" + link + "\"},"); + } + else + { + data.append("{\"label\":\"" + rs.getString(1) + "\",\"value\":\"" + rs.getString(2) +"\"},"); + } + + } + con.close(); + data.replace(data.length() - 1, data.length(),"]"); + + jsonData.append(data.toString()); + jsonData.append("}"); + return jsonData.toString(); + } +%> diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/InteractiveEvent.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/InteractiveEvent.jsp new file mode 100755 index 0000000000000000000000000000000000000000..01f8e5ad7d9d29dc795ed379109609c5f0728f8a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/InteractiveEvent.jsp @@ -0,0 +1,47 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | Show data plot value on click</title> +</head> +<body> +<script> + function onDataplotClick(eventObj) { + var dataValue = eventObj.data.dataValue; + var categoryLabel = eventObj.data.categoryLabel; + + document.getElementById("plotclick").innerHTML = "category: " + categoryLabel + "\n" + "value: " + dataValue; + + } + </script> + <h3>Show data plot value on click</h3> + <div id ="chart"></div> + <div> + <p id="plotclick"></p> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + + column_chart.addEvent("dataplotClick", "onDataplotClick"); + + %> + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/MSColumn2D.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/MSColumn2D.jsp new file mode 100755 index 0000000000000000000000000000000000000000..a238b54f46d13ff83d457dbedcb02d9c3419c611 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/MSColumn2D.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Multiseries Column 2D Chart</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Multiseries Column 2D Chart</h3> +<div id="mscolumn_chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'App Publishing Trend', 'subCaption': '2012-2016', 'xAxisName': 'Years', 'yAxisName' : 'Total number of apps in store', 'formatnumberscale': '1', 'drawCrossLine':'1', 'plotToolText' : '<b>$dataValue</b> apps on $seriesName in $label','theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': '2012' }, { 'label': '2013' }, { 'label': '2014' }, { 'label': '2015' },{ 'label': '2016' } ] }], 'dataset': [{ 'seriesname': 'iOS App Store', 'data': [{ 'value': '125000' }, { 'value': '300000' }, { 'value': '480000' }, { 'value': '800000' }, { 'value': '1100000' }] }, { 'seriesname': 'Google Play Store', 'data': [{ 'value': '70000' }, { 'value': '150000' }, { 'value': '350000' }, { 'value': '600000' },{ 'value': '1400000' }] }, { 'seriesname': 'Amazon AppStore', 'data': [{ 'value': '10000' }, { 'value': '100000' }, { 'value': '300000' }, { 'value': '600000' },{ 'value': '900000' }] }] }"; + + FusionCharts column_chart = new FusionCharts( + "mscolumn2d", + "ms_column", + "700", + "400", + "mscolumn_chart", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/NumberFormatModule.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/NumberFormatModule.jsp new file mode 100755 index 0000000000000000000000000000000000000000..2127b590d9fb2fe235ac63b649f6313f5751d7f0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/NumberFormatModule.jsp @@ -0,0 +1,45 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | Use of fusioncharts number module API</title> +</head> +<body> + <script> + function onRenderComplete(eventObj) { + var formattedNumber = eventObj.sender.formatNumber(1234.5); + document.getElementById("rendered").innerHTML = "format 1234.5 : " + formattedNumber; + + } + </script> + <h3>Use of fusioncharts number module API</h3> + <div id ="chart"></div> + <div> + <p id ="rendered"></p> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberPrefix': '$', 'decimals': '2', 'forceDecimals': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + + column_chart.addEvent("renderComplete", "onRenderComplete"); + + %> + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ProductLevelAPI.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ProductLevelAPI.jsp new file mode 100755 index 0000000000000000000000000000000000000000..18ffcefeb9e37f5aeaecc98773400924b4b8a46e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ProductLevelAPI.jsp @@ -0,0 +1,109 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | Change chart properties dynamically</title> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> +</head> +<body> +<script> + changeCaption = function () { + FusionCharts("column_chart").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(){ + FusionCharts("column_chart").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(){ + FusionCharts("column_chart").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + resetChanges = function () { + + FusionCharts("column_chart").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("column_chart").setChartAttribute('xAxisName', 'Country'); + FusionCharts("column_chart").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } + </script> + <h3>Change chart properties dynamically</h3> + <div id ="chart"></div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onclick="changeCaption()" /> + <label for="radio1">Change Caption: Test Caption</label> + <input type="radio" id="radio2" name="radios" onclick="changeXAxisName()" /> + <label for="radio2">Change X-Axis Name: Test X-Axis</label> + <input type="radio" id="radio3" name="radios" onclick="changeYAxisName()" /> + <label for="radio3">Change Y-Axis Name: Test Y-Axis</label> + <input type="radio" id="radio4" name="radios" onclick="resetChanges()" /> + <label for="radio4">Reset</label> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + + + %> + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ProductLifeCycleEvent.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ProductLifeCycleEvent.jsp new file mode 100755 index 0000000000000000000000000000000000000000..f1d06b68eb2492f0de473dd4931fe7cc30d5b341 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/ProductLifeCycleEvent.jsp @@ -0,0 +1,44 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | sample to showcase one product life cycle event attachment</title> +</head> +<body> + <script> + function onDataLoaded() { + document.getElementById("dataLoaded").innerHTML = "chart data is loaded succesfully"; + + } + </script> + <h3>sample to showcase one product life cycle event attachment</h3> + <div id ="chart"></div> + <div> + <p id ="dataLoaded"></p> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + + column_chart.addEvent("dataLoaded", "onDataLoaded"); + + %> + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/SpecialChartTypeAPI.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/SpecialChartTypeAPI.jsp new file mode 100755 index 0000000000000000000000000000000000000000..a047f48a1986b87e1269e843f2230f4248b33442 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/SpecialChartTypeAPI.jsp @@ -0,0 +1,81 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | shocasing use special chart type API</title> + +</head> +<body> +<script> + plotClickHandler = function(event){ + clickedPlot = (event.data.categoryLabel).toLowerCase(); + if (selectedItem !== clickedPlot) { + selectedItem = clickedPlot; + } else{ + selectedItem = 'none'; + } + }; + selectedItem = "none"; + noneChecked = function(){ + FusionCharts("pie_chart").slicePlotItem(0,false); + FusionCharts("pie_chart").slicePlotItem(1,false); + FusionCharts("pie_chart").slicePlotItem(2,false); + FusionCharts("pie_chart").slicePlotItem(3,false); + } + apacheChecked = function(){ + FusionCharts("pie_chart").slicePlotItem(0,true); + } + microsoftChecked = function(){ + FusionCharts("pie_chart").slicePlotItem(1,true); + } + zeusChecked = function(){ + FusionCharts("pie_chart").slicePlotItem(2,true); + } + otherChecked = function(){ + FusionCharts("pie_chart").slicePlotItem(3,true); + } + </script> + <h3>shocasing use special chart type API</h3> + <div id ="chart"></div> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" checked="checked" onclick="noneChecked()"/> None + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="apacheChecked()"/> Apache + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="microsoftChecked()"/> Microsoft + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="zeusChecked()"/> Zeus + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onclick="otherChecked()"/> Other + </label> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Market Share of Web Servers', 'plottooltext': '<b>$percentValue</b> of web servers run on $label servers', 'showLegend': '0', 'enableMultiSlicing': '0', 'showPercentValues': '1', 'legendPosition': 'bottom', 'useDataPlotColorForLabels': '1', 'theme': 'fusion', }, 'data': [{ 'label': 'Apache', 'value': '32647479' }, { 'label': 'Microsoft', 'value': '22100932' }, { 'label': 'Zeus', 'value': '14376' }, { 'label': 'Other', 'value': '18674221' }] }"; + FusionCharts pie_chart = new FusionCharts( + "pie2d", + "pie_chart", + "700", + "400", + "chart", + "json", + jsonData + ); + + + %> + <%=pie_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/SpecialEvent.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/SpecialEvent.jsp new file mode 100755 index 0000000000000000000000000000000000000000..ef015ece8650512310c58fe526018ec6c16f02cc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/SpecialEvent.jsp @@ -0,0 +1,44 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | example of data update event</title> +</head> +<body> +<script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "previous value: " + eventObj.data.prevData; + + } + </script> + <h3>example of data update event</h3> + <div id ="gauge"></div> + <div> + <p id ="dataUpdate"></p> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Server CPU Utilization', 'subcaption': 'food.hsm.com', 'lowerLimit': '0', 'upperLimit': '100', 'numberSuffix': '%', 'valueAbovePointer': '0', 'editmode':'1' }, 'colorRange': { 'color': [ { 'minValue': '0', 'maxValue': '35', 'label': 'Low', 'code': '#1aaf5d' }, { 'minValue': '35', 'maxValue': '70', 'label': 'Moderate', 'code': '#f2c500' }, { 'minValue': '70', 'maxValue': '100', 'label': 'High', 'code': '#c02d00' } ] }, 'pointers': { 'pointer': [ { 'value': '72.5' } ] } }"; + FusionCharts hlineargauge = new FusionCharts( + "hlineargauge", + "hlinear_gauge", + "500", + "150", + "gauge", + "json", + jsonData + ); + + hlineargauge.addEvent("realtimeUpdateComplete", "onUpdate"); + + %> + <%=hlineargauge.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/StackedColumn2DLinr.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/StackedColumn2DLinr.jsp new file mode 100755 index 0000000000000000000000000000000000000000..36268657d727cbb46a15af2bee4ddbfc5e3e9d44 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/StackedColumn2DLinr.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Stacked Column 2D with Line Chart</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> + <h3>Stacked Column 2D with Line Chart</h3> +<div id="stacked_line"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ \"chart\": { \"showvalues\": \"0\", \"caption\": \"Apple's Revenue & Profit\", \"subCaption\": \"(2013-2016)\", \"numberprefix\": \"$\", \"numberSuffix\" : \"B\", \"plotToolText\" : \"Sales of $seriesName in $label was <b>$dataValue</b>\", \"showhovereffect\": \"1\", \"yaxisname\": \"$ (In billions)\", \"showSum\":\"1\", \"theme\": \"fusion\" }, \"categories\": [{ \"category\": [{ \"label\": \"2013\" }, { \"label\": \"2014\" }, { \"label\": \"2015\" }, { \"label\": \"2016\" }] }], \"dataset\": [{ \"seriesname\": \"iPhone\", \"data\": [{ \"value\": \"21\" }, { \"value\": \"24\" }, { \"value\": \"27\" }, { \"value\": \"30\" }] }, { \"seriesname\": \"iPad\", \"data\": [{ \"value\": \"8\" }, { \"value\": \"10\" }, { \"value\": \"11\" }, { \"value\": \"12\" }] }, { \"seriesname\": \"Macbooks\", \"data\": [{ \"value\": \"2\" }, { \"value\": \"4\" }, { \"value\": \"5\" }, { \"value\": \"5.5\" }] }, { \"seriesname\": \"Others\", \"data\": [{ \"value\": \"2\" }, { \"value\": \"4\" }, { \"value\": \"9\" }, { \"value\": \"11\" }] }, { \"seriesname\": \"Profit\", \"plotToolText\" : \"Total profit in $label was <b>$dataValue</b>\", \"renderas\": \"Line\", \"data\": [{ \"value\": \"17\" }, { \"value\": \"19\" }, { \"value\": \"13\" }, { \"value\": \"18\" }] }] }"; + + FusionCharts stackedColumn = new FusionCharts( + "stackedColumn2DLine", + "ms_column", + "700", + "400", + "stacked_line", + "json", + jsonData + ); + %> + + <%=stackedColumn.render()%> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/UpdateDataRunTime.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/UpdateDataRunTime.jsp new file mode 100755 index 0000000000000000000000000000000000000000..17323f90fd7ccf8c5af39203c22f0b1100bd744b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/UpdateDataRunTime.jsp @@ -0,0 +1,48 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <title>FusionCharts | update dial value on runtime</title> +</head> +<body> + <script> + updateData = function () { + var value = document.getElementById("dial-val").value; + FusionCharts("angular_gauge").setDataForId("dial1",value); + } + </script> + <h3>update dial value on runtime</h3> + <label for="dial-val">Input dial value</label> + <input name="dial-val" id="dial-val" type= "number"/><input type ="button" name ="update dial" value ="update dial"onclick ="updateData()" /> + <br /> + <br /> + <div id ="gauge"></div> + <div> + <p id="plotclick"></p> + </div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Customer Satisfaction Score', 'subcaption': 'Los Angeles Topanga', 'plotToolText': 'Current Score: $value', 'theme': 'fint', 'chartBottomMargin': '50', 'showValue': '1' }, 'colorRange': { 'color': [{ 'minValue': '0', 'maxValue': '45', 'code': '#e44a00' }, { 'minValue': '45', 'maxValue': '75', 'code': '#f8bd19' }, { 'minValue': '75', 'maxValue': '100', 'code': '#6baa01' }] }, 'dials': { 'dial': [{ 'value': '70', 'id': 'dial1' }] } }"; + FusionCharts angulargauge = new FusionCharts( + "angulargauge", + "angular_gauge", + "500", + "400", + "gauge", + "json", + jsonData + ); + + + + %> + <%=angulargauge.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/angulargauge.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/angulargauge.jsp new file mode 100755 index 0000000000000000000000000000000000000000..a6c0b947ef6f6a1df800e31cb32572d06909bd71 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/angulargauge.jsp @@ -0,0 +1,38 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>FusionCharts | Angular Gauge</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script> + </script> + +</head> +<body> +<h3>Angular Gauge</h3> +<div id="gauge"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ \"chart\": { \"caption\": \"Nordstorm's Customer Satisfaction Score for 2017\", \"lowerLimit\": \"0\", \"upperLimit\": \"100\", \"showValue\": \"1\", \"numberSuffix\": \"%\", \"theme\": \"fusion\", \"showToolTip\": \"0\" }, \"colorRange\": { \"color\": [{ \"minValue\": \"0\", \"maxValue\": \"50\", \"code\": \"#F2726F\" }, { \"minValue\": \"50\", \"maxValue\": \"75\", \"code\": \"#FFC533\" }, { \"minValue\": \"75\", \"maxValue\": \"100\", \"code\": \"#62B58F\" }] }, \"dials\": { \"dial\": [{ \"value\": \"81\" }] } }"; + + FusionCharts gauge = new FusionCharts( + "angulargauge", + "angular_gauge", + "400", + "400", + "gauge", + "json", + jsonData + ); + %> + + <%=gauge.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/chartClientSideExport.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/chartClientSideExport.jsp new file mode 100755 index 0000000000000000000000000000000000000000..56577d1207a1861e051fec043cfba08aa057272c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/chartClientSideExport.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Export Chart As Image (client-side)</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Export Chart As Image (client-side)</h3> +<div id="export_enabled_chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Countries With Most Oil Reserves [2017-18]', 'subCaption': 'In MMbbl = One Million barrels', 'xAxisName': 'Country', 'yAxisName': 'Reserves (MMbbl)', 'numberSuffix': 'K', 'theme': 'fusion', 'exportEnabled':'1' }, 'data': [{ 'label': 'Venezuela', 'value': '290' }, { 'label': 'Saudi', 'value': '260' }, { 'label': 'Canada', 'value': '180' }, { 'label': 'Iran', 'value': '140' }, { 'label': 'Russia', 'value': '115' }, { 'label': 'UAE', 'value': '100' }, { 'label': 'US', 'value': '30' }, { 'label': 'China', 'value': '30' }] }"; + + FusionCharts column_chart = new FusionCharts( + "column2d", + "column_chart", + "700", + "400", + "export_enabled_chart", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/dataBaseExample.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/dataBaseExample.jsp new file mode 100755 index 0000000000000000000000000000000000000000..3489f79a1e9606c8bc9526ba2821ad6df2f5a28a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/dataBaseExample.jsp @@ -0,0 +1,79 @@ +<%@page import="com.mysql.jdbc.Driver"%> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<%@page import="java.sql.*" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Chart Using Database (MySQL)</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> + <h3>Chart Using Database (MySQL)</h3> +<div id="database_chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +Connection con = null; +String url = "jdbc:mysql://localhost:3306/drilldowndb"; +String user = "root"; +String password = "P@ssw0rd"; +String query = "SELECT `Region`, SUM(`Total sales`) FROM `Sales_Record` group by Region"; +Class.forName("com.mysql.jdbc.Driver").newInstance(); +con = DriverManager.getConnection(url,user,password); +Statement st = con.createStatement(); +String sql = (query); +ResultSet rs = st.executeQuery(sql); + + +//store chart config name-config value pair +Map<String, String> chartConfig = new HashMap<String, String>(); +chartConfig.put("caption", "Total Sales by Region"); +chartConfig.put("xAxisName", "Region"); +chartConfig.put("yAxisName", "Total Sales"); +chartConfig.put("numberSuffix", "k"); +chartConfig.put("theme", "fusion"); + +StringBuilder jsonData = new StringBuilder(); +StringBuilder data = new StringBuilder(); +// json data to use as chart data source +jsonData.append("{\"chart\":{"); +for(Map.Entry conf:chartConfig.entrySet()) +{ + jsonData.append("\"" + conf.getKey()+"\":\""+conf.getValue() + "\","); +} + +jsonData.replace(jsonData.length() - 1, jsonData.length() ,"},"); + +// build data object from label-value pair +data.append("\"data\":["); + +while (rs.next()) +{ + data.append("{\"label\":\"" + rs.getString(1) + "\",\"value\":\"" + rs.getString(2) +"\"},"); +} +data.replace(data.length() - 1, data.length(),"]"); + +jsonData.append(data.toString()); +jsonData.append("}"); + +con.close(); +//Create chart instance +// charttype, chartID, width, height,containerid, data format, data +FusionCharts firstChart = new FusionCharts( + "column2d", + "data_from_mysql", + "800", + "550", + "database_chart", + "json", + jsonData.toString() +); +%> +<%=firstChart.render() %> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/drillDown.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/drillDown.jsp new file mode 100755 index 0000000000000000000000000000000000000000..a679630847d853531af4d0348c6bb6ee04e6735b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/drillDown.jsp @@ -0,0 +1,36 @@ +<%@page import="com.mysql.jdbc.Driver"%> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<%@page import="java.sql.*" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Chart with Drill-Down Feature</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Chart with Drill-Down Feature</h3> +<div id="drilldown_enabled_chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + +//Create chart instance +// charttype, chartID, width, height,containerid, data format, data +FusionCharts firstChart = new FusionCharts( + "column2d", + "drilldown_chart", + "800", + "550", + "drilldown_enabled_chart", + "jsonurl", + "Handler/RequestHandler.jsp" +); +%> +<%=firstChart.render() %> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/first_chart.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/first_chart.jsp new file mode 100755 index 0000000000000000000000000000000000000000..eadd757aed863ba64ef3fe9a9548ce6f62cef1c5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/first_chart.jsp @@ -0,0 +1,80 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Simple Chart Using Array</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Simple Chart Using Array</h3> + <div id="chart"></div> + <div><span><a href="../Index.jsp">Go Back</a></span></div> + <% + // store chart config name-config value pair + Map<String, String> chartConfig = new HashMap<String, String>(); + chartConfig.put("caption", "Countries With Most Oil Reserves [2017-18]"); + chartConfig.put("subCaption", "In MMbbl = One Million barrels"); + chartConfig.put("xAxisName", "Country"); + chartConfig.put("yAxisName", "Reserves (MMbbl)"); + chartConfig.put("numberSuffix", "k"); + chartConfig.put("theme", "fusion"); + + //store label-value pair + Map<String, Integer> dataValuePair = new HashMap<String, Integer>(); + dataValuePair.put("Venezuela", 290); + dataValuePair.put("Saudi", 260); + dataValuePair.put("Canada", 180); + dataValuePair.put("Iran", 140); + dataValuePair.put("Russia", 115); + dataValuePair.put("UAE", 100); + dataValuePair.put("US", 30); + dataValuePair.put("China", 30); + + StringBuilder jsonData = new StringBuilder(); + StringBuilder data = new StringBuilder(); + // json data to use as chart data source + jsonData.append("{'chart':{"); + for(Map.Entry conf:chartConfig.entrySet()) + { + jsonData.append("'" + conf.getKey()+"':'"+conf.getValue() + "',"); + } + + jsonData.replace(jsonData.length() - 1, jsonData.length() ,"},"); + + // build data object from label-value pair + data.append("'data':["); + + for(Map.Entry pair:dataValuePair.entrySet()) + { + data.append("{'label':'" + pair.getKey() + "','value':'" + pair.getValue() +"'},"); + } + data.replace(data.length() - 1, data.length(),"]"); + + jsonData.append(data.toString()); + jsonData.append("}"); + + +//Create chart instance + // charttype, chartID, width, height,containerid, data format, data + FusionCharts firstChart = new FusionCharts( + "column2d", + "first_chart", + "800", + "550", + "chart", + "json", + jsonData.toString() + ); + %> + <%= firstChart.render() %> + + + + +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/gauge.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/gauge.jsp new file mode 100755 index 0000000000000000000000000000000000000000..34092f8dacb34abdc974a862108c5a9a1d783f4e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/gauge.jsp @@ -0,0 +1,101 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<%! +//Create colorRange class +//It will store Min range Max range and specific color code for each range +private class ColorRange +{ + public int min,max; + public String colorCode; + public ColorRange(int min,int max, String code) + { + this.min = min; + this.max = max; + this.colorCode = code; + } + +} +%> + +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Simple Widget Using Array</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Simple Widget Using Array</h3> +<div id="gauge"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +//store chart config name-config value pair +Map<String, String> chartConfig = new HashMap<String, String>(); +chartConfig.put("caption", "Nordstorms Customer Satisfaction Score for 2017"); +chartConfig.put("lowerLimit", "0"); +chartConfig.put("upperLimit", "100"); +chartConfig.put("showValue", "1"); +chartConfig.put("numberSuffix", "%"); +chartConfig.put("theme", "fusion"); +chartConfig.put("showToolTip", "0"); +//store dial value config +Map<String,String> dial = new HashMap<String,String>(); +dial.put("value","81"); +//store color range-color +ArrayList<ColorRange> color = new ArrayList<ColorRange>(); +color.add(new ColorRange(0,50,"#F2726F")); +color.add(new ColorRange(50,75,"#FFC533")); +color.add(new ColorRange(75,100,"#62B58F")); + +//json data to use as chart data source +StringBuilder jsonData = new StringBuilder(); +//build chart config object +jsonData.append("{'chart':{"); +for(Map.Entry conf:chartConfig.entrySet()) +{ + jsonData.append("'" + conf.getKey()+"':'"+conf.getValue() + "',"); +} +jsonData.replace(jsonData.length() - 1, jsonData.length() ,"},"); + +StringBuilder range = new StringBuilder(); +//build colorRange object +range.append("'colorRange':{"); +range.append("'color':["); +for(int i =0; i< color.size(); i++) +{ + range.append("{'minValue':'" + color.get(i).min + "','maxValue':'" + color.get(i).max + "','code':'" + color.get(i).colorCode +"'},"); +} +range.replace(range.length() - 1, range.length(),"]},"); +//build dials object +StringBuilder dials = new StringBuilder(); +dials.append("'dials':{"); +dials.append("'dial':["); +for(Map.Entry dialCnf:dial.entrySet()) +{ + dials.append("{'" + dialCnf.getKey() + "':'" + dialCnf.getValue() +"'},"); +} +dials.replace(dials.length() - 1, dials.length(),"]}"); + +jsonData.append(range.toString()); +jsonData.append(dials.toString()); +jsonData.append("}"); + +//Create gauge instance +// charttype, chartID, width, height,container id, data format, data +FusionCharts gauge = new FusionCharts( + "angularGauge", + "first_gauge", + "400", + "350", + "gauge", + "json", + jsonData.toString() + ); + %> + <%= gauge.render() %> + +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/jsonUrlData.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/jsonUrlData.jsp new file mode 100755 index 0000000000000000000000000000000000000000..11803d907f2a3e0b01db1789683c770c91eb671e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/jsonUrlData.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Chart using data from JSON URL</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Chart using data from JSON URL</h3> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<div id="column_chart"></div> +<% + String jsonDataUrl; + jsonDataUrl = "../Data/jsonData.json"; + + FusionCharts column_chart = new FusionCharts( + "column2d", + "column", + "700", + "400", + "column_chart", + "jsonurl", + jsonDataUrl + ); + %> + + <%=column_chart.render()%> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/map.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/map.jsp new file mode 100755 index 0000000000000000000000000000000000000000..8f1ede7c0d96ca8ceeb0551fab924423c8622452 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/map.jsp @@ -0,0 +1,127 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> + <%! + //Create colorRange class + //It will store Min range Max range and specific color code for each range + + class ColorRange + { + public double min; + public double max; + public String colorCode; + + public ColorRange(double min, double max, String code) + { + this.min = min; + this.max = max; + this.colorCode = code; + } + } + //Create countryData class + //It will store id, value and show label for each country + + class CountryData + { + public String id; + public double value; + public int showLabel; + + public CountryData(String id, double value, int showLabel) + { + this.id = id; + this.value = value; + this.showLabel = showLabel; + + } + + } + %> + +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Simple Map Using Array</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/maps/fusioncharts.world.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Simple Map Using Array</h3> +<div id="map"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% +// store chart config name-config value pair +Map<String, String> chartConfig = new HashMap<String, String>(); +chartConfig.put("caption", "Average Annual Population Growth"); +chartConfig.put("subCaption", " 1955-2015"); +chartConfig.put("includevalueinlabels", "1"); +chartConfig.put("labelsepchar", ": "); +chartConfig.put("numberSuffix", "%"); +chartConfig.put("entityFillHoverColor", "#FFF9C4"); +chartConfig.put("theme", "fusion"); + +// store color code for different range +ArrayList<ColorRange> color = new ArrayList<ColorRange>(); +color.add(new ColorRange(0.5, 1.0, "#FFD74D")); +color.add(new ColorRange(1.0, 2.0, "#FB8C00")); +color.add(new ColorRange(2.0, 3.0, "#E65100")); + +// store country data +ArrayList<CountryData> countries = new ArrayList<CountryData>(); +countries.add(new CountryData("NA", .82, 1)); +countries.add(new CountryData("SA", 2.04, 1)); +countries.add(new CountryData("AS", 1.78, 1)); +countries.add(new CountryData("EU", .40, 1)); +countries.add(new CountryData("AF", 2.58, 1)); +countries.add(new CountryData("AU", 1.30, 1)); + +// json data to use as chart data source +StringBuilder jsonData = new StringBuilder(); +//build chart config object +jsonData.append("{'chart':{"); +for(Map.Entry cnf :chartConfig.entrySet()) +{ + jsonData.append("'" + cnf.getKey() + "':'" + cnf.getValue() +"',"); +} +jsonData.replace(jsonData.length() - 1, jsonData.length(),"},"); + +StringBuilder range = new StringBuilder(); +//build colorRange object +range.append("'colorRange':{"); +range.append("'color':["); +for(int i =0 ;i <color.size();i++) +{ + range.append("{'minValue':'"+ color.get(i).min +"','maxValue':'"+ color.get(i).max +"','code':'"+ color.get(i).colorCode +"'},"); +} +range.replace(range.length() - 1, range.length(),"]},"); + +// build data object +StringBuilder data = new StringBuilder(); +data.append("'data':["); +for(int i =0 ;i <countries.size();i++) +{ + data.append("{'id':'" + countries.get(i).id + "','value':'" + countries.get(i).value +"','showLabel':'" +countries.get(i).showLabel+ "'},"); +} +data.replace(data.length() - 1, data.length(),"]"); +jsonData.append(range); +jsonData.append(data); +jsonData.append("}"); +//Create map instance +// charttype, chartID, width, height,container id, data format, data +FusionCharts map = new FusionCharts( + "world", + "first_map", + "800", + "650", + "map", + "json", + jsonData.toString() + ); + %> + //render map + <%= map.render() %> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/msCombi3d.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/msCombi3d.jsp new file mode 100755 index 0000000000000000000000000000000000000000..85f4af255869b731e10a7c5f76213a46a7d3ea73 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/msCombi3d.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Multiseries Combination 3D Chart</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>Multiseries Combination 3D Chart</h3> +<div id="mscombi_3d"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Salary Hikes by Country', 'subCaption': '2016 - 2017', 'showhovereffect': '1', 'numberSuffix': '%', 'rotatelabels': '1', 'theme': 'fusion' }, 'categories': [{ 'category': [{ 'label': 'Australia' }, { 'label': 'New-Zealand' }, { 'label': 'India' }, { 'label': 'China' }, { 'label': 'Myanmar' }, { 'label': 'Bangladesh' }, { 'label': 'Thailand' }, { 'label': 'South Korea' }, { 'label': 'Hong Kong' }, { 'label': 'Singapore' }, { 'label': 'Taiwan' }, { 'label': 'Vietnam' }] }], 'dataset': [{ 'seriesName': '2016 Actual Salary Increase', 'plotToolText' : 'Salaries increased by <b>$dataValue</b> in 2016', 'data': [{ 'value': '3' }, { 'value': '3' }, { 'value': '10' }, { 'value': '7' }, { 'value': '7.4' }, { 'value': '10' }, { 'value': '5.4' }, { 'value': '4.5' }, { 'value': '4.1' }, { 'value': '4' }, { 'value': '3.7' }, { 'value': '9.3' }] }, { 'seriesName': '2017 Projected Salary Increase', 'plotToolText' : 'Salaries expected to increase by <b>$dataValue</b> in 2017', 'renderAs': 'line', 'data': [{ 'value': '3' }, { 'value': '2.8' }, { 'value': '10' }, { 'value': '6.9' }, { 'value': '6.7' }, { 'value': '9.4' }, { 'value': '5.5' }, { 'value': '5' }, { 'value': '4' }, { 'value': '4' }, { 'value': '4.5' }, { 'value': '9.8' }] }, { 'seriesName': 'Inflation rate', 'plotToolText' : '$dataValue projected inflation', 'renderAs': 'area', 'showAnchors':'0', 'data': [{ 'value': '1.6' }, { 'value': '0.6' }, { 'value': '5.6' }, { 'value': '2.3' }, { 'value': '7' }, { 'value': '5.6' }, { 'value': '0.2' }, { 'value': '1' }, { 'value': '2.6' }, { 'value': '0' }, { 'value': '1.1' }, { 'value': '2.4' }] }] }"; + + FusionCharts column_chart = new FusionCharts( + "mscombi3d", + "combi_chart", + "700", + "400", + "mscombi_3d", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/pie3d.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/pie3d.jsp new file mode 100755 index 0000000000000000000000000000000000000000..049067910588591156b1d45d2693476183dc761f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/pie3d.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Pie 3D Chart</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> + <h3>Pie 3D Chart</h3> +<div id="pie3d_chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Recommended Portfolio Split', 'subCaption' : 'For a net-worth of $1M', 'showValues':'1', 'showPercentInTooltip' : '0', 'numberPrefix' : '$', 'enableMultiSlicing':'1', 'theme': 'fusion' }, 'data': [{ 'label': 'Equity', 'value': '300000' }, { 'label': 'Debt', 'value': '230000' }, { 'label': 'Bullion', 'value': '180000' }, { 'label': 'Real-estate', 'value': '270000' }, { 'label': 'Insurance', 'value': '20000' }] }"; + + FusionCharts column_chart = new FusionCharts( + "pie3d", + "piechart", + "400", + "400", + "pie3d_chart", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/usa_map.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/usa_map.jsp new file mode 100755 index 0000000000000000000000000000000000000000..9f900ba0664580af5ff1ce859f54c6eae775b4f0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/usa_map.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | USA Map</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/maps/fusioncharts.usa.js"></script> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> +<h3>USA Map</h3> +<div id="map"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String jsonData; + jsonData = "{ 'chart': { 'caption': 'Average Temperature of US States', 'subcaption': '1979 - 2000', 'entityFillHoverColor': '#F8F8E9', 'numberSuffix': '�F', 'showLabels': '1', 'borderThickness': '0.4', 'theme': 'fusion', 'entityToolText': '<b>$lname</b> has an average temperature of <b>$datavalue</b>' }, 'colorrange': { 'minvalue': '20', 'code': '#00A971', 'gradient': '1', 'color': [{ 'minvalue': '20', 'maxvalue': '40', 'code': '#EFD951' }, { 'minvalue': '40', 'maxvalue': '60', 'code': '#FD8963' }, { 'minvalue': '60', 'maxvalue': '80', 'code': '#D60100' } ] }, 'data': [{ 'id': 'HI', 'value': '70.0' }, { 'id': 'DC', 'value': '52.3' }, { 'id': 'MD', 'value': '54.2' }, { 'id': 'DE', 'value': '55.3' }, { 'id': 'RI', 'value': '50.1' }, { 'id': 'WA', 'value': '48.3' }, { 'id': 'OR', 'value': '48.4' }, { 'id': 'CA', 'value': '59.4' }, { 'id': 'AK', 'value': '26.6', }, { 'id': 'ID', 'value': '44.4' }, { 'id': 'NV', 'value': '49.9' }, { 'id': 'AZ', 'value': '60.3' }, { 'id': 'MT', 'value': '42.7' }, { 'id': 'WY', 'value': '42.0' }, { 'id': 'UT', 'value': '48.6' }, { 'id': 'CO', 'value': '45.1' }, { 'id': 'NM', 'value': '53.4' }, { 'id': 'ND', 'value': '40.4' }, { 'id': 'SD', 'value': '45.2' }, { 'id': 'NE', 'value': '48.8' }, { 'id': 'KS', 'value': '54.3' }, { 'id': 'OK', 'value': '59.6' }, { 'id': 'TX', 'value': '64.8' }, { 'id': 'MN', 'value': '41.2' }, { 'id': 'IA', 'value': '47.8' }, { 'id': 'MO', 'value': '54.5' }, { 'id': 'AR', 'value': '60.4' }, { 'id': 'LA', 'value': '66.4' }, { 'id': 'WI', 'value': '43.1' }, { 'id': 'IL', 'value': '51.8' }, { 'id': 'KY', 'value': '55.6' }, { 'id': 'TN', 'value': '57.6' }, { 'id': 'MS', 'value': '63.4' }, { 'id': 'AL', 'value': '62.8' }, { 'id': 'GA', 'value': '63.5' }, { 'id': 'MI', 'value': '44.4' }, { 'id': 'IN', 'value': '51.7' }, { 'id': 'OH', 'value': '50.7' }, { 'id': 'PA', 'value': '48.8' }, { 'id': 'NY', 'value': '45.4' }, { 'id': 'VT', 'value': '42.9' }, { 'id': 'NH', 'value': '43.8' }, { 'id': 'ME', 'value': '41.0' }, { 'id': 'MA', 'value': '47.9' }, { 'id': 'CT', 'value': '49.0' }, { 'id': 'NJ', 'value': '52.7' }, { 'id': 'WV', 'value': '51.8' }, { 'id': 'VA', 'value': '55.1' }, { 'id': 'NC', 'value': '59.0' }, { 'id': 'SC', 'value': '62.4' }, { 'id': 'FL', 'value': '70.7' } ] }"; + + FusionCharts column_chart = new FusionCharts( + "usa", + "usamap", + "800", + "600", + "map", + "json", + jsonData + ); + %> + + <%=column_chart.render()%> +</body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/xmlUrlData.jsp b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/xmlUrlData.jsp new file mode 100755 index 0000000000000000000000000000000000000000..209805fd9b4a0836fcba0c2bd64f373864414c09 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/jsp/xmlUrlData.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + <%@page import="java.util.*" %> +<%@page import="fusioncharts.FusionCharts" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<title>FusionCharts | Chart using data from XML URL</title> +<link href="../Styles/ChartSampleStyleSheet.css" rel="stylesheet" /> +<script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + +</head> +<body> + <h3>Chart using data from XML URL</h3> +<div id="column_chart"></div> +<div><span><a href="../Index.jsp">Go Back</a></span></div> +<% + String xmlDataUrl; + xmlDataUrl = "../Data/xmlData.xml"; + + FusionCharts column_chart = new FusionCharts( + "column2d", + "column", + "700", + "400", + "column_chart", + "xmlurl", + xmlDataUrl + ); + %> + + <%=column_chart.render()%> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/mysql-dump/drilldownsdb.sql b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/mysql-dump/drilldownsdb.sql new file mode 100755 index 0000000000000000000000000000000000000000..1f181fdbeb61d3f95792afe421c21c6d2fa9c2c9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/java/samples/WebContent/mysql-dump/drilldownsdb.sql @@ -0,0 +1,2210 @@ +-- MySQL dump 10.13 Distrib 8.0.11, for osx10.13 (x86_64) +-- +-- Host: 127.0.0.1 Database: drilldowndb +-- ------------------------------------------------------ +-- Server version 8.0.11 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; + SET NAMES utf8mb4 ; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +CREATE DATABASE drilldowndb +USE drilldowndb + +-- +-- Table structure for table `sales_record` +-- + +DROP TABLE IF EXISTS `sales_record`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `sales_record` ( + `Region` varchar(45) DEFAULT NULL, + `Country` varchar(45) DEFAULT NULL, + `City` varchar(45) DEFAULT NULL, + `Total Sales` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sales_record` +-- + +LOCK TABLES `sales_record` WRITE; +/*!40000 ALTER TABLE `sales_record` DISABLE KEYS */; +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 174); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 167.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 1696); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 77); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1483.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 251.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 100.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 233.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 2591.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 49.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1088); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 604.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 53.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 403.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 304); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 486.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 1320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 393); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 124.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 877.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 156); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 759.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1104.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 153.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 80); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 20.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 122.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 780); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 590.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 251.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 160); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 203.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 60.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 833.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1241.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 287.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 532); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 192.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 936); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 735); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 3079.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 215.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 990); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 111.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 119.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 555.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 920); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 388.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 667.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 595.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 149.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 881.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 475.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 344); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 194.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 43.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 263.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 372); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 728); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 472.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 248); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 280.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 467.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 43.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 384); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 186); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 7.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 21.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 57.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 124.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 31.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 248); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 131.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 952); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 83.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 526.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 325.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 543.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 55.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 647.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 587.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 943); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1576); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 555.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 224); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 143.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 58.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 29.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 239.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1485); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 104); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 371.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 84.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1296); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 175.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 37.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 259.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 552); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 571.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 37.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 121.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 417); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 864); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 556); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 607.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1319.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 591); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 109.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 408); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 147); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1248); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1019.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 441.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 587.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 503.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 149.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 480); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 34.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 1249.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 2474.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 431.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 207); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 262); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 29.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 394); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 30); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 28.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 352); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 22.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 736); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 51.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 139); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 197); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 67.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 145.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 883.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 524); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 182.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1023.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 317.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 984.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 156.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 77); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2758); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 154); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 249.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 509.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 516); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 44.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 57.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 291.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1007.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1759.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2807.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 57.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 167.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 422.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 249.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 839.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 724.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 317.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 396); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 672); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 72.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 165.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 4215.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1244.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 694.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 88.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1999.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 111.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 121.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 186); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 79.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 687.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 44.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 106.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 249.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 153.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 2035); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 316.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 597.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 304); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 582.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 695); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 624); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 310.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 176); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 2183.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1103.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 999.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 92.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1471.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 16); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 395.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 364.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 559.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 607.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 767.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1330); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 39.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 216); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 616); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 2239.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 584); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1123.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 719.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 58.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 37.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 215.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 141.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 194.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 518.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 4215.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 100.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1193.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 167.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 117.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 201.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 10539.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 172.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 396); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 230.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 576); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 743.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 398.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 217.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 35.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 111.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 303.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 778.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 699.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 2175.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1092); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 3465); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 2108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 165.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 777.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1495.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 848); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 141.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 74.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 172.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 864); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 86); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 403.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 52); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 403.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 106.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 252); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 72.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 39.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 473.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 930.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 1980); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 546.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 215.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 798); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 159.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 91); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 777.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 8431.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1903.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1167.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 847.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 859.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 279); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 59); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 419.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 727.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 287.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 103.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 61.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 561.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 335.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 372.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 523.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 163.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 544); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1386); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1814.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 408); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 239.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 543.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 79.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 218.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 528); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 113.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 111.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1048); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 396.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 788); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 599.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 575.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 667.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 780.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 78.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1742.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 394); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 268.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1833.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 230.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1032); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 583.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 79.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 763.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2303.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 516); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 145.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 2079); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 480); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 372.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2128); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1032); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2281.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 291.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 713.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 746.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 447.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 479.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 239.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1528.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 75.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 29.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 208); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 35.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1379); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 223.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 704); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 192.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 619.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 395.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 371.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 345.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 1576); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 131.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 62.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 146); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 262); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 312); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 10540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 18.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 359.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 364); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 418); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 364.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 1631.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 575.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 1551.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 9.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 239.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 29.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 747); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 392.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 103.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 49.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 880); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 863.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 10329); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 299.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 191.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 287.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 186.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 651); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 192); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1228.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1403.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3079.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1559.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 734.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 227.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 249); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 236); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 851.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 259.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 278); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1215.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 797.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 148.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 393); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 109.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 223.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 233.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 222.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 159.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 683.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 680.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2375.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2051.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 1755); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 472); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 816); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 100.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 436.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 312); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 373.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 115.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 231); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 88.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 87.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 71.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 29.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 83.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 292); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 588); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 34.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 149.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 294); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 347.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1379); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 495.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 35.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2303.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 930.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 470.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 571.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 546); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1549.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 152.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 299.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 277.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 39.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 95.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 516); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 319.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 335.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1584); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 747); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1092); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 736); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 860); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 383.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 191.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 1112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 209.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 24.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 319.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 579.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1151.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 4.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 151.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 153.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 281.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 911.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 544); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 1781.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 294); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 227.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 325); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 134.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 165.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 552); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 607.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 486.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 30.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 212.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 287.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 763.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 24); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 206.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 223.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 655.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 308.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 349.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 815.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 604.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 38.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 216); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 167.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 287.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 495.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 6324); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 733.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 798); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 228); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 528); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 384); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1088); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Walla Walla', 147); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 391.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 311.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 147); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 127.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 303.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 159.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 575.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 719.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 128); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 36.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 747); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 141.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 239.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 251.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 250.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 2640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 223.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 232.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 72.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 671.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 223.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 251.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 135.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 287.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 154); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 52); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 199.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 425.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 695); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 260); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 92); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 185.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 149); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 199.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 196.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1627.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 421); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 228); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 328); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 712.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 147.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 251.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 209.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 689.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 191.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 136.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 4456.44); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 278.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1099.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1499.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 399.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 44.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 107.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 56.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 407.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 399.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 1599.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 427.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1596); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 820.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 387.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1551.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 872.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 5268); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 39.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2855.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1562.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 771.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 220); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 22.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 3952.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 175.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 495.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 339.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 164); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 96.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 719.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 960); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 517.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 459.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 974.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1214.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 467.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 57.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 258.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 2760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 111.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 275.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 143.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1139.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1099.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 569.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 19.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 313.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 900); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 110); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 408); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1099.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 835.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 359.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 258.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 183.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 74.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 1049.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 183.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 97.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 824.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 569.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1189.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 318); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 265); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 730.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 135); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 105); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 34.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 37.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1249.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 7905); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 437.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 157.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1053.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 757.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 193.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 314.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 178.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1139.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 629.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 319.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Walla Walla', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 1972); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 767.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 139.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 135.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 687.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 949.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2543.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 311.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 92); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 59.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 284.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 697.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 778); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 648); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 232.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 244.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 523.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 179.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 985.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 129.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 697.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 321.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 80.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1059.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1519.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 835.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 997.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 237.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 590.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 115.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 431.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 517.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 739.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 194.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 2650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 49.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 492.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 475); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 490); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 623.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 74.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 599.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 112.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 598.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 734.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1124.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 749.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 2199.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 437.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 314.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 2279.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 255.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 391.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 209.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 319.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 920); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 116.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 702); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 820); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 36.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 493); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 199.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 263.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 1044); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 408.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 117); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 162.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 348.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 86.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 631.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 387.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 78); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 252); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1237.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 815.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 624.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 27.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 187.38); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 260); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2499.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1399.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 779.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 372.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 387.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 156.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1700.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 719.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 71.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 397.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 539.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3419.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2339.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 189.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1053.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 232.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 157.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 252.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 193.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 493); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 29.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1925); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 64.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1008); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 499.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 76.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 179.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 523.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1099.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 2379.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 322.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 439.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 479.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 492.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3900); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 772.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 417.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 1064); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 398.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2170); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1045); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 47.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 294); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 80); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 3952.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 532); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 224.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 322.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 1649.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 187.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 22.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 46); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 322.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 224.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 488.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 137.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 249.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 13.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 539.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 742.74); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 194.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 69.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 393.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 680); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 430); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 739.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 524.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 2475.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 299.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 287.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 630); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 61.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 569.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 49.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1367.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 77.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1092.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3943.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1050); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 3125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 795); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 15.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 219.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 320.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 550); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 79.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 406.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 2279.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 442.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 2088); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 719.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 224.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 950); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1104); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 299.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 569.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 683.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 377.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 23.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 249.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 920); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 251.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 269.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 557.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 644.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 454.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 276); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 67.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 522); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 776.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 819.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 223.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 110.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 419.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 51.53); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 523.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 679.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 263.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 359.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 44.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 192.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 69.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 544.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 56.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 775); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 231.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1710); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1020); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1287.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1869.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 909.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 249.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 441.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 599.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 1701); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 53.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 649.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 551.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 419.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1059.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 743.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 455.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 315.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 4456.44); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 210.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1619.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 300.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 99.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 498.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 193.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 174.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 493); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 252.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 3952.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 52.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 276); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 697.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 328); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 397.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 64.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 408.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 936.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 19.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1158); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 223.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 872.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 249.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 559.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 275.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 119.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 931); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 68); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 232.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 368); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 1020); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 620); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 38.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1169.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 468.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 4849.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1237.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 113.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 557.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 2735.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 196); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 629.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 759.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 389.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 4951.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 466.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2366.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 878); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 582); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 446.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1079.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 224.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2700); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 780); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 216); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 64.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 161.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 397.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 449.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 311.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1485.43); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1368.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 119.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 89.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 167.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 499.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1289.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 2309.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 429.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 629.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 270); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1925); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 132); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 157.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 306); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 128); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 349); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 1104); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 780); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 419.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 85.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 1600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 1484); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 46); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 47.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 405.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3936); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 98.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 558); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 936.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1045); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 569.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1052.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 474.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 683.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 158.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 651); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 645); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 50); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 371); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 319.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 111.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 899.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1368); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 349); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 986); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 749.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 77.42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 297.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 378); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 172); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 972.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 57); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 562.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 325.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 468.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 496); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 28); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 550); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 105); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 779.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 379.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 549.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 900); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 261.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 37.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 210.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 399.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1589.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 372); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 175); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 569.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 25.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 842); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 24); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 52.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 126); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 227.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 629.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 531.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 284.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1700); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1218); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 335.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 919.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 311.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2475); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 243.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 392); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 443.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 337.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 395.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 396); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 736); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1064); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 330); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 116.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 379.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1374.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 374.66); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 776.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 324.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 225); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 38); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 50); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 55.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 284.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1139.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 272.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 899.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 1312.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 74.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 719.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 385); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1479); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 798); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 624.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 167.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 1756); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 1379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 489.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 139.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1484); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 2280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 126); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 199.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2339.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1683.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 1050); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 28); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 289.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 104.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 739.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 314.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 344); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 2228.22); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1287); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 874.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 54.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 24.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 850); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 186); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 199.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 167.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 256.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 6359.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 279.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 96.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 349); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 986); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 22.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 759.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 12.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1317.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 35.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 1043.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 77.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1199.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 388.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 325.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 284.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 2475.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 459.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 309.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1875); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 270); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1317); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 225); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 89.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 759.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1733.01); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 192.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 22.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 187.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 135.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 56); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 348.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 44.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1134.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 655.63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 194.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1163.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 863.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 98.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 348); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 119.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 89.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1049.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 529.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 52.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 1559.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 2475.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 647); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 1589.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 1439.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 246.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 220.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 209.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 824.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1116); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1094.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 79.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 2635); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 42.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 149.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 18.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 759.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 899.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 138); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 162); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 552); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 199.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 1391.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 260); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 227.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 193); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 919.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 101.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 854.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 7904.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 985.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1249.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 7905); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1103.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1232.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 193); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 322); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 318); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 147.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 419.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 292.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 2199.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 194.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 135); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 374.76); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 656); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 437.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 292.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 465); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 378); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 405); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 527); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 714); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1020); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 18.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 2108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 414); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 17.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 139.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 311); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 99.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 599.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 112.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 295.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 990.27); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 517.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 825); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 25.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1092); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2040); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 997.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 460); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 377.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 71.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 1562.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 949.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 397.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 521.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 83.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 179.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 496); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 2750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 230); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 211.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 735); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 629.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 449.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 587.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 794.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1596); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 462); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1439.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 110.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1559.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 341.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1529.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1182.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 640.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 291); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 490); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 561.99); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 279.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 9.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 449.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 94.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 139.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 194.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 2309.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2465); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3099.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 389.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 872.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 175); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 315.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1092.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1237.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 439); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 179.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 260.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 997.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1638); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 87.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 147.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 56); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 158.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 15809.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1439.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 398.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 26.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1035.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 98.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 624.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 839.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 106); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1249.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 209.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 623.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 239.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 985.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 498.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 442); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 136.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 230); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 199.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 252); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 665); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 523.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1562.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1619.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 220.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 210.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 269.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 854.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 749.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 399.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 238.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 399.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 797.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 252.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 325); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 2170); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 437.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 225); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 10540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 585); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 135.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 388.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 2199.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 2970.96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 906.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 167.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1799.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 929.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 495); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 810); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1674.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 9903.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 932.04); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 30); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 143.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 44.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 289.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 645); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 719.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 295.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 442.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 198.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1725.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 359.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 427.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 108.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 599.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 97.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 261.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 48.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 839.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 7427.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 659.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 99.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 198.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 537.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 74.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 104.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 192); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 25.89); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1079.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 849.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 418.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 368); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 1756); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 585); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 157.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 139.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 459.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 335.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 619.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1367.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 46.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 474.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 83.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 64.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 348); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 405); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 47.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1097.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 599.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 397.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 251.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 585); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 523.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 690.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 556.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 154.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 65.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 855); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 378); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 249.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 71.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 569.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 364.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 119.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1103.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1665.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 752.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 189.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 559.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 549.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1478.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 999.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1740); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 441); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 104.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 349.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 684); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 775); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 112.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 220); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 146.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 2120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 930); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 2958); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 110); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 37.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 57.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 387.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 399.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 91.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 4049.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 624.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 488.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 312.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 815.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 92.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 133); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 424); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 776.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 266); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 427); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 174); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 154.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 44.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 231.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 41.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 462); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 656); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 324); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 792); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 67.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 1317.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 848); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 208); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 455.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 591.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 135); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 133); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 279.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 1733.06); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 17.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 156.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 57.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 77.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 439); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 77.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 530); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 878); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 799.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 399.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 184); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 116.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1317); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1536.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 309.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 15810); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 414); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 503.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 292.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 959.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 628.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 499.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1119.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 630); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 1215); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 276); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 696); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1971.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1000); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 38.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 839.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1559.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1880.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 949.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 299.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1619.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 69.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 6189.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 337.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 989.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 136); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 239.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 139.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 199.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 232.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 192.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 794.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 272.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 549.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 134.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 269.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 335.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 960); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 184); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 187.38); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 550); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 247.33); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 1237.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 196); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3191.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1259.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 451.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 341.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 306); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 529.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 430); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 459.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1223.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1289.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 56); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 270.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 187.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 304); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 6050); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 743.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 208.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1215); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1967.49); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2331.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1218); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 322); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 374.76); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 442.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1075); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 179.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 119.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 530); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 134.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1035.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 526.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1899.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1494.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 7427.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 5499.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 810); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 480); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 94.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 665); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 344); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 665); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 6587.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 2295.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 1295.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 149.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 233.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 171); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 74.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 1650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 91.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 14); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 645); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 546); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 569.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1317); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 291.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 591.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 37.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1272); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 759.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 479.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 323.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 449.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 640.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 189.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 151.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 899.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 44.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 284.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 2187.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 831.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 67.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1700); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 30); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 714); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 136); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 130); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 327.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 179.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 735.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 289.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3002.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 819.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 687.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 103.31); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 148.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 52.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 386.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 490); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 86.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 364.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1655.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 363.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 719.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 379.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 523.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 449.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 59.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 386); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 357.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 4322.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 244.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 189.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 35.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 499.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 464.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 91.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 455.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 22); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 24.98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 29.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 79.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 31); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 75.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 24); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 23.22); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 34.87); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 80.96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 18); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 32); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 35.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 28.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 35.98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 14); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 67.94); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 66.47); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 17); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 29.99); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 31); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 26); + +/*!40000 ALTER TABLE `sales_record` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2018-07-26 14:54:32 diff --git a/graphs/fusioncharts-suite-xt/integrations/jquery/README.md b/graphs/fusioncharts-suite-xt/integrations/jquery/README.md new file mode 100755 index 0000000000000000000000000000000000000000..b7ca0314ceb5a765723a211f84775771c8b51eb1 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/jquery/README.md @@ -0,0 +1,552 @@ +# jquery-fusioncharts +The FusionCharts Suite XT `jquery-fusioncharts` allows you to use jQuery syntax to render and manipulate your charts and graphs seamlessly across all browsers and devices. + +It helps you add interactive JavaScript charts to your web and mobile applications, combining the delight and comprehensiveness of the FusionCharts Suite XT with the easy-to-use jQuery syntax. + +## Installation + +The easiest way to use `jquery-fusioncharts` plugin is to install it from `npm` and include it in your own build process (using [Browserify](http://browserify.org), [Webpack](http://webpack.github.io/) etc). + +``` +npm install jquery-fusioncharts --save +``` +## Usage +jQuery needs to be imported before the `jquery-fusioncharts` plugin is included in the project. Note that in order to support IE 6/7/8, jQuery 1.x versions need to be used. + +### Render the charts using jquery-fusioncharts plugin + +#### Using require syntax: + +``` +var $ = require('jquery'); +var FusionCharts = require('fusioncharts'); +// Load charts module to render Column2D chart +var Charts = require('fusioncharts/fusioncharts.charts'); +require('jquery-fusioncharts'); + +$('document').ready(function () { + // Once the window with a document is ready, execute the Chart module + // and pass FusionCharts as a dependency + Charts(FusionCharts); + + // Render the chart using `insertFusionCharts` method + $("#chart-container").insertFusionCharts({ + type: "column2d", + width: "600", + height: "400", + dataFormat: "json", + dataSource: { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + }); +}); +``` + +#### Using import syntax: + +``` +import $ from 'jquery'; +import FusionCharts from 'fusioncharts'; +// Load charts module to render Column2D chart +import Charts from 'fusioncharts/fusioncharts.charts'; +import 'jquery-fusioncharts'; + +$('document').ready(function () { + // Once the window with a document is ready, execute the Chart module + // and pass FusionCharts as a dependency + Charts(FusionCharts); + + // Render the chart using `insertFusionCharts` method + $("#chart-container").insertFusionCharts({ + type: "column2d", + width: "600", + height: "400", + dataFormat: "json", + dataSource: { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + }); +}); +``` + + + +You can also use the standalone build by including `package/jquery-fusioncharts.js` in your page. If you use this, make sure you have included jQuery, FusionCharts and FusionCharts charts module. + +## Setting up the FusionCharts jQuery Plugin + +To set up the FusionCharts jQuery plugin, follow the steps given below: + +#### Step 1: Include jquery.min.js to enable jQuery in your project: +``` +<script type="text/javascript" src="path/to/local/jquery.min.js"></script> +``` +jQuery needs to be imported before the FusionCharts jQuery plugin is included in the project. Note that in order to support IE 6/7/8, jQuery 1.x versions need to be used. + +#### Step 2: Include the FusionCharts package +* Copy fusioncharts.js from the FusionCharts Download Package > js folder in your project +* Add reference to the file in your code +``` +<script type="text/javascript" src="path/to/local/fusioncharts.js"></script> +``` + +#### Step 3: Include the jquery-fusioncharts module +* Copy fusioncharts.jqueryplugin.js from the FusionCharts Download Package > js folder in your project +* Add reference to the file in your code +``` +<script type="text/javascript" src="path/to/local/fusioncharts.theme.fusion.js"></script> +``` + +#### Step 4 (optional): Include the theme file. +This step is optional, the chart will render with the default theme even if the theme file is not included. +``` +<script type="text/javascript" src="path/to/local/fusioncharts.jqueryplugin.js"></script> +``` + +This completes the setup and you are now ready to begin using the FusionCharts jQuery plugin. + +In addition to using all the existing features, the jQuery plugin lets you do the following: + +* Render jQuery charts that work across PCs (including IE6/7/8), Macs, iPads, iPhones, and Android devices seamlessly +* Update chart type, data, and individual cosmetic properties at run-time +* Insert, prepend, and append multiple charts in an existing chart container +* Customize the look and feel of all elements on the chart +* Plot charts from data contained in HTML tables + + +``` +<!DOCTYPE html> +<html> + <head> + <title>jQuery FusionCharts Plugin Sample</title> + <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/fusioncharts.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="https://rawgit.com/fusioncharts/fusioncharts-jquery-plugin/develop/dist/fusioncharts.jqueryplugin.min.js"></script> + </head> + <body> + + <div id="chart-container">FusionCharts will render here...</div> + + <script type="text/javascript"> + $('document').ready(function () { + $("#chart-container").insertFusionCharts({ + type: "column2d", + width: "500", + height: "300", + dataFormat: "json", + dataSource: { + "chart": { + "caption": "Yearly revenue", + "xAxisName": "Year", + "yAxisName": "Revenues", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [{ + "label": "2015", + "value": "5548900" + }, { + "label": "2016", + "value": "8100000" + }, { + "label": "2017", + "value": "7200000" + }] + } + }); + }); + </script> + </body> +</html> +``` + + +In addition to using all the existing features, the jQuery plugin lets you do the following: + +* Render jQuery charts that work across PCs (including IE6/7/8), Macs, iPads, iPhones, and Android devices seamlessly +* Update chart type, data, and individual cosmetic properties at run-time +* Insert, prepend, and append multiple charts in an existing chart container +* Customize the look and feel of all elements on the chart +* Plot charts from data contained in HTML tables + + + +## Rendering charts using jQuery + +For rendering new charts, you can use the following jQuery methods: + +* `insertFusionCharts` +* `appendFusionCharts` +* `prependFusionCharts` + + +### insertFusionCharts Method: + +Renders charts inside HTML elements. The HTML elements have to be selected using jQuery selector. In case, multiple HTML elements are selected using the jQuery selector, a chart will be rendered inside each selected HTML element. All existing elements inside the selected elements will be replaced by the rendered charts. This method returns the jQuery selected element to allow chaining with other jQuery methods. + +An object of chart configurations (set of key, value pairs) can be passed as parameter. Click here to view complete list of chart configurations. + +``` +$("#chart-container").insertFusionCharts({ + type: 'hlineargauge', + width: '400', + height: '150', + dataFormat: 'json', + dataSource: { + "chart": { + ... + }, + "colorRange": { + "color": [ + ... + ] + }, + "pointers": { + "pointer": [ + ... + ] + } + } +}); +``` + +### appendFusionCharts Method: + +Renders charts at the end of selected HTML elements. The HTML elements need to be selected using jQuery selector. In case multiple HTML elements are selected, chart will be rendered inside each selected HTML element. All existing elements inside the selected elements will be preserved. The method returns the original jQuery selection to allow chaining of other jQuery methods. + +An object of chart configurations (set of key, value pairs) can be passed as parameter. Click here to view complete list of chart configurations. + +``` +$('#chart-container').insertFusionCharts({ + type: 'pie2d', + width: '450', + height: '300', + dataFormat: 'json', + dataSource: { + "chart": { + ... + }, + "data": [...] + } +}); + +$('#btnClone').click(function() { + // Clone the chart to create a column chart representation of the same data + $('#chart-container').cloneFusionCharts(function() { + // Append the cloned chart to the same chart container + $('#chart-container').appendFusionCharts(this[0]); + }, { + 'id': 'chart-clone', + 'type': 'column2d' + }); +}); +``` + +In the above example, the horizontal linear gauge has been rendered using the insertFusionCharts method. The constructor object is passed as an argument to the insertFusionCharts method + +In the above code snippet, the cloneFusionCharts method is used to create a column-chart clone of the existing pie-chart.This method finds all the charts in the selected element and returns of list of their clones. + +The cloneFusionCharts method accepts two arguments: + +* An anonymous callback function: An array of cloned charts (in this Array) is passed to this function for further processing +* A configuration object: An object containing chart configurations which are applied to each cloned chart + + +### prependFuionCharts Method + +Renders and inserts charts at the beginning of selected HTML elements. The HTML elements need to be selected using jQuery selector. In case multiple HTML elements are selected, chart will be rendered inside each selected HTML element. All existing elements inside the selected elements will be preserved. The method returns the original jQuery selection to allow chaining of other jQuery methods. + +An object of chart configurations (set of key, value pairs) can be passed as parameter. Click here to view complete list of chart configurations. + +``` +$('#chart-container').insertFusionCharts({ + type: 'pie2d', + width: '450', + height: '300', + dataFormat: 'json', + dataSource: { + "chart": { + ... + }, + "data": [ + ... + ] + } +}); + +$('#btnClone').click(function() { + // Clone the chart to create a column chart representation of the same data + $('#chart-container').cloneFusionCharts(function() { + // Prepend the cloned chart to the same chart container + $('#chart-container').prependFusionCharts(this[0]); + }, { + 'id': 'chart-clone', + 'type': 'column2d' + }); +}); +``` + +Similar to the appendFusionCharts method example, the cloneFusionCharts method is used here to clone the existing pie chart, which is then prepended as a column chart. + +There! You have now seen the various methods you can use to render charts using the jQuery plugin. + +More detailed information and documentation can be found [here](http://docs.fusioncharts.com/tutorial-using-with-javascript-libraries-jquery-introduction.html). + + +## Working with Events + +To attach events to FusionCharts element, you can use bind or on with jQuery selectors. + +The event name string should be of the pattern 'fusioncharts[event name in lowercase]', eg. to attach an event listener to dataplotRollOver, the string will be 'fusionchartsdataplotrollover'. + +```javascript +$("#chart-container").on('fusioncharts[event name in lowercase]', function(eventObj, dataObj) { + [code goes here] +}); +``` + +###### Consider the example below that tracks hover events on a data plot. + +```javascript +<!DOCTYPE html> +<html> + <head> + <title>jQuery FusionCharts Plugin Sample</title> + <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/fusioncharts.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="https://rawgit.com/fusioncharts/fusioncharts-jquery-plugin/develop/dist/fusioncharts.jqueryplugin.min.js"></script> + </head> + <body> + + <div id="chart-container">FusionCharts will render here...</div> + <p style="padding: 10px;background: #f5f2f0;text-align: center;">Hover on the plot to see the value along with the label</p> + + <script type="text/javascript"> + $('document').ready(function () { + $("#chart-container").insertFusionCharts({ + type: "column2d", + width: "500", + height: "300", + dataFormat: "json", + dataSource: { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [ + { + "label": "Venezuela", + "value": "290" + }, + { + "label": "Saudi", + "value": "260" + }, + { + "label": "Canada", + "value": "180" + }, + { + "label": "Iran", + "value": "140" + }, + { + "label": "Russia", + "value": "115" + }, + { + "label": "UAE", + "value": "100" + }, + { + "label": "US", + "value": "30" + }, + { + "label": "China", + "value": "30" + } + ] + } + }); + $("#chart-container").on('fusionchartsdataplotrollover', function(eventObj, dataObj) { + $('body p').text('You’re are currently hovering over ' + dataObj.categoryLabel + ' whose value is ' + dataObj.displayValue); + }); + }); + </script> + </body> +</html> +``` + +## Working with APIs + +To call APIs we will need the chart object. To get the chart object, use the method getFusionCharts. It returns an array of all chart objects inside the given selector. Once you have the chart object, you can use any FusionCharts API on it. + +```javascript +var chartObjects = $("#chart-container").getFusionCharts(); +chartObjects.forEach(function (chart) { + chart.[API Call] +}); +``` + +###### Consider the example below that converts a Column 2D chart to a Pie 2D chart after 5 seconds. + +```javascript +<!DOCTYPE html> +<html> + <head> + <title>jQuery FusionCharts Plugin Sample</title> + <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/fusioncharts.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="https://rawgit.com/fusioncharts/fusioncharts-jquery-plugin/develop/dist/fusioncharts.jqueryplugin.min.js"></script> + </head> + <body> + + <div id="chart-container">FusionCharts will render here...</div> + + <script type="text/javascript"> + $('document').ready(function () { + $("#chart-container").insertFusionCharts({ + type: "column2d", + width: "500", + height: "300", + dataFormat: "json", + dataSource: { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion" + }, + "data": [ + { + "label": "Venezuela", + "value": "290" + }, + { + "label": "Saudi", + "value": "260" + }, + { + "label": "Canada", + "value": "180" + }, + { + "label": "Iran", + "value": "140" + }, + { + "label": "Russia", + "value": "115" + }, + { + "label": "UAE", + "value": "100" + }, + { + "label": "US", + "value": "30" + }, + { + "label": "China", + "value": "30" + } + ] + } + }); + + setTimeout(() => { + var chartObjects = $("#chart-container").getFusionCharts(); + chartObjects.forEach(function (chart) { + chart.chartType('pie2d'); + }); + }, 5000); + }); + </script> + </body> +</html> +``` + +## Demo & Examples + +Live demo: [fusioncharts.github.io/fusioncharts-jquery-plugin](http://fusioncharts.github.io/fusioncharts-jquery-plugin/) + +Run the examples locally: + +``` +npm install +npm start +``` + +And then open [`localhost:8080`](http://localhost:8080) in the browser. diff --git a/graphs/fusioncharts-suite-xt/integrations/jquery/js/jquery-fusioncharts.js b/graphs/fusioncharts-suite-xt/integrations/jquery/js/jquery-fusioncharts.js new file mode 100755 index 0000000000000000000000000000000000000000..8adb077fc745defc80bcb2dcb9c8ed112fa4a587 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/jquery/js/jquery-fusioncharts.js @@ -0,0 +1,1642 @@ + + (function (factory) { + if (typeof module === 'object' && typeof module.exports !== "undefined") { + module.exports = factory; + } else { + factory(FusionCharts); + } + }(function (FusionCharts) { + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("jquery")); + else if(typeof define === 'function' && define.amd) + define(["jquery"], factory); + else { + var a = typeof exports === 'object' ? factory(require("jquery")) : factory(root["jquery"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function(__WEBPACK_EXTERNAL_MODULE__1__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +var jQuery = __webpack_require__(1); +var HTMLTableTranscoder = __webpack_require__(2); + +var win = typeof window !== 'undefined' ? window : {}; + +if (typeof FusionCharts === 'undefined') { + FusionCharts = win.FusionCharts; +} +if (typeof jQuery === 'undefined') { + jQuery = win.jQuery; +} + +FusionCharts.addDep(HTMLTableTranscoder); + +var doc = win.document, + jQ = jQuery, + renderFusionCharts, + captureAllFusionChartsEvents, + getChartObjectsFromSelection, + configureLinkedCharts, + math = win.Math, + mathMin = math.min, + +// FusionCharts = FusionCharts, +isArray = function () { + // Use compiler's own isArray when available + if (Array.isArray) { + return Array.isArray; + } + + // Retain references to variables for performance optimization + var objectToStringFn = Object.prototype.toString, + arrayToStringResult = objectToStringFn.call([]); + + return function (subject) { + return objectToStringFn.call(subject) === arrayToStringResult; + }; +}(), + realtimeCommandMap = { + feed: 'feedData', + setdata: 'setData', + setdataforid: 'setDataForId', + getdata: 'getData', + getdataforid: 'getDataForId', + clear: 'clearChart', + stop: 'stopUpdate', + start: 'restartUpdate' +}, + optionsParser = { + feedData: function (options) { + if (typeof options === 'string') { + return [options]; + } else if (typeof options === 'object' && options.stream) { + return [options.stream]; + } else { + return false; + } + }, + getData: function (options) { + // index is passed in case of multivalue charts. + if (!isNaN(options)) { + return [options]; + } else if (typeof options === 'object' && options.index) { + return [options.index]; + } else { + return []; + } + }, + getDataForId: function (options) { + // index is passed in case of multivalue charts. + if (typeof options === 'string') { + return [options]; + } else if (typeof options === 'object' && options.id) { + return [options.id]; + } else { + return []; + } + }, + setData: function (options, value, label) { + var arr = []; + if (typeof options !== 'object') { + arr = [options, value, label]; + } else { + options.value && arr.push(options.value); + options.label && arr.push(options.label); + } + + return arr; + }, + setDataForId: function (options, value, label) { + var arr = []; + if (typeof options === 'string' || typeof value === 'string' || typeof label === 'string') { + arr = [options, value, label]; + } else if (typeof options === 'object') { + options.value && arr.push(options.value); + options.label && arr.push(options.label); + } + + return arr; + }, + clearChart: function (options) { + return [options]; + }, + stopUpdate: function (options) { + return [options]; + }, + restartUpdate: function (options) { + return [options]; + } +}; + +// Assign FusionCharts object to global jQuery object for easy use. +jQ.FusionCharts = FusionCharts; + +/** + * Used purely for rendering the FusionCharts. + * Acts as a common method that is invoked by all the APIs that create a + * FusionChart object + * + * @param {array} elemList is a list of all the HTML elements that + * are selected using the jQuery selectors + * + * @param {object} chartOptions is the options that are to be passed to + * the FusionCharts contructor. + */ + +renderFusionCharts = function (elemList, chartOptions) { + var i, l, cO, chartObj, scriptElement; + + if (isArray(chartOptions) || chartOptions instanceof jQ) { + l = mathMin(elemList.length, chartOptions.length); + } else { + l = elemList.length; + } + + for (i = 0; i < l; i += 1) { + + // One-to-one mapping with the HTML elements in case of + // multiple option objects. + if (isArray(chartOptions) || chartOptions instanceof jQ) { + cO = chartOptions[i]; + } else { + cO = chartOptions; + } + + // check if the element is appended to the window document or not. + if (elemList[i].parentNode) { + // Adding the renderAt option to the chartOptions tells the + // constructor where to render the FusionCharts object. + FusionCharts.render(jQ.extend({}, cO, { + renderAt: elemList[i] + })); + } else { + chartObj = new FusionCharts(jQ.extend({}, cO, { + renderAt: elemList[i] + })); + + if (!jQ.FusionCharts.delayedRender) { + jQ.FusionCharts.delayedRender = {}; + } + jQ.FusionCharts.delayedRender[chartObj.id] = elemList[i]; + + scriptElement = doc.createElement('script'); + scriptElement.setAttribute('type', 'text/javascript'); + + if (/msie/i.test(win.navigator.userAgent) && !win.opera) { + scriptElement.text = 'FusionCharts.items[\'' + chartObj.id + '\'].render();'; + } else { + scriptElement.appendChild(doc.createTextNode('FusionCharts.items[\'' + chartObj.id + '\'].render()')); + } + elemList[i].appendChild(scriptElement); + } + } + return elemList; +}; + +/** + * Using jQuery's event model for attaching handlers to FusionCharts events. + * This is achieved by listening to the FusionCharts "*" event and then + * triggering a jQuery event on the associated DOM element. + */ +captureAllFusionChartsEvents = function (eve, args) { + var containerElement, event; + + // Extending our event with the jQuery event model for proper + // delegation and bubbling. + event = jQ.extend({}, eve); + jQ.extend(event, jQ.Event('fusioncharts' + eve.eventType)); + + // Checking if there is an associated DOM object + if (event.sender && event.sender.options) { + containerElement = event.sender.options.containerElement || event.sender.options.containerElementId; + + if (typeof containerElement === 'object') { + jQ(containerElement).trigger(event, args); + } else if (jQ('#' + containerElement).length) { + jQ('#' + containerElement).trigger(event, args); + } else { + jQ(doc).trigger(event, args); + } + } else { + // If there is no DOM object associated with the FusionCharts object + // then triggering the event on the document itself for any possible + // global handlers that might want to capture it. + jQ(doc).trigger(event, args); + } +}; + +FusionCharts.addEventListener('*', captureAllFusionChartsEvents); + +/** + * Used to select all the HTML object/embed elements that have been created + * using the FusionCharts constructor + * + * @param {jQuery} obj, the selection of elements that need to be processed. + * + */ +getChartObjectsFromSelection = function (obj) { + + // The HTML object/embed may be part of the current selection or a + // child of the current selection. Need to take both cases into account. + // @note If the FusionCharts object has not been rendered yet, e.g in + // case the container is not appended to the document, then 'find' for + // that element will NOT return the corresponding FusionCharts object. + return obj.filter(':FusionCharts').add(obj.find(':FusionCharts')); +}; + +/** + * Used to configure the links at various levels in a linked chart. + * + * @param {jQuery} chartObjects The FusionCharts objects for which the link + * has to be configured. + * + * @param {object} linkConfigObj contains the configuration details of the + * linked chart like swfUrl, height, width etc. + * + * @param {string} level contains the level at which the user wants to + * configure the link. + * + */ +configureLinkedCharts = function (chartObjects, linkConfigObj, level) { + + if (typeof linkConfigObj === 'object') { + chartObjects.each(function () { + this.configureLink(linkConfigObj, level); + }); + } +}; + +/** + * @id: jQuery.fn.insertFusionCharts + * @id: $.fn.insertFusionCharts + * + * @param {object} options contains the parameters that need to be passed + * to the FusionCharts constructor + * + * Inserts the FusionCharts objects in the HTML elements that are selected + * by the jQuery selector. + */ +jQ.fn.insertFusionCharts = function (options) { + return renderFusionCharts(this, options); +}; + +/** + * @id: jQuery.fn.appendFusionCharts + * @id: $.fn.appendFusionCharts + * + * @param {object} options contains that parameters that need to be passed + * to the FusionCharts constructor + * + * Appends the FusionCharts objects immediately after the HTML elements + * that are selected by the jQuery selector. + */ +jQ.fn.appendFusionCharts = function (options) { + options.insertMode = 'append'; + return renderFusionCharts(this, options); +}; + +/** + * @id: jQuery.fn.prependFusionCharts + * @id: $.fn.prependFusionCharts + * + * @param {object} options contains the parameters that need to be passed + * to the FusionCharts constructor + * + * Prepends the FusionCharts objects before the HTML elements that are + * selected by the jQuery selector. + */ +jQ.fn.prependFusionCharts = function (options) { + options.insertMode = 'prepend'; + return renderFusionCharts(this, options); +}; + +/** + * @id: jQuery.fn.attrFusionCharts + * @id: $.fn.attrFusionCharts + * + * @param {object|string} attr, If this is a string then it contains + * the FusionCharts object's attribute that needs to be set or fetched. + * If it is an object then, it contains the attributes along with the + * corresponding values that need to be set on the FusionCharts object + * + * @param {string} attrVal, To be used if attr is a string. Contains the + * value that needs to be set for the attribute that attr corresponds to. + * + * Used to set or get the attribute(s) of the FusionCharts object. + */ +jQ.fn.attrFusionCharts = function (attr, attrVal) { + + /** + * @ignore + * @todo Remove ignore + * + * @var {jQuery} chartsObjects stores the FusionCharts objects in + * the selected HTML elements. + * @var {object} transfer Holds all atttributes to be returned to the + * callee Function. + */ + var transfer = [], + chartObjects = getChartObjectsFromSelection(this); + + if (attrVal !== undefined) { + // Set the charts attribute attr with value attrVal. + + chartObjects.each(function () { + this.FusionCharts.setChartAttribute(attr, attrVal); + }); + return this; + } + if (typeof attr === 'object') { + // Set the charts attributes, in the passed object's keys with + // the corresponding values. + + chartObjects.each(function () { + this.FusionCharts.setChartAttribute(attr); + }); + return this; + } + + // If both the above cases fail, user is trying to, in accordance with the + // jQuery paradigm, get the value of the arrtibute. + chartObjects.each(function () { + transfer.push(this.FusionCharts.getChartAttribute(attr)); + }); + return transfer; +}; + +/** + * @id jQuery.fn.updateFusionCharts + * @id $.fn.updateFusionCharts + * + * @param {object} options Contains the new options that the FusionCharts + * objects need to update themselves with. Currently, using this interface + * the dataType, data, width, height, debugMode and swfUrl can be updated. + */ +jQ.fn.updateFusionCharts = function (options) { + + var filterOpts = {}, + chartObjects = getChartObjectsFromSelection(this), + updateOptions = [['swfUrl', false], ['type', false], ['height', false], ['width', false], ['containerBackgroundColor', true], ['containerBackgroundAlpha', true], ['dataFormat', false], ['dataSource', false]], + i, + l, + fcChart, + renderFlag, + optStr, + newChart; + + for (i = 0, l = updateOptions.length; i < l; i += 1) { + optStr = updateOptions[i][0]; + filterOpts.type = filterOpts.type || filterOpts.swfUrl; + if (options[optStr]) { + if (updateOptions[i][1]) { + renderFlag = true; + } + filterOpts[optStr] = options[optStr]; + } + } + + chartObjects.each(function () { + // If height and width are given then resize the chart first. + fcChart = this.FusionCharts; + if (renderFlag) { + newChart = fcChart.clone(filterOpts); + newChart.render(); + return; + } + + if (filterOpts.dataSource !== undefined || filterOpts.dataFormat !== undefined) { + if (filterOpts.dataSource === undefined) { + fcChart.setChartData(fcChart.args.dataSource, filterOpts.dataFormat); + } else if (filterOpts.dataFormat === undefined) { + fcChart.setChartData(filterOpts.dataSource, fcChart.args.dataFormat); + } else { + fcChart.setChartData(filterOpts.dataSource, filterOpts.dataFormat); + } + } + if (filterOpts.width !== undefined || filterOpts.height !== undefined) { + fcChart.resizeTo(filterOpts.width, filterOpts.height); + } + if (filterOpts.type) { + fcChart.chartType(filterOpts.type); + } + }); + + return this; +}; + +/** + * @id: jQuery.fn.getFusionCharts + * @id: $.fn.getFusionCharts + * + * @return {object} Contains an array of FusionCharts chart objects. + */ +jQ.fn.getFusionCharts = function () { + var charts = getChartObjectsFromSelection(this); + var chartArr = []; + charts.each(function () { + chartArr.push(this.FusionCharts); + }); + return chartArr; +}; + +/** + * @id: jQuery.fn.cloneFusionCharts + * @id: $.fn.cloneFusionCharts + * + * @param {object} options The options object that takes the additional + * parameters to be passed while cloning the FusionCharts object. + * + * @param {function} callback The callback function that has to be called + * once the FusionCharts objects have been cloned. This function will take + * the new clone objects as parameter. + * + */ +jQ.fn.cloneFusionCharts = function (callback, options) { + + var transfer, temp, chartObjects; + + // Check if the options parameter, which is not mandatory, has been + // passed or not. If not, that means that options is the callback function. + if (typeof callback !== 'function' && typeof options === 'function') { + temp = callback; + callback = options; + options = temp; + } + + transfer = []; + chartObjects = getChartObjectsFromSelection(this); + + chartObjects.each(function () { + transfer.push(this.FusionCharts.clone(options, {}, true)); + }); + + callback.call(jQ(transfer), transfer); + + return this; +}; + +/** + * @id: jQuery.fn.disposeFusionCharts + * @id: $.fn.disposeFusionCharts + * + */ +jQ.fn.disposeFusionCharts = function () { + + var chartObjects = getChartObjectsFromSelection(this); + + chartObjects.each(function () { + // Execute dispose on charts. + this.FusionCharts.dispose(); + + // Remove identifier reference variable + delete this.FusionCharts; + + // cleanup any static objects pertaining to FusionCharts. + if (this._fcDrillDownLevel === 0) { + delete this._fcDrillDownLevel; + } + }); + + return this; +}; + +/** + * @id jQuery.fn.covertToFusionCharts + * @id $.fn.convertToFusionCharts + * + * @param {object} chartOpts Configuration options to generate FusionCharts. + * See documentation to get the list. + * + * @param {object} convertOpts Configuration options to convert the table + * into a FusionCharts object. + * See documentation to get the list. + * + */ +jQ.fn.convertToFusionCharts = function (chartOpts, convertOpts) { + + var transferObj = []; + + if (typeof chartOpts.dataConfiguration === 'undefined') { + chartOpts.dataConfiguration = {}; + } + + jQ.extend(true, chartOpts.dataConfiguration, convertOpts); + + if (!chartOpts.dataSource) { + chartOpts.dataSource = this.get(0); + } + + if (!chartOpts.renderAt) { + this.each(function () { + transferObj.push(jQ('<div></div>').insertBefore(this).insertFusionCharts(chartOpts).get(0)); + }); + } else { + if (typeof chartOpts.renderAt === 'string') { + transferObj.push(jQ('#' + chartOpts.renderAt).insertFusionCharts(chartOpts).get(0)); + } else if (typeof chartOpts.renderAt === 'object') { + transferObj.push(jQ(chartOpts.renderAt).insertFusionCharts(chartOpts).get(0)); + } + } + + return jQ(transferObj); +}; + +/** + * @id jQuery.fn.drillDownFusionChartsTo + * @id $.fn.drillDownFusionChartsTo + * + * Used to set multi-level configurations of linked FusionCharts objects. + * The levels are iterated depending on the number of configuration objects + * in a single jQuery chain. + * + * To set the configuration at a specific level please refer to docs. + */ +jQ.fn.drillDownFusionChartsTo = function () { + var chartObjects = getChartObjectsFromSelection(this), + j, + len, + i, + l, + configureOpts; + + // hack to support chaining of multiple drillDowns in a single chain + if (typeof this._fcDrillDownLevel === 'undefined') { + this._fcDrillDownLevel = 0; + } + + for (j = 0, len = arguments.length; j < len; j += 1) { + configureOpts = arguments[j]; + + if (isArray(configureOpts)) { + for (i = 0, l = configureOpts.length; i < l; i += 1) { + configureLinkedCharts(chartObjects, configureOpts[i], this._fcDrillDownLevel); + this._fcDrillDownLevel += 1; + } + } else { + configureLinkedCharts(chartObjects, configureOpts, this._fcDrillDownLevel); + this._fcDrillDownLevel += 1; + } + } + return this; +}; + +/** + * @id jQuery.fn.streamFusionChartsData + * @id $.fn.streamFusionChartsData + * + * @param {string} command. Contains the type of operation to be performed on + * the realtime charts. If not provided, by default the command would be 'feed' + * that invokes the feedData method of the chart and passes the options to it. + * + * @param {object} options. Contains the options that has to be parsed (if it is a js object) + * and passed to the chart method (corresponding to command). + * If not an object, it is passed as is to the chart method. + * + * @param {object} value. To make the API morph the data setter methods (setData, setDataForId), + * it can also be passed the same parameters as the setter functions. + * + * @param {object} label. To make the API morph the data setter methods (setData, setDataForId), + * it can also be passed the same parameters as the setter functions. +**/ + +jQ.fn.streamFusionChartsData = function (command, options, value, label) { + + var chartObjects = getChartObjectsFromSelection(this), + transfer = [], + fcChart, + method, + params; + + // Convert the command to lower case and fetch the proper chart method name. + method = realtimeCommandMap[command && command.toLowerCase()]; + + // Check if the command provided is valid or not. + if (method === undefined) { + // this means the command is not a getter. which in turn means that + // the command is a data stream string and has to be handled accordingly. + if (arguments.length === 1) { + params = [command]; + method = realtimeCommandMap.feed; + } else { + return this; + } + } else if (arguments.length === 1) { + // command is to invoke a method without any parameters.. + params = []; + } else { + // optionsParser returns an array of parameters to be passed to the + // chart method. + params = optionsParser[method](options, value, label); + } + + if (method === 'getData' || method === 'getDataForId') { + chartObjects.each(function () { + fcChart = this.FusionCharts; + if (typeof fcChart[method] === 'function') { + transfer.push(fcChart[method].apply(fcChart, params)); + } + }); + return transfer; + } else { + chartObjects.each(function () { + fcChart = this.FusionCharts; + if (typeof fcChart[method] === 'function') { + fcChart[method].apply(fcChart, params); + } + }); + return this; + } +}; + +jQ.extend(jQ.expr[':'], { + /** + * Extending the jQuery selector to select all object/embed elements that + * have been created using the FusionCharts constructor i.e that are an + * instance of FusionCharts. + * + * @param {object} obj, Is the HTML element that is currently being + * checked. + */ + FusionCharts: function (obj) { + return obj.FusionCharts instanceof FusionCharts; + } +}); + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__1__; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +var win = window, + doc = win.document, + objectToStringFn = Object.prototype.toString, + merge = function (obj1, obj2) { + var item, str; + //check whether obj2 is an array + //if array then iterate through it's index + //**** MOOTOOLS precution + if (obj2 instanceof Array) { + for (item = 0; item < obj2.length; item += 1) { + if (typeof obj2[item] !== 'object') { + obj1[item] = obj2[item]; + } else { + if (typeof obj1[item] !== 'object') { + obj1[item] = obj2[item] instanceof Array ? [] : {}; + } + merge(obj1[item], obj2[item]); + } + } + } else { + for (item in obj2) { + if (typeof obj2[item] === 'object') { + str = objectToStringFn.call(obj2[item]); + if (str === '[object Object]') { + if (typeof obj1[item] !== 'object') { + obj1[item] = {}; + } + merge(obj1[item], obj2[item]); + } else if (str === '[object Array]') { + if (!(obj1[item] instanceof Array)) { + obj1[item] = []; + } + merge(obj1[item], obj2[item]); + } else { + obj1[item] = obj2[item]; + } + } else { + obj1[item] = obj2[item]; + } + } + } + return obj1; +}, + extend = function (sink, source, proto, deep) { + var item; + // When 'proto' is marked as true, the methods and properties + // of source is not added to the prototype of the sink. + if (proto && sink.prototype) { + sink = sink.prototype; + } + + // If deep extend is specified, then we use the deep copy function + // 'merge' + if (deep === true) { + merge(sink, source); + } + // Copy all methods and properties of the object passed in parameter + // to the object to which this function is attached. + else { + for (item in source) { + sink[item] = source[item]; + } + } + + return sink; +}, + +/** + * Used to remove all textNodes in an array of nodes. Textnodes get created + * inadvertently, when the table HTML has newline and space. Returns an + * array of nodes that is not an HTMLCollection and has only the non-text + * nodes in it. + * + * @param {array} nodeArr Contains the array of nodes that have to be + * sanitized. + */ +sanitizeNodesArray = function (nodeArr) { + var l, + i, + sanitizedArr = []; + for (i = 0, l = nodeArr.length; i < l; i += 1) { + // if nodeType != 3 then the node is not a text node. + if (nodeArr[i].nodeType !== 3) { + sanitizedArr.push(nodeArr[i]); + } + } + return sanitizedArr; +}, + + +/** + * Used to merge two JSON objects. The copy is a deep copy and not a + * reference copy. + * + * @param: {object} srcJSON, the source json. + * + * @param: {object} targetJSON, that json that needs to be merged with the + * source json. + * + */ +mergeJSON = function (srcJSON, targetJSON) { + var i, len, item; + + if (targetJSON instanceof Array) { + for (i = 0, len = targetJSON.length; i < len; i++) { + if (targetJSON[i] instanceof Array) { + if (srcJSON[i] === undefined) { + srcJSON[i] = []; + } + mergeJSON(srcJSON[i], targetJSON[i]); + } else if (typeof targetJSON[i] === 'object') { + if (typeof srcJSON[i] === 'undefined') { + srcJSON[i] = {}; + } + mergeJSON(srcJSON[i], targetJSON[i]); + } else { + srcJSON[i] = targetJSON[i]; + } + } + } else if (typeof targetJSON === 'object') { + for (item in targetJSON) { + if (typeof srcJSON[item] === 'undefined') { + if (targetJSON[item] instanceof Array) { + srcJSON[item] = []; + mergeJSON(srcJSON[item], targetJSON[item]); + } else if (typeof srcJSON[item] === 'object') { + srcJSON[i] = {}; + mergeJSON(srcJSON[i], targetJSON[i]); + } else { + srcJSON[i] = targetJSON[i]; + } + } + } + } + + return srcJSON; +}, + + +/** + * Returns the <tbody> element of the table. In order to support W3C + * non-compliant HTML, wherein the table does not have a <tbody> containing + * the <tr> & <td> elements, the table itself is returned. + * + * @param {object} tbl Is the table whose tbody needs to fetched. + * + */ +getTbody = function (tbl) { + var tbodyArr = sanitizeNodesArray(tbl.childNodes); + + // Checking if the table's childNode is a tbody or not + if (tbodyArr.length) { + if (tbodyArr[0].nodeName === 'TBODY') { + return tbodyArr[0]; + } else if (tbodyArr[0].nodeName === 'THEAD' && tbodyArr[1] && tbodyArr[1].nodeName === 'TBODY') { + return tbodyArr[1]; + } + } + return tbl; +}, + + +/** + * Returns an array containing the <td> in the <thead> tag. + * + * @param {object} tbl Is the table whose tbody needs to fetched. + * + */ +getThead = function (tbl) { + var tbodyArr = sanitizeNodesArray(tbl.childNodes); + + // Checking if the table's childNode is a tbody or not + if (tbodyArr.length) { + if (tbodyArr[0].nodeName === 'THEAD' && tbodyArr[1] && tbodyArr[1].nodeName === 'TBODY') { + return tbodyArr[0].childNodes; + } + } + return []; +}, + + +/** + * Used to return the text in a given Element. Needed as firefox does not + * support 'innerText', which is a W3C standard and instead uses + * textContent attribute to store the text. + * + * @param {object} nodeEle The HTML element whose text is needed. + */ +getTextFromNode = function (nodeEle) { + return nodeEle.innerText !== undefined ? nodeEle.innerText : nodeEle.textContent; +}, + + +/** + * Used to convert an array of rows into an array of corresponding columns. + * + * @param {array} rowArr The array of table rows that has to be transposed + * into an array of columns. + */ +getColumnArr = function (rowArr) { + + var i, + j, + l, + len, + cellArr, + rowSpanInc, + colSpan = 1, + columnArrIdx, + rowSpan = {}, + returnObj = []; + + for (i = 0, l = rowArr.length; i < l; i += 1) { + + // get all the cells of the row + cellArr = sanitizeNodesArray(rowArr[i].childNodes); + colSpan = 1; + rowSpanInc = 0; + for (j = 0, len = cellArr.length; j < len; j += 1) { + + // if a previous row had a cell with a rowspan then this + // rowspan needs to be taken into account while creating + // column array. + columnArrIdx = j + colSpan + rowSpanInc - 1; + if (rowSpan[columnArrIdx] && i - rowSpan[columnArrIdx].rowNum < rowSpan[columnArrIdx].row) { + rowSpanInc += rowSpan[columnArrIdx].col; + columnArrIdx += rowSpan[columnArrIdx].col; + } + + if (parseInt(cellArr[j].getAttribute('rowspan'), 10) > 1) { + if (!rowSpan[columnArrIdx]) { + rowSpan[columnArrIdx] = {}; + } + rowSpan[columnArrIdx].rowNum = i; + rowSpan[columnArrIdx].row = parseInt(cellArr[j].getAttribute('rowspan'), 10); + // If the cell has both a rowspan and a colspan then they + // both need to be taken into consideration while calculating + // the column of cells in the susequent rows + if (parseInt(cellArr[j].getAttribute('colspan'), 10) > 1) { + rowSpan[columnArrIdx].col = parseInt(cellArr[j].getAttribute('colspan'), 10); + } else { + rowSpan[columnArrIdx].col = 1; + } + } + + // The previous cells colspan, and the previous rows rowspans + // also needs to be added to the current cells index to get the + // proper column index. + while (returnObj.length <= columnArrIdx) { + returnObj.push({ childNodes: [] }); + } + returnObj[columnArrIdx].childNodes.push(cellArr[j]); + + // Adding the current cells colspan for subsequent cells in the + // current row. + if (parseInt(cellArr[j].getAttribute('colspan'), 10) > 1) { + colSpan += parseInt(cellArr[j].getAttribute('colspan'), 10) - 1; + } + } + } + + return returnObj; +}, + + +/** + * Used to check if an item is present in an array or not. + * + * @param {array} arr The array which has to be checked + * + * @param {string|number|object} item The item which needs be checked if + * present in array arr or not. + */ +arrayContains = function (arr, item) { + var i = arr.length; + // Using a decrementing while loop (optimization) since the order in which the + // array is traversed doesn't matter. + while (i) { + i -= 1; + if (arr[i] === item) { + return true; + } + } + return false; +}, + + +/** + * Used to check if a particular row or column has all non numeric (or blank) + * content. If so, then that particular row/column must be ignored. + * + * @param {array} nodeArr Is an array of all the rows/columns of the table. + * + * @param {number} index of the row/column that is not to be analysed as it + * has already been set aside as the label row/column. + * + * @param {number} j is the cell index at which we have to check for the + * presence of numeric data in all the other rows and columns. + */ + +checkData = function (nodeArr, j, index) { + + var i, + l, + childArr = sanitizeNodesArray(nodeArr[j].childNodes), + text; + + for (i = 0, l = childArr.length; i < l; i += 1) { + if (i !== index) { + text = getTextFromNode(childArr[i]); + if (parseFloat(text) === text) { + return true; + } + } + } + return false; +}, + _blankString = '__fcBLANK__', + _blankNo = 0, + +/** + * Used to get the table row that has the labels (categories or legend) and + * extract the label details from the corresponding row. + * + * @param {array} nodeArr Is an array of all the rows/columns of the table. + * + * @param {array} ignoreArr Is an array of all the indexes in the nodeArr + * that need to be ignored. The items of this array can be negative as well. + * + * @param {string} index If the label row/column details have been given by + * the user then this will contain the index which has the labels. + * + */ +getLabels = function (nodeArr, ignoreArr, index, opts) { + + var len, + l, + i, + j, + childArr, + mostEmptyCellRow = null, + internalLabel = [], + emptyCellCount = [], + textCellCount = 0, + temp, + returnObj = {}, + spanTotal = 0, + spanLen, + isRowLabel, + maxIdx, + spanLength, + totalSpanLength = 0, + tLabels; + + if (typeof index === 'undefined') { + // Checking if the user has provided the index. If index has not been + // passed then we assume that the user does not want to give a label row + // or column. + + // Creating custom labels for all cells in the first row/column. + childArr = sanitizeNodesArray(nodeArr[0].childNodes); + for (j = 0, len = childArr.length; j < len; j += 1) { + spanLen = j + spanTotal; + internalLabel[spanLen] = _blankString + (spanLen + 1); + + temp = parseInt(childArr[j].colSpan, 10); + temp = temp > 1 ? temp : parseInt(childArr[j].rowSpan, 10); + if (temp > 1) { + for (l = 1; l < temp; l += 1) { + internalLabel[spanLen + l] = _blankString + (spanLen + l + 1); + } + spanTotal += temp - 1; + } + } + + // Deleting the labels for the rows/columns that the user wants to + // ignore. + for (i = 0, l = j + spanTotal, len = ignoreArr.length; i < len; i += 1) { + if (ignoreArr[i] > 0) { + delete internalLabel[ignoreArr[i] - 1]; + } else { + delete internalLabel[l + ignoreArr[i]]; + } + } + + return { 'index': -1, 'labelObj': internalLabel }; + } else if (index === 0) { + // Checking if the user has provided the index. Since we expect row/column + // indices starting from 1, if index is 0 then we use our internal logic + // to find the label array from the given nodeArr. + for (i = 0, l = nodeArr.length; i < l; i += 1) { + childArr = sanitizeNodesArray(nodeArr[i].childNodes); + emptyCellCount[i] = 0; + textCellCount = 0; + + if (opts && opts._extractByHeaderTag) { + for (j = 0, len = childArr.length; j < len; j += 1) { + if (childArr[j].nodeName.toLowerCase() != 'th') { + continue; + } + tLabels = getLabels(nodeArr, ignoreArr, i + 1); + delete tLabels.labelObj[opts._rowLabelIndex]; + return tLabels; + } + } else { + for (j = 0, len = childArr.length; j < len; j += 1) { + if (arrayContains(ignoreArr, j + 1) || arrayContains(ignoreArr, j - len)) { + continue; + } + temp = getTextFromNode(childArr[j]); + // Checking if the cell is emtpy. + if (temp.replace(/^\s*/, '').replace(/\s*$/, '') === '') { + emptyCellCount[i] += 1; + continue; + } + // Checking if the cell has a non-number content + if (parseFloat(temp) != temp) { + textCellCount += 1; + // If there are at least 2 cells that have non-number + // content then we assume that they contain labels and + // fetch the labels from this array of nodes. + if (textCellCount > 1) { + return getLabels(nodeArr, ignoreArr, i + 1); + } + } + } + } + // If there are empty cells then we assume that the array with + // the most number of empty cells must be the label array. + if (i > 0) { + if (emptyCellCount[i - 1] > emptyCellCount[i]) { + mostEmptyCellRow = i - 1; + } else if (emptyCellCount[i - 1] < emptyCellCount[i]) { + mostEmptyCellRow = i; + } + } + } + if (mostEmptyCellRow !== null) { + return getLabels(nodeArr, ignoreArr, mostEmptyCellRow + 1); + } else { + return getLabels(nodeArr, ignoreArr); + } + } + + // If this is a negative number then, calulate the index from the + // end of the table. e.g -1 would imply the last row. + if (index < 0) { + index += nodeArr.length; + } else if (index > 0) { + index -= 1; + } + + /** + * Once we have the index of the row/column that contains the labels we + * go through only that row/column and extract the labels. + */ + childArr = sanitizeNodesArray(nodeArr[index].childNodes); + + isRowLabel = nodeArr[0].nodeType !== undefined ? true : false; + for (j = 0, len = childArr.length; j < len; j += 1) { + spanLength = 0; + if (isRowLabel) { + if (childArr[j].colSpan !== '1') { + spanLength = parseInt(childArr[j].colSpan, 10); + } + } else if (childArr[j].rowSpan !== '1') { + spanLength = parseInt(childArr[j].rowSpan, 10); + } + spanLength = spanLength > 1 ? spanLength : 0; + temp = getTextFromNode(childArr[j]); + if (temp.replace(/^\s*/, '').replace(/\s*$/, '') !== '') { + returnObj[j + totalSpanLength] = temp; + } else if (checkData(getColumnArr(nodeArr), j, index)) { + // if the label text is missing in one of the cells of the labels + // row/column we check for the presence of numeric data in other + // cells of the corresponding column/row. + + returnObj[j + totalSpanLength] = _blankString + _blankNo; + _blankNo += 1; + } + + if (spanLength > 1) { + // If the spanLength > 1, then we create additional labels for + // rows/columns pertaining to the rowspan or colspan. + temp = returnObj[j + totalSpanLength]; + for (i = 1; i < spanLength; i += 1) { + returnObj[j + totalSpanLength + i] = temp + ' (' + i + ')'; + } + + // totalSpanLength is used to adjust the indices of the + // subsequent cells using the rowspan/colspan of the current + // cell. + totalSpanLength += spanLength - 1; + } + } + + // Deleting the rows/columns that the user wants to ignore. + maxIdx = len + totalSpanLength; + for (i = 0, len = ignoreArr.length; i < len; i += 1) { + if (ignoreArr[i] > 0) { + delete returnObj[ignoreArr[i] - 1]; + } else { + delete returnObj[maxIdx + ignoreArr[i]]; + } + } + + return { 'labelObj': returnObj, 'index': index }; +}, + extractDataFromTable = function (tbl, opts) { + + if (typeof tbl === 'string') { + tbl = doc.getElementById(tbl); + } + + if (typeof win.jQuery !== 'undefined' && tbl instanceof win.jQuery) { + // jshint ignore: line + tbl = tbl.get(0); + } + + if (!tbl) { + return { data: null }; + } + + if (opts.hideTable) { + tbl.style.display = 'none'; + } + + var i, + j, + rowCells, + cellText, + dataMap = {}, + mapColumnIdx, + columnSpan, + len, + item, + rowSpan, + cellEle, + columnSpanObj = {}, + rowSpanObj = {}, + tableRows = sanitizeNodesArray(getThead(tbl)).concat(sanitizeNodesArray(getTbody(tbl).childNodes)), + l = tableRows.length, + dataRows = 0, + dataColumns = 0, + tempColumn = 0, + rowLabelMap, + m, + k = 0, + columnLabelMap, + isSingleSeries = false, + chartType = opts.chartType, + tempMap, + singleSeriesCharts = ['column2d', 'column3d', 'pie3d', 'pie2d', 'line', 'bar2d', 'area2d', 'doughnut2d', 'doughnut3d', 'pareto2d', 'pareto3d']; + + if (singleSeriesCharts.indexOf(chartType) !== -1) { + isSingleSeries = true; + } + + // use rowLabelSource and colLabelSource to avoid confusion + opts.rowLabelSource = parseInt(opts.labelSource, 10); + opts.colLabelSource = parseInt(opts.legendSource, 10); + // Create the labels objects for the chart. + + if (opts.major === 'column') { + rowLabelMap = opts.useLabels ? getLabels(tableRows, opts.ignoreCols, opts.rowLabelSource) : getLabels(tableRows, opts.ignoreCols); + + columnLabelMap = opts.useLegend ? getLabels(getColumnArr(tableRows), opts.ignoreRows, opts.colLabelSource) : getLabels(getColumnArr(tableRows), opts.ignoreRows); + } else { + tempMap = getLabels(getColumnArr(tableRows), opts.ignoreRows, opts.rowLabelSource); + if (!opts.useLabels) { + rowLabelMap = getLabels(getColumnArr(tableRows), opts.ignoreRows); + } else { + rowLabelMap = tempMap; + } + + opts._rowLabelIndex = tempMap.index; + opts._extractByHeaderTag = true; + + columnLabelMap = opts.useLegend ? getLabels(tableRows, opts.ignoreCols, opts.colLabelSource, opts) : getLabels(tableRows, opts.ignoreCols); + + delete opts._extractByHeaderTag; + + tempMap = rowLabelMap; + rowLabelMap = columnLabelMap; + columnLabelMap = tempMap; + } + + delete rowLabelMap.labelObj[columnLabelMap.index]; + delete columnLabelMap.labelObj[rowLabelMap.index]; + + // Creating the 2d map depending on whether the rows are the primary + // keys or the columns. + if (opts.major === 'row') { + for (item in columnLabelMap.labelObj) { + dataMap[item] = {}; + } + } else { + for (item in rowLabelMap.labelObj) { + dataMap[item] = {}; + } + } + + // Populating the dataMap. + for (i = 0; i < l; i += 1) { + if (rowLabelMap.index === i || columnLabelMap.labelObj[i] === undefined) { + continue; + } + + dataRows += 1; + rowCells = sanitizeNodesArray(tableRows[i].childNodes); + + // columnSpanObj maintains the number of colspans in the current + // row. + // rowSpanObj maintains the number of rowspans in a rows x columns + // map. + columnSpanObj[i] = 0; + rowSpanObj[i] = {}; + + for (j = 0, len = rowCells.length; j < len; j += 1) { + + cellEle = rowCells[j]; + + columnSpan = parseInt(cellEle.getAttribute('colspan'), 10); + rowSpan = parseInt(cellEle.getAttribute('rowspan'), 10); + + mapColumnIdx = j + columnSpanObj[i]; + + // Calculating the position of the current cell in the dataMap. + while (k < i) { + if (rowSpanObj[k]) { + for (m in rowSpanObj[k]) { + if (m > mapColumnIdx) { + break; + } + + if (i - k <= rowSpanObj[k][m].row) { + mapColumnIdx += rowSpanObj[k][m].col; + } + } + } + k += 1; + } + + if (columnSpan > 1) { + columnSpanObj[i] += columnSpan - 1; + } + + if (rowSpan > 1) { + if (columnSpan > 1) { + rowSpanObj[i][mapColumnIdx] = { + row: rowSpan - 1, + col: columnSpan + }; + } else { + rowSpanObj[i][mapColumnIdx] = { + row: rowSpan - 1, + col: 1 + }; + } + } + if (columnLabelMap.index === mapColumnIdx || rowLabelMap.labelObj[mapColumnIdx] === undefined) { + + continue; + } + + tempColumn += 1; + cellText = getTextFromNode(cellEle); + // If the cell does not have any text then we covert it by + // default to 0 or to an parameterized option set by user. + if (cellText.replace(/^\s*/, '').replace(/\s*$/, '') === '') { + if (opts.convertBlankTo) { + cellText = opts.convertBlankTo; + } else { + continue; + } + } + + // Filling up the dataMap based on the rowspan, colspan and + // position(row=i, column=mapColumnIdx) information of the + // table cell. + columnSpan = columnSpan > 1 ? columnSpan : 1; + rowSpan = rowSpan > 1 ? rowSpan : 1; + + if (opts.major === 'row') { + k = 0; + while (k < columnSpan) { + m = 0; + while (m < rowSpan) { + dataMap[i + m][mapColumnIdx + k] = parseFloat(cellText); + m += 1; + } + k += 1; + } + } else { + k = 0; + while (k < columnSpan) { + m = 0; + while (m < rowSpan) { + dataMap[mapColumnIdx + k][i + m] = parseFloat(cellText); + m += 1; + } + k += 1; + } + } + } + if (tempColumn > dataColumns) { + dataColumns = tempColumn; + } + } + + return { + data: dataMap, + chartType: chartType ? !isSingleSeries ? 'multi' : 'single' : dataRows > 1 && dataColumns > 1 ? 'multi' : 'single', + labelMap: columnLabelMap, + legendMap: rowLabelMap + }; +}, + createChartFromTable = function (data, obj) { + + // Default configuration for HTMLTable data-handler + var opts = { + chartAttributes: {}, + major: 'row', + useLabels: true, + useLegend: true, + labelSource: 0, + legendSource: 0, + ignoreCols: [], + ignoreRows: [], + showLabels: true, + showLegend: true, + seriesColors: [], + convertBlankTo: '0', + hideTable: false, + chartType: obj.chartType && obj.chartType(), + + // Private Variables + labels: [], + legend: [], + data: [] + }, + config = obj.args.dataConfiguration || {}, + i, + item1, + item2, + categoryArr, + datasetArr, + chartJSON = {}, + datasets = {}, + dataObj, + dataMap, + labelMap, + legendMap; + + extend(opts, config); + + dataObj = extractDataFromTable(data, opts); + dataMap = dataObj.data; + + if (opts.major !== 'row') { + labelMap = dataObj.legendMap, legendMap = dataObj.labelMap; + } else { + labelMap = dataObj.labelMap, legendMap = dataObj.legendMap; + } + + // chartAttributes should contain the configuration attributes for the chart + // e.g caption, xAxisName, yAxisName etc. + chartJSON.chart = extend({}, opts.chartAttributes); + + if (dataObj.chartType === 'multi') { + chartJSON.categories = [{ 'category': [] }]; + chartJSON.dataset = []; + + categoryArr = chartJSON.categories[0].category; + datasetArr = chartJSON.dataset; + + i = 0; + for (item1 in dataMap) { + + if (opts.showLabels === true) { + // If the user has provided custom labels then those should be + // shown instead of the extracted labels. + categoryArr.push(extend({ + label: labelMap.labelObj[item1].indexOf(_blankString) != -1 ? '' : labelMap.labelObj[item1] + }, opts.labels[i])); + } else { + categoryArr.push({ 'label': '' }); + } + i += 1; + for (item2 in dataMap[item1]) { + if (typeof datasets[item2] === 'undefined') { + datasets[item2] = []; + } + datasets[item2].push({ 'value': dataMap[item1][item2] }); + } + } + + i = 0; + for (item1 in datasets) { + if (opts.showLegend === true) { + // If the user has provided custom labels then those should be + // shown instead of the extracted labels. + datasetArr.push(extend({ + 'seriesname': legendMap.labelObj[item1].indexOf(_blankString) !== -1 ? '' : legendMap.labelObj[item1], + 'data': datasets[item1] + }, opts.legend[i])); + } else { + datasetArr.push({ + 'seriesname': '', + 'data': datasets[item1] + }); + } + i += 1; + } + } else if (dataObj.chartType === 'single') { + chartJSON.data = []; + datasetArr = chartJSON.data; + + i = 0; + if (opts.showLabels) { + for (item1 in dataMap) { + for (item2 in dataMap[item1]) { + datasetArr.push(extend({ + label: labelMap.labelObj[item1].indexOf(_blankString) !== -1 ? '' : labelMap.labelObj[item1], + value: dataMap[item1][item2] + }, opts.labels[i])); + + i += 1; + } + } + } else { + for (item1 in dataMap) { + for (item2 in dataMap[item1]) { + datasetArr.push({ 'value': dataMap[item1][item2] }); + } + } + } + } + + return { + data: chartJSON, + error: undefined + }; +}, + htmlTableToJSON = function (data, obj) { + return createChartFromTable(data, obj); +}; + +/** + * method to set the HTML table data + * @param {Object} dom: HTML table dom + */ +function setHTMLTableData(dom) { + this.setChartData(dom, 'htmltable'); +} +/** + * method to add functions in the fusioncharts prototype + * @param {Function} FusionCharts is required + * @return {Object} for extension + */ +function wrapper(FusionCharts) { + FusionCharts && (FusionCharts.prototype.setHTMLTableData = setHTMLTableData); + return { + format: 'htmltable', + toJSON: htmlTableToJSON + }; +} + +module.exports = { + extension: wrapper, + name: 'HTMLTable', + type: 'transcoder', + requiresFusionCharts: true +}; + +/***/ }) +/******/ ]); +});})); diff --git a/graphs/fusioncharts-suite-xt/integrations/jquery/js/jquery-fusioncharts.min.js b/graphs/fusioncharts-suite-xt/integrations/jquery/js/jquery-fusioncharts.min.js new file mode 100755 index 0000000000000000000000000000000000000000..9330a6813814aa9f79754e1fea96a8712d8d2f8d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/jquery/js/jquery-fusioncharts.min.js @@ -0,0 +1 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],t);else{var r="object"==typeof exports?t(require("jquery")):t(e.jquery);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){var n=r(1),o=r(2),a="undefined"!=typeof window?window:{};"undefined"==typeof FusionCharts&&(FusionCharts=a.FusionCharts),void 0===n&&(n=a.jQuery),FusionCharts.addDep(o);var i,s,u,l,d=a.document,f=n,c=a.Math.min,h=function(){if(Array.isArray)return Array.isArray;var e=Object.prototype.toString,t=e.call([]);return function(r){return e.call(r)===t}}(),p={feed:"feedData",setdata:"setData",setdataforid:"setDataForId",getdata:"getData",getdataforid:"getDataForId",clear:"clearChart",stop:"stopUpdate",start:"restartUpdate"},g={feedData:function(e){return"string"==typeof e?[e]:!("object"!=typeof e||!e.stream)&&[e.stream]},getData:function(e){return isNaN(e)?"object"==typeof e&&e.index?[e.index]:[]:[e]},getDataForId:function(e){return"string"==typeof e?[e]:"object"==typeof e&&e.id?[e.id]:[]},setData:function(e,t,r){var n=[];return"object"!=typeof e?n=[e,t,r]:(e.value&&n.push(e.value),e.label&&n.push(e.label)),n},setDataForId:function(e,t,r){var n=[];return"string"==typeof e||"string"==typeof t||"string"==typeof r?n=[e,t,r]:"object"==typeof e&&(e.value&&n.push(e.value),e.label&&n.push(e.label)),n},clearChart:function(e){return[e]},stopUpdate:function(e){return[e]},restartUpdate:function(e){return[e]}};f.FusionCharts=FusionCharts,i=function(e,t){var r,n,o,i,s;for(n=h(t)||t instanceof f?c(e.length,t.length):e.length,r=0;r<n;r+=1)o=h(t)||t instanceof f?t[r]:t,e[r].parentNode?FusionCharts.render(f.extend({},o,{renderAt:e[r]})):(i=new FusionCharts(f.extend({},o,{renderAt:e[r]})),f.FusionCharts.delayedRender||(f.FusionCharts.delayedRender={}),f.FusionCharts.delayedRender[i.id]=e[r],(s=d.createElement("script")).setAttribute("type","text/javascript"),/msie/i.test(a.navigator.userAgent)&&!a.opera?s.text="FusionCharts.items['"+i.id+"'].render();":s.appendChild(d.createTextNode("FusionCharts.items['"+i.id+"'].render()")),e[r].appendChild(s));return e},s=function(e,t){var r,n;n=f.extend({},e),f.extend(n,f.Event("fusioncharts"+e.eventType)),n.sender&&n.sender.options?"object"==typeof(r=n.sender.options.containerElement||n.sender.options.containerElementId)?f(r).trigger(n,t):f("#"+r).length?f("#"+r).trigger(n,t):f(d).trigger(n,t):f(d).trigger(n,t)},FusionCharts.addEventListener("*",s),u=function(e){return e.filter(":FusionCharts").add(e.find(":FusionCharts"))},l=function(e,t,r){"object"==typeof t&&e.each(function(){this.configureLink(t,r)})},f.fn.insertFusionCharts=function(e){return i(this,e)},f.fn.appendFusionCharts=function(e){return e.insertMode="append",i(this,e)},f.fn.prependFusionCharts=function(e){return e.insertMode="prepend",i(this,e)},f.fn.attrFusionCharts=function(e,t){var r=[],n=u(this);return void 0!==t?(n.each(function(){this.FusionCharts.setChartAttribute(e,t)}),this):"object"==typeof e?(n.each(function(){this.FusionCharts.setChartAttribute(e)}),this):(n.each(function(){r.push(this.FusionCharts.getChartAttribute(e))}),r)},f.fn.updateFusionCharts=function(e){var t,r,n,o,a,i={},s=u(this),l=[["swfUrl",!1],["type",!1],["height",!1],["width",!1],["containerBackgroundColor",!0],["containerBackgroundAlpha",!0],["dataFormat",!1],["dataSource",!1]];for(t=0,r=l.length;t<r;t+=1)a=l[t][0],i.type=i.type||i.swfUrl,e[a]&&(l[t][1]&&(o=!0),i[a]=e[a]);return s.each(function(){n=this.FusionCharts,o?n.clone(i).render():(void 0===i.dataSource&&void 0===i.dataFormat||(void 0===i.dataSource?n.setChartData(n.args.dataSource,i.dataFormat):void 0===i.dataFormat?n.setChartData(i.dataSource,n.args.dataFormat):n.setChartData(i.dataSource,i.dataFormat)),void 0===i.width&&void 0===i.height||n.resizeTo(i.width,i.height),i.type&&n.chartType(i.type))}),this},f.fn.getFusionCharts=function(){var e=[];return u(this).each(function(){e.push(this.FusionCharts)}),e},f.fn.cloneFusionCharts=function(e,t){var r,n;return"function"!=typeof e&&"function"==typeof t&&(n=e,e=t,t=n),r=[],u(this).each(function(){r.push(this.FusionCharts.clone(t,{},!0))}),e.call(f(r),r),this},f.fn.disposeFusionCharts=function(){return u(this).each(function(){this.FusionCharts.dispose(),delete this.FusionCharts,0===this._fcDrillDownLevel&&delete this._fcDrillDownLevel}),this},f.fn.convertToFusionCharts=function(e,t){var r=[];return void 0===e.dataConfiguration&&(e.dataConfiguration={}),f.extend(!0,e.dataConfiguration,t),e.dataSource||(e.dataSource=this.get(0)),e.renderAt?"string"==typeof e.renderAt?r.push(f("#"+e.renderAt).insertFusionCharts(e).get(0)):"object"==typeof e.renderAt&&r.push(f(e.renderAt).insertFusionCharts(e).get(0)):this.each(function(){r.push(f("<div></div>").insertBefore(this).insertFusionCharts(e).get(0))}),f(r)},f.fn.drillDownFusionChartsTo=function(){var e,t,r,n,o,a=u(this);for(void 0===this._fcDrillDownLevel&&(this._fcDrillDownLevel=0),e=0,t=arguments.length;e<t;e+=1)if(o=arguments[e],h(o))for(r=0,n=o.length;r<n;r+=1)l(a,o[r],this._fcDrillDownLevel),this._fcDrillDownLevel+=1;else l(a,o,this._fcDrillDownLevel),this._fcDrillDownLevel+=1;return this},f.fn.streamFusionChartsData=function(e,t,r,n){var o,a,i,s=u(this),l=[];if(void 0===(a=p[e&&e.toLowerCase()])){if(1!==arguments.length)return this;i=[e],a=p.feed}else i=1===arguments.length?[]:g[a](t,r,n);return"getData"===a||"getDataForId"===a?(s.each(function(){"function"==typeof(o=this.FusionCharts)[a]&&l.push(o[a].apply(o,i))}),l):(s.each(function(){"function"==typeof(o=this.FusionCharts)[a]&&o[a].apply(o,i)}),this)},f.extend(f.expr[":"],{FusionCharts:function(e){return e.FusionCharts instanceof FusionCharts}})},function(t,r){t.exports=e},function(e,t){var r=window,n=r.document,o=Object.prototype.toString,a=function(e,t){var r,n;if(t instanceof Array)for(r=0;r<t.length;r+=1)"object"!=typeof t[r]?e[r]=t[r]:("object"!=typeof e[r]&&(e[r]=t[r]instanceof Array?[]:{}),a(e[r],t[r]));else for(r in t)"object"==typeof t[r]?"[object Object]"===(n=o.call(t[r]))?("object"!=typeof e[r]&&(e[r]={}),a(e[r],t[r])):"[object Array]"===n?(e[r]instanceof Array||(e[r]=[]),a(e[r],t[r])):e[r]=t[r]:e[r]=t[r];return e},i=function(e,t,r,n){var o;if(r&&e.prototype&&(e=e.prototype),!0===n)a(e,t);else for(o in t)e[o]=t[o];return e},s=function(e){var t,r,n=[];for(r=0,t=e.length;r<t;r+=1)3!==e[r].nodeType&&n.push(e[r]);return n},u=function(e){return void 0!==e.innerText?e.innerText:e.textContent},l=function(e){var t,r,n,o,a,i,u,l=1,d={},f=[];for(t=0,n=e.length;t<n;t+=1)for(l=1,i=0,r=0,o=(a=s(e[t].childNodes)).length;r<o;r+=1){for(d[u=r+l+i-1]&&t-d[u].rowNum<d[u].row&&(i+=d[u].col,u+=d[u].col),parseInt(a[r].getAttribute("rowspan"),10)>1&&(d[u]||(d[u]={}),d[u].rowNum=t,d[u].row=parseInt(a[r].getAttribute("rowspan"),10),parseInt(a[r].getAttribute("colspan"),10)>1?d[u].col=parseInt(a[r].getAttribute("colspan"),10):d[u].col=1);f.length<=u;)f.push({childNodes:[]});f[u].childNodes.push(a[r]),parseInt(a[r].getAttribute("colspan"),10)>1&&(l+=parseInt(a[r].getAttribute("colspan"),10)-1)}return f},d=function(e,t){for(var r=e.length;r;)if(e[r-=1]===t)return!0;return!1},f=function(e,t,r){var n,o,a,i=s(e[t].childNodes);for(n=0,o=i.length;n<o;n+=1)if(n!==r&&(a=u(i[n]),parseFloat(a)===a))return!0;return!1},c=0,h=function(e,t,r,n){var o,a,i,p,g,b,y,v,C,F,w,j=null,m=[],x=[],_=0,D={},A=0,L=0;if(void 0===r){for(p=0,o=(g=s(e[0].childNodes)).length;p<o;p+=1)if(m[y=p+A]="__fcBLANK__"+(y+1),(b=(b=parseInt(g[p].colSpan,10))>1?b:parseInt(g[p].rowSpan,10))>1){for(a=1;a<b;a+=1)m[y+a]="__fcBLANK__"+(y+a+1);A+=b-1}for(i=0,a=p+A,o=t.length;i<o;i+=1)t[i]>0?delete m[t[i]-1]:delete m[a+t[i]];return{index:-1,labelObj:m}}if(0===r){for(i=0,a=e.length;i<a;i+=1){if(g=s(e[i].childNodes),x[i]=0,_=0,n&&n._extractByHeaderTag){for(p=0,o=g.length;p<o;p+=1)if("th"==g[p].nodeName.toLowerCase())return delete(w=h(e,t,i+1)).labelObj[n._rowLabelIndex],w}else for(p=0,o=g.length;p<o;p+=1)if(!d(t,p+1)&&!d(t,p-o))if(""!==(b=u(g[p])).replace(/^\s*/,"").replace(/\s*$/,"")){if(parseFloat(b)!=b&&(_+=1)>1)return h(e,t,i+1)}else x[i]+=1;i>0&&(x[i-1]>x[i]?j=i-1:x[i-1]<x[i]&&(j=i))}return null!==j?h(e,t,j+1):h(e,t)}for(r<0?r+=e.length:r>0&&(r-=1),g=s(e[r].childNodes),v=void 0!==e[0].nodeType,p=0,o=g.length;p<o;p+=1)if(F=0,v?"1"!==g[p].colSpan&&(F=parseInt(g[p].colSpan,10)):"1"!==g[p].rowSpan&&(F=parseInt(g[p].rowSpan,10)),F=F>1?F:0,""!==(b=u(g[p])).replace(/^\s*/,"").replace(/\s*$/,"")?D[p+L]=b:f(l(e),p,r)&&(D[p+L]="__fcBLANK__"+c,c+=1),F>1){for(b=D[p+L],i=1;i<F;i+=1)D[p+L+i]=b+" ("+i+")";L+=F-1}for(C=o+L,i=0,o=t.length;i<o;i+=1)t[i]>0?delete D[t[i]-1]:delete D[C+t[i]];return{labelObj:D,index:r}},p=function(e,t){if("string"==typeof e&&(e=n.getElementById(e)),void 0!==r.jQuery&&e instanceof r.jQuery&&(e=e.get(0)),!e)return{data:null};t.hideTable&&(e.style.display="none");var o,a,i,d,f,c,p,g,b,y,v,C,F,w,j={},m={},x={},_=s(function(e){var t=s(e.childNodes);return t.length&&"THEAD"===t[0].nodeName&&t[1]&&"TBODY"===t[1].nodeName?t[0].childNodes:[]}(e)).concat(s(function(e){var t=s(e.childNodes);if(t.length){if("TBODY"===t[0].nodeName)return t[0];if("THEAD"===t[0].nodeName&&t[1]&&"TBODY"===t[1].nodeName)return t[1]}return e}(e).childNodes)),D=_.length,A=0,L=0,T=0,O=0,S=!1,N=t.chartType;if(-1!==["column2d","column3d","pie3d","pie2d","line","bar2d","area2d","doughnut2d","doughnut3d","pareto2d","pareto3d"].indexOf(N)&&(S=!0),t.rowLabelSource=parseInt(t.labelSource,10),t.colLabelSource=parseInt(t.legendSource,10),"column"===t.major?(v=t.useLabels?h(_,t.ignoreCols,t.rowLabelSource):h(_,t.ignoreCols),F=t.useLegend?h(l(_),t.ignoreRows,t.colLabelSource):h(l(_),t.ignoreRows)):(w=h(l(_),t.ignoreRows,t.rowLabelSource),v=t.useLabels?w:h(l(_),t.ignoreRows),t._rowLabelIndex=w.index,t._extractByHeaderTag=!0,F=t.useLegend?h(_,t.ignoreCols,t.colLabelSource,t):h(_,t.ignoreCols),delete t._extractByHeaderTag,w=v,v=F,F=w),delete v.labelObj[F.index],delete F.labelObj[v.index],"row"===t.major)for(g in F.labelObj)j[g]={};else for(g in v.labelObj)j[g]={};for(o=0;o<D;o+=1)if(v.index!==o&&void 0!==F.labelObj[o]){for(A+=1,i=s(_[o].childNodes),m[o]=0,x[o]={},a=0,p=i.length;a<p;a+=1){for(y=i[a],c=parseInt(y.getAttribute("colspan"),10),b=parseInt(y.getAttribute("rowspan"),10),f=a+m[o];O<o;){if(x[O])for(C in x[O]){if(C>f)break;o-O<=x[O][C].row&&(f+=x[O][C].col)}O+=1}if(c>1&&(m[o]+=c-1),b>1&&(x[o][f]=c>1?{row:b-1,col:c}:{row:b-1,col:1}),F.index!==f&&void 0!==v.labelObj[f]){if(T+=1,""===(d=u(y)).replace(/^\s*/,"").replace(/\s*$/,"")){if(!t.convertBlankTo)continue;d=t.convertBlankTo}if(c=c>1?c:1,b=b>1?b:1,"row"===t.major)for(O=0;O<c;){for(C=0;C<b;)j[o+C][f+O]=parseFloat(d),C+=1;O+=1}else for(O=0;O<c;){for(C=0;C<b;)j[f+O][o+C]=parseFloat(d),C+=1;O+=1}}}T>L&&(L=T)}return{data:j,chartType:N?S?"single":"multi":A>1&&L>1?"multi":"single",labelMap:F,legendMap:v}},g=function(e,t){return function(e,t){var r,n,o,a,s,u,l,d,f,c={chartAttributes:{},major:"row",useLabels:!0,useLegend:!0,labelSource:0,legendSource:0,ignoreCols:[],ignoreRows:[],showLabels:!0,showLegend:!0,seriesColors:[],convertBlankTo:"0",hideTable:!1,chartType:t.chartType&&t.chartType(),labels:[],legend:[],data:[]},h=t.args.dataConfiguration||{},g={},b={};if(i(c,h),l=(u=p(e,c)).data,"row"!==c.major?(d=u.legendMap,f=u.labelMap):(d=u.labelMap,f=u.legendMap),g.chart=i({},c.chartAttributes),"multi"===u.chartType){for(n in g.categories=[{category:[]}],g.dataset=[],a=g.categories[0].category,s=g.dataset,r=0,l)for(o in!0===c.showLabels?a.push(i({label:-1!=d.labelObj[n].indexOf("__fcBLANK__")?"":d.labelObj[n]},c.labels[r])):a.push({label:""}),r+=1,l[n])void 0===b[o]&&(b[o]=[]),b[o].push({value:l[n][o]});for(n in r=0,b)!0===c.showLegend?s.push(i({seriesname:-1!==f.labelObj[n].indexOf("__fcBLANK__")?"":f.labelObj[n],data:b[n]},c.legend[r])):s.push({seriesname:"",data:b[n]}),r+=1}else if("single"===u.chartType)if(g.data=[],s=g.data,r=0,c.showLabels)for(n in l)for(o in l[n])s.push(i({label:-1!==d.labelObj[n].indexOf("__fcBLANK__")?"":d.labelObj[n],value:l[n][o]},c.labels[r])),r+=1;else for(n in l)for(o in l[n])s.push({value:l[n][o]});return{data:g,error:void 0}}(e,t)};function b(e){this.setChartData(e,"htmltable")}e.exports={extension:function(e){return e&&(e.prototype.setHTMLTableData=b),{format:"htmltable",toJSON:g}},name:"HTMLTable",type:"transcoder",requiresFusionCharts:!0}}])}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/jquery/sample/README.md b/graphs/fusioncharts-suite-xt/integrations/jquery/sample/README.md new file mode 100755 index 0000000000000000000000000000000000000000..01990b01059283ce3f622f3845d7846d141deeb6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/jquery/sample/README.md @@ -0,0 +1,2 @@ +# JQuery FusionCharts +We have created multiple samples using **JQuery FusionCharts** for your reference. To view the samples click [here](http://fusioncharts.github.io/fusioncharts-jquery-plugin/ "JQuery FusionCharts"). \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/FCExporter.php b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/FCExporter.php new file mode 100755 index 0000000000000000000000000000000000000000..08f43ba3b6e37a10cf75661186412f9cc63f154b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/FCExporter.php @@ -0,0 +1,746 @@ +<?php + +/** + * + * FusionCharts Exporter is a PHP script that handles + * FusionCharts (since v3.1) Server Side Export feature. + * This in conjuncture with other resource PHP scripts would + * process FusionCharts Export Data POSTED to it from FusionCharts + * and convert the data to image or PDF and subsequently save to the + * server or response back as http response to client side as download. + * + * Starting FusionCharts XT (v3.3) it is capable of exporting JavaScript charts. + * + * This script is named as "FusionCharts Export Handler - main module" + * + * @author FusionCharts + * @description FusionCharts Exporter (Server-Side - PHP) + * @version 3.3 [ 31 December 2012 ] + * + */ +/** + * Copyright (c) 2016 Infosoft Global Private Limited + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/** + * ChangeLog / Version History: + * ---------------------------- + * + * 3.3 [ 31 December 2012 ] + * - Support Export of JavaScript chart (SVG) to allowed export formats + * via batik-rasterizer Java library + * + * + * 3.2 [ 4 September 2010 ] + * - background color was turning black in a few linux distro - fixed . + * The original code is kept commneted. (FCExporter_IMG.php - line: 277) + * + * 2.0 [ 12 February 2009 ] + * - Integrated with new Export feature of FusionCharts 3.1 + * - can save to server side directory + * - can provide download or open in popup window + * - can report back to chart + * - can save as PDF/JPG/PNG/GIF + * + * 1.0 [ 16 August 2007 ] + * - can process chart data to jpg image and response back to client side as download. + * + */ +/** + * Copyright (c) 2016 InfoSoft Global Private Limited. All Rights Reserved. + * + */ +/** + * GENERAL NOTES + * ------------- + * + * Chart would POST export data (which consists of encoded image data stream, + * width, height, background color and various other export parameters like + * exportFormat, exportFileName, exportAction, exportTargetWindow) to this script. + * + * The script would process this data using appropriate resource files and build + * export binary (PDF/image) + * + * It either saves the binary as file to a server side directory or push it as + * Download to client side. + * + * + * + */ +/** + * @requires FCExporter_REL2IMG.php: Export Flash charts to PNG/JPG + * FCExporter_REL2IMG.php: Export Flash charts to PDF + * FCExporter_REL2IMG.php: Export JavaScript charts to all formats + * + * Java 1.3+ & Apache Batik rasterizer class: Export JavaScript charts + * (http://xmlgraphics.apache.org/batik/) + * + * + * Details + * ------- + * Only one export resource would be included at one time. + * + * The resource files would have these things as common: + * + * a) a constant - MIMETYPES that would have a string + * containing semicolon separated key value pairs. + * Each key can be a format name specified in the + * HANDLER_ASSOCIATIONS constant. The associated value + * would be the mimetype for the specified format. + * + * e.g. define("MIMETYPES","jpg=image/jpeg;jpeg=image/jpeg;png=image/png;gif=image/gif"); + * + * + * b) a constant - EXTENSIONS that again contain a string of + * semicolon separated key value pair. Each key would again be the + * format name and the extension would be the file extension. + * + * e.g. define("EXTENSIONS","jpg=jpg;jpeg=jpg;png=png;gif=gif"); + * + * + * c) a function - exportProcessor ( $stream , $meta ) + * It would take the FusionCharts exncoded image string as $stream & + * an associative array $meta containging width, height and bgColor keys. + * + * The function would return an object of mixed type which would contain + * the processed binary/relevant export object. + * + * + * d) a function - exportOutput ( $exportObj, $exportSettings, $quality=1 ) + * It would take the processed export object and other export setting as parameter. + * Moreover, it would take an optional parameter - $quality (in scale of 0 to 1). + * By Default, the $quality is passed as 1 (best quality) + * + * The function would return the file path on success or return false on failure. + * + * [ The other code in the resource file can be anything that support this architecture ] + * + */ +// ============================================================================= +// == Constants and Variables == +// ============================================================================= +// USERS are to EDIT the values of the following constants. + +/* ----------------------- EXPORT PATH & URI -------------------------------- */ + +/** + * IMPORTANT: You need to change the location of folder where + * the exported chart images/PDFs will be saved on your + * server. Please specify the path to a folder with + * write permissions in the constant SAVE_PATH below. + * + * Please provide the path as per PHP path conventions. You can use relative or + * absolute path. + * Examples: './' , '/users/me/images/' , './myimages' + * + * For Windows servers you can ALSO use \\ as path separator too. e.g. c:\\php\\mysite\\ + */ +define("SAVE_PATH", "ExportedImages/"); + +/** + * IMPORTANT: This constant HTTP_URI stores the HTTP reference to + * the folder where exported charts will be saved. + * Please enter the HTTP representation of that folder + * in this constant e.g., http://www.yourdomain.com/images/ + */ +define("HTTP_URI", "ExportedImages/"); + +// ============================================================================== +// Users are recommended NOT to perform any editing beyond this point. == +// ============================================================================== + +/* ------------------------- EXPORT RESOURCES -------------------------------- */ + +// This constant defines the name of the export handler script file +// The name is appended with a suffix (from constant HANDLER_ASSOCIATIONS) +define("EXPORT_HANDLER", "FCExporter_"); + +// This constant lists all the currently supported export formats +// and related export handler file suffix. +// e.g. for JPEG the suffix is +define("HANDLER_ASSOCIATIONS", "RLE:PDF=PDF;JPEG=IMG;JPG=IMG;PNG=IMG;GIF=IMG|SVG:SVG=ALL;PDF=ALL;JPEG=ALL;JPG=ALL;PNG=ALL;GIF=ALL"); + +// default mime types +define( "MIME_TO_FORMAT", "image/jpg=jpg;image/jpeg=jpg;image/gif=gif;image/png=png;application/pdf=pdf;image/svg+xml=svg" ); + +// Path where the export handler files are located +// Please note that the resource path should be relative to +// FCExporter.php file's directory +// By default the path is "./Resources/" +define("RESOURCE_PATH", "Resources/"); + + +/* ---------------------------- Export Settings ------------------------------- */ + +/** + * OVERWRITEFILE sets whether the export handler would overwrite an existing file + * the newly created exported file. If it is set to false the export handler would + * not overwrite. In this case if INTELLIGENTFILENAMING is set to true the handler + * would add a suffix to the new file name. The suffix is a randomly generated UUID. + * Additionally, you add a timestamp or random number as additional suffix. + * + */ +define("OVERWRITEFILE", false); +define("INTELLIGENTFILENAMING", true); +define("FILESUFFIXFORMAT", "TIMESTAMP"); // value can be either 'TIMESTAMP' or 'RANDOM' +// List the default exportParameter values taken if not provided by chart +$defaultParameterValues = array( + "exportfilename" => "FusionCharts", + "exportaction" => "download", + "exporttargetwindow" => "_self", + "exportformat" => "PNG" +); + + +// Stores server notices if any as string [ to be send back to chart after save ] +$notices = ""; + +// ============================================================================= +// == processing == +// ============================================================================= + +/** + * Retrieve export data from POST Request sent by chart + * Parse the Request stream into export data readable by this script + * + * Store export data into an array containing keys 'stream' (contains encoded + * image data) ; 'meta' ( contains an array with 'width', 'height' and 'bgColor' keys) ; + * and 'parameters' ( array of all export parameters from chart as keys, like - exportFormat, + * exportFileName, exportAction etc.) + */ +$exportRequestStream = $_POST; +$exportData = parseExportRequestStream($exportRequestStream); + +/** + * Get the name of the export resource (php file) as per export format + * Dynamically include the resource. The resource would process the data + * and perform all export related tasks + */ +$exporterResource = getExporter($exportData ['parameters'] ["exportformat"], $exportData ["streamtype"]); + + +// if resource is not found terminate with error report +if (!@include( $exporterResource )) { + raise_error(404, true); +} + +/* + * Pass export stream and meta values to the export processor & + * get back the export binary + */ +$exportObject = exportProcessor($exportData ['stream'], $exportData ['meta'], $exportData ['parameters']); + + +/* + * Send the export binary to output module which would either save to a server directory + * or send the export file to download. Download terminates the process while + * after save the output module sends back export status + */ +$exportedStatus = outputExportObject($exportObject, $exportData ['parameters']); + + +/* + * Build Appropriate Export Status and send back to chart by flushing the + * procesed status to http response. This returns status back to chart. + * [ This is not applicable when Download action took place ] + */ +flushStatus($exportedStatus, $exportData ['meta']); + + +// ============================================================================= +// == terminate process == +// ============================================================================= +################################################################################# +## ## +## FUNCTION DECLARATION ## +## ## +################################################################################# +#### ------------------------ INPUT STREAM -------------------------------- #### + +/** + * Parses POST stream from chart and builds an array containing + * export data and parameters in a format readable by other functions. + * + * @param $exportRequestStream All POST data (array) from chart + * @return An array of processed export data and parameters + */ +function parseExportRequestStream($exportRequestStream) { + + // Check for SVG + $exportData ['streamtype'] = strtoupper(@$exportRequestStream ['stream_type']); + // backward compatible SVG stream type detection + if (!$exportData ['streamtype']) { + if (@$exportRequestStream ['svg']) { + $exportData ['streamtype'] = "SVG"; + } + else { + $exportData ['streamtype'] = "RLE"; + } + } + + // get string of compressed/encoded image data + // halt with error message if stream is not found + $exportData ['stream'] = (string)@$exportRequestStream ['stream'] + or $exportData ['stream'] = (string)@$exportRequestStream ['svg'] // backward compatible + or raise_error(100, true); + + // get all export related parameters and parse to validate and process these + // add notice if 'parameters' is not retrieved. In that case default values would be taken + if (!@$exportRequestStream['parameters']) + raise_error(102); + + // parse parameters + $exportData ['parameters'] = parseExportParams(@$exportRequestStream ['parameters'], @$exportRequestStream); + $exportData ['parameters'] ["exportformat"] = strtoupper(@$exportData ['parameters'] ["exportformat"]); + + // get width and height of the chart + // halt with error message if width/height is/are not retrieved + $exportData ['meta']['width'] = (int) @$exportRequestStream ['meta_width'] + or $exportData ['meta']['width'] = (int) @$exportRequestStream ['width'] // backward compatible + or raise_error(101); + $exportData ['meta']['height'] = (int) @$exportRequestStream ['meta_height'] + or raise_error(101); + + // get background color of chart + // add notice if background color is not retrieved + $exportData ['meta']['bgColor'] = @$exportRequestStream ['meta_bgColor']; + + // chart DOMId + $exportData ['meta']['DOMId'] = @$exportRequestStream ['meta_DOMId']; + + // return collected and processed data + return $exportData; +} + +/** + * Parse export 'parameters' string into an associative array with key => value elements. + * Also sync default values from $defaultparameterValues array (global) + * @param $strParams A string with parameters (key=value pairs) separated by | (pipe) + * @return An associative array of key => value pairs + */ +function parseExportParams($strParams, $exportRequestStream = array()) { + // get global definition of default parameter values + global $defaultParameterValues; + + // split string into associative array of [export parameter name => value ] + $params = bang($strParams, array("|", "=")); + + $exportFilename = @$params['exportfilename']; + $exportFormat = @$params['exportformat']; + + // backward compatible setting to get filename + if (!$exportFilename) { + $exportFilename = (string)@$exportRequestStream["filename"]; + if ($exportFilename) { + $params['exportfilename'] = $exportFilename; + } + } + // backward compatible setting to get exportFormat through mimetype + if (!$exportFormat) { + + $mimeType = strtolower((string)@$exportRequestStream["type"]); + $mimeList = bang( @MIME_TO_FORMAT ); + + $exportFormat = $mimeList[$mimeType]; + + if ($exportFormat) { + $params['exportformat'] = $exportFormat; + } + else { + $params['exportformat'] = 'png'; + } + } + + if (is_array($defaultParameterValues)) { + // sync with default values + $params = $params + $defaultParameterValues; + } + + // return parameters' array + return $params; +} + + + +/** + * Builds and returns a path of the Export Resource PHP file needed to + * export the chart to the format specified as parameter. + * @param $strFormat (string) export format specified form chart + * @return A path (string) containing the Export Resource PHP file + * the for specified format + */ +function getExporter($strFormat, $streamtype = "RLE") { + + // get array of [format => handler suffix ] from HANDLER_ASSOCIATIONS + $associationCluster = bang(HANDLER_ASSOCIATIONS, array('|', ':'), true); + $associations = bang(@$associationCluster[$streamtype], array(";", "="), true); + + // validate and decide on proper suffix form the $associations array + // if not found take the format as suffix of the Export Resource + $exporterSuffix = (@$associations [$strFormat]); + if (!$exporterSuffix) { + $exporterSuffix = strtoupper($strFormat); + } + + + // build Export Resource PHP file path + // Add resource path (constant), Export handler (constant) and export suffix + $path = RESOURCE_PATH . EXPORT_HANDLER . strtoupper($streamtype) . "2{$exporterSuffix}.php"; + + return $path; +} + +#### ------------------------ OUTPUT EXPORT FILE -------------------------------- #### + +/** + * Checks whether the export action is download or save. + * If action is 'download', send export parameters to 'setupDownload' function. + * If action is not-'download', send export parameters to 'setupServer' function. + * In either case it gets exportSettings and passes the settings along with + * processed export binary (image/PDF) to the output handler function if the + * export settings return a 'ready' flag set to 'true' or 'download'. The export + * process would stop here if the action is 'download'. In the other case, + * it gets back success status from output handler function and returns it. + * + * @param $exportObj An export binary/object of mixed type (image/PDF) + * @param $exportParams An array of export parameters + * @return export success status ( filename if success, false if not) + */ +function outputExportObject($exportObj, $exportParams) { + // checks whether the export action is 'download' + $isDownload = strtolower($exportParams ["exportaction"]) == "download"; + + + // dynamically call 'setupDownload' or 'setupServer' as per export action + // pass export paramters and get back export settings in an array + $exportActionSettings = call_user_func('setup' . ($isDownload ? 'Download' : 'Server'), $exportParams['exportfilename'], $exportParams['exportformat'], $exportParams['exporttargetwindow'] + ); + + // check whether export setting gives a 'ready' flag to true/'download' + // and call output handler + // return status back (filename if success, false if not success ) + return ( @$exportActionSettings ['ready'] ? exportOutput($exportObj, $exportActionSettings, 1) : false ); +} + +/** + * Flushes exported status message/or any status message to the chart or the output stream on error + * It parses the exported status through parser function parseExportedStatus, + * builds proper response string using buildResponse function and flushes the response + * string to the output stream and terminates the program. + * @param $status exported status ( false if failed/error, filename as string if success) + * $meta array containing meta descriptions of the chart like width, height + * $msg custom message to be added as statusMessage + * + */ +function flushStatus($status, $meta, $msg = '') { + die(buildResponse(parseExportedStatus($status, $meta, $msg))); +} + +/** + * Parses the exported status and builds an array of export status information. As per + * status it builds a status array which contains statusCode (0/1), statusMesage, fileName, + * width, height, DOMId and notice in some cases. + * @param $status exported status ( false if failed/error, filename as stirng if success) + * $meta array containing meta descriptions of the chart like width, height and DOMId + * $msg custom message to be added as statusMessage + * @return array of status information + */ +function parseExportedStatus($status, $meta, $msg = '') { + // get global 'notice' variable + global $notices; + global $exportData; + + // add notice + if ($notices) + $arrStatus [] = "notice=" . @$notices; + + // Add DOMId + $arrStatus [] = "DOMId=" . @$meta["DOMId"]; + + // add file URI , width and height when status success + // provide 0 as width and height on failure + $arrStatus [] = "height=" . ( @$status ? @$meta ['height'] : 0 ); + $arrStatus [] = "width=" . ( @$status ? @$meta ['width'] : 0 ); + $arrStatus [] = "fileName=" . ( @$status ? ( preg_replace('/([^\/]$)/i', '${1}/', HTTP_URI) . @$status ) : "" ); + + // add status message . Priority 1 is a custom message if provided + $arrStatus [] = "statusMessage=" . ( trim(@$msg) ? @$msg : + ( $status ? "success" : "failure" )); + // add statusCode to 1 on success + $arrStatus [] = "statusCode=" . ( @$status ? "1" : "0" ); + + // return status information + return $arrStatus; +} + +/** + * Builds response from an array of status information. Each value of the array + * should be a string which is one [key=value ] pair. This array are either joined by + * a & to build a querystring (to pass to chart) or joined by a HTML <BR> to show neat + * and clean status informaton in Browser window if download fails at the processing stage. + * + * @param $arrMsg Array of string containing status data as [key=value ] + * @return A string to be written to output stream + */ +function buildResponse($arrMsg) { + // access global variable to get export action + global $exportData; + + // check whether export action is download. If so the response output would be at browser + // i.e. the output format would be HTML + $isHTML = ( ( $exportData ['parameters']['exportaction'] ) != null ? (strtolower( + $exportData ['parameters']['exportaction']) == "download" ) : true ); + + + // If the output format is not HTML then start building a quertstring hence start with a & + $msg = ( $isHTML ? "" : "&" ); + // join all status data from array using & or <BE> as per export action + // Joining with & would convert the string into a querystring as each element already contains + // key=value. + $msg .= implode(( $isHTML ? "<BR>" : "&"), $arrMsg); + + // return response + return $msg; +} + +/** + * check server permissions and settings and return ready flag to exportSettings + * @param $exportFile Name of the new file to be created + * @param $exportType Export type + * @param $target target window where the download would happen [ Not required here ] + * @return An array containing exportSettings and ready flag + */ +function setupServer($exportFile, $exportType, $target = "_self") { + // get extension related to specified type + $ext = '.' . getExtension(strtolower($exportType)); + + // set export type + $retServerStatus ['type'] = $exportType; + + // assume that server is ready + $retServerStatus['ready'] = true; + + // process SAVE_PATH : the path where export file would be saved + // add a / at the end of path of / is absent at the end + $path = preg_replace('/([^\/]$)/i', '${1}/', SAVE_PATH); + + // check whether directory exists + // raise error and halt execution if directory does not exists + $fe = file_exists(realpath($path)) or raise_error(" Server Directory does not exist.", true); + + // check if directory is writable or not + $dirWritable = is_writable(realpath($path)); + + // build filepath + $retServerStatus ['filepath'] = realpath($path) . '/' . $exportFile . $ext; + + // check whether file exists + if (!file_exists($retServerStatus ['filepath'])) { + // need to create a new file if does not exists + // need to check whether the directory is writable to create a new file + if ($dirWritable) { + // if directory is writable return with ready flag + return $retServerStatus; + } else { + // if not writable halt and raise error + raise_error(403, true); + } + } + + // add notice that file exists + raise_error(" File already exists."); + + //if overwrite is on return with ready flag + if (OVERWRITEFILE) { + // add notice while trying to overwrite + raise_error(" Export handler's Overwrite setting is on. Trying to overwrite."); + + // see whether the existing file is writable + // if not halt raising error message + $iw = is_writable($retServerStatus ['filepath']) or + raise_error(" Overwrite forbidden. File cannot be overwritten.", true); + + // if writable return with ready flag + return $retServerStatus; + } + + // raise error and halt execution when overwrite is off and intelligent naming is off + if (!INTELLIGENTFILENAMING) + raise_error(" Export handler's Overwrite setting is off. Cannot overwrite.", true); + + raise_error(" Using intelligent naming of file by adding an unique suffix to the exising name."); + // Intelligent naming + // generate new filename with additional suffix + $retServerStatus ['filepath'] = realpath($path) . '/' . $exportFile . "_" . generateIntelligentFileId() . $ext; + + // return intelligent file name with ready flag + // need to check whether the directory is writable to create a new file + if ($dirWritable) { + // if directory is writable return with ready flag + // add new filename notice + raise_error(" The filename has changed to " . basename($retServerStatus ['filepath']) . '.'); + return $retServerStatus; + } else { + // if not writable halt and raise error + raise_error(403, true); + } + + // in any unknown case the export should not execute + $retServerStatus ['ready'] = false; + raise_error(" Not exported due to unknown reasons."); + return $retServerStatus; +} + +/** + * setup download headers and return ready flag to exportSettings + * @param $exportFile Name of the new file to be created + * @param $exportType Export type + * @param $target target window where the download would happen (_self/_blank/_parent/_top/window name) + * @return An array containing exportSettings and ready flag + */ +function setupDownload($exportFile, $exportType, $target = "_self") { + + $exportType = strtolower($exportType); + + // get mime type list parsing MIMETYPES constant declared in Export Resource PHP file + $mimeList = bang(@MIMETYPES); + + // get the associated extension for the export type + $ext = getExtension($exportType); + + // set content-type header + header('Content-type:' . $mimeList [$exportType]); + + // set content-disposition header + // when target is _self the type is 'attachment' + // when target is other than self type is 'inline' + // NOTE : you can comment this line in order to replace present window (_self) content with the image/PDF + header('Content-Disposition: ' . ( strtolower($target == "_self") ? "attachment" : "inline" ) . '; filename="' . $exportFile . '.' . $ext . '"'); + + // return exportSetting array. Ready should be set to download + return array('ready' => 'download', "type" => $exportType); +} + +/** + * gets file extension checking the export type. + * @param $exportType (string) export format + * @return file extension as string + */ +function getExtension($exportType) { + + // get an associative array of [type=> extension] + // from EXTENSIONS constant defined in Export Resource PHP file + $extensionList = bang(@EXTENSIONS); + $exportType = strtolower($exportType); + + // if extension type is present in $extensionList return it, otherwise return the type + return ( @$extensionList [$exportType] ? $extensionList [$exportType] : $exportType ); +} + +/** + * generates a file suffix for a existing file name to apply intelligent + * file naming + * @return a string containing UUID and random number /timestamp + */ +function generateIntelligentFileId() { + //generate UUID + $UUID = md5(uniqid(rand(), true)); + + // chck for additional suffix : timestamp or random + // accrodingly add random number ot timestamp + $UUID .= '_' . ( strtolower(FILESUFFIXFORMAT) != "timestamp" ? rand() : + date('dmYHis') . '_' . round(microtime(true) - floor(microtime(true)), 2) * 100 + ); + + return $UUID; +} + +/** + * Helper function that splits a string containing delimiter separated key value pairs + * into associative array + * @param $str (string) delimiter separated key value pairs + * @param $delimiterList an Array whose first element is the delimiter and the + * second element can be anything which separates key from value + * + * @return An associative array with key => value + */ +function bang($str, $delimiterList = array(";", "="), $retainPropertyCase = false) { + + if (!$delimiterList) { + $delimiterList = array(";", "="); + } + + $retArray = array(); + // split string as per first delimiter + $tmpArray = explode($delimiterList[0], $str); + // iterate through each element of split string + for ($i = 0; $i < count($tmpArray); $i++) { + // split each element as per second delimiter + $tmp2Array = explode($delimiterList[1], $tmpArray[$i], 2); + if ($tmp2Array[0] && $tmp2Array[1]) { + // if the secondary split creats at-least 2 array elements + // make the fisrt element as the key and the second as the value + // of the resulting array + $retArray[$retainPropertyCase ? $tmp2Array[0] : strtolower($tmp2Array[0])] = $tmp2Array[1]; + } + } + return $retArray; +} + +/** + * Error reporter function that has a list of error messages. It can terminate the execution + * and send successStatus=0 along with a error message. It can also append notice to a global variable + * and continue execution of the program. + * @param $code error code as Integer (referring to the index of the errMessages + * array containing list of error messages) + * OR, it can be a string containing the error message/notice + * @param $halt (boolean) Whether to halt execution + */ +function raise_error($code, $halt = false) { + + // access global notice storage + global $notices; + + //list of error messages + $errMessages [100] = " Insufficient data."; + $errMessages [101] = " Width/height not provided."; + $errMessages [102] = " Insufficient export parameters."; + $errMessages [400] = " Bad request."; + $errMessages [401] = " Unauthorized access."; + $errMessages [403] = " Directory write access forbidden."; + $errMessages [404] = " Export Resource not found."; + + + // take $code as error message if $code is string + // if $code is present as index of errorMessages array, take the value of the element + // take Error! only when all fails + $err_message = is_string($code) ? $code : + ( @$errMessages [$code] ? $errMessages [$code] : "statusMessage=ERROR!" ); + + // If halt is true stop execution and send response back to chart/output stream + if ($halt) { + flushStatus(false, '', $err_message); + } else { + // otherwise add the message into global notice repository + $notices .= $err_message; + } +} + +?> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/README.md b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/README.md new file mode 100755 index 0000000000000000000000000000000000000000..ec6ffb1f9f16b10ecc60df15ffb336728184f090 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/README.md @@ -0,0 +1,64 @@ +FusionCharts PHP Export Handler +================================== + +What is FusionCharts PHP export handler? + +FusionCharts Suite XT uses JavaScript to generate charts in the browser, using SVG and VML (for older IE). If you need +to export the charts as images or PDF server-side, you need a server-side helper library to convert the SVG to image/PDF. +These export handlers allow you to take the SVG/base64imageData from FusionCharts charts and convert to image/PDF. + +How does the export handler work? + +- A chart is generated in the browser. When the export to image or PDF button is clicked, the chart generates the SVG +string or generate base64 image (only for modern browser and FusionCharts v 3.11.0 or above) to represent the current state and sends to the export handler. The export handler URL is configured via chart +attributes. +- The export handler accepts the SVG string along with chart configuration like chart type, width, height etc., and uses +InkScape & ImageMagick if required library to convert to image or PDF. +- The export handler either writes the image or PDF to disk, based on the configuration provided by chart, or streams it +back to the browser. + +Version +======= + +4.0 + +Requirements +============ + +Inkscape and ImageMagick is only required for FusionCharts lower version then 3.11.0. +For FusionCharts v 3.11.0 and higher if using older browser (IE < 10) which doesnot support base64 encoding and decoding. + +Inkscape: + +Inkscape is an open source vector graphics editor. What sets Inkscape apart is its use of Scalable Vector Graphics +(SVG), an open XML-based W3C standard, as the native format. Inkscape has a powerful command line interface and can +be used in scripts for a variety of tasks, such as exporting and format conversions. For details, refer to the +following page. + +http://inkscape.org/doc/inkscape-man.html + + +ImageMagick: + +ImageMagick is a free and open-source software suite for displaying, converting, and editing raster image and vector +image files. The software mainly consists of a number of command-line interface utilities for manipulating images. +For further details, please refer to the the following page. + +http://www.imagemagick.org/ + +Installation +============ + +1. Place the files in the server folder from where the index.php can be accessed. +2. Give write permission to the folder 'temp' and 'ExportedImages' (create if not there); +3. If using older FusionCharts (< 3.11.0) or using older browser (IE < 10) install Inkscape and ImageMagick, check the path is same as the file inside Resources have. + + +********************************************************************************************* +License +------- + +FUSIONCHARTS: + +Copyright (c) FusionCharts Technologies LLP +License Information at http://www.fusioncharts.com/license \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_RLE2IMG.php b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_RLE2IMG.php new file mode 100755 index 0000000000000000000000000000000000000000..7b586548656bec1110fd902486b0c5c2152cf329 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_RLE2IMG.php @@ -0,0 +1,327 @@ +<?php +/** + * + * FusionCharts Exporter - 'Image Resource' handles + * FusionCharts (since v3.1) Server Side Export feature that + * helps FusionCharts exported as Image files in various formats. + * + * + * @author FusionCharts + * @description FusionCharts Exporter (Server-Side - PHP) + * @version 2.0 [ 12 February 2009 ] + * + */ +/** + * ChangeLog / Version History: + * ---------------------------- + * + * + * 1.1 [ 18 July 2009 ] + * background color was turning black in a few linux distro - fixed . The original code is kept commneted. Line 277 + * + * + * + * 1.0 [ 12 February 2009 ] + * + * FEATURES: + * - Integrated with new Export feature of FusionCharts 3.1 & FusionCharts Exporter v 2.0 + * - can save to server side directory + * - can provide download or open in browser window/frame other than _self + * - can save in various image formats viz. jpeg, png and gif. + * + * + */ +/** + * Copyright (c) 2016 Infosoft Global Private Limited + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/** + * GENERAL NOTES + * ------------- + * + * Chart would POST export data (which consists of encoded image data stream, + * width, height, background color and various other export parameters like + * exportFormat, exportFileName, exportAction, exportTargetWindow) to this script. + * + * The script would process this data using appropriate resource files build + * export binary (PDF/image) + * + * It either saves the binary as file to a server side directory or push it as + * Download or open in a new browser window/frame. + * + * + */ +/** + * @requires FCExporter.php A file that includes this resource + * + * + * Details + * ------- + * + * The resource files would have these things as common: + * + * a) a constant - MIMETYPES that would have a string + * containing semicolon separated key value pairs. + * Each key can be a format name specified in the + * HANDLERASSOCIATIONS constant. The associated value + * would be the mimetype for the specified format. + * + * e.g. define("MIMETYPES","jpg=image/jpeg;jpeg=image/jpeg;png=image/png;gif=image/gif"); + * + * + * b) a constant - EXTENSIONS that again contain a string of + * semicolon separated key value pair. Each key would again be the + * format name and the extension would be the file extension. + * + * e.g. define("EXTENSIONS","jpg=jpg;jpeg=jpg;png=png;gif=gif"); + * + * + * c) a function - exportProcessor ( $stream , $meta ) + * It would take the FusionCharts exncoded image string as $stream & + * an associative array $meta containging width, height and bgColor keys. + * + * The function would return an object of mixed type which would contain + * the processed binary/relevant export object. + * + * + * d) a function - exportOutput ( $exportObj, $exportSettings, $quality=1 ) + * It would take the processed export object and other export setting as parameter. + * Moreover, it would take an optional parameter - $quality (in scale of 0 to 1). + * By Default, the $quality is passed as 1 (best quality) + * + * The function would return the file path on success or return false on failure. + * + * [ The other code in the resource file can be anything that support this architecture ] + * + */ + +// ============================================================================= +// == Constants and Variables == +// ============================================================================= +// **** Users are recommended NOT to perform any editing beyond this point. **** + +/* ------------------------- EXPORT RESOURCES -------------------------------- */ + +// This constant lists the mime types related to each export format this resource handles +// The value is semicolon separated key value pair for each format +// Each key is the format and value is the mime type +define( "MIMETYPES", "jpg=image/jpeg;jpeg=image/jpeg;gif=image/gif;png=image/png" ); + +// This constant lists all the file extensions for the export formats +// The value is semicolon separated key value pair for each format +// Each key is the format and value is the file extension +define( "EXTENSIONS", "jpg=jpg;jpeg=jpg;gif=gif;png=png" ); + + +// ============================================================================= +// == Public Functions == +// ============================================================================= + + +/** + * Gets Export data from FCExporter - main module and build the export binary/objct. + * @param $stream (string) export image data in FusionCharts compressed format + * $meta {array) Image meta data in keys "width", "heigth" and "bgColor" + * $exportParams {array} Export related parameters + * @return image object/binary + */ +function exportProcessor( $stream, $meta, $exportParams ) +{ + + // create a new export object + // here it is an image generator class that handles jpg, png, gif export + // pass all reqiured parameters + $FCExporter = new FCIMGGenerator ( $stream, $meta['width'], $meta['height'], $meta['bgColor'] ); + + // return export ready image object + return $FCExporter->getImageObject(); +} + + +/** + * exports (save/download) FusinoCharts exported image. + * @param $exportObj (mixed) binary/objct exported by exportProcessor + * @param $exportSettings (array) various server-side export settings stored in keys like + * "type", "ready" "filepath" etc. Required for 'save' expotAction. + * For 'download' action "filepath" is blank (this is checked to find + * whether the action is "download" or not. + * @param $quality (integer) quality factor 0-1 (1 being the best quality). As of now we always pass 1. + * + * @return false is fails. {filepath} if succeeds. Only returned when action is 'save'. + */ +function exportOutput ( $exportObj, $exportSettings , $quality = 1 ) +{ + + // decides image encoding and saving php(GD) function as per export type + switch( strtolower( $exportSettings['type' ]) ) + { + // in case of PNG check if 'imagepng' function exists. + // save the image as png + // store saving status in $doneExport which receives false if fails and true on success + case "png" : + if( function_exists ( "imagepng" ) ) { + $doneExport = imagepng ( $exportObj, @$exportSettings ['filepath' ], $quality*9 ); + } + break; + + // in case of GIF check if 'imagegif' function exists. + // save the image as gif + // store saving status in $doneExport which receives false if fails and true on success + case "gif" : + if( function_exists ( "imagegif" ) ) { + // This is done as a fix to some PHP versions running on IIS + if( trim(@$exportSettings ['filepath']) ) + $doneExport = imagegif ( $exportObj, @$exportSettings ['filepath'] ); + else + $doneExport = imagegif ( $exportObj ); + } + break; + + // in case of JPG/JPEG check if 'imagejpeg' function exists. + // save the image as jpg + // store saving status in $doneExport which receives false if fails and true on success + case "jpg" : + case "jpeg": + if( function_exists ( "imagejpeg" ) ) { + $doneExport = imagejpeg ( $exportObj, @$exportSettings ['filepath' ], $quality*100 ); + } + break; + + default : + raise_error( "Invalid Export Format." , true); + break; + + } + + // clear memory after saving + imagedestroy( $exportObj ); + + // check 'filepath'. If it is null - the action is 'download' and hence terminate execution + if ( !@$exportSettings [ 'filepath' ] ) exit(); + + // check $doneEport and if true sets status to {filepath}'s value + // set false if fails + $status =( @$doneExport ? basename ( @$exportSettings ['filepath'] ) : false ); + + // return status + return $status; +} + + +################################################################################# +## ## +## EXPORT CLASS ## +## ## +################################################################################# + +class FCIMGGenerator +{ + //Array - Stores multiple chart export data + var $arrExportData; + //stores number of pages = length of $arrExportData array + var $numPages=0; + + //Constructor - By default the chart export data can be passed to this + function FCIMGGenerator($imageData_FCFormat="", $width="", $height="", $bgcolor="ffffff"){ + if($imageData_FCFormat && $width && $height){ + $this->setBitmapData($imageData_FCFormat, $width, $height, $bgcolor); + } + } + + // Add chart export data + function setBitmapData($imageData_FCFormat, $width, $height, $bgcolor="ffffff"){ + $this->arrExportData[$this->numPages]["width"]=$width; + $this->arrExportData[$this->numPages]["height"]=$height; + $this->arrExportData[$this->numPages]["bgcolor"]=$bgcolor; + $this->arrExportData[$this->numPages]["imageData"]=$imageData_FCFormat; + $this->numPages++; + } + + + function getImageObject($id=0){ + //create image + $image = imagecreatetruecolor($this->arrExportData[$id]["width"], $this->arrExportData[$id]["height"]); + + // Detect the background color + if (!$this->arrExportData[$id]["bgcolor"]){ + $this->arrExportData[$id]["bgcolor"] = "ffffff"; + } + //set Background color + // Some linux distro have issues with imagefill + // Hence, using imagefilledrectangle() instead + //imagefill($image, 0, 0, $this->composeColor($image,$this->arrExportData[$id]["bgcolor"])); + imagefilledrectangle($image, 0, 0,($this->arrExportData[$id]["width"]+0)-1, ($this->arrExportData[$id]["height"]+0)-1,$this->composeColor($image,$this->arrExportData[$id]["bgcolor"])); + + // Split the data into rows using ; as separator + $rows = explode(";", $this->arrExportData[$id]["imageData"]); + + // Iterate through all the rows + for($i= 0; $i<count($rows); $i++){ + $x=0; + // Parse all the pixels in this row + $pixels = explode(",", $rows[$i]); + // Iterate through the pixels + for($j=0; $j<count($pixels); $j++){ + // Split the pixel into color and repeat value + $thispix = explode("_", $pixels[$j]); + // Reference to color + $c = $thispix[0]; + // Reference to repeat factor + $r = (int)$thispix[1]; + //If color is empty (i.e., background pixel) skip + if ($c==""){ + $x+=$r; + continue; + //$c=$this->arrExportData[$id]["bgcolor"]; + } + // get color + $color=$this->composeColor($image,$c); + //draw line + imageline($image, $x, $i, ($x+$r)-1, $i, $color); + //set next x pixel position + $x+=$r; + } + } + + return $image; + } + + + // build color object for GD image object + // Parsee 6 Byte Hex Color string to 3 Byte RGB color + function composeColor($imgObj,$strHexColor){ + if (strlen($strHexColor)<6){ + //If the hexadecimal code is less than 6 characters, pad with 0 + $strHexColor = str_pad($strHexColor, 6, '0', STR_PAD_LEFT); + } + //Convert value from HEX to RRGGBB (3 bytes) + $rr = hexdec(substr($strHexColor, 0, 2)); + $gg = hexdec(substr($strHexColor, 2, 2)); + $bb = hexdec(substr($strHexColor, 4, 2)); + // Allocate the color + return imagecolorallocate($imgObj, $rr, $gg, $bb); + } + +} + +//needed to validate inclusion of this resource file in main file - FCExporter.php +return 'true'; + +?> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_RLE2PDF.php b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_RLE2PDF.php new file mode 100755 index 0000000000000000000000000000000000000000..8ef97b13f279f4ea4d555c6331c73712c8c23e60 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_RLE2PDF.php @@ -0,0 +1,421 @@ +<?php +/** + * + * FusionCharts Exporter - 'PDF Resource' handles + * FusionCharts (since v3.1) Server Side Export feature that + * helps FusionCharts exported as PDF file. + * + * + * @author FusionCharts + * @description FusionCharts Exporter (Server-Side - PHP) + * @version 2.0 [ 12 February 2009 ] + * + */ +/** + * ChangeLog / Version History: + * ---------------------------- + * + * 1.1 [ 13 March 2009 ] + * Fixed PDF Image data Compressor + * + * + * + * 1.0 [ 12 February 2009 ] + * + * FEATURES: + * - Integrated with new Export feature of FusionCharts 3.1 & FusionCharts Exporter v 2.0 + * - can save to server side directory + * - can provide download or open in browser window/frame other than _self + * - can save single or multiple page PDF + * + * ISSUES: + * - best viewed in 72 DPI + * - Each page is of the same pixel size that of the chart + * - no page margin or gutter as of now + * - no custom text or other PDF elements can be incorporated + * + */ +/** + * Copyright (c) 2016 Infosoft Global Private Limited + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/** + * GENERAL NOTES + * ------------- + * + * Chart would POST export data (which consists of encoded image data stream, + * width, height, background color and various other export parameters like + * exportFormat, exportFileName, exportAction, exportTargetWindow) to this script. + * + * The script would process this data using appropriate resource files build + * export binary (PDF/image) + * + * It either saves the binary as file to a server side directory or push it as + * Download or open in a new browser window/frame. + * + * + * ISSUES + * ------ + * Q> What if someone wishes to open in the same page where the chart existed as postback + * replacing the old page? + * + * A> Not directly supported using any chart attribute or parameter but can do by + * removing/commenting the line containing 'header( content-disposition ...' + * + */ +/** + * @requires FCExporter.php A file that includes this resource + * + * + * Details + * ------- + * + * The resource files would have these things as common: + * + * a) a constant - MIMETYPES that would have a string + * containing semicolon separated key value pairs. + * Each key can be a format name specified in the + * HANDLERASSOCIATIONS constant. The associated value + * would be the mimetype for the specified format. + * + * e.g. define("MIMETYPES","jpg=image/jpeg;jpeg=image/jpeg;png=image/png;gif=image/gif"); + * + * + * b) a constant - EXTENSIONS that again contain a string of + * semicolon separated key value pair. Each key would again be the + * format name and the extension would be the file extension. + * + * e.g. define("EXTENSIONS","jpg=jpg;jpeg=jpg;png=png;gif=gif"); + * + * + * c) a function - exportProcessor ( $stream , $meta ) + * It would take the FusionCharts exncoded image string as $stream & + * an associative array $meta containging width, height and bgColor keys. + * + * The function would return an object of mixed type which would contain + * the processed binary/relevant export object. + * + * + * d) a function - exportOutput ( $exportObj, $exportSettings, $quality=1 ) + * It would take the processed export object and other export setting as parameter. + * Moreover, it would take an optional parameter - $quality (in scale of 0 to 1). + * By Default, the $quality is passed as 1 (best quality) + * + * The function would return the file path on success or return false on failure. + * + * [ The other code in the resource file can be anything that support this architecture ] + * + */ + +// ============================================================================= +// == Constants and Variables == +// ============================================================================= +// ============================================================================== +// Users are recommended NOT to perform any editing beyond this point. == +// ============================================================================== + +/* ------------------------- EXPORT RESOURCES -------------------------------- */ + +// This constant lists the mime types related to each export format this resource handles +// The value is semicolon separated key value pair for each format +// Each key is the format and value is the mime type +define( "MIMETYPES" , "pdf=application/pdf" ); + +// This constant lists all the file extensions for the export formats +// The value is semicolon separated key value pair for each format +// Each key is the format and value is the file extension +define( "EXTENSIONS", "pdf=pdf" ); + + +// ============================================================================= +// == Public Functions == +// ============================================================================= + +/** + * Gets Export data from FCExporter - main module and build the export binary/objct. + * @param $stream (string) export image data in FusionCharts compressed format + * $meta {array) Image meta data in keys "width", "heigth" and "bgColor" + * $exportParams {array} Export related parameters + * @return image object/binary + */ +function exportProcessor( $stream , $meta, $exportParams ) +{ + + // create a new export object + // here it is an PDF generator class + // pass all reqiured parameters + $FCExporter = new FCPDFGenerator ( $stream, $meta ['width' ], $meta ['height' ], $meta ['bgColor' ] ); + + // return export ready PDF binary data + return $FCExporter->getPDFObjects(); +} + +/** + * exports (save/download) FusinoCharts exported PDF. + * @param $exportObj (mixed) binary/objct exported by exportProcessor + * @param $exportSettings (array) various server-side export settings stored in keys like + * "type", "ready" "filepath" etc. Required for 'save' expotAction. + * For 'download' action "filepath" is blank (this is checked to find + * whether the action is "download" or not. + * @param $quality (integer) quality factor 0-1 (1 being the best quality). As of now we always pass 1. + * + * @return false is fails. {filepath} if succeeds. Only returned when action is 'save'. + */ +function exportOutput ( $exportObj, $exportSettings, $quality = 1 ) +{ + + // calls imagepdf function that saves/downloads PDF binary + // store saving status in $doneExport which receives false if fails and true on success + $doneExport = imagepdf ( $exportObj, @$exportSettings ['filepath'] ); + + // check $doneEport and if true sets status to {filepath}'s value + // set false if fails + $status =( $doneExport ? basename ( @$exportSettings ['filepath'] ) : false ); + + // return status + return $status; + +} + +/** + * emulates imagepng/imagegif/imagejpeg. It saves PDF data to server or to sets to download as per + * the exportAction. exportAction is 'download' when {filepath} is null. + * @param $exportObj (string) PDF binary exported by exportProcessor + * @param $filepath (string) Path where the exported PDF is to be stored + * when the action is "download" it is null. + * + * @return (boolean) false is fails. true if succeeds. Only returned when action is 'save'. + */ +function imagepdf ( $exportObject , $filepath ) +{ + + // when filepath is null the action is 'download' + // hence write the PDF bimary yo response stream and immediately terminate/close/end stream + // to prevent any garbage that might get into response and corrupt the PDF binary + if ( !@$filepath ) die ( $exportObject ); + + // open file path in write mode + $fp = @fopen ( $filepath , "w" ); + + if( $fp ) + { + // write PDF binary + $status = @fwrite( $fp , $exportObject ); + //close file + $fc = @fclose( $fp ); + } + + // return status + return ( bool ) @$status; + +} + + +################################################################################# +## ## +## EXPORT CLASS ## +## ## +################################################################################# + +class FCPDFGenerator +{ + //Array - Stores multiple chart export data + var $arrExportData; + //stores number of pages = length of $arrExportData array + var $numPages=0; + + //Constructor - By default the chart-export-data can be passed to this + function FCPDFGenerator($imageData_FCFormat="", $width="", $height="", $bgcolor="ffffff"){ + if($imageData_FCFormat && $width && $height){ + $this->setBitmapData($imageData_FCFormat, $width, $height, $bgcolor); + } + + } + + // Add chart export data + function setBitmapData($imageData_FCFormat, $width, $height, $bgcolor="ffffff"){ + $this->arrExportData[$this->numPages]["width"]=$width; + $this->arrExportData[$this->numPages]["height"]=$height; + $this->arrExportData[$this->numPages]["bgcolor"]=$bgcolor; + $this->arrExportData[$this->numPages]["imageData"]=$imageData_FCFormat; + $this->numPages++; + + } + //create image PDF object containing the chart image + function addImageToPDF($id=0,$isCompressed=true){ + //PDF Object number + $imgObjNo = 6 + $id*3; + + //Get chart Image binary + $baImg=$this->getBitmapData24($id); + //Compress image binary + $imgBinary = $isCompressed?gzcompress($baImg, 9):$baImg; + //get the lenght of the image binary + $len=strlen($imgBinary); + //Build PDF object containing the image binary and other formats required + $imgObj=$imgObjNo." 0 obj\n<<\n/Subtype /Image /ColorSpace /DeviceRGB /BitsPerComponent 8 /HDPI 72 /VDPI 72 ".($isCompressed?"/Filter /FlateDecode ":"")."/Width ".$this->arrExportData[$id]["width"]." /Height ".$this->arrExportData[$id]["height"]." /Length ".$len." >>\nstream\n".$imgBinary."endstream\nendobj\n"; + + + return $imgObj; + + } + + //Main PDF builder function + function getPDFObjects($isCompressed=true) { + + $PDFBytes=""; + //Store all PDF objects in this temporary string to be written to ByteArray + $strTmpObj=""; + + //start xref array + $xRefList[0]="xref\n0 "; + $xRefList[1]="0000000000 65535 f \n"; //Address Refenrece to obj 0 + + //Build PDF objects sequentially + //version and header + $strTmpObj="%PDF-1.3\n%{FC}\n"; + $PDFBytes.=$strTmpObj; + + //OBJECT 1 : info (optional) + $strTmpObj="1 0 obj<<\n/Author (FusionCharts)\n/Title (FusionCharts)\n/Creator (FusionCharts)\n>>\nendobj\n"; + $xRefList[]=$this->calculateXPos(strlen($PDFBytes)); //refenrece to obj 1 + $PDFBytes.=$strTmpObj; + + //OBJECT 2 : Starts with Pages Catalogue + $strTmpObj="2 0 obj\n<< /Type /Catalog /Pages 3 0 R >>\nendobj\n"; + $xRefList[]=$this->calculateXPos(strlen($PDFBytes)); //refenrece to obj 2 + $PDFBytes.=$strTmpObj; + + //OBJECT 3 : Page Tree (reference to pages of the catalogue) + $strTmpObj="3 0 obj\n<< /Type /Pages /Kids ["; + for($i=0;$i<$this->numPages;$i++){ + $strTmpObj.=((($i+1)*3)+1)." 0 R\n"; + } + $strTmpObj.="] /Count ".$this->numPages." >>\nendobj\n"; + + $xRefList[]=$this->calculateXPos(strlen($PDFBytes)); //refenrece to obj 3 + $PDFBytes.=$strTmpObj; + + + //Each image page + for($itr=0;$itr<$this->numPages;$itr++){ + $iWidth=$this->arrExportData[$itr]["width"]; + $iHeight=$this->arrExportData[$itr]["height"]; + //OBJECT 4..7..10..n : Page config + $strTmpObj=((($itr+2)*3)-2)." 0 obj\n<<\n/Type /Page /Parent 3 0 R \n/MediaBox [ 0 0 ".$iWidth." ".$iHeight." ]\n/Resources <<\n/ProcSet [ /PDF ]\n/XObject <</R".($itr+1)." ".(($itr+2)*3)." 0 R>>\n>>\n/Contents [ ".((($itr+2)*3)-1)." 0 R ]\n>>\nendobj\n"; + $xRefList[]=$this->calculateXPos(strlen($PDFBytes)); //refenrece to obj 4,7,10,13,16... + $PDFBytes.=$strTmpObj; + + + //OBJECT 5...8...11...n : Page resource object (xobject resource that transforms the image) + $xRefList[]=$this->calculateXPos(strlen($PDFBytes)); //refenrece to obj 5,8,11,14,17... + $PDFBytes.=$this->getXObjResource($itr); + + //OBJECT 6...9...12...n : Binary xobject of the page (image) + $imgBA=$this->addImageToPDF($itr,$isCompressed); + $xRefList[]=$this->calculateXPos(strlen($PDFBytes));//refenrece to obj 6,9,12,15,18... + $PDFBytes.=$imgBA; + } + + + + //xrefs compilation + $xRefList[0].=(count($xRefList)-1)."\n"; + + //get trailer + $trailer=$this->getTrailer(strlen($PDFBytes) ,count($xRefList)-1); + + //write xref and trailer to PDF + $PDFBytes.=implode("",$xRefList); + $PDFBytes.=$trailer; + + //write EOF + $PDFBytes.="%%EOF\n"; + + return $PDFBytes; + + } + + + //Build Image resource object that transforms the image from First Quadrant system to Second Quadrant system + function getXObjResource($itr=0) { + return ((($itr+2)*3)-1)." 0 obj\n<< /Length ".(24+strlen($this->arrExportData[$itr]["width"].$this->arrExportData[$itr]["height"]))." >>\nstream\nq\n".$this->arrExportData[$itr]["width"]." 0 0 ".$this->arrExportData[$itr]["height"]." 0 0 cm\n/R".($itr+1)." Do\nQ\nendstream\nendobj\n"; + } + + // Calculate the XREF position of eah PDF Object + function calculateXPos($posn){ + return (str_pad($posn, 10, '0', STR_PAD_LEFT))." 00000 n \n"; + } + + // Calculate and build Trailer of PDF + function getTrailer($xrefpos,$numxref=7) { + return "trailer\n<<\n/Size ".$numxref."\n/Root 2 0 R\n/Info 1 0 R\n>>\nstartxref\n".$xrefpos."\n"; + } + + + // Parse Chart Image data in to PDF Ready Image Data + function getBitmapData24($id=0){ + $imageData24=""; + + // Split the data into rows using ; as separator + $rows = explode(";", $this->arrExportData[$id]["imageData"]); + + // Detect the background color + if (!($this->arrExportData[$id]["bgcolor"])){ + $this->arrExportData[$id]["bgcolor"] = "ffffff"; + } + + // Iterate through all the rows + for($i= 0; $i<count($rows); $i++){ + // Parse all the pixels in this row + $pixels = explode(",", $rows[$i]); + // Iterate through the pixels + for($j=0; $j<count($pixels); $j++){ + // Split the pixel into color and repeat value + $thispix = explode("_", $pixels[$j]); + // Reference to color + $c = $thispix[0]; + // Reference to repeat factor + $r = ( int ) $thispix[1]; + //If color is not empty (i.e., not background pixel) + if ($c==""){ + $c=$this->arrExportData[$id]["bgcolor"]; + } + if (strlen($c)<6){ + //If the hexadecimal code is less than 6 characters, pad with 0 + $c = str_pad($c, 6, '0', STR_PAD_LEFT); + } + $rgb = pack("CCC",hexdec(substr($c, 0, 2)),hexdec(substr($c, 2, 2)),hexdec(substr($c, 4, 2))); + + $strPixelRGB_hex=str_repeat(($rgb),$r); + // Set the pixel + $imageData24.= $strPixelRGB_hex; + } + } + + return $imageData24; + } + + +} + + +return 'true'; +?> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_SVG2ALL.php b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_SVG2ALL.php new file mode 100755 index 0000000000000000000000000000000000000000..634111a2f584e53300c93fe9cdd6263f642bb871 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/chart-export-handler/Resources/FCExporter_SVG2ALL.php @@ -0,0 +1,381 @@ +<?php + +/** + * + * FusionCharts Exporter - 'SVG Conversion Resource' handles + * FusionCharts (since XTT) Server Side Export feature that + * helps FusionCharts JavaScript charts to get exported. + * + * + * @author FusionCharts + * @description FusionCharts Exporter (Server-Side - PHP) + * @version 0.0.0.1 [ 32 December 2012 ] + * + */ +/** + * ChangeLog / Version History: + * ---------------------------- + * + * + * 1.0.0.0 [ 31 December 2012 ] + * + * + * FEATURES: + * - Integrated with new Export feature of FusionCharts XT & FusionCharts Exporter v 2.0 + * - can save to server side directory + * - can provide download or open in browser window/frame other than _self + * + * ISSUES: + * + * + * + * + * + */ +/** + * Copyright (c) 2016 Infosoft Global Private Limited + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/** + * GENERAL NOTES + * ------------- + * + * Chart would POST export data (which consists of encoded image data stream, + * width, height, background color and various other export parameters like + * exportFormat, exportFileName, exportAction, exportTargetWindow) to this script. + * + * The script would process this data using appropriate resource files build + * export binary (PDF/image) + * + * It either saves the binary as file to a server side directory or push it as + * Download or open in a new browser window/frame. + * + * + */ +/** + * @requires index.php A file that includes this resource + * Java 1.3+ & Apache Batik rasterizer class: Export JavaScript charts + * (http://xmlgraphics.apache.org/batik/) + * + * + * Details + * ------- + * + * The resource files would have these things as common: + * + * a) a constant - MIMETYPES that would have a string + * containing semicolon separated key value pairs. + * Each key can be a format name specified in the + * HANDLERASSOCIATIONS constant. The associated value + * would be the mimetype for the specified format. + * + * e.g. define("MIMETYPES","jpg=image/jpeg;jpeg=image/jpeg;png=image/png;gif=image/gif"); + * + * + * b) a constant - EXTENSIONS that again contain a string of + * semicolon separated key value pair. Each key would again be the + * format name and the extension would be the file extension. + * + * e.g. define("EXTENSIONS","jpg=jpg;jpeg=jpg;png=png;gif=gif"); + * + * + * c) a function - exportProcessor ( $stream , $meta ) + * It would take the FusionCharts exncoded image string as $stream & + * an associative array $meta containging width, height and bgColor keys. + * + * The function would return an object of mixed type which would contain + * the processed binary/relevant export object. + * + * + * d) a function - exportOutput ( $exportObj, $exportSettings, $quality=1 ) + * It would take the processed export object and other export setting as parameter. + * Moreover, it would take an optional parameter - $quality (in scale of 0 to 1). + * By Default, the $quality is passed as 1 (best quality) + * + * The function would return the file path on success or return false on failure. + * + * [ The other code in the resource file can be anything that support this architecture ] + * + */ +// ============================================================================= +// == Constants and Variables == +// ============================================================================= +// ============================================================================== +// Users are recommended NOT to perform any editing beyond this point. == +// ============================================================================== + +ini_set('magic_quotes_gpc', 'off'); + +/* ------------------------- EXPORT RESOURCES -------------------------------- */ + +// This constant lists the mime types related to each export format this resource handles +// The value is semicolon separated key value pair for each format +// Each key is the format and value is the mime type +define("MIMETYPES", "jpg=image/jpeg;jpeg=image/jpeg;gif=image/gif;png=image/png;pdf=application/pdf;svg=image/svg+xml"); +// This constant lists all the file extensions for the export formats +// The value is semicolon separated key value pair for each format +// Each key is the format and value is the file extension +define("EXTENSIONS", "jpg=jpg;jpeg=jpg;gif=gif;png=png;pdf=pdf;svg=svg"); + +define('TEMP_PATH', 'temp/'); +define('BATIK_PATH', 'batik/batik-rasterizer.jar'); +define('INKSCAPE_PATH', '/usr/bin/inkscape'); +define('CONVERT_PATH', '/usr/bin/convert'); // imagemagic +// ============================================================================= +// == Public Functions == +// ============================================================================= +class stitchImageCallback { + private $imageData; + + function __construct($imageData) { + $this->imageData = $imageData; + } + + public function callback($matches) { + $imageRet = ''; + $imageName = explode('/', $matches['2']); + $imageName = array_pop($imageName); + + foreach ($this->imageData as $key => $value) { + if ($value->name .'.'.$value->type == $imageName) { + $imageRet = $value->encodedData; + } + } + if ($imageRet == '') { + return ''; + } + return $matches[1] . $imageRet; + } +} + +/** +* The function is use to stitch the image to the SVG when downloaded as SVG +* @param [string] $svg [SVG with image link] +* @param [array] $imageData [Image datauri array] +* @return [string] [SVG with imageDatauri] +*/ +function stitchImageToSvg ($svg, $imageData) { + if($imageData != null) { + $imageData = json_decode($imageData); + $callback = new stitchImageCallback($imageData); + return preg_replace_callback("/(<image[^>]*xlink:href *= *[\"']?)([^\"']*)/i", array($callback, 'callback'), $svg); + } else { + return $svg; + } + +} +/** + * Gets Export data from FCExporter - main module and build the export binary/objct. + * @param $stream (string) export image data in FusionCharts compressed format + * $meta {array) Image meta data in keys "width", "heigth" and "bgColor" + * $exportParams {array} Export related parameters + * @return image object/binary + */ +function exportProcessor($stream, $meta, $exportParams, $imageData=null) { + + // get mime type list parsing MIMETYPES constant declared in Export Resource PHP file + $ext = strtolower($exportParams["exportformat"]); + $ext2 = ''; + $mimeList = bang(@MIMETYPES); + $mimeType = $mimeList[$ext]; + + // prepare variables + if (get_magic_quotes_gpc()) { + $stream = stripslashes($stream); + } + + // create a new export data + $tempFileName = md5(rand()); + if ('jpeg' == $ext || 'jpg' == $ext) { + $ext = 'png'; + $ext2 = 'jpg'; + } + + $tempInputSVGFile = realpath(TEMP_PATH) . "/{$tempFileName}.svg"; + $tempOutputFile = realpath(TEMP_PATH) . "/{$tempFileName}.{$ext}"; + $tempOutputJpgFile = realpath(TEMP_PATH) . "/{$tempFileName}.jpg"; + $tempOutputPngFile = realpath(TEMP_PATH) . "/{$tempFileName}.png"; + + if ($ext != 'svg') { + + // width format for batik + $width = @$meta['width']; + $height = @$meta['height']; + + $size = ''; + if (!empty($width) && !empty($height)) { + $size = "-w {$width} -h {$height}"; + } + // override the size in case of pdf output + if ('pdf' == $ext) { + $size = ''; + } + + //batik bg color format + $bg = @$meta['bgColor']; + if ($bg) { + $bg = " --export-background=".$bg; + } + + // generate the temporary file + if (!file_put_contents($tempInputSVGFile, $stream)) { + die("Couldn't create temporary file. Check that the directory permissions for + the " . TEMP_PATH . " directory are set to 777."); + } + + // do the conversion + //$command = "java -jar ". BATIK_PATH ." -m $mimeType $width $bg $tempInputSVGFile"; + $command = INKSCAPE_PATH . "$bg --without-gui {$tempInputSVGFile} --export-{$ext} $tempOutputFile {$size}"; + + //echo $command;exit; + $output = shell_exec($command); + if ('jpg' == $ext2) { + $comandJpg = CONVERT_PATH . " -quality 100 $tempOutputFile $tempOutputJpgFile"; + $tempOutputFile = $tempOutputJpgFile; + + $output .= shell_exec($comandJpg); + } + + // catch error + if (!is_file($tempOutputFile) || filesize($tempOutputFile) < 10) { + $return_binary = $output; + raise_error($output, true); + } + // stream it + else { + $return_binary = file_get_contents($tempOutputFile); + } + + // delete temp internal image files if exist + $imageData = json_decode($imageData); + if ($imageData) { + foreach ($imageData as $key => $value) { + $tempInternalImage = realpath(TEMP_PATH) . "/{$value->name}.{$value->type}"; + if (file_exists($tempInternalImage)) { + unlink($tempInternalImage); + } + } + } + + // delete temp files + if (file_exists($tempInputSVGFile)) { + unlink($tempInputSVGFile); + } + if (file_exists($tempOutputFile)) { + unlink($tempOutputFile); + } + if (file_exists($tempOutputPngFile)) { + unlink($tempOutputPngFile); + } + + // SVG can be streamed back directly + } else if ($ext == 'svg') { + $stream = stitchImageToSvg($stream, $imageData); + $return_binary = $stream; + } else { + raise_error("Invalid Export Format.", true); + } + + // return export ready binary data + return @$return_binary; +} + +/** + * exports (save/download) SVG to export formats. + * @param $exportObj (mixed) binary/objct exported by exportProcessor + * @param $exportSettings (array) various server-side export settings stored in keys like + * "type", "ready" "filepath" etc. Required for 'save' expotAction. + * For 'download' action "filepath" is blank (this is checked to find + * whether the action is "download" or not. + * @param $quality (integer) quality factor 0-1 (1 being the best quality). As of now we always pass 1. + * + * @return false is fails. {filepath} if succeeds. Only returned when action is 'save'. + */ +function exportOutput($exportObj, $exportSettings, $quality = 1) { + + // calls svgparser function that saves/downloads binary + // store saving status in $doneExport which receives false if fails and true on success + $doneExport = filesaver($exportObj, @$exportSettings ['filepath']); + + // check $doneExport and if true sets status to {filepath}'s value + // set false if fails + $status = ( $doneExport ? basename(@$exportSettings ['filepath']) : false ); + + // return status + return $status; +} + +/** + * emulates imagepng/imagegif/imagejpeg. It saves data to server + * @param $exportObj (resource) binary exported by exportProcessor + * @param $filepath (string) Path where the exported is to be stored + * when the action is "download" it is null. + * + * @return (boolean) false is fails. true if succeeds. Only returned when action is 'save'. + */ +function filesaver($exportObject, $filepath) { + + // when filepath is null the action is 'download' + // hence write the bimary to response stream and immediately terminate/close/end stream + // to prevent any garbage that might get into response and corrupt the binary + if (!@$filepath) + die($exportObject); + + // open file path in write mode + $fp = @fopen($filepath, "w"); + + if ($fp) { + // write binary + $status = @fwrite($fp, $exportObject); + //close file + $fc = @fclose($fp); + } + + // return status + return (bool) @$status; +} + +/** + * Converts Hex color values to rgb + * + * @param string $h Hex values + * @param string $sep rgb value separator + * @return string + */ +function hex2rgb($h, $sep = "") { + $h = str_replace("#", "", $h); + + if (strlen($h) == 3) { + $r = hexdec(substr($h, 0, 1) . substr($h, 0, 1)); + $g = hexdec(substr($h, 1, 1) . substr($h, 1, 1)); + $b = hexdec(substr($h, 2, 1) . substr($h, 2, 1)); + } else { + $r = hexdec(substr($h, 0, 2)); + $g = hexdec(substr($h, 2, 2)); + $b = hexdec(substr($h, 4, 2)); + } + $rgb = array($r, $g, $b); + if ($sep) { + $rgb = implode($sep, $rgb); + } + return $rgb; +} + +return 'true'; diff --git a/graphs/fusioncharts-suite-xt/integrations/php/fusioncharts-wrapper/fusioncharts.php b/graphs/fusioncharts-suite-xt/integrations/php/fusioncharts-wrapper/fusioncharts.php new file mode 100755 index 0000000000000000000000000000000000000000..06bb39adfe6116c83346a841c1df56fcb9165ed7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/fusioncharts-wrapper/fusioncharts.php @@ -0,0 +1,81 @@ +<?php + + class FusionCharts { + + private $eventOptions = array(); + private $constructorOptions = array(); + + private $baseTemplate = ' + <script type="text/javascript"> + FusionCharts.ready(function () { + __FC__ + }); + </script>'; + + private $constructorTemplate = 'new FusionCharts(__constructorOptions__);'; + private $renderTemplate = 'FusionCharts("__chartId__").render();'; + private $eventTemplate = 'FusionCharts("__chartId__").addEventListener("_fceventname_",_fceventbody_);'; + + // constructor + function __construct($type, $id, $width = 400, $height = 300, $renderAt, $dataFormat, $dataSource) { + isset($type) ? $this->constructorOptions['type'] = $type : ''; + isset($id) ? $this->constructorOptions['id'] = $id : 'php-fc-'.time(); + isset($width) ? $this->constructorOptions['width'] = $width : ''; + isset($height) ? $this->constructorOptions['height'] = $height : ''; + isset($renderAt) ? $this->constructorOptions['renderAt'] = $renderAt : ''; + isset($dataFormat) ? $this->constructorOptions['dataFormat'] = $dataFormat : ''; + isset($dataSource) ? $this->constructorOptions['dataSource'] = $dataSource : ''; + } + + //Add event + function addEvent($eventName, $funcName){ + isset($eventName) ? $this->eventOptions[$eventName] = $funcName : ''; + } + + //Add message + function addMessage($messageName, $messageValue){ + isset($messageName) ? $this->constructorOptions[$messageName] = $messageValue : ''; + } + + // render the chart created + // It prints a script and calls the FusionCharts javascript render method of created chart + function render() { + $tempArray = array(); + foreach($this->constructorOptions as $key => $value) { + if ($key === 'dataSource') { + $tempArray['dataSource'] = '__dataSource__'; + } else { + $tempArray[$key] = $value; + } + } + + $jsonEncodedOptions = json_encode($tempArray); + $dataFormat = $this->constructorOptions['dataFormat']; + + if ($dataFormat === 'json') { + $jsonEncodedOptions = preg_replace('/\"__dataSource__\"/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } elseif ($dataFormat === 'xml') { + $jsonEncodedOptions = preg_replace('/\"__dataSource__\"/', '\'__dataSource__\'', $jsonEncodedOptions); + $jsonEncodedOptions = preg_replace('/__dataSource__/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } elseif ($dataFormat === 'xmlurl') { + $jsonEncodedOptions = preg_replace('/__dataSource__/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } elseif ($dataFormat === 'jsonurl') { + $jsonEncodedOptions = preg_replace('/__dataSource__/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } + + $tempData = preg_replace('/__constructorOptions__/', $jsonEncodedOptions, $this->constructorTemplate); + foreach($this->eventOptions as $key => $value) { + $tempEvtTmp = preg_replace('/__chartId__/', $this->constructorOptions['id'], $this->eventTemplate); + $tempEvtTmp = preg_replace('/_fceventname_/', $key, $tempEvtTmp); + $tempEvtTmp = preg_replace('/_fceventbody_/', $value, $tempEvtTmp); + $tempData .= $tempEvtTmp; + } + $tempData .= preg_replace('/__chartId__/', $this->constructorOptions['id'], $this->renderTemplate); + + $renderHTML = preg_replace('/__FC__/', $tempData, $this->baseTemplate); + + echo $renderHTML; + } + + } +?> diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/includes/fusioncharts.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/includes/fusioncharts.php new file mode 100755 index 0000000000000000000000000000000000000000..06bb39adfe6116c83346a841c1df56fcb9165ed7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/includes/fusioncharts.php @@ -0,0 +1,81 @@ +<?php + + class FusionCharts { + + private $eventOptions = array(); + private $constructorOptions = array(); + + private $baseTemplate = ' + <script type="text/javascript"> + FusionCharts.ready(function () { + __FC__ + }); + </script>'; + + private $constructorTemplate = 'new FusionCharts(__constructorOptions__);'; + private $renderTemplate = 'FusionCharts("__chartId__").render();'; + private $eventTemplate = 'FusionCharts("__chartId__").addEventListener("_fceventname_",_fceventbody_);'; + + // constructor + function __construct($type, $id, $width = 400, $height = 300, $renderAt, $dataFormat, $dataSource) { + isset($type) ? $this->constructorOptions['type'] = $type : ''; + isset($id) ? $this->constructorOptions['id'] = $id : 'php-fc-'.time(); + isset($width) ? $this->constructorOptions['width'] = $width : ''; + isset($height) ? $this->constructorOptions['height'] = $height : ''; + isset($renderAt) ? $this->constructorOptions['renderAt'] = $renderAt : ''; + isset($dataFormat) ? $this->constructorOptions['dataFormat'] = $dataFormat : ''; + isset($dataSource) ? $this->constructorOptions['dataSource'] = $dataSource : ''; + } + + //Add event + function addEvent($eventName, $funcName){ + isset($eventName) ? $this->eventOptions[$eventName] = $funcName : ''; + } + + //Add message + function addMessage($messageName, $messageValue){ + isset($messageName) ? $this->constructorOptions[$messageName] = $messageValue : ''; + } + + // render the chart created + // It prints a script and calls the FusionCharts javascript render method of created chart + function render() { + $tempArray = array(); + foreach($this->constructorOptions as $key => $value) { + if ($key === 'dataSource') { + $tempArray['dataSource'] = '__dataSource__'; + } else { + $tempArray[$key] = $value; + } + } + + $jsonEncodedOptions = json_encode($tempArray); + $dataFormat = $this->constructorOptions['dataFormat']; + + if ($dataFormat === 'json') { + $jsonEncodedOptions = preg_replace('/\"__dataSource__\"/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } elseif ($dataFormat === 'xml') { + $jsonEncodedOptions = preg_replace('/\"__dataSource__\"/', '\'__dataSource__\'', $jsonEncodedOptions); + $jsonEncodedOptions = preg_replace('/__dataSource__/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } elseif ($dataFormat === 'xmlurl') { + $jsonEncodedOptions = preg_replace('/__dataSource__/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } elseif ($dataFormat === 'jsonurl') { + $jsonEncodedOptions = preg_replace('/__dataSource__/', $this->constructorOptions['dataSource'], $jsonEncodedOptions); + } + + $tempData = preg_replace('/__constructorOptions__/', $jsonEncodedOptions, $this->constructorTemplate); + foreach($this->eventOptions as $key => $value) { + $tempEvtTmp = preg_replace('/__chartId__/', $this->constructorOptions['id'], $this->eventTemplate); + $tempEvtTmp = preg_replace('/_fceventname_/', $key, $tempEvtTmp); + $tempEvtTmp = preg_replace('/_fceventbody_/', $value, $tempEvtTmp); + $tempData .= $tempEvtTmp; + } + $tempData .= preg_replace('/__chartId__/', $this->constructorOptions['id'], $this->renderTemplate); + + $renderHTML = preg_replace('/__FC__/', $tempData, $this->baseTemplate); + + echo $renderHTML; + } + + } +?> diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/index.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/index.php new file mode 100755 index 0000000000000000000000000000000000000000..61d912cbebdb9a867383b8f62809f9c62c3f079b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/index.php @@ -0,0 +1,118 @@ + +<!DOCTYPE html> +<html> + <head> + </head> + <body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <h1>FusionCharts Samples for PHP</h1> + <ol> + <li> + <a href="pages/simple-chart.php">Simple Chart Using Array</a> + </li> + <li> + <a href="pages/simple-gauge.php">Simple Widget Using Array</a> + </li> + <li> + <a href="pages/simple-map.php">Simple Map Using Array</a> + </li> + <li> + <a href="pages/angular-gauge-sample.php">Angular Gauge</a> + </li> + <li> + <a href="pages/chart-export-at-client.php">Export Chart As Image (client-side)</a> <!----> + </li> + <li> + <a href="pages/chart-export-at-server.php">Export Chart As Image (server-side)</a> <!----> + </li> + <li> + <a href="pages/drilldown.php">Chart with Drill-Down Feature</a> + </li> + <li> + <a href="pages/mscolumn2d-sample.php">Multiseries Column 2D Chart</a> + </li> + <li> + <a href="pages/mscombi3d-chart-sample.php">Multiseries Combination 3D Chart</a> + </li> + <li> + <a href="pages/pie3d-chart-sample.php">Pie 3D Chart</a> + </li> + <li> + <a href="pages/stacked-column2d-line-chart-sample.php">Stacked Column 2D with Line Chart</a> + </li> + <li> + <a href="pages/chart-database.php">Chart Using Database (MySQL)</a> <!----> + </li> + <li> + <a href="pages/usa-map-sample.php">USA Map</a> + </li> + <li> + <a href="pages/chart-themes.php">Chart Themes</a> <!----> + </li> + <li> + <a href="pages/chart-from-xml-url.php">Chart using data from XML URL</a> <!----> + </li> + <li> + <a href="pages/chart-from-json-url.php">Chart using data from JSON URL</a> <!----> + </li> + <li> + <a href="pages/dynamic-chart-resize.php">Dynamic Chart Resize</a> <!----> + </li> + <li> + <a href="pages/dynamic-chart-type.php">Chart Type Change At Runtime</a> <!----> + </li> + <li> + <a href="pages/chart-annotation.php">Using Annotations On Chart</a> <!----> + </li> + <li> + <a href="pages/updating-different-chart.php">Updating Different Chart</a> <!----> + </li> + <li> + <a href="pages/different-language.php">Different language example</a> <!----> + </li> + <li> + <a href="pages/chart-special-char.php">Chart using special character in XML data format</a> <!----> + </li> + <li> + <a href="pages/customizing-tooltip.php">Customizing tooltip</a> <!----> + </li> + <li> + <a href="pages/product-life-cycle-event.php">Example of event(product life cycle event)</a> <!----> + </li> + <li> + <a href="pages/special-event.php">Example of event(interactive event)</a> <!----> + </li> + <li> + <a href="pages/chart-message.php">Message related attributes and configuration</a> <!----> + </li> + <li> + <a href="pages/interactive-event.php">Example of event(interactive event)</a> <!----> + </li> + <li> + <a href="pages/number-format.php">Example of event(Number format)</a> <!----> + </li> + <li> + <a href="pages/special-chart-type-api.php">Example of event(SpecialChartType API)</a> <!----> + </li> + <li> + <a href="pages/chart-instance-level-api.php">Add/Remove event at runtime(Chart instance level API)</a> <!----> + </li> + <li> + <a href="pages/chart-product-level-api.php">Example of product level API</a> <!----> + </li> + <li> + <a href="pages/updating-chart-properties.php">Updating chart properties at runtime</a> <!----> + </li> + <li> + <a href="pages/highlight-specific-data-points.php">Highlight specific data points through API</a> <!----> + </li> + <li> + <a href="pages/update-data-runtime.php">Update data at runtime</a> <!----> + </li> + <li> + <a href="pages/get-data-from-scatter-chart.php">Get data from select scatter chart and show them in tabular format</a> <!----> + </li> + + + </ol> + </body> +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/mysql-dump/drilldownsdb.sql b/graphs/fusioncharts-suite-xt/integrations/php/samples/mysql-dump/drilldownsdb.sql new file mode 100755 index 0000000000000000000000000000000000000000..1f181fdbeb61d3f95792afe421c21c6d2fa9c2c9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/mysql-dump/drilldownsdb.sql @@ -0,0 +1,2210 @@ +-- MySQL dump 10.13 Distrib 8.0.11, for osx10.13 (x86_64) +-- +-- Host: 127.0.0.1 Database: drilldowndb +-- ------------------------------------------------------ +-- Server version 8.0.11 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; + SET NAMES utf8mb4 ; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +CREATE DATABASE drilldowndb +USE drilldowndb + +-- +-- Table structure for table `sales_record` +-- + +DROP TABLE IF EXISTS `sales_record`; +/*!40101 SET @saved_cs_client = @@character_set_client */; + SET character_set_client = utf8mb4 ; +CREATE TABLE `sales_record` ( + `Region` varchar(45) DEFAULT NULL, + `Country` varchar(45) DEFAULT NULL, + `City` varchar(45) DEFAULT NULL, + `Total Sales` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sales_record` +-- + +LOCK TABLES `sales_record` WRITE; +/*!40000 ALTER TABLE `sales_record` DISABLE KEYS */; +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 174); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 167.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 1696); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 77); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1483.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 251.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 100.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 233.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 2591.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 49.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1088); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 604.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 53.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 403.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 304); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 486.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 1320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 393); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 124.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 877.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 156); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 759.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1104.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 153.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 80); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 20.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 122.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 780); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 590.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 251.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 160); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 203.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 60.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 833.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1241.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 287.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 532); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 192.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 936); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 735); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 3079.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 215.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 990); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 111.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 119.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 555.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 920); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 388.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 667.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 595.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 149.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 881.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 475.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 344); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 194.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 43.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 263.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 372); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 728); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 472.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 248); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 280.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 467.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 43.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 384); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 186); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 7.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 21.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 57.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 124.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 31.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 248); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 131.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 952); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 83.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 526.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 325.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 543.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 55.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 647.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 587.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 943); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1576); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 555.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 224); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 143.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 58.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 29.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 239.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1485); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 104); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 371.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 84.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1296); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 175.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 37.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 259.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 552); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 571.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 37.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 121.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 417); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 864); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 556); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 607.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1319.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 591); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 109.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 408); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 147); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1248); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1019.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 441.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 587.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 503.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 149.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 480); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 34.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 1249.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 2474.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 431.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 207); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 262); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 29.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 394); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 30); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 28.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 352); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 22.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 736); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 51.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 139); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 197); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 67.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 145.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 883.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 524); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 182.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1023.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 317.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 984.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 156.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 77); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2758); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 154); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 249.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 509.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 516); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 44.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 57.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 291.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1007.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1759.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2807.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 57.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 167.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 422.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 249.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 839.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 724.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 317.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 396); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 672); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 72.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 165.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 4215.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1244.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 694.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 88.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1999.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 111.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 121.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 186); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 79.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 687.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 44.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 106.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 249.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 153.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 2035); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 316.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 597.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 304); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 582.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 695); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 624); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 310.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 176); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 2183.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1103.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 999.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 92.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1471.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 16); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 395.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 364.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 559.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 607.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 767.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1330); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 39.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 216); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 616); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 2239.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 584); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1123.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 719.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 58.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 37.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 215.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 141.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 194.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 518.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 4215.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 100.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1193.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 167.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 117.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 201.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 10539.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 172.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 396); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 230.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 576); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 743.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 398.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 217.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 35.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 111.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 303.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 778.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 699.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 2175.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1092); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 3465); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 2108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 165.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 777.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1495.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 848); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 141.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 74.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 172.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 864); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 86); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 403.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 52); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 403.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 106.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 252); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 72.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 39.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 473.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 930.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 1980); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 546.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 215.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 798); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 159.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 91); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 777.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 8431.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1903.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1167.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 847.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 859.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 279); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 59); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 419.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 727.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 287.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 103.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 61.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 561.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 335.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 372.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 523.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 163.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 544); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1386); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1814.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 408); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 239.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 543.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 79.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 218.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 528); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 113.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 111.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1048); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 396.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 788); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 599.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 575.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 667.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 780.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 78.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1742.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 394); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 268.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1833.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 230.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1032); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 583.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 79.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 763.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2303.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 516); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 145.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 2079); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 480); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 372.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2128); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1032); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2281.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 291.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 713.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 746.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 447.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 479.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 239.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1528.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 75.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 29.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 208); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 35.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1379); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 223.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 704); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 192.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 619.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 395.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 371.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 345.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 1576); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 131.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 62.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 146); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 262); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 312); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 10540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 18.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 359.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 364); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 418); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 364.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 1631.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 575.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 1551.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 9.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 239.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 29.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 747); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 392.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 103.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 49.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 880); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 863.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 10329); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 299.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 191.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 287.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 186.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 651); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 192); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1228.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1403.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3079.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1559.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 734.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 227.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 249); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 236); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 851.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 259.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 201.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 278); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1215.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 797.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 148.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 393); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 109.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 223.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 233.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 222.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 159.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 683.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 680.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2375.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2051.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 1755); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 472); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 816); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 100.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 436.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 312); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 373.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 115.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 231); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 86.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 88.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 87.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 71.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 29.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 83.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 292); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 588); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 34.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 149.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 294); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 347.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1379); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 495.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 35.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2303.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 930.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 470.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 571.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 546); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1549.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 152.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 299.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 277.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 39.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 95.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 516); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 319.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 335.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1584); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 747); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1092); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 736); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 860); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 383.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 191.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 1112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 209.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 24.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 319.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 579.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1151.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 4.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 151.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 153.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 281.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 911.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 544); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 1781.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 294); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 227.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 325); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 100.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 134.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 165.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 552); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 607.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 486.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 30.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 212.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 287.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 763.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 24); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 206.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 223.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 655.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 308.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 349.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 815.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 604.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 38.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 216); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 167.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 287.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 495.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 6324); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 733.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 798); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 228); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 528); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 384); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1088); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Walla Walla', 147); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 391.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 311.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 112); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 147); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 127.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 303.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 159.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 575.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 719.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 128); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 36.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 747); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 141.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 239.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 251.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 250.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 2640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 223.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 232.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 72.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 671.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 223.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 251.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 135.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 287.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 154); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 52); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 199.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 425.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 695); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 260); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 92); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 185.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 149); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 199.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 196.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1627.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 421); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 228); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 328); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 712.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 147.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 251.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 209.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 689.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 191.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 136.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 4456.44); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 278.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1099.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1499.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 399.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 44.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 107.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 56.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 407.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 399.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 1599.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 427.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1596); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 820.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 387.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1551.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 872.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 5268); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 39.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2855.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1562.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 771.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 220); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 22.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 3952.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 175.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 495.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 339.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 164); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 96.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 719.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 960); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 517.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 459.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 974.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1214.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 467.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 57.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 258.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 2760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 111.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 275.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 143.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1139.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1099.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 569.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 19.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 313.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 900); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 110); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 408); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1099.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 835.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 359.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 258.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 183.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 74.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 1049.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 183.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 97.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 824.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 569.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1189.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 318); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 265); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 730.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 135); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 105); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 34.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 37.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1249.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 7905); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 437.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 157.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1053.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 757.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 193.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 314.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 178.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1139.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 629.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 319.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Walla Walla', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 1972); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 767.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 139.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 135.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 687.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 949.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2543.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 311.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 92); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 59.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 284.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 697.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 778); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 648); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 232.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 244.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 523.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 179.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 985.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 129.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 697.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 321.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 80.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1059.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1519.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 835.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 997.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 237.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 590.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 115.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 431.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 517.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 739.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 194.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 2650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 49.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 492.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 475); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 490); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 623.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 74.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 599.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 112.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 598.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 734.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 1124.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 749.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 2199.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 437.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 314.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 2279.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 255.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 391.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 209.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 319.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 920); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 116.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 702); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 820); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 36.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 493); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 199.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 263.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 1044); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 408.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 117); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 162.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 348.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 86.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 631.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 387.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 78); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 252); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1237.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 815.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 624.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 27.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 187.38); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 260); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2499.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1399.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 779.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 372.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 387.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 156.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1700.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 719.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 71.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 168); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 397.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 539.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3419.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2339.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 189.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1053.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 232.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 157.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 252.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 193.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 493); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 29.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1925); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 64.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1008); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 499.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 76.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 179.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 523.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1099.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 2379.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 322.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 439.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 479.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 492.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3900); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 772.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 417.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 1064); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 398.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 2170); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1045); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 47.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 294); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 80); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 3952.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 532); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 224.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 322.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 1649.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 1750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 187.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 22.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 46); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 322.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 224.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 488.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 137.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 249.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 13.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 539.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 456); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 742.74); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 194.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 69.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 393.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 680); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 430); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 739.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 524.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 2475.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 299.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 287.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 630); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 61.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 569.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 49.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1367.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 77.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1092.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3943.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1050); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 3125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 795); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 15.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 219.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 320.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 550); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 79.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 406.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 2279.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 442.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 2088); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 719.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 224.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 950); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1104); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 299.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 569.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 683.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 377.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 23.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 249.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 920); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 251.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 269.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 557.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 644.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 454.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 276); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 67.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 522); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 776.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 819.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 223.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 110.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 419.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 51.53); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 523.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 679.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 263.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 359.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 44.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 192.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 69.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 544.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 56.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 775); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 231.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1710); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1020); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1287.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1869.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 909.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 249.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 441.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 599.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Elgin', 1701); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 53.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 649.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 551.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 419.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1059.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 743.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 455.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 315.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 4456.44); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 210.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1619.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 300.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 99.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 498.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 193.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 174.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 493); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 252.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 3952.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 52.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 276); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 697.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 328); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 397.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 62); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 64.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 408.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 936.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 19.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1158); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 223.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 660); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 872.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 249.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 559.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 275.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 119.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 931); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 68); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 232.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 368); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 1020); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 620); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 38.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1169.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 468.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 4849.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1237.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 113.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 557.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 2735.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 196); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 629.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 759.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 389.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 4951.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 466.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2366.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 878); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 582); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 446.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1079.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 224.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2700); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 780); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 216); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 64.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 161.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 397.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 449.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 311.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1485.43); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1368.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 119.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 89.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 167.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 499.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1289.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 2309.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 429.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 629.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 270); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1925); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 132); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 157.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 306); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 128); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 349); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 1104); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 780); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 419.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 85.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 1600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 1484); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 46); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 47.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 405.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3936); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 98.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 558); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 936.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1045); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 569.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1052.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 474.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 683.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 158.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 651); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 645); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 50); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 371); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 319.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 111.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 899.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1368); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 349); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 986); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 749.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 77.42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 297.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 378); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 172); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 972.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 57); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 562.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 325.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 468.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 496); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Montréal', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 28); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 550); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 105); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 779.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 379.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 549.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 900); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 261.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 37.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 210.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 399.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1589.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 372); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 175); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 569.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 25.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 842); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 24); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 52.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Reims', 126); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 227.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 629.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 531.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 284.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1700); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1218); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 335.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 919.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 311.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2475); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 243.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 392); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 443.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1440); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 100); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 337.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 395.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 396); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 736); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1064); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 330); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 116.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 379.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 1374.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 374.66); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 776.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 324.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 225); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 38); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 50); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 55.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 284.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1139.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 272.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 899.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 1312.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 74.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 719.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 385); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1479); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 798); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 624.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 167.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 1756); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 1379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 489.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 139.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 288); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1484); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 2280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 126); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 199.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2339.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1683.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 1050); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 28); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 84); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 258); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 289.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 104.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 739.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 314.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 344); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 2228.22); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 1375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1287); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 874.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 54.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 24.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 850); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 186); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 199.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 167.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 256.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 6359.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 279.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 96.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 349); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 986); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 22.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 759.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 12.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1317.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 570); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 35.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 1043.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Caracas', 77.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1199.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 388.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 325.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 284.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 2475.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 459.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 309.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1875); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 270); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 1317); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lille', 225); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 89.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 759.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1733.01); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 192.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 22.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 187.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 135.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 56); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 348.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 44.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1134.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1364.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 655.63); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 194.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1163.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 863.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 98.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 348); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 119.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 89.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1049.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 529.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 52.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 1559.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 2475.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 647); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 1589.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 1439.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 246.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 220.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 209.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 824.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1116); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1094.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 79.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 2635); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 42.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 149.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 18.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 759.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 899.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Vancouver', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 138); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 162); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 552); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 199.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 1391.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 260); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 227.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 193); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 919.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 101.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 854.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 7904.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 985.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1249.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 7905); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1103.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1232.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 193); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 322); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 155); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 318); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 147.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Kirkland', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 419.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 292.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 2199.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 194.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 135); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 374.76); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 656); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 437.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Strasbourg', 292.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 465); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 378); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 405); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 527); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 714); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 504); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1020); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 18.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 2108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 414); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 17.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 139.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 311); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 99.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 599.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 112.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 295.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 990.27); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 517.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 825); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 25.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1092); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 2040); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 997.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 460); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 377.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 71.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 1562.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 949.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 397.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 521.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 83.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 179.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 496); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 2750); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 230); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 211.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 735); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 629.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 449.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 587.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 794.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1596); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 462); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1439.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 110.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1559.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 341.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1529.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1182.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 640.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 291); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 490); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 561.99); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 279.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 9.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Lyon', 449.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 94.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 139.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 194.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 2309.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 2465); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3099.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 389.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 872.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 175); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 315.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1092.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1237.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 439); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 179.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 260.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 997.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 159); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1638); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 87.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 147.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 56); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 158.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 15809.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1439.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 398.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 26.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1035.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 98.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 624.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 839.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 106); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 1249.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 209.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 623.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 239.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 985.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 498.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 442); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 136.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 310); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 230); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 199.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 252); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 665); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 523.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1562.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1619.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 220.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 210.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 269.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 854.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 749.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 150); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 399.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 238.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 399.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 797.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'San Francisco', 252.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 325); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 2170); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 437.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 225); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 10540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 585); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 135.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 388.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 2199.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 2970.96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 906.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 167.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1799.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 929.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 495); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 810); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1674.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3400); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 608); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 9903.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 932.04); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 30); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 143.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 44.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 289.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 645); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 719.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 295.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 442.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 198.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1725.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 359.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 427.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 108.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 599.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 97.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 261.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 48.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 142.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 839.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 7427.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 659.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 99.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 198.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 537.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 74.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 104.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 192); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 25.89); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 340); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1079.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 849.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 418.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 368); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 1756); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 585); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 157.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 139.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 459.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 335.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 619.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 1367.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Luleå', 46.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 474.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 83.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 64.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 348); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 405); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 47.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Barcelona', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 379.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1097.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 599.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 397.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 251.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 585); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 523.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 690.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 556.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 154.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 65.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'Cowes', 855); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 378); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 249.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Resende', 71.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 569.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 364.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 119.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1103.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1665.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 752.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 189.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 559.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 240); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 549.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1478.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 999.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1740); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 441); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 104.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 349.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 684); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Leipzig', 125); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 775); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 112.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 520); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 220); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 146.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 2120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 930); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 2958); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Bergamo', 110); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 37.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 57.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 387.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 399.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 91.2); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 4049.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 624.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 488.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 312.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 815.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 92.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 133); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 424); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 776.7); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 720); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 266); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 427); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 174); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 154.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 44.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 231.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 41.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1350); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 462); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 656); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 324); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 792); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 67.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 375); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 1317.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 848); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 208); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 455.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 591.45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 110.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Münster', 800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1140); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 135); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 133); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 279.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Nantes', 1733.06); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 17.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 156.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 57.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Versailles', 77.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Lander', 439); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 77.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 285); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 530); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 878); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 799.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 399.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 184); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 116.55); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 540); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1317); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1536.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 309.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 15810); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 414); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 503.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 292.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 959.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 628.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 499.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 1119.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 630); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 1215); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 195); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 276); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 696); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 1971.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1000); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 315); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 38.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 839.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1559.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1880.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 949.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 299.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1619.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 69.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 6189.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 337.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'Århus', 989.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 136); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 560); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 1600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 239.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 139.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 199.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 232.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 192.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 794.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 272.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 549.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 134.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 1800); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 300); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 336); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 269.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 335.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 960); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 72); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 184); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Butte', 70); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 187.38); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Bruxelles', 108); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Helsinki', 550); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 144); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 247.33); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 1237.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Portugal', 'Lisboa', 196); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 3191.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 1259.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 451.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 54); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 341.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 306); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 600); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 529.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Berlin', 430); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 459.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1223.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'München', 1289.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 56); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Madrid', 25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 270.1); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 388.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Norway', 'Stavern', 234); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 187.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 304); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 6050); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 450); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 625); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Portland', 190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 36); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Köln', 743.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 208.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1215); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1967.49); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 2331.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Cunewalde', 1218); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 322); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 120); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1380); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 374.76); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 442.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1075); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 179.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Finland', 'Oulu', 119.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 500); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 530); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 134.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1035.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Brandenburg', 1320); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 760); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 526.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1899.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 1494.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 7427.15); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 5499.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 810); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 480); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 94.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 665); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 344); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 665); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 6587.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 1650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 2295.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 1295.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 149.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 233.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Anchorage', 171); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 1080); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 74.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 42); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 1650); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Spain', 'Sevilla', 60); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 91.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 14); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Belgium', 'Charleroi', 645); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 912); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 432); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'I. de Margarita', 546); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 569.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Bern', 1317); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 291.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Paris', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Poland', 'Warszawa', 591.6); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 37.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 1272); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 759.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 479.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Stuttgart', 323.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 449.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 640.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Canada', 'Tsawassen', 525); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 189.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Campinas', 151.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Sweden', 'Bräcke', 899.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Toulouse', 44.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1379.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 284.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 2187.3); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 640); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Salzburg', 831.05); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Argentina', 'Buenos Aires', 280); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 67.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 1060); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'San Cristóbal', 390); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1200); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 840); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 1700); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'UK', 'London', 45); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 30); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 714); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Mannheim', 114); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 180); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 468); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'Rio de Janeiro', 1190); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 136); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Torino', 130); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Eugene', 510); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 327.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Italy', 'Reggio Emilia', 179.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 420); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 735.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Ireland', 'Cork', 289.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 3002.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 115.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 819.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 95.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Boise', 687.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 103.31); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 148.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 52.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 386.4); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Seattle', 490); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Aachen', 86.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 364.65); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 1655.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Brazil', 'São Paulo', 363.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 360); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 719.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 379.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 523.35); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Germany', 'Frankfurt a.M. ', 250); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 449.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('South America', 'Venezuela', 'Barquisimeto', 59.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 152); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 386); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 357.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Austria', 'Graz', 4322.5); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 210); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'Mexico', 'México D.F.', 90); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Denmark', 'København', 244.25); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 189.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 359.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'Switzerland', 'Genève', 35.85); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 499.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 464.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('Europe', 'France', 'Marseille', 91.75); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 455.8); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 40); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 22); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 24.98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 29.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 79.9); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 31); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 75.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 24); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 23.22); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 34.87); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 80.96); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 18); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 32); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 35.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 28.95); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 35.98); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 14); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 48); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 67.94); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 66.47); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 17); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 29.99); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 31); +INSERT INTO sales_record (Region, Country, City, `Total Sales`) VALUES ('North America', 'USA', 'Albuquerque', 26); + +/*!40000 ALTER TABLE `sales_record` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2018-07-26 14:54:32 diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/angular-gauge-sample.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/angular-gauge-sample.php new file mode 100755 index 0000000000000000000000000000000000000000..7c9edd3763ba1b28fbecbeaacbb2d8c52689d01e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/angular-gauge-sample.php @@ -0,0 +1,70 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Angular Gauge</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $gaugeData = "{ + \"chart\": { + \"caption\": \"Nordstorm's Customer Satisfaction Score for 2017\", + \"lowerLimit\": \"0\", + \"upperLimit\": \"100\", + \"showValue\": \"1\", + \"numberSuffix\": \"%\", + \"theme\": \"fusion\", + \"showToolTip\": \"0\" + }, + \"colorRange\": { + \"color\": [{ + \"minValue\": \"0\", + \"maxValue\": \"50\", + \"code\": \"#F2726F\" + }, { + \"minValue\": \"50\", + \"maxValue\": \"75\", + \"code\": \"#FFC533\" + }, { + \"minValue\": \"75\", + \"maxValue\": \"100\", + \"code\": \"#62B58F\" + }] + }, + \"dials\": { + \"dial\": [{ + \"value\": \"81\" + }] + } + }"; + + // chart object + $Chart = new FusionCharts("angulargauge", "angulargauge-1" , "600", "400", "angulargauge-container", "json", $gaugeData); + + // Render the chart + $Chart->render(); + +?> + <h3>Angular Gauge</h3> + <div id="angulargauge-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-annotation.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-annotation.php new file mode 100755 index 0000000000000000000000000000000000000000..74320d156198f8d0d6763da37e98f2b0274ca86d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-annotation.php @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": + { + \"caption\": \"Bakersfield Central - Total footfalls\", + \"subCaption\": \"Last week\", + \"xAxisName\": \"Day\", + \"yAxisName\": \"No. of Visitors (In 1000s)\", + \"showValues\": \"0\", + \"theme\": \"fusion\" + }, + \"annotations\":{ + \"groups\": [ + { + \"id\": \"anchor-highlight\", + \"items\": [ + { + \"id\": \"high-star\", + \"type\": \"circle\", + \"x\": \"\$\dataset.0.set.2.x\", + \"y\": \"\$\dataset.0.set.2.y\", + \"radius\": \"12\", + \"color\": \"#6baa01\", + \"border\": \"2\", + \"borderColor\": \"#f8bd19\" + }, + { + \"id\": \"label\", + \"type\": \"text\", + \"text\": \"Highest footfall 25.5K\", + \"fillcolor\": \"#6baa01\", + \"rotate\": \"90\", + \"x\": \"\$\dataset.0.set.2.x+75\", + \"y\": \"\$\dataset.0.set.2.y-2\" + } + ] + } + ] + }, + \"data\": [ + { + \"label\": \"Mon\", + \"value\": \"15123\" + }, + { + \"label\": \"Tue\", + \"value\": \"14233\" + }, + { + \"label\": \"Wed\", + \"value\": \"25507\" + }, + { + \"label\": \"Thu\", + \"value\": \"9110\" + }, + { + \"label\": \"Fri\", + \"value\": \"15529\" + }, + { + \"label\": \"Sat\", + \"value\": \"20803\" + }, + { + \"label\": \"Sun\", + \"value\": \"19202\" + } + ] + }"; + + // chart object + $Chart = new FusionCharts("spline", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Using Annotations On Chart</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-database.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-database.php new file mode 100755 index 0000000000000000000000000000000000000000..058304ec0cb3c86ccb93101a87ba74f6cda84aef --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-database.php @@ -0,0 +1,80 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Chart Using Database (MySQL)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $hostdb = "127.0.0.1"; // MySQl host + $userdb = "root"; // MySQL username + $passdb = "password"; // MySQL password + $namedb = "drilldowndb"; // MySQL database name + + // Establish a connection to the database + $dbhandle = new mysqli($hostdb, $userdb, $passdb, $namedb); + + /*Render an error message, to avoid abrupt failure, if the database connection parameters are incorrect */ + if ($dbhandle->connect_error) { + exit("There was an error with your connection: ".$dbhandle->connect_error); + } + + $strQuery = "SELECT Country, SUM(`Total Sales`) as TotalSales FROM sales_record GROUP BY Country"; + + $labelValueArray = array(); + + $result = $dbhandle->query($strQuery) or exit("Error code ({$dbhandle->errno}): {$dbhandle->error}"); + if ($result) { + while($row = mysqli_fetch_array($result)) { + array_push($labelValueArray, + array( + "label" => $row["Country"], + "value" => $row["TotalSales"] + ) + ); + } + } + + $chartConfigObj = array ( "chart" => + array( + "caption" => "Sales by Country", + "xAxisName" => "Country", + "yAxisName" => "Total Sales", + "numberSuffix" => "K", + "theme" => "fusion" + ) + ); + + $chartConfigObj["data"] = $labelValueArray; + + $chartData = json_encode($chartConfigObj); + + // chart object + $Chart = new FusionCharts("pie3d", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + ?> + <h3>Chart Using Database (MySQL)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-export-at-client.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-export-at-client.php new file mode 100755 index 0000000000000000000000000000000000000000..a0b5c67967940c85be1b83768deb6d27a56f1cdd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-export-at-client.php @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"caption\": \"Salary Hikes by Country\", + \"subCaption\": \"2016 - 2017\", + \"exportEnabled\": \"1\", + \"theme\": \"fusion\" + }, + \"categories\": [{ + \"category\": [{ + \"label\": \"Australia\" + }, { + \"label\": \"New-Zealand\" + }, { + \"label\": \"India\" + }, { + \"label\": \"China\" + }, { + \"label\": \"Myanmar\" + }, { + \"label\": \"Bangladesh\" + }, { + \"label\": \"Thailand\" + }, { + \"label\": \"South Korea\" + }, { + \"label\": \"Hong Kong\" + }, { + \"label\": \"Singapore\" + }, { + \"label\": \"Taiwan\" + }, { + \"label\": \"Vietnam\" + }] + }], + \"dataset\": [{ + \"seriesName\": \"2016 Actual Salary Increase\", + \"plotToolText\": \"Salaries increased by <b>\$dataValue</b> in 2016\", + \"data\": [{ + \"value\": \"3\" + }, { + \"value\": \"3\" + }, { + \"value\": \"10\" + }, { + \"value\": \"7\" + }, { + \"value\": \"7.4\" + }, { + \"value\": \"10\" + }, { + \"value\": \"5.4\" + }, { + \"value\": \"4.5\" + }, { + \"value\": \"4.1\" + }, { + \"value\": \"4\" + }, { + \"value\": \"3.7\" + }, { + \"value\": \"9.3\" + }] + }, { + \"seriesName\": \"2017 Projected Salary Increase\", + \"plotToolText\": \"Salaries expected to increase by <b>\$dataValue</b> in 2017\", + \"renderAs\": \"line\", + \"data\": [{ + \"value\": \"3\" + }, { + \"value\": \"2.8\" + }, { + \"value\": \"10\" + }, { + \"value\": \"6.9\" + }, { + \"value\": \"6.7\" + }, { + \"value\": \"9.4\" + }, { + \"value\": \"5.5\" + }, { + \"value\": \"5\" + }, { + \"value\": \"4\" + }, { + \"value\": \"4\" + }, { + \"value\": \"4.5\" + }, { + \"value\": \"9.8\" + }] + }, { + \"seriesName\": \"Inflation rate\", + \"plotToolText\": \"\$dataValue projected inflation\", + \"renderAs\": \"area\", + \"showAnchors\": \"0\", + \"data\": [{ + \"value\": \"1.6\" + }, { + \"value\": \"0.6\" + }, { + \"value\": \"5.6\" + }, { + \"value\": \"2.3\" + }, { + \"value\": \"7\" + }, { + \"value\": \"5.6\" + }, { + \"value\": \"0.2\" + }, { + \"value\": \"1\" + }, { + \"value\": \"2.6\" + }, { + \"value\": \"0\" + }, { + \"value\": \"1.1\" + }, { + \"value\": \"2.4\" + }] + }] + }"; + + // chart object + $Chart = new FusionCharts("mscombi3d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Export Chart As Image (client-side)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-export-at-server.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-export-at-server.php new file mode 100755 index 0000000000000000000000000000000000000000..0d6fb0706376318d8e2e3a9890fe49f6b6077bd7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-export-at-server.php @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Export Chart As Image (server-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"caption\": \"Salary Hikes by Country\", + \"subCaption\": \"2016 - 2017\", + \"exportEnabled\": \"1\", + \"exportMode\": \"server\", + \"theme\": \"fusion\" + }, + \"categories\": [{ + \"category\": [{ + \"label\": \"Australia\" + }, { + \"label\": \"New-Zealand\" + }, { + \"label\": \"India\" + }, { + \"label\": \"China\" + }, { + \"label\": \"Myanmar\" + }, { + \"label\": \"Bangladesh\" + }, { + \"label\": \"Thailand\" + }, { + \"label\": \"South Korea\" + }, { + \"label\": \"Hong Kong\" + }, { + \"label\": \"Singapore\" + }, { + \"label\": \"Taiwan\" + }, { + \"label\": \"Vietnam\" + }] + }], + \"dataset\": [{ + \"seriesName\": \"2016 Actual Salary Increase\", + \"plotToolText\": \"Salaries increased by <b>\$dataValue</b> in 2016\", + \"data\": [{ + \"value\": \"3\" + }, { + \"value\": \"3\" + }, { + \"value\": \"10\" + }, { + \"value\": \"7\" + }, { + \"value\": \"7.4\" + }, { + \"value\": \"10\" + }, { + \"value\": \"5.4\" + }, { + \"value\": \"4.5\" + }, { + \"value\": \"4.1\" + }, { + \"value\": \"4\" + }, { + \"value\": \"3.7\" + }, { + \"value\": \"9.3\" + }] + }, { + \"seriesName\": \"2017 Projected Salary Increase\", + \"plotToolText\": \"Salaries expected to increase by <b>\$dataValue</b> in 2017\", + \"renderAs\": \"line\", + \"data\": [{ + \"value\": \"3\" + }, { + \"value\": \"2.8\" + }, { + \"value\": \"10\" + }, { + \"value\": \"6.9\" + }, { + \"value\": \"6.7\" + }, { + \"value\": \"9.4\" + }, { + \"value\": \"5.5\" + }, { + \"value\": \"5\" + }, { + \"value\": \"4\" + }, { + \"value\": \"4\" + }, { + \"value\": \"4.5\" + }, { + \"value\": \"9.8\" + }] + }, { + \"seriesName\": \"Inflation rate\", + \"plotToolText\": \"\$dataValue projected inflation\", + \"renderAs\": \"area\", + \"showAnchors\": \"0\", + \"data\": [{ + \"value\": \"1.6\" + }, { + \"value\": \"0.6\" + }, { + \"value\": \"5.6\" + }, { + \"value\": \"2.3\" + }, { + \"value\": \"7\" + }, { + \"value\": \"5.6\" + }, { + \"value\": \"0.2\" + }, { + \"value\": \"1\" + }, { + \"value\": \"2.6\" + }, { + \"value\": \"0\" + }, { + \"value\": \"1.1\" + }, { + \"value\": \"2.4\" + }] + }] + }"; + + + + // chart object + $Chart = new FusionCharts("mscombi3d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); +?> + + + + <h3>Export Chart As Image (server-side)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-from-json-url.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-from-json-url.php new file mode 100755 index 0000000000000000000000000000000000000000..2914e25c050b1d9b77cdaa4878ea2159d61fc9ac --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-from-json-url.php @@ -0,0 +1,39 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Chart using data from JSON URL</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "jsonurl", "data/data.json"); + + // Render the chart + $Chart->render(); + +?> + <h3>Chart using data from JSON URL</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-from-xml-url.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-from-xml-url.php new file mode 100755 index 0000000000000000000000000000000000000000..72685bdb90ef69b7c7ae2b6ff5d4e8a6362560e7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-from-xml-url.php @@ -0,0 +1,39 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Chart using data from XML URL</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "xmlurl", "data/data.xml"); + + // Render the chart + $Chart->render(); + +?> + <h3>Chart using data from XML URL</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-instance-level-api.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-instance-level-api.php new file mode 100755 index 0000000000000000000000000000000000000000..c3181af58532ea7578ff0bb5d051ccdb442563d0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-instance-level-api.php @@ -0,0 +1,146 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + track = function(){ + FusionCharts.addEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click on the plot to see the value along with the label"; + }; + clickHandler = function(e){ + document.getElementById("message").innerHTML = "You have clicked on plot <b>"+ e.data.categoryLabel + "</b> whose value is <b>" + e.data.displayValue + "</b>"; + }; + reset = function(){ + FusionCharts.removeEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click the below buttons to add an event dynamically to the chart"; + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subcaption\": \"In MMbbl = One Million barrels\", + \"xaxisname\": \"Country\", + \"yaxisname\": \"Reserves (MMbbl)\", + \"numbersuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Add/Remove event at runtime(Chart instance level API)</h3> + <div align="center" id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onClick="track()"> + <label for="radio1">LISTEN TO DATAPLOTCLICK EVENT</label> + <input type="radio" id="radio2" name="radios"value="false" onClick="reset()"> + <label for="radio2">REMOVE DATAPLOTCLICK EVENT</label> + </div> + + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-message.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-message.php new file mode 100755 index 0000000000000000000000000000000000000000..3c8104cf42e8c67eaf8707c95bd63365e8bfa791 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-message.php @@ -0,0 +1,87 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "previous value: " + eventObj.data.prevData; + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subCaption\": \"In MMbbl = One Million barrels\", + \"xAxisName\": \"Country\", + \"yAxisName\": \"Reserves (MMbbl)\", + \"numberSuffix\": \"K\", + \"theme\": \"fusion\", + \"exportEnabled\":\"1\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Attach message with message string. + $Chart->addMessage("loadMessage", "please wait data is being loaded"); + $Chart->addMessage("loadMessageFontSize", "18"); + + // Render the chart + $Chart->render(); + +?> + <h3>Message related attributes and configuration</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-product-level-api.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-product-level-api.php new file mode 100755 index 0000000000000000000000000000000000000000..fd13e218978da3942c736b57b524d20ea2064a87 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-product-level-api.php @@ -0,0 +1,136 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <style> + .button { + display:inline-block; + margin:5px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + </style> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + changeCaption = function(){ + FusionCharts("chart-1").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(e){ + FusionCharts("chart-1").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(e){ + FusionCharts("chart-1").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + reset = function(e){ + FusionCharts("chart-1").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("chart-1").setChartAttribute('xAxisName', 'Country'); + FusionCharts("chart-1").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subcaption\": \"In MMbbl = One Million barrels\", + \"xaxisname\": \"Country\", + \"yaxisname\": \"Reserves (MMbbl)\", + \"numbersuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Example of product level API</h3> + <div align="center" id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="button" class="button" onClick="changeCaption()" value='Change Caption: Test Caption'/> + <input type="button" class="button" onClick="changeXAxisName()" value='Change X-Axis Name: Test X-Axis'/> + <input type="button" class="button" onClick="changeYAxisName()" value='Change Y-Axis Name: Test Y-Axis'/> + <input type="button" class="button" onClick="reset()" value='Reset'/> + </div> + + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-special-char.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-special-char.php new file mode 100755 index 0000000000000000000000000000000000000000..ae354593169f1e6fc79beeacf66664f6992d20be --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-special-char.php @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $xmlData = "<chart caption=\"Harry's SuperMart\" subcaption=\"Monthly revenue for last year\" xaxisname=\"Month\" yaxisname=\"Amount\" numberprefix=\"¥\" theme=\"fusion\" rotatevalues=\"1\" exportenabled=\"1\">"; + $xmlData .= "<set label=\"Jan\" value=\"420000\" />"; + $xmlData .= "<set label=\"Feb\" value=\"810000\" />"; + $xmlData .= "<set label=\"Mar\" value=\"720000\" />"; + $xmlData .= "<set label=\"Apr\" value=\"550000\" />"; + $xmlData .= "<set label=\"May\" value=\"910000\" />"; + $xmlData .= "<set label=\"Jun\" value=\"510000\" />"; + $xmlData .= "<set label=\"Jul\" value=\"680000\" />"; + $xmlData .= "<set label=\"Aug\" value=\"620000\" />"; + $xmlData .= "<set label=\"Sep\" value=\"610000\" />"; + $xmlData .= "<set label=\"Oct\" value=\"490000\" />"; + $xmlData .= "<set label=\"Nov\" value=\"900000\" />"; + $xmlData .= "<set label=\"Dec\" value=\"730000\" />"; + $xmlData .= "</chart>"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "600", "400", "chart-container", "xml", $xmlData); + + // Render the chart + $Chart->render(); + +?> + <h3>Chart using special character in XML data format</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-themes.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-themes.php new file mode 100755 index 0000000000000000000000000000000000000000..469f3ebc7e67c44523300a5259510ee5bc697877 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/chart-themes.php @@ -0,0 +1,166 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Chart Theme Sample</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fint.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + </head> + + <body> + + <?php + $chartData1 = "{ + \"chart\": { + \"caption\": \"Split of Sales by Product Category\", + \"subCaption\": \"5 top performing stores - last month\", + \"plotToolText\": \"<div><b>\$label</b><br/>Product : <b>\$seriesname</b><br/>Sales : <b>\$\$value</b></div>\", + \"theme\": \"fusion\" + }, + \"categories\": [{ + \"category\": [{ + \"label\": \"Garden Groove harbour\" + }, { + \"label\": \"Bakersfield Central\" + }, { + \"label\": \"Los Angeles Topanga\" + }, { + \"label\": \"Compton-Rancho Dom\" + }, { + \"label\": \"Daly City Serramonte\" + }] + }], + \"dataset\": [{ + \"seriesname\": \"Non-Food Products\", + \"data\": [{ + \"value\": \"28800\" + }, { + \"value\": \"25400\" + }, { + \"value\": \"21800\" + }, { + \"value\": \"19500\" + }, { + \"value\": \"11500\" + }] + }, { + \"seriesname\": \"Food Products\", + \"data\": [{ + \"value\": \"17000\" + }, { + \"value\": \"19500\" + }, { + \"value\": \"12500\" + }, { + \"value\": \"14500\" + }, { + \"value\": \"17500\" + }] + }] + }"; + + $chartData2 = "{ + \"chart\": { + \"caption\": \"Harry\'s SuperMart\", + \"subCaption\": \"Top 5 stores in last month by revenue\", + \"theme\": \"fusion\" + }, + \"data\":[ + { + \"label\": \"Bakersfield Central\", + \"value\": \"880000\" + }, + { + \"label\": \"Garden Groove harbour\", + \"value\": \"730000\" + }, + { + \"label\": \"Los Angeles Topanga\", + \"value\": \"590000\" + }, + { + \"label\": \"Compton-Rancho Dom\", + \"value\": \"520000\" + }, + { + \"label\": \"Daly City Serramonte\", + \"value\": \"330000\" + } + ] + }"; + + // Chart 1 + $Chart1 = new FusionCharts("overlappedcolumn2d", "chart-id-1" , "600", "400", "chart-1", "json", $chartData1); + + // Chart 2 + $Chart2 = new FusionCharts("column2d", "chart-id-2" , "600", "400", "chart-2", "json", $chartData2); + + // Render the chart 1 + $Chart1->render(); + + // Render the chart 2 + $Chart2->render(); + +?> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + ChangeTheme(this.value); + }; + } + } + }); + function ChangeTheme(theme) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].setChartAttribute('theme', theme); + } + } + }; + </script> + + <h3>Chart Theme Sample</h3> + <div style="width: 100%; display: table;"> + <div style="display: table-row"> + <div id="chart-1" style="width: 40%; display: table-cell;"><%= getChart1.render() %></div> + <div id="chart-2" style="width: 40%; display: table-cell;"><%= getChart2.render() %></div> + </div> + </div> + <br/> + <br/> + + <div align="center"> + <label style="padding: 0px 5px !important;">Select a theme for all charts</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="fint"/> Fint + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="ocean"/> Ocean + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" checked value="fusion"/> Fusion + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="carbon"/> Carbon + </label> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/customizing-tooltip.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/customizing-tooltip.php new file mode 100755 index 0000000000000000000000000000000000000000..a23496d03d996a494db8a89faf11be7a7318415b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/customizing-tooltip.php @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": { + \"caption\": \"Top 3 Electronic Brands in Top 3 Revenue Earning States\", + \"subcaption\": \"Last month\", + \"aligncaptiontocanvas\": \"0\", + \"yaxisname\": \"Statewise Sales (in %)\", + \"xaxisname\": \"Brand\", + \"numberprefix\": \"$\", + \"showxaxispercentvalues\": \"1\", + \"showsum\": \"1\", + \"showPlotBorder\": \"1\", + \"plottooltext\": \"<div id='nameDiv' style='font-size: 14px; border-bottom: 1px dashed #666666; font-weight:bold; padding-bottom: 3px; margin-bottom: 5px; display: inline-block;'>\$label :</div>{br}State: <b>\$seriesName</b>{br}Sales : <b>\$dataValue</b>{br}Market share in State : <b>\$percentValue</b>{br}Overall market share of \$label: <b>\$xAxisPercentValue</b>\", + \"theme\": \"fusion\" + }, + \"categories\": [ + { + \"category\": [ + { + \"label\": \"Bose\" + }, + { + \"label\": \"Dell\" + }, + { + \"label\": \"Apple\" + } + ] + } + ], + \"dataset\": [ + { + \"seriesname\": \"California\", + \"data\": [ + { + \"value\": \"335000\" + }, + { + \"value\": \"225100\" + }, + { + \"value\": \"164200\" + } + ] + }, + { + \"seriesname\": \"Washington\", + \"data\": [ + { + \"value\": \"215000\" + }, + { + \"value\": \"198000\" + }, + { + \"value\": \"120000\" + } + ] + }, + { + \"seriesname\": \"Nevada\", + \"data\": [ + { + \"value\": \"298000\" + }, + { + \"value\": \"109300\" + }, + { + \"value\": \"153600\" + } + ] + } + ] + }"; + + // chart object + $Chart = new FusionCharts("marimekko", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Customizing tooltip</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/data/data.json b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/data/data.json new file mode 100755 index 0000000000000000000000000000000000000000..df0998a5901519f1ae78834819f62ff60d230ebe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/data/data.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/data/data.xml b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/data/data.xml new file mode 100755 index 0000000000000000000000000000000000000000..28c7ad44b3acc59437dd5f6f625d9dfabc6d9e3d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/data/data.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" theme="fusion"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/different-language.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/different-language.php new file mode 100755 index 0000000000000000000000000000000000000000..18bd794a66599874b1f83d4b85023cf36419dbde --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/different-language.php @@ -0,0 +1,102 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"caption\": \"سوبرماركت هاري\", + \"subCaption\": \"الإيرادات الشهرية للعام الماضي\", + \"xAxisName\": \"الشهر\", + \"yAxisName\": \"كمية\", + \"numberPrefix\": \"$\", + \"theme\": \"fusion\", + \"rotateValues\": \"1\", + \"exportEnabled\": \"1\" + }, + \"data\": [ + { + \"label\": \"يناير\", + \"value\": \"420000\" + }, + { + \"label\": \"فبراير\", + \"value\": \"810000\" + }, + { + \"label\": \"مارس\", + \"value\": \"720000\" + }, + { + \"label\": \"أبريل\", + \"value\": \"550000\" + }, + { + \"label\": \"مايو\", + \"value\": \"910000\" + }, + { + \"label\": \"يونيو\", + \"value\": \"510000\" + }, + { + \"label\": \"يوليو\", + \"value\": \"680000\" + }, + { + \"label\": \"أغسطس\", + \"value\": \"620000\" + }, + { + \"label\": \"سبتمبر\", + \"value\": \"610000\" + }, + { + \"label\": \"أكتوبر\", + \"value\": \"490000\" + }, + { + \"label\": \"نوفمبر\", + \"value\": \"900000\" + }, + { + \"label\": \"ديسمبر\", + \"value\": \"730000\" + } + ] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Different language example</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/drilldown-data-handler.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/drilldown-data-handler.php new file mode 100755 index 0000000000000000000000000000000000000000..76738a604c0149b3ea972624dd8ba879032be1ae --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/drilldown-data-handler.php @@ -0,0 +1,90 @@ +<?php + $hostdb = "127.0.0.1"; // MySQl host + $userdb = "root"; // MySQL username + $passdb = "password"; // MySQL password + $namedb = "drilldowndb"; // MySQL database name + + // Establish a connection to the database + $dbhandle = new mysqli($hostdb, $userdb, $passdb, $namedb); + + /*Render an error message, to avoid abrupt failure, if the database connection parameters are incorrect */ + if ($dbhandle->connect_error) { + exit("There was an error with your connection: ".$dbhandle->connect_error); + } + + // Drilldown column order + $columnLevels = ["Region", "Country", "City"]; + $maxDrill = sizeof($columnLevels); + + // Get drilldown parameters + $columnClickedUpon = $_GET["label"]; + $drillDownLevel = $_GET["drillLevel"]; + + if ($drillDownLevel == null) { + $drillDownLevel = "0"; + #echo "drillDown before 1: $drillDownLevel"; + $data = GetDBData($columnLevels[(int)$drillDownLevel], null, null, $dbhandle, "0", $maxDrill); + } else { + $iDrillDownLevel = (int)$drillDownLevel + 1; + $drillDownLevel = (string)$iDrillDownLevel; + #echo "drillDown before 2: $drillDownLevel"; + $data = GetDBData($columnLevels[$iDrillDownLevel], $columnClickedUpon, $columnLevels[$iDrillDownLevel - 1], $dbhandle, $drillDownLevel, $maxDrill); + } + + $iDrillDownLevel = (int)$drillDownLevel; + + + + function GetDBData($columnName, $parentValue, $parentName, $dbhandle, $drillDownLevel, $maxDrill) { + + #echo "DrillDownLevel after: $drillDownLevel"; + + $chartConfigObj = array ( "chart" => + array( + "caption" => "Sales by $columnName", + "xAxisName" => $columnName, + "yAxisName" => "Total Sales", + "numberSuffix" => "K", + "theme" => "fusion" + ) + ); + + if ($parentValue == null) { + $strQuery = "SELECT $columnName, SUM(`Total Sales`) as TotalSales FROM sales_record GROUP BY $columnName"; + } else { + $strQuery = "SELECT $columnName, SUM(`Total Sales`) as TotalSales FROM sales_record WHERE $parentName = '$parentValue' GROUP BY $columnName"; + } + + $labelValueArray = array(); + + $result = $dbhandle->query($strQuery) or exit("Error code ({$dbhandle->errno}): {$dbhandle->error}"); + if ($result) { + while($row = mysqli_fetch_array($result)) { + $label = $row[$columnName]; + if (((int)$drillDownLevel) < $maxDrill - 1) { + array_push($labelValueArray, + array( + "label" => "$label", + "value" => $row["TotalSales"], + "link" => "newchart-jsonurl-drilldown-data-handler.php?label=$label&drillLevel=$drillDownLevel" + ) + ); + } else { + array_push($labelValueArray, + array( + "label" => "$label", + "value" => $row["TotalSales"] + ) + ); + } + } + }; + + + $chartConfigObj["data"] = $labelValueArray; + + $jsonEncodedData = json_encode($chartConfigObj); + + echo $jsonEncodedData; + } +?> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/drilldown.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/drilldown.php new file mode 100755 index 0000000000000000000000000000000000000000..922c84f706efecbe8d321d663ecf51590873aab1 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/drilldown.php @@ -0,0 +1,38 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | DrillDown Chart </title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + + </head> + + <body> + <?php + // chart object + $Chart = new FusionCharts("column2d", "MyDrillDownChart" , "600", "350", "chart-container", "jsonurl", "drilldown-data-handler.php"); + + // Render the chart + $Chart->render(); + + ?> + <h3>Chart with Drill-Down Feature</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/dynamic-chart-resize.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/dynamic-chart-resize.php new file mode 100755 index 0000000000000000000000000000000000000000..fed0a15b96d7705e74fe64c95ff517d5c95125d9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/dynamic-chart-resize.php @@ -0,0 +1,113 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | USA Map</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeSize(this.value); + }; + } + } + }); + + function changeSize(size) { + document.getElementById('chartContainer').style.width = size.split('x')[0] + 'px'; + document.getElementById('chartContainer').style.height = size.split('x')[1] + 'px'; + }; + </script> + </head> + + <body> + + <?php + $mapData = "{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subcaption\": \"In MMbbl = One Million barrels\", + \"xaxisname\": \"Country\", + \"yaxisname\": \"Reserves (MMbbl)\", + \"numbersuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "100%", "100%", "chartContainer", "json", $mapData); + + // Render the chart + $Chart->render(); + +?> + + <h3>Chart Auto-Resise Sample</h3> + <div align="center"> + <label style="padding: 0px 5px !important;">Select Chart Container Size (in pixels)</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="400x300"/>400x300 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="600x500"/>600x500 + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="800x600"/>800x600 + </label> + </div> + <br/> + <br/> + <br/> + <div style="width: 100%; display: block;" align="center"> + <div id="chartContainer" style="border-style: solid;border-color:#5a5a5a;width: 400px; height: 300px;">Chart will render here!</div> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/dynamic-chart-type.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/dynamic-chart-type.php new file mode 100755 index 0000000000000000000000000000000000000000..75989bb1ef9d9be43d5190a631bb013820141fc1 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/dynamic-chart-type.php @@ -0,0 +1,116 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | USA Map</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeChartType(this.value); + }; + } + } + }); + + function changeChartType(chartType) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].chartType(chartType); + } + } + }; + </script> + </head> + + <body> + + <?php + $mapData = "{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subcaption\": \"In MMbbl = One Million barrels\", + \"xaxisname\": \"Country\", + \"yaxisname\": \"Reserves (MMbbl)\", + \"numbersuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "600", "350", "chartContainer", "json", $mapData); + + // Render the chart + $Chart->render(); + +?> + + <h3>Dynamic Chart Type Change</h3> + <div align="center"> + <label style="padding: 0px 5px !important;">Select The Chart Type</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" checked value="column2d"/>Column 2D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="pie3d"/>Pie 3D + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="div-size" value="bar2d"/>Bar 2D + </label> + </div> + <br/> + <br/> + <br/> + <div style="width: 100%; display: block;" align="center"> + <div id="chartContainer">Chart will render here!</div> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/get-data-from-scatter-chart.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/get-data-from-scatter-chart.php new file mode 100755 index 0000000000000000000000000000000000000000..16d3bb5b278c324096be614a1c76f37cf101cf50 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/get-data-from-scatter-chart.php @@ -0,0 +1,437 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + onRenderComplete = function (evtObj, argObj) { + + // creating div for controllers + var controllers = document.createElement('div'); + controllers.setAttribute('id', 'controllers'); + controllers.style.display = "inline-block"; + controllers.innerHTML = "<div id='tableView-1' style='width:500px;display:none;margin-left:0px;max-height:250px;overflow:scroll;border: 1px solid #CCCCCC;margin: 3px;float: left;display:none; color: #666666;font-family:'Arial','Helvetica';font-size: 12px;'></div>"; + //Display container div and write table + document.getElementById("showData").appendChild(controllers); + // argObj.container.parentNode.insertBefore(controllers, argObj.container.nextSibling); + /* + * getDataFromChart method prepares the + * tabular string from selection and + * write in a div and display it. + */ + evtObj.sender.getDataFromChart = function() { + var i, + j, + str, + ds = "", + dataArr, + flagData = false, + objDataset = evtObj.sender.getJSONData && evtObj.sender.getJSONData().dataset, + tableContainer = document.getElementById("tableView-1"); + + //Form tabular string + str = "<div style='margin:3px;font-family:'Arial','Helvetica';font-size: 12px;'> Data is returned by the chart as Array. The data is converted into tabular format using JavaScript.</div>"; + str += '<table border="1" cellpadding="1" cellspacing="0" bordercolor="#ffffff" width="100%">'; + for (i in objDataset) { + dataArr = objDataset[i].data; + if (dataArr.length > 0) { + flagData = true; + str += ' <tr>'; + str += ' <td width="20%" style="font-weight: bold;font-size: 14px;vertical-align: top;text-align:right;padding: 3px" color="' + objDataset[i].color + '">' + objDataset[i].seriesname + '</td>'; + + ds = '<table border="1" cellpadding="1" cellspacing="0" bordercolor="' + objDataset[i].color + '" width="100%">'; + ds += '<tr>'; + ds += '<td width="20%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Id</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Price (in USD)</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Quantity Sold</td>'; + ds += '</tr>'; + for (j = 0; j < dataArr.length; j++) { + var id = String(dataArr[j].id), + price = String(dataArr[j].x), + qty = String(dataArr[j].y); + + ds += '<tr>'; + ds += '<td width="20%" align="center">' + id + '</td>'; + ds += '<td width="40%" align="center">$' + price + ' </td>'; + ds += '<td width="40%" align="center">' + qty + ' units</td>'; + ds += '</tr>'; + } + ds += '</table>'; + str += ' <td width="80%" style="padding: 3px">' + ds + '</td>'; + str += ' </tr>'; + } + + } + str += '</table>'; + if (!flagData) { + str = "No Data Selected"; + } + tableContainer.style.display = "block"; + tableContainer.innerHTML = str; + } + }, + onBeforeDataSubmit = function (evtObj, argObj) { + + evtObj.sender.getDataFromChart(); + }, + onDataRestored = function (evtObj, argObj) { + + document.getElementById("tableView-1").style.display = "none"; + document.getElementById("tableView-1").innerHTML = ""; + } + + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"theme\": \"fusion\", + \"caption\": \"Products Sold vs. Price points\", + \"subcaption\": \"Harry\\'s SuperMart - Last Week\", + \"yaxisname\": \"Quantity Sold\", + \"xaxisname\": \"Price(In US $)\", + \"xaxismaxvalue\": \"1000\", + \"xaxisminvalue\": \"100\", + \"yaxismaxvalue\": \"200\", + \"xnumberprefix\": \"$\", + \"ynumbersuffix\": \" units\", + \"showcanvasborder\": \"1\", + \"canvasborderthickness\": \"0.4\", + \"canvasborderalpha\": \"50\", + \"showXAxisLine\": \"0\", + \"showformbtn\": \"1\", + \"formAction\": \"#\", + \"submitdataasxml\": \"1\" + }, + \"categories\": [ + { + \"verticallinecolor\": \"666666\", + \"verticallinethickness\": \"1\", + \"alpha\": \"40\", + \"category\": [ + { + \"label\": \"$100\", + \"x\": \"100\", + \"showverticalline\": \"0\" + }, { + \"label\": \"$200\", + \"x\": \"200\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$300\", + \"x\": \"300\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$400\", + \"x\": \"400\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$500\", + \"x\": \"500\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$600\", + \"x\": \"600\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$700\", + \"x\": \"700\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$800\", + \"x\": \"800\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$900\", + \"x\": \"900\", + \"showverticalline\": \"1\" + }, { + \"label\": \"$1000\", + \"x\": \"1000\", + \"showverticalline\": \"0\" + }] + } + ], + \"dataset\": [ + { + \"drawline\": \"0\", + \"seriesname\": \"Televisions\", + \"color\": \"#6baa01\", + \"anchorsides\": \"3\", + \"anchorradius\": \"4\", + \"anchorbgcolor\": \"#6baa01\", + \"anchorbordercolor\": \"#6baa01\", + \"data\": [ + { + \"id\": \"TV_1\", + \"y\": \"559\", + \"x\": \"714\" + }, { + \"id\": \"TV_2\", + \"y\": \"293\", + \"x\": \"988\" + }, { + \"id\": \"TV_3\", + \"y\": \"231\", + \"x\": \"970\" + }, { + \"id\": \"TV_4\", + \"y\": \"528\", + \"x\": \"142\" + }, { + \"id\": \"TV_5\", + \"y\": \"95\", + \"x\": \"800\" + }, { + \"id\": \"TV_6\", + \"y\": \"515\", + \"x\": \"813\" + }, { + \"id\": \"TV_7\", + \"y\": \"444\", + \"x\": \"928\" + }, { + \"id\": \"TV_8\", + \"y\": \"592\", + \"x\": \"238\" + }, { + \"id\": \"TV_9\", + \"y\": \"229\", + \"x\": \"959\" + }, { + \"id\": \"TV_10\", + \"y\": \"238\", + \"x\": \"521\" + }, { + \"id\": \"TV_11\", + \"y\": \"285\", + \"x\": \"222\" + }, { + \"id\": \"TV_12\", + \"y\": \"524\", + \"x\": \"863\" + }, { + \"id\": \"TV_13\", + \"y\": \"422\", + \"x\": \"820\" + }, { + \"id\": \"TV_14\", + \"y\": \"344\", + \"x\": \"894\" + }, { + \"id\": \"TV_15\", + \"y\": \"510\", + \"x\": \"800\" + }, { + \"id\": \"TV_16\", + \"y\": \"132\", + \"x\": \"785\" + }, { + \"id\": \"TV_17\", + \"y\": \"381\", + \"x\": \"214\" + }, { + \"id\": \"TV_18\", + \"y\": \"210\", + \"x\": \"961\" + }, { + \"id\": \"TV_19\", + \"y\": \"496\", + \"x\": \"575\" + }, { + \"id\": \"TV_20\", + \"y\": \"330\", + \"x\": \"847\" + }, { + \"id\": \"TV_21\", + \"y\": \"436\", + \"x\": \"893\" + }, { + \"id\": \"TV_22\", + \"y\": \"406\", + \"x\": \"157\" + }, { + \"id\": \"TV_23\", + \"y\": \"125\", + \"x\": \"349\" + }, { + \"id\": \"TV_24\", + \"y\": \"450\", + \"x\": \"818\" + }, { + \"id\": \"TV_25\", + \"y\": \"455\", + \"x\": \"615\" + }, { + \"id\": \"TV_26\", + \"y\": \"328\", + \"x\": \"256\" + }, { + \"id\": \"TV_27\", + \"y\": \"188\", + \"x\": \"460\" + }, { + \"id\": \"TV_28\", + \"y\": \"565\", + \"x\": \"350\" + }, { + \"id\": \"TV_29\", + \"y\": \"149\", + \"x\": \"582\" + }, { + \"id\": \"TV_30\", + \"y\": \"425\", + \"x\": \"970\" + }] + }, { + \"seriesname\": \"Cell Phones\", + \"color\": \"#f8bd19\", + \"anchorsides\": \"4\", + \"anchorradius\": \"4\", + \"anchorbgcolor\": \"#f8bd19\", + \"anchorbordercolor\": \"#f8bd19\", + \"data\": [ + { + \"id\": \"Mob_1\", + \"y\": \"335\", + \"x\": \"156\" + }, { + \"id\": \"Mob_2\", + \"y\": \"339\", + \"x\": \"927\" + }, { + \"id\": \"Mob_3\", + \"y\": \"328\", + \"x\": \"847\" + }, { + \"id\": \"Mob_4\", + \"y\": \"1\", + \"x\": \"177\" + }, { + \"id\": \"Mob_5\", + \"y\": \"246\", + \"x\": \"175\" + }, { + \"id\": \"Mob_6\", + \"y\": \"368\", + \"x\": \"441\" + }, { + \"id\": \"Mob_7\", + \"y\": \"146\", + \"x\": \"200\" + }, { + \"id\": \"Mob_8\", + \"y\": \"347\", + \"x\": \"482\" + }, { + \"id\": \"Mob_9\", + \"y\": \"1\", + \"x\": \"463\" + }, { + \"id\": \"Mob_10\", + \"y\": \"63\", + \"x\": \"440\" + }, { + \"id\": \"Mob_11\", + \"y\": \"77\", + \"x\": \"211\" + }, { + \"id\": \"Mob_12\", + \"y\": \"108\", + \"x\": \"824\" + }, { + \"id\": \"Mob_13\", + \"y\": \"44\", + \"x\": \"850\" + }, { + \"id\": \"Mob_14\", + \"y\": \"77\", + \"x\": \"712\" + }, { + \"id\": \"Mob_15\", + \"y\": \"15\", + \"x\": \"199\" + }, { + \"id\": \"Mob_16\", + \"y\": \"333\", + \"x\": \"836\" + }, { + \"id\": \"Mob_17\", + \"y\": \"31\", + \"x\": \"482\" + }, { + \"id\": \"Mob_18\", + \"y\": \"90\", + \"x\": \"604\" + }, { + \"id\": \"Mob_19\", + \"y\": \"294\", + \"x\": \"716\" + }, { + \"id\": \"Mob_20\", + \"y\": \"241\", + \"x\": \"870\" + }, { + \"id\": \"Mob_21\", + \"y\": \"258\", + \"x\": \"421\" + }, { + \"id\": \"Mob_22\", + \"y\": \"186\", + \"x\": \"456\" + }, { + \"id\": \"Mob_23\", + \"y\": \"255\", + \"x\": \"327\" + }, { + \"id\": + \"Mob_24\", + \"y\": \"203\", + \"x\": \"995\" + }, { + \"id\": \"Mob_25\", + \"y\": \"35\", + \"x\": \"792\" + }] + }] + }"; + + // chart object + $Chart = new FusionCharts("selectscatter", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + $Chart->addEvent("renderComplete", "onRenderComplete"); + $Chart->addEvent("beforeDataSubmit", "onBeforeDataSubmit"); + $Chart->addEvent("dataRestored", "onDataRestored"); + + // Render the chart + $Chart->render(); + +?> + <h3>Get data from select scatter chart and show them in tabular format</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div id ="showData"></div> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/highlight-specific-data-points.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/highlight-specific-data-points.php new file mode 100755 index 0000000000000000000000000000000000000000..a7a9d86aac7f7a0fb02075333226388692e63b04 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/highlight-specific-data-points.php @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": + { + \"caption\": \"Bakersfield Central - Total footfalls\", + \"subCaption\": \"Last week\", + \"xAxisName\": \"Day\", + \"yAxisName\": \"No. of Visitors (In 1000s)\", + \"showValues\": \"0\", + \"theme\": \"fusion\" + }, + \"annotations\":{ + \"groups\": [ + { + \"id\": \"anchor-highlight\", + \"items\": [ + { + \"id\": \"high-star\", + \"type\": \"circle\", + \"x\": \"\$\dataset.0.set.2.x\", + \"y\": \"\$\dataset.0.set.2.y\", + \"radius\": \"12\", + \"color\": \"#6baa01\", + \"border\": \"2\", + \"borderColor\": \"#f8bd19\" + }, + { + \"id\": \"label\", + \"type\": \"text\", + \"text\": \"Highest footfall 25.5K\", + \"fillcolor\": \"#6baa01\", + \"rotate\": \"90\", + \"x\": \"\$\dataset.0.set.2.x+75\", + \"y\": \"\$\dataset.0.set.2.y-2\" + } + ] + } + ] + }, + \"data\": [ + { + \"label\": \"Mon\", + \"value\": \"15123\" + }, + { + \"label\": \"Tue\", + \"value\": \"14233\" + }, + { + \"label\": \"Wed\", + \"value\": \"25507\" + }, + { + \"label\": \"Thu\", + \"value\": \"9110\" + }, + { + \"label\": \"Fri\", + \"value\": \"15529\" + }, + { + \"label\": \"Sat\", + \"value\": \"20803\" + }, + { + \"label\": \"Sun\", + \"value\": \"19202\" + } + ] + }"; + + // chart object + $Chart = new FusionCharts("spline", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Highlight specific data points through API</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/interactive-event.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/interactive-event.php new file mode 100755 index 0000000000000000000000000000000000000000..62a9e521f9c19f5c0a394c4753262b116a98b846 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/interactive-event.php @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + function onDataplotClick(eventObj) { + var dataValue = eventObj.data.dataValue; + var categoryLabel = eventObj.data.categoryLabel; + + document.getElementById("plotclick").innerHTML = "category: " + categoryLabel + "\n" + "value: " + dataValue; + + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subCaption\": \"In MMbbl = One Million barrels\", + \"xAxisName\": \"Country\", + \"yAxisName\": \"Reserves (MMbbl)\", + \"numberSuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Attach message with message string. + $Chart->addEvent("dataplotClick", "onDataplotClick"); + + // Render the chart + $Chart->render(); + +?> + <h3>Example of event(interactive event)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p id ="plotclick"></p> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/mscolumn2d-sample.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/mscolumn2d-sample.php new file mode 100755 index 0000000000000000000000000000000000000000..fdbffb6e22b175e91d44a2686137a0a0a8200338 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/mscolumn2d-sample.php @@ -0,0 +1,107 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Multiseries Column 2D Sample</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"caption\": \"App Publishing Trend\", + \"subCaption\": \"2012-2016\", + \"xAxisName\": \"Years\", + \"yAxisName\" : \"Total number of apps in store\", + \"formatnumberscale\": \"1\", + \"drawCrossLine\":\"1\", + \"plotToolText\" : \"<b>\$dataValue</b> apps on \$seriesName in \$label\", + \"theme\": \"fusion\" + }, + + \"categories\": [{ + \"category\": [{ + \"label\": \"2012\" + }, { + \"label\": \"2013\" + }, { + \"label\": \"2014\" + }, { + \"label\": \"2015\" + },{ + \"label\": \"2016\" + } + ] + }], + \"dataset\": [{ + \"seriesname\": \"iOS App Store\", + \"data\": [{ + \"value\": \"125000\" + }, { + \"value\": \"300000\" + }, { + \"value\": \"480000\" + }, { + \"value\": \"800000\" + }, { + \"value\": \"1100000\" + }] + }, { + \"seriesname\": \"Google Play Store\", + \"data\": [{ + \"value\": \"70000\" + }, { + \"value\": \"150000\" + }, { + \"value\": \"350000\" + }, { + \"value\": \"600000\" + },{ + \"value\": \"1400000\" + }] + }, { + \"seriesname\": \"Amazon AppStore\", + \"data\": [{ + \"value\": \"10000\" + }, { + \"value\": \"100000\" + }, { + \"value\": \"300000\" + }, { + \"value\": \"600000\" + },{ + \"value\": \"900000\" + }] + }] + }"; + + // chart object + $Chart = new FusionCharts("mscolumn2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + + <h3>Multiseries Column 2D Chart</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/mscombi3d-chart-sample.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/mscombi3d-chart-sample.php new file mode 100755 index 0000000000000000000000000000000000000000..2957933ed1a6e49b104eb817dd649d6527b0334f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/mscombi3d-chart-sample.php @@ -0,0 +1,165 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Multiseries Combination 3D Chart</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"caption\": \"Salary Hikes by Country\", + \"subCaption\": \"2016 - 2017\", + \"showhovereffect\": \"1\", + \"numberSuffix\": \"%\", + \"rotatelabels\": \"1\", + \"theme\": \"fusion\" + }, + \"categories\": [{ + \"category\": [{ + \"label\": \"Australia\" + }, { + \"label\": \"New-Zealand\" + }, { + \"label\": \"India\" + }, { + \"label\": \"China\" + }, { + \"label\": \"Myanmar\" + }, { + \"label\": \"Bangladesh\" + }, { + \"label\": \"Thailand\" + }, { + \"label\": \"South Korea\" + }, { + \"label\": \"Hong Kong\" + }, { + \"label\": \"Singapore\" + }, { + \"label\": \"Taiwan\" + }, { + \"label\": \"Vietnam\" + }] + }], + \"dataset\": [{ + \"seriesName\": \"2016 Actual Salary Increase\", + \"plotToolText\" : \"Salaries increased by <b>\$dataValue</b> in 2016\", + \"data\": [{ + \"value\": \"3\" + }, { + \"value\": \"3\" + }, { + \"value\": \"10\" + }, { + \"value\": \"7\" + }, { + \"value\": \"7.4\" + }, { + \"value\": \"10\" + }, { + \"value\": \"5.4\" + }, { + \"value\": \"4.5\" + }, { + \"value\": \"4.1\" + }, { + \"value\": \"4\" + }, { + \"value\": \"3.7\" + }, { + \"value\": \"9.3\" + }] + }, { + \"seriesName\": \"2017 Projected Salary Increase\", + \"plotToolText\" : \"Salaries expected to increase by <b>\$dataValue</b> in 2017\", + \"renderAs\": \"line\", + \"data\": [{ + \"value\": \"3\" + }, { + \"value\": \"2.8\" + }, { + \"value\": \"10\" + }, { + \"value\": \"6.9\" + }, { + \"value\": \"6.7\" + }, { + \"value\": \"9.4\" + }, { + \"value\": \"5.5\" + }, { + \"value\": \"5\" + }, { + \"value\": \"4\" + }, { + \"value\": \"4\" + }, { + \"value\": \"4.5\" + }, { + \"value\": \"9.8\" + }] + }, { + \"seriesName\": \"Inflation rate\", + \"plotToolText\" : \"\$dataValue projected inflation\", + \"renderAs\": \"area\", + \"showAnchors\":\"0\", + \"data\": [{ + \"value\": \"1.6\" + }, { + \"value\": \"0.6\" + }, { + \"value\": \"5.6\" + }, { + \"value\": \"2.3\" + }, { + \"value\": \"7\" + }, { + \"value\": \"5.6\" + }, { + \"value\": \"0.2\" + }, { + \"value\": \"1\" + }, { + \"value\": \"2.6\" + }, { + \"value\": \"0\" + }, { + \"value\": \"1.1\" + }, { + \"value\": \"2.4\" + }] + }] + }"; + + // chart object + $Chart = new FusionCharts("mscombi3d", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Multiseries Combination 3D Chart</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/number-format.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/number-format.php new file mode 100755 index 0000000000000000000000000000000000000000..34bca84663e0c5dd0152cdbee208e9b41e0ee838 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/number-format.php @@ -0,0 +1,91 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + function onRenderComplete(eventObj) { + var formattedNumber = eventObj.sender.formatNumber(1234.5); + document.getElementById("rendered").innerHTML = "Number format of 1234.5 : " + formattedNumber; + + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subCaption\": \"In MMbbl = One Million barrels\", + \"xAxisName\": \"Country\", + \"yAxisName\": \"Reserves (MMbbl)\", + \"numberSuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Attach message with message string. + $Chart->addEvent("renderComplete", "onRenderComplete"); + + // Render the chart + $Chart->render(); + +?> + <h3>Example of event(Number format)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p id ="rendered"></p> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/pie3d-chart-sample.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/pie3d-chart-sample.php new file mode 100755 index 0000000000000000000000000000000000000000..4a66ab6f35ba248158f3232e43ea60ad7d771ab6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/pie3d-chart-sample.php @@ -0,0 +1,66 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Pie 3D Chart</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"caption\": \"Recommended Portfolio Split\", + \"subCaption\" : \"For a net-worth of $1M\", + \"showValues\":\"1\", + \"showPercentInTooltip\" : \"0\", + \"numberPrefix\" : \"$\", + \"enableMultiSlicing\":\"1\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Equity\", + \"value\": \"300000\" + }, { + \"label\": \"Debt\", + \"value\": \"230000\" + }, { + \"label\": \"Bullion\", + \"value\": \"180000\" + }, { + \"label\": \"Real-estate\", + \"value\": \"270000\" + }, { + \"label\": \"Insurance\", + \"value\": \"20000\" + }] + }"; + + // chart object + $Chart = new FusionCharts("pie3d", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Pie 3D Chart</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/product-life-cycle-event.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/product-life-cycle-event.php new file mode 100755 index 0000000000000000000000000000000000000000..70e5c2dfe25e6a2144c127f9a4841f7ce285585d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/product-life-cycle-event.php @@ -0,0 +1,88 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + function onDataLoaded() { + document.getElementById("dataLoaded").innerHTML = "chart data is loaded succesfully"; + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subCaption\": \"In MMbbl = One Million barrels\", + \"xAxisName\": \"Country\", + \"yAxisName\": \"Reserves (MMbbl)\", + \"numberSuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + # Attach event with method name + $Chart->addEvent("dataLoaded", "onDataLoaded"); + + // Render the chart + $Chart->render(); + +?> + <h3>Example of event(product life cycle event)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p id ="dataLoaded"></p> + </div> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-chart.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-chart.php new file mode 100755 index 0000000000000000000000000000000000000000..8cf6850c4490ca95e068e8ad27674338c16184d7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-chart.php @@ -0,0 +1,76 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Simple Chart Using Array</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $arrChartConfig = array( + "chart" => array( + "caption" => "Countries With Most Oil Reserves [2017-18]", + "subCaption" => "In MMbbl = One Million barrels", + "xAxisName" => "Country", + "yAxisName" => "Reserves (MMbbl)", + "numberSuffix" => "K", + "theme" => "fusion" + ) + ); + + // An array of hash objects which stores data + $arrChartData = array( + ["Venezuela", "290"], + ["Saudi", "260"], + ["Canada", "180"], + ["Iran", "140"], + ["Russia", "115"], + ["UAE", "100"], + ["US", "30"], + ["China", "30"] + ); + + $arrLabelValueData = array(); + + // Pushing labels and values + for($i = 0; $i < count($arrChartData); $i++) { + array_push($arrLabelValueData, array( + "label" => $arrChartData[$i][0], "value" => $arrChartData[$i][1] + )); + } + + $arrChartConfig["data"] = $arrLabelValueData; + + // JSON Encode the data to retrieve the string containing the JSON representation of the data in the array. + $jsonEncodedData = json_encode($arrChartConfig); + + // chart object + $Chart = new FusionCharts("column2d", "MyFirstChart" , "600", "350", "chart-container", "json", $jsonEncodedData); + + // Render the chart + $Chart->render(); + +?> + + <h3>Simple Chart Using Array</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-gauge.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-gauge.php new file mode 100755 index 0000000000000000000000000000000000000000..9d4659c60f8415e6b4bfc531e4200e94f9f5b7bb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-gauge.php @@ -0,0 +1,73 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Simple Widget Using Array</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + // Widget appearance configuration + $arrChartConfig = array( + "chart" => array( + "caption" => "Nordstorm's Customer Satisfaction Score for 2017", + "lowerLimit" => "0", + "upperLimit" => "100", + "showValue" => "1", + "numberSuffix" => "%", + "theme" => "fusion", + "showToolTip" => "0" + ) + ); + + // Widget color range data + $colorDataObj = array("color" => array( + ["minValue" => "0", "maxValue" => "50", "code" => "#F2726F"], + ["minValue" => "50", "maxValue" => "75", "code" => "#FFC533"], + ["minValue" => "75", "maxValue" => "100", "code" => "#62B58F"] + )); + + // Dial array + $dial = array(); + + // Widget dial data in array format, multiple values can be separated by comma e.g. ["81", "23", "45",...] + $widgetDialDataArray = array("81"); + for($i = 0; $i < count($widgetDialDataArray); $i++) { + array_push($dial,array("value" => $widgetDialDataArray[$i])); + } + + $arrChartConfig["colorRange"] = $colorDataObj; + $arrChartConfig["dials"] = array( "dial" => $dial); + + // JSON Encode the data to retrieve the string containing the JSON representation of the data in the array. + $jsonEncodedData = json_encode($arrChartConfig); + + // Widget object + $Widget = new FusionCharts("angulargauge", "MyFirstWidget" , "400", "250", "widget-container", "json", $jsonEncodedData); + + // Render the Widget + $Widget->render(); + +?> + <h3>Simple Widget Using Array</h3> + <div id="widget-container">Widget will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-map.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-map.php new file mode 100755 index 0000000000000000000000000000000000000000..3b52a1f0f751dc8425137a242f65362db5c02a3c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/simple-map.php @@ -0,0 +1,83 @@ +<?php + + /// Include the `../src/fusioncharts.php` file that contains functions to embed the charts. + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Simple Map Using Array</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + // Widget appearance configuration + $arrMapConfig = array( + "chart" => array( + "caption" => "Average Annual Population Growth", + "subcaption" => " 1955-2015", + "numbersuffix" => "%", + "includevalueinlabels" => "1", + "labelsepchar" => ": ", + "entityFillHoverColor" => "#FFF9C4", + "theme" => "fusion" + ) + ); + + // Widget color range data + $colorDataObj = array("minvalue" => "0", "code" => "#FFE0B2", "gradient" => "1", + "color" => array( + ["minValue" => "0", "maxValue" => "50", "code" => "#F2726F"], + ["minValue" => "50", "maxValue" => "75", "code" => "#FFC533"], + ["minValue" => "75", "maxValue" => "100", "code" => "#62B58F"] + ) + ); + + // Map data array + $mapDataArray = array( + ["NA", ".82", "1"], + ["SA", "2.04", "1"], + ["AS", "1.78", "1"], + ["EU", ".40", "1"], + ["AF", "2.58", "1"], + ["AU", "1.30", "1"] + ); + + $mapData = array(); + + for($i = 0; $i < count($mapDataArray); $i++) { + array_push($mapData,array("id" => $mapDataArray[$i][0], "value" => $mapDataArray[$i][1], "showLabel" => $mapDataArray[$i][2])); + } + + $arrMapConfig["colorRange"] = $colorDataObj; + $arrMapConfig["data"] = $mapData; + + // JSON Encode the data to retrieve the string containing the JSON representation of the data in the array. + $jsonEncodedData = json_encode($arrMapConfig); + + // Map object + $Map = new FusionCharts("maps/world", "MyFirstMap" , "800", "500", "map-container", "json", $jsonEncodedData); + + // Render the Map + $Map->render(); + +?> + + <h3>Simple Map Using Array</h3> + <div id="map-container">Map will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/special-chart-type-api.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/special-chart-type-api.php new file mode 100755 index 0000000000000000000000000000000000000000..2909dfd6dffef756079570fc491282708485e457 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/special-chart-type-api.php @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + plotClickHandler = function(event){ + clickedPlot = (event.data.categoryLabel).toLowerCase(); + if (selectedItem !== clickedPlot) { + selectedItem = clickedPlot; + } else{ + selectedItem = 'none'; + } + }; + selectedItem = "none"; + getFusionChart = function(){ + return FusionCharts("chart-1"); + } + + noneChecked = function(){ + getFusionChart().slicePlotItem(0,false); + getFusionChart().slicePlotItem(1,false); + getFusionChart().slicePlotItem(2,false); + getFusionChart().slicePlotItem(3,false); + } + apacheChecked = function(){ + getFusionChart().slicePlotItem(0,true); + } + microsoftChecked = function(){ + getFusionChart().slicePlotItem(1,true); + } + zeusChecked = function(){ + getFusionChart().slicePlotItem(2,true); + } + otherChecked = function(){ + getFusionChart().slicePlotItem(3,true); + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Market Share of Web Servers\", + \"plottooltext\": \"<b>\$percentValue</b> of web servers run on \$label servers\", + \"showLegend\": \"0\", + \"enableMultiSlicing\": \"0\", + \"showPercentValues\": \"1\", + \"legendPosition\": \"bottom\", + \"useDataPlotColorForLabels\": \"1\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Apache\", + \"value\": \"32647479\" + }, { + \"label\": \"Microsoft\", + \"value\": \"22100932\" + }, { + \"label\": \"Zeus\", + \"value\": \"14376\" + }, { + \"label\": \"Other\", + \"value\": \"18674221\" + }] + }"; + + // chart object + $Chart = new FusionCharts("pie2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Attach message with message string. + $Chart->addEvent("dataplotClick", "plotClickHandler"); + + // Render the chart + $Chart->render(); + +?> + <h3>Example of event(SpecialChartType API)</h3> + <div align="center" id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" checked onClick="noneChecked()"/> None + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="apacheChecked()"/> Apache + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="microsoftChecked()"/> Microsoft + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="zeusChecked()"/> Zeus + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="rdGrp-options" onClick="otherChecked()"/> Other + </label> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/special-event.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/special-event.php new file mode 100755 index 0000000000000000000000000000000000000000..1976689a5c59bb01710f3140996bee2fc37acceb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/special-event.php @@ -0,0 +1,88 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "previous value: " + eventObj.data.prevData; + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": { + \"caption\": \"Server CPU Utilization\", + \"subcaption\": \"food.hsm.com\", + \"lowerLimit\": \"0\", + \"upperLimit\": \"100\", + \"numberSuffix\": \"%\", + \"valueAbovePointer\": \"0\", + \"editmode\":\"1\" + }, + \"colorRange\": { + \"color\": [ + { + \"minValue\": \"0\", + \"maxValue\": \"35\", + \"label\": \"Low\", + \"code\": \"#1aaf5d\" + }, { + \"minValue\": \"35\", + \"maxValue\": \"70\", + \"label\": \"Moderate\", + \"code\": \"#f2c500\" + }, { + \"minValue\": \"70\", + \"maxValue\": \"100\", + \"label\": \"High\", + \"code\": \"#c02d00\" + } ] + }, + \"pointers\": + { + \"pointer\": [{ + \"value\": \"72.5\" + }] + } + }"; + + // chart object + $Chart = new FusionCharts("hlineargauge", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + # Attach event with method name + $Chart->addEvent("realtimeUpdateComplete", "onUpdate"); + + // Render the chart + $Chart->render(); + +?> + <h3>Example of event(interactive event)</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p id ="dataUpdate"></p> + </div> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/stacked-column2d-line-chart-sample.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/stacked-column2d-line-chart-sample.php new file mode 100755 index 0000000000000000000000000000000000000000..6da0c0301f6194f6f844d50e39eabaab8b160292 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/stacked-column2d-line-chart-sample.php @@ -0,0 +1,122 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Stacked Column 2D Line Chart Sample</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": { + \"showvalues\": \"0\", + \"caption\": \"Apple's Revenue & Profit\", + \"subCaption\": \"(2013-2016)\", + \"numberprefix\": \"$\", + \"numberSuffix\" : \"B\", + \"plotToolText\" : \"Sales of \$seriesName in \$label was <b>\$dataValue</b>\", + \"showhovereffect\": \"1\", + \"yaxisname\": \"$ (In billions)\", + \"showSum\":\"1\", + \"theme\": \"fusion\" + }, + \"categories\": [{ + \"category\": [{ + \"label\": \"2013\" + }, { + \"label\": \"2014\" + }, { + \"label\": \"2015\" + }, { + \"label\": \"2016\" + }] + }], + \"dataset\": [{ + \"seriesname\": \"iPhone\", + \"data\": [{ + \"value\": \"21\" + }, { + \"value\": \"24\" + }, { + \"value\": \"27\" + }, { + \"value\": \"30\" + }] + }, { + \"seriesname\": \"iPad\", + \"data\": [{ + \"value\": \"8\" + }, { + \"value\": \"10\" + }, { + \"value\": \"11\" + }, { + \"value\": \"12\" + }] + }, { + \"seriesname\": \"Macbooks\", + \"data\": [{ + \"value\": \"2\" + }, { + \"value\": \"4\" + }, { + \"value\": \"5\" + }, { + \"value\": \"5.5\" + }] + }, { + \"seriesname\": \"Others\", + \"data\": [{ + \"value\": \"2\" + }, { + \"value\": \"4\" + }, { + \"value\": \"9\" + }, { + \"value\": \"11\" + }] + }, { + \"seriesname\": \"Profit\", + \"plotToolText\" : \"Total profit in \$label was <b>\$dataValue</b>\", + \"renderas\": \"Line\", + \"data\": [{ + \"value\": \"17\" + }, { + \"value\": \"19\" + }, { + \"value\": \"13\" + }, { + \"value\": \"18\" + }] + }] + }"; + + // chart object + $Chart = new FusionCharts("stackedColumn2DLine", "chart-1" , "600", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Stacked Column 2D with Line Chart</h3> + <div id="chart-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/update-data-runtime.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/update-data-runtime.php new file mode 100755 index 0000000000000000000000000000000000000000..4114f58c0525e07a6e753c2a778d59c0fce761c4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/update-data-runtime.php @@ -0,0 +1,82 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | Angular Gauge</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + updateData = function () { + var value = document.getElementById("dial-val").value; + FusionCharts("angulargauge-1").setDataForId("dial1",value); + } + </script> + </head> + + <body> + + <?php + $gaugeData = "{ + \"chart\": { + \"caption\": \"Customer Satisfaction Score\", + \"subcaption\": \"Los Angeles Topanga\", + \"plotToolText\": \"Current Score: \$value\", + \"theme\": \"fint\", + \"chartBottomMargin\": \"50\", + \"showValue\": \"1\" + }, + \"colorRange\": { + \"color\": [{ + \"minValue\": \"0\", + \"maxValue\": \"45\", + \"code\": \"#e44a00\" + }, { + \"minValue\": \"45\", + \"maxValue\": \"75\", + \"code\": \"#f8bd19\" + }, { + \"minValue\": \"75\", + \"maxValue\": \"100\", + \"code\": \"#6baa01\" + }] + }, + \"dials\": { + \"dial\": [{ + \"value\": \"70\", + \"id\": \"dial1\" + }] + } + }"; + + // chart object + $Chart = new FusionCharts("angulargauge", "angulargauge-1" ,"450", "270", "angulargauge-container", "json", $gaugeData); + + // Render the chart + $Chart->render(); + +?> + <h3>Update data at runtime</h3> + <div id="angulargauge-container">Chart will render here!</div> + <br/> + <div> + <label for="dial-val">Input dial value</label> + <input name="dial-val" id="dial-val" type= "number"/> + <input type ="button" name ="update dial" value ="update dial"onclick ="updateData()" /> + </div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/updating-chart-properties.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/updating-chart-properties.php new file mode 100755 index 0000000000000000000000000000000000000000..f09513fdf3efc282a37d50ec321b9f6bdc24c428 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/updating-chart-properties.php @@ -0,0 +1,136 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <style> + .button { + display:inline-block; + margin:5px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + </style> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script> + changeCaption = function(){ + FusionCharts("chart-1").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(e){ + FusionCharts("chart-1").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(e){ + FusionCharts("chart-1").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + reset = function(e){ + FusionCharts("chart-1").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("chart-1").setChartAttribute('xAxisName', 'Country'); + FusionCharts("chart-1").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } + </script> + </head> + + <body> + + <?php + $chartData ="{ + \"chart\": + { + \"caption\": \"Countries With Most Oil Reserves [2017-18]\", + \"subcaption\": \"In MMbbl = One Million barrels\", + \"xaxisname\": \"Country\", + \"yaxisname\": \"Reserves (MMbbl)\", + \"numbersuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Venezuela\", + \"value\": \"290\" + }, { + \"label\": \"Saudi\", + \"value\": \"260\" + }, { + \"label\": \"Canada\", + \"value\": \"180\" + }, { + \"label\": \"Iran\", + \"value\": \"140\" + }, { + \"label\": \"Russia\", + \"value\": \"115\" + }, { + \"label\": \"UAE\", + \"value\": \"100\" + }, { + \"label\": \"US\", + \"value\": \"30\" + }, { + \"label\": \"China\", + \"value\": \"30\" + }] + }"; + + // chart object + $Chart = new FusionCharts("column2d", "chart-1" , "700", "400", "chart-container", "json", $chartData); + + // Render the chart + $Chart->render(); + +?> + <h3>Updating chart properties at runtime</h3> + <div align="center" id="chart-container">Chart will render here!</div> + <br/> + <br/> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="button" class="button" onClick="changeCaption()" value='Change Caption: Test Caption'/> + <input type="button" class="button" onClick="changeXAxisName()" value='Change X-Axis Name: Test X-Axis'/> + <input type="button" class="button" onClick="changeYAxisName()" value='Change Y-Axis Name: Test Y-Axis'/> + <input type="button" class="button" onClick="reset()" value='Reset'/> + </div> + + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/updating-different-chart.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/updating-different-chart.php new file mode 100755 index 0000000000000000000000000000000000000000..5680c8898c0d6ca6e3d6b06ec0d28dc56c05e4ad --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/updating-different-chart.php @@ -0,0 +1,159 @@ +<!DOCTYPE html> +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + <head> + <title>FusionCharts | Export Chart As Image (client-side)</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + <script type="text/javascript"> + + function updateChart(value) { + var chartData = ""; + switch (value) { + case 'Europe': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488" + }, { + "label": "Belgium", + "value": "35132" + }, { + "label": "Denmark", + "value": "34779" + }, { + "label": "Finland", + "value": "19776" + }] + } + break; + + case 'NA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + }, { + "label": "Mexico", + "value": "24072", + }, { + "label": "USA", + "value": "263546", + }] + } + break; + case 'SA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119" + }, { + "label": "Brazil", + "value": "114954" + }, { + "label": "Venezuela", + "value": "60806" + }] + } + break; + } // switch ends + FusionCharts.items["chartTwo"].setJSONData(chartData); + } + </script> + </head> + + <body> + + <?php + $chartData = "{ + \"chart\": + { + \"caption\": \"Sales by Region\", + \"xaxisname\": \"Region\", + \"yaxisname\": \"Total Sales\", + \"numbersuffix\": \"K\", + \"theme\": \"fusion\" + }, + \"data\": [{ + \"label\": \"Europe\", + \"value\": \"827508\", + \"link\": \"j-updateChart-Europe\" + }, { + \"label\": \"North America\", + \"value\": \"342947\", + \"link\": \"j-updateChart-NA\" + }, { + \"label\": \"South America\", + \"value\": \"183881\", + \"link\": \"j-updateChart-SA\" + }] + }"; + + $secondChartData = "{ + \"chart\": + { + } + }"; + + // chart object + $Chart = new FusionCharts("column2d", "ex1", '600', '400', "chart-1", "json", $chartData); + + // second chart object + $secChart = new FusionCharts("column2d", "chartTwo", '600', '400', "chart-2", "json", $secondChartData); + + // Render the chart + $Chart->render(); + $secChart->render(); + +?> + <h3>Updating Different Chart</h3> + <table style="width: 100%;" > + <tr> + <td> + <div id="chart-1">Chart will render here!</div> + </td> + <td> + <span>Click on the left chart to update this one</span> + <div id="chart-2">Chart will render here!</div> + </td> + </tr> + </table> + <br/> + <br/> + <a href="../index.php">Go Back</a> + + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/usa-map-sample.php b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/usa-map-sample.php new file mode 100755 index 0000000000000000000000000000000000000000..76724f07cb17c4483752d924c61e56e253a0789e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/php/samples/pages/usa-map-sample.php @@ -0,0 +1,279 @@ +<?php + + /* Include the `../src/fusioncharts.php` file that contains functions to embed the charts.*/ + include("../includes/fusioncharts.php"); +?> + <html> + + <head> + <title>FusionCharts | USA Map</title> + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <!-- + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> + --> + </head> + + <body> + + <?php + $mapData = "{ + \"chart\": { + \"caption\": \"Average Temperature of US States\", + \"subcaption\": \"1979 - 2000\", + \"entityFillHoverColor\": \"#F8F8E9\", + \"numberSuffix\": \"°F\", + \"showLabels\": \"1\", + + \"borderThickness\": \"0.4\", + \"theme\": \"fusion\", + \"entityToolText\": \"<b>\$lname</b> has an average temperature of <b>\$datavalue</b>\" + }, + \"colorrange\": { + \"minvalue\": \"20\", + \"code\": \"#00A971\", + \"gradient\": \"1\", + \"color\": [{ + \"minvalue\": \"20\", + \"maxvalue\": \"40\", + \"code\": \"#EFD951\" + }, { + \"minvalue\": \"40\", + \"maxvalue\": \"60\", + \"code\": \"#FD8963\" + }, + { + \"minvalue\": \"60\", + \"maxvalue\": \"80\", + \"code\": \"#D60100\" + } + + ] + }, + \"data\": [{ + \"id\": \"HI\", + \"value\": \"70.0\" + }, + { + \"id\": \"DC\", + \"value\": \"52.3\" + }, + { + \"id\": \"MD\", + \"value\": \"54.2\" + }, + { + \"id\": \"DE\", + \"value\": \"55.3\" + }, + { + \"id\": \"RI\", + \"value\": \"50.1\" + }, + { + \"id\": \"WA\", + \"value\": \"48.3\" + }, + { + \"id\": \"OR\", + \"value\": \"48.4\" + }, + { + \"id\": \"CA\", + \"value\": \"59.4\" + }, + { + \"id\": \"AK\", + \"value\": \"26.6\", + }, + { + \"id\": \"ID\", + \"value\": \"44.4\" + }, + { + \"id\": \"NV\", + \"value\": \"49.9\" + }, + { + \"id\": \"AZ\", + \"value\": \"60.3\" + }, + { + \"id\": \"MT\", + \"value\": \"42.7\" + }, + { + \"id\": \"WY\", + \"value\": \"42.0\" + }, + { + \"id\": \"UT\", + \"value\": \"48.6\" + }, + { + \"id\": \"CO\", + \"value\": \"45.1\" + }, + { + \"id\": \"NM\", + \"value\": \"53.4\" + }, + { + \"id\": \"ND\", + \"value\": \"40.4\" + }, + { + \"id\": \"SD\", + \"value\": \"45.2\" + }, + { + \"id\": \"NE\", + \"value\": \"48.8\" + }, + { + \"id\": \"KS\", + \"value\": \"54.3\" + }, + { + \"id\": \"OK\", + \"value\": \"59.6\" + }, + { + \"id\": \"TX\", + \"value\": \"64.8\" + }, + { + \"id\": \"MN\", + \"value\": \"41.2\" + }, + { + \"id\": \"IA\", + \"value\": \"47.8\" + }, + { + \"id\": \"MO\", + \"value\": \"54.5\" + }, + { + \"id\": \"AR\", + \"value\": \"60.4\" + }, + { + \"id\": \"LA\", + \"value\": \"66.4\" + }, + { + \"id\": \"WI\", + \"value\": \"43.1\" + }, + { + \"id\": \"IL\", + \"value\": \"51.8\" + }, + { + \"id\": \"KY\", + \"value\": \"55.6\" + }, + { + \"id\": \"TN\", + \"value\": \"57.6\" + }, + { + \"id\": \"MS\", + \"value\": \"63.4\" + }, + { + \"id\": \"AL\", + \"value\": \"62.8\" + }, + { + \"id\": \"GA\", + \"value\": \"63.5\" + }, + { + \"id\": \"MI\", + \"value\": \"44.4\" + }, + { + \"id\": \"IN\", + \"value\": \"51.7\" + }, + { + \"id\": \"OH\", + \"value\": \"50.7\" + }, + { + \"id\": \"PA\", + \"value\": \"48.8\" + }, + { + \"id\": \"NY\", + \"value\": \"45.4\" + }, + { + \"id\": \"VT\", + \"value\": \"42.9\" + }, + { + \"id\": \"NH\", + \"value\": \"43.8\" + }, + { + \"id\": \"ME\", + \"value\": \"41.0\" + }, + { + \"id\": \"MA\", + \"value\": \"47.9\" + }, + { + \"id\": \"CT\", + \"value\": \"49.0\" + }, + { + \"id\": \"NJ\", + \"value\": \"52.7\" + }, + { + \"id\": \"WV\", + \"value\": \"51.8\" + }, + { + \"id\": \"VA\", + \"value\": \"55.1\" + }, + { + \"id\": \"NC\", + \"value\": \"59.0\" + }, + { + \"id\": \"SC\", + \"value\": \"62.4\" + }, + { + \"id\": \"FL\", + \"value\": \"70.7\" + } + ] + }"; + + // chart object + $Chart = new FusionCharts("maps/usa", "map-1" , "700", "400", "map-container", "json", $mapData); + + // Render the chart + $Chart->render(); + +?> + + <h3>USA Map</h3> + <div id="map-container">Chart will render here!</div> + <br/> + <br/> + <a href="../index.php">Go Back</a> + </body> + + </html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/react/README.md b/graphs/fusioncharts-suite-xt/integrations/react/README.md new file mode 100755 index 0000000000000000000000000000000000000000..d3853e7e79ef8f8bad3ef8e65a19422ac453c9f4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/react/README.md @@ -0,0 +1,386 @@ +# react-fusioncharts + +A simple and lightweight `React` component which provides bindings for `FusionCharts` JavaScript Charting Library. It easily adds rich and interactive charts to any `React` Projects. + +## Installation + +To install `react-fusioncharts`, run: + +```bash +$ npm install react-fusioncharts --save +``` + +Also install `fusioncharts`, if it is not already installed: + +```bash +$ npm install fusioncharts --save +``` + +## Getting Started + +After installing `react-fusioncharts`, import it in your `React` app: + +```javascript +import React from 'react'; +import ReactDOM from 'react-dom'; +import FusionCharts from 'fusioncharts'; +import Charts from 'fusioncharts/fusioncharts.charts'; +import FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion'; +import ReactFC from 'react-fusioncharts'; + +ReactFC.fcRoot(FusionCharts, Charts, FusionTheme); + +// DataSource A +const dataSource = { + chart: { + caption: 'Countries With Most Oil Reserves [2017-18]', + subCaption: 'In MMbbl = One Million barrels', + xAxisName: 'Country', + yAxisName: 'Reserves (MMbbl)', + numberSuffix: 'K', + theme: 'fusion' + }, + data: [ + { label: 'Venezuela', value: '290' }, + { label: 'Saudi', value: '260' }, + { label: 'Canada', value: '180' }, + { label: 'Iran', value: '140' }, + { label: 'Russia', value: '115' }, + { label: 'UAE', value: '100' }, + { label: 'US', value: '30' }, + { label: 'China', value: '30' } + ] +}; + +const chartConfigs = { + type: 'column2d', + width: 600, + height: 400, + dataFormat: 'json', + dataSource: dataSource +}; + +ReactDOM.render(<ReactFC {...chartConfigs} />, document.getElementById('root')); +``` + +## Render FusionMaps + +To render a map, import the FusionMaps module along with the map definition. + +```javascript +import React from 'react'; +import ReactDOM from 'react-dom'; +import FusionCharts from 'fusioncharts'; +import Maps from 'fusioncharts/fusioncharts.maps'; +import World from 'fusioncharts/maps/fusioncharts.world'; +import FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion'; +import ReactFC from 'react-fusioncharts'; + +ReactFC.fcRoot(FusionCharts, Maps, World, FusionTheme); +// Data Source B +const dataSource = { + chart: { + caption: 'Average Annual Population Growth', + subcaption: ' 1955-2015', + numbersuffix: '%', + includevalueinlabels: '1', + labelsepchar: ': ', + entityFillHoverColor: '#FFF9C4', + theme: 'fusion' + }, + colorrange: { + minvalue: '0', + code: '#FFE0B2', + gradient: '1', + color: [ + { minvalue: '0.5', maxvalue: '1.0', color: '#FFD74D' }, + { minvalue: '1.0', maxvalue: '2.0', color: '#FB8C00' }, + { minvalue: '2.0', maxvalue: '3.0', color: '#E65100' } + ] + }, + data: [ + { id: 'NA', value: '.82', showLabel: '1' }, + { id: 'SA', value: '2.04', showLabel: '1' }, + { id: 'AS', value: '1.78', showLabel: '1' }, + { id: 'EU', value: '.40', showLabel: '1' }, + { id: 'AF', value: '2.58', showLabel: '1' }, + { id: 'AU', value: '1.30', showLabel: '1' } + ] +}; + +const chartConfigs = { + type: 'world', + width: 600, + height: 400, + dataFormat: 'json', + dataSource: dataSource +}; + +ReactDOM.render(<ReactFC {...chartConfigs} />, document.getElementById('root')); +``` + +## Working with Events + +To attach event callbacks to a FusionCharts component, follow the pattern below. + +Write the callback: + +As a separate function: + +```javascript +var chartEventCallback = function (eventObj, dataObj) { + [Code goes here] +} +``` + +Or, as a component class method: + +```javascript +chartEventCallback (eventObj, dataObj) { + [Code goes here] +} +``` + +Attach the callback to an event through the React-FC component: + +```javascript +<ReactFC {...chartConfigs} fcEvent-EVENTNAME={this.chartEventCallback} /> +``` + +Where, EVENTNAME is to be replaced by the event you want to track. + +##### Consider the example below that tracks hover events on a data plot. + +```javascript +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import FusionCharts from 'fusioncharts'; +import Charts from 'fusioncharts/fusioncharts.charts'; +import ReactFC from 'react-fusioncharts'; +import FusionTheme from 'fusioncharts/Charts/fusioncharts.theme.fusion'; + +ReactFC.fcRoot(FusionCharts, Charts, FusionTheme); + +const dataSource = /* Data Source A , given above */; + +const chartConfigs = { + type: 'column2d', + width: 600, + height: 400, + dataFormat: 'json', + dataSource: dataSource +}; + +class Chart extends Component { + constructor(props) { + super(props); + this.state = { + actualValue: 'Hover on the plot to see the value along with the label' + }; + this.showPlotValue = this.showPlotValue.bind(this); + } + + // Event callback handler for 'dataplotRollOver'. + // Shows the value of the hovered plot on the page. + showPlotValue(eventObj, dataObj) { + this.setState({ + actualValue: `You’re are currently hovering over ${ + dataObj.categoryLabel + } whose value is ${dataObj.displayValue}` + }); + } + + render() { + return ( + <div> + <ReactFC + {...chartConfigs} + fcEvent-dataplotRollOver={this.showPlotValue} + /> + <p style={{ padding: '10px', background: '#f5f2f0' }}> + {this.state.actualValue} + </p> + </div> + ); + } +} + +ReactDOM.render(<Chart />, document.getElementById('root')); +``` + +## DrillDown Component + +A custom component to easily add drill down to your react application. + +### Syntax + +```javascript +import FusionCharts from 'fusioncharts'; +import Charts from 'fusioncharts/fusioncharts.charts'; +import ReactFC from 'react-fusioncharts'; +import DrillDown from 'react-fusioncharts/components/DrillDown'; +DrillDown.fcRoot(FusionCharts, Charts); +``` + +```jsx +class MyComponent extends React.Component{ + constructor(props){ + super(props); + this.plotChildMap = [ 0, 2, 1 ]; + this.dataSource = /*Data Source A : Given above */ ; + this.btnConfig = {text : 'Back'}; + this.type= 'column2d'; + this.height = 400; + this.width = 400; + } + render(){ + return ( + <DrillDown + dataSource={dataSource} + plotChildMap={plotChildMap} + btnConfig={btnConfig} + btnStyle={btnStyle} + dataFormat={dataFormat} + type={type} + height={height} + width={width} + ...other + > + <ReactFC /> /* ReactFC as a child */ + <ReactFC /> + ... + <DrillDown></DrillDown> /* DrillDown as a child for next level drill down*/ + </DrillDown> + ) + } +} +``` + +#### Attribute Description + +- plotChildMap[Array(Number)| Array[Object]] + + - Array ( Number ) - Representation of child mapped to the plot of the parent data source passed to the `DrillDown` + component . Array location are considered plot index of parent, the value corresponding to it are considered which child chart to render. + `Eg. [0,2,1]` + `0(location) -> 0 (value)` means clicking the first (zero indexed) data plot , render the 0th child , + `1(location) -> 2(value)` means clicking the second data plot, render the 1st Child (Note: It is 0-indexed ) + **Null case** : You can pass `null` for a data plot for which you dont want a drill down. + - Array ( Object ) - Representation of child mapped with plot in form of an object of shape + `{ "plotPosition": Number, "childPosition": Number }` + This object holds information about which child render on a data plot is clicked. + `Eg. [{ plotPosition: 1 , childPosition: 0}, { plotPosition: 0, childPosition: 1}]` + Note: plotChildMap does not honour heterogeneous data , eg. Number and Object + both. + `[ 0 , { plotPosition:0, childPosition: 1 } ]` + +- btnConfig [Object]- Basic configuration without overriding the default button styles + - `text`: PropTypes.string - Button Text + - `color`: PropTypes.string + - `backgroundColor`: PropTypes.string + - `borderColor`: PropTypes.string + - `fontSize`: PropTypes.string + - `fontWeight`: PropTypes.string + - `padding`: PropTypes.string + - `fontFamily`: PropTypes.string +- btnStyle [Object] - CSS styles which override the styles in default btnConfig except `text`. + +## Working with APIs + +To call APIs we will need the chart object. To get the chart object for an React-FC component, pass a callback through the attribute `onRender`. + +Write the callback: + +As a separate function: + +```javascript +var chartRenderCallback = function (chart) { + [Code goes here] +} +``` + +Or, as a component class method: + +```javascript +chartRenderCallback (chart) { + [Code goes here] +} +``` + +Pass the callback as a prop, to which the chart object will be returned on rendering + +``` +<ReactFC {...chartConfigs} onRender={chartRenderCallback} /> +``` + +##### Consider the example below that conerts a Column 2D chart to a Pie 2D chart after 5 seconds. + +```javascript +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import FusionCharts from 'fusioncharts'; +import Charts from 'fusioncharts/fusioncharts.charts'; +import ReactFC from 'react-fusioncharts'; +import FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion'; + +ReactFC.fcRoot(FusionCharts, Charts, FusionTheme); + +const dataSource = /* Data source A given above */; + +const chartConfigs = { + type: 'column2d', + width: 600, + height: 400, + dataFormat: 'json', + dataSource: dataSource +}; + +class Chart extends Component { + // Convert the chart to a 2D Pie chart after 5 secs. + alterChart(chart) { + setTimeout(() => { + chart.chartType('pie2d'); + }, 5000); + } + + render() { + return ( + <div> + <ReactFC {...chartConfigs} onRender={alterChart} /> + </div> + ); + } +} + +ReactDOM.render(<Chart />, document.getElementById('root')); +``` + +## Test + +```sh +$ npm test +``` + +## Contributing + +We are actively accepting pull requests. For contributions create a pull request to the `develop` branch with the necessary details. + +- Clone the repository. +- Install dependencies +- Run `npm start` to start the dev server. +- Open `http://localhost:5000/` in your browser. + +```sh +$ git clone https://github.com/fusioncharts/react-fusioncharts-component.git +$ cd react-fusioncharts-component +$ npm i +$ npm start +``` + +To build, run: + +```sh +$ npm run build +``` + +### [Demos and Documentation](https://fusioncharts.github.io/react-fusioncharts-component/) diff --git a/graphs/fusioncharts-suite-xt/integrations/react/js/react-fusioncharts.js b/graphs/fusioncharts-suite-xt/integrations/react/js/react-fusioncharts.js new file mode 100755 index 0000000000000000000000000000000000000000..0928bcb405e760bc7ed10e448277eb899476320c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/react/js/react-fusioncharts.js @@ -0,0 +1,622 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("react"), require("fusioncharts")); + else if(typeof define === 'function' && define.amd) + define("ReactFC", ["react", "fusioncharts"], factory); + else if(typeof exports === 'object') + exports["ReactFC"] = factory(require("react"), require("fusioncharts")); + else + root["ReactFC"] = factory(root["React"], root["FusionCharts"]); +})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__3__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +// import ReactFC from './src/ReactFC'; +// Use this format to export ReactFC as default module +// Ref: https://gist.github.com/iamakulov/966b91c0fc6363a16ff0650b51fb991b +// export default ReactFC; +module.exports = __webpack_require__(1).default; + +/***/ }), +/* 1 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var fusioncharts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); +/* harmony import */ var fusioncharts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fusioncharts__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4); +/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7); +/* harmony import */ var _utils_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8); +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + + + + + + + +var ReactFC = +/*#__PURE__*/ +function (_React$Component) { + _inherits(ReactFC, _React$Component); + + _createClass(ReactFC, null, [{ + key: "fcRoot", + value: function fcRoot(core) { + for (var _len = arguments.length, modules = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + modules[_key - 1] = arguments[_key]; + } + + modules.forEach(function (m) { + if (m.getName || m.name) { + core.addDep(m); + } else { + m(core); + } + }); + ReactFC.fusionChartsCore = core; + } + }]); + + function ReactFC(props) { + var _this; + + _classCallCheck(this, ReactFC); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(ReactFC).call(this, props)); + _this.containerId = uuid_v4__WEBPACK_IMPORTED_MODULE_2___default()(); + _this.oldOptions = null; + _this.FusionCharts = props.fcLibrary || ReactFC.fusionChartsCore || fusioncharts__WEBPACK_IMPORTED_MODULE_1___default.a; + return _this; + } + + _createClass(ReactFC, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.renderChart(); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + if (!this.oldOptions) { + return; + } + + this.detectChanges(nextProps); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.chartObj.dispose(); + } + }, { + key: "detectChanges", + value: function detectChanges(nextProps) { + var currentOptions = this.resolveChartOptions(nextProps); + var oldOptions = this.oldOptions; + var optionsUpdatedNatively = ['width', 'height', 'type', 'dataFormat', 'dataSource', 'events']; + this.checkAndUpdateChartDimensions(currentOptions, oldOptions); + this.checkAndUpdateChartType(currentOptions, oldOptions); + this.checkAndUpdateChartData(currentOptions, oldOptions); + this.checkAndUpdateEvents(currentOptions, oldOptions); + this.checkAndUpdateRestOptions(_utils_options__WEBPACK_IMPORTED_MODULE_4__["default"].filter(function (option) { + return optionsUpdatedNatively.indexOf(option) === -1; + }), currentOptions, oldOptions); + this.oldOptions = currentOptions; + } + }, { + key: "checkAndUpdateChartDimensions", + value: function checkAndUpdateChartDimensions(currentOptions, oldOptions) { + var currWidth = currentOptions.width; + var currHeight = currentOptions.height; + var oldWidth = oldOptions.width; + var oldHeight = oldOptions.height; + + if (String(currWidth) !== String(oldWidth) || String(currHeight) !== String(oldHeight)) { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currWidth) && !_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currHeight)) { + this.chartObj.resizeTo(currWidth, currHeight); + } else { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currWidth)) { + this.chartObj.resizeTo({ + w: currWidth + }); + } + + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currHeight)) { + this.chartObj.resizeTo({ + h: currHeight + }); + } + } + } + } + }, { + key: "checkAndUpdateChartType", + value: function checkAndUpdateChartType(currentOptions, oldOptions) { + var currType = currentOptions.type; + var oldType = oldOptions.type; + + if (String(currType).toLowerCase() !== String(oldType).toLowerCase()) { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currType)) { + this.chartObj.chartType(String(currType).toLowerCase()); + } + } + } + }, { + key: "checkAndUpdateChartData", + value: function checkAndUpdateChartData(currentOptions, oldOptions) { + var currDataFormat = currentOptions.dataFormat; + var currData = currentOptions.dataSource; + var oldDataFormat = oldOptions.dataFormat; + var oldData = oldOptions.dataSource; + + if (String(currDataFormat).toLowerCase() !== String(oldDataFormat).toLowerCase()) { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currDataFormat) && !_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currData)) { + this.chartObj.setChartData(currData, String(currDataFormat).toLowerCase()); // If the chart dataFormat is changed then + // animate the chart to show the changes + + this.chartObj.render(); + } + } else if (!this.isSameChartData(currData, oldData)) { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currData)) { + this.chartObj.setChartData(currData, // When dataFormat is not given, but data is changed, + // then use 'json' as default dataFormat + currDataFormat ? String(currDataFormat).toLowerCase() : 'json'); + } + } + } + }, { + key: "isSameChartData", + value: function isSameChartData(currData, oldData) { + if (_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](currData) && _utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](oldData)) { + return _utils_utils__WEBPACK_IMPORTED_MODULE_3__["isSameObjectContent"](currData, oldData); + } + + return currData === oldData; + } + }, { + key: "checkAndUpdateEvents", + value: function checkAndUpdateEvents(currentOptions, oldOptions) { + var _this2 = this; + + var currEvents = currentOptions.events; + var oldEvents = oldOptions.events; + var temp1; + var temp2; + + if (this.detectChartEventsChange(currEvents, oldEvents)) { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currEvents)) { + temp1 = Object.assign({}, currEvents); + temp2 = _utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](oldEvents) ? {} : Object.assign({}, oldEvents); + Object.keys(temp2).forEach(function (eventName) { + if (temp2[eventName] === temp1[eventName]) { + temp1[eventName] = undefined; + } else { + _this2.chartObj.removeEventListener(eventName, temp2[eventName]); + } + }); + Object.keys(temp1).forEach(function (eventName) { + if (temp1[eventName]) { + _this2.chartObj.addEventListener(eventName, temp1[eventName]); + } + }); + } + } + } + }, { + key: "detectChartEventsChange", + value: function detectChartEventsChange(currEvents, oldEvents) { + if (_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](currEvents) && _utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](oldEvents)) { + return !this.isSameChartEvents(currEvents, oldEvents); + } + + return !(currEvents === oldEvents); + } + }, { + key: "isSameChartEvents", + value: function isSameChartEvents(currEvents, oldEvents) { + if (Object.keys(currEvents).length !== Object.keys(oldEvents).length) { + return false; + } + + var currEventNames = Object.keys(currEvents); + + for (var i = 0; i < currEventNames.length; ++i) { + var evName = currEventNames[i]; + + if (currEvents[evName] !== oldEvents[evName]) { + return false; + } + } + + return true; + } + }, { + key: "checkAndUpdateRestOptions", + value: function checkAndUpdateRestOptions(restOptions, currentOptions, oldOptions) { + var _this3 = this; + + var optionsUpdated = false; + restOptions.forEach(function (optionName) { + var currValue = currentOptions[optionName]; + var oldValue = oldOptions[optionName]; + + if (!_this3.isSameOptionValue(currValue, oldValue)) { + if (!_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isUndefined"](currValue)) { + if (_this3.chartObj.options && _this3.chartObj.options.hasOwnProperty(optionName)) { + _this3.chartObj.options[optionName] = currValue; + optionsUpdated = true; + } + } + } + }); + + if (optionsUpdated) { + this.chartObj.render(); // re-render the chart to reflect the changes + } + } + }, { + key: "isSameOptionValue", + value: function isSameOptionValue(currValue, oldValue) { + if (_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](currValue) && _utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](oldValue)) { + return _utils_utils__WEBPACK_IMPORTED_MODULE_3__["isSameObjectContent"](currValue, oldValue); + } + + return String(currValue) === String(oldValue); + } + }, { + key: "renderChart", + value: function renderChart() { + var _this4 = this; + + var currentOptions = this.resolveChartOptions(this.props); + var events = {}; + currentOptions.renderAt = this.containerId; + Object.keys(this.props).forEach(function (value) { + var event = value.match(/^fcEvent-.*/i); + + if (event && typeof _this4.props[value] === 'function') { + var eventName = value.replace(/^fcEvent-/i, ''); + events[eventName] = _this4.props[value]; + } + }); + + if (Object.keys(events).length > 0) { + if (currentOptions.events === undefined) { + currentOptions.events = events; + } else { + currentOptions.events = Object.assign(currentOptions.events, events); + } + } + + this.chartObj = new this.FusionCharts(currentOptions); + this.chartObj.render(); + this.oldOptions = currentOptions; + + if (this.props.onRender && typeof this.props.onRender === 'function') { + this.props.onRender(this.chartObj); + } + } + }, { + key: "resolveChartOptions", + value: function resolveChartOptions(props) { + var chartConfig = props.chartConfig ? props.chartConfig : {}; + var inlineOptions = _utils_options__WEBPACK_IMPORTED_MODULE_4__["default"].reduce(function (options, optionName) { + options[optionName] = props[optionName]; + return options; + }, {}); + Object.assign(inlineOptions, chartConfig); + + if (_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](inlineOptions.dataSource)) { + inlineOptions.dataSource = _utils_utils__WEBPACK_IMPORTED_MODULE_3__["deepCopyOf"](inlineOptions.dataSource); + } + + if (_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](inlineOptions.link)) { + inlineOptions.link = _utils_utils__WEBPACK_IMPORTED_MODULE_3__["deepCopyOf"](inlineOptions.link); + } + + if (_utils_utils__WEBPACK_IMPORTED_MODULE_3__["isObject"](inlineOptions.events)) { + inlineOptions.events = Object.assign({}, inlineOptions.events); + } + + return inlineOptions; + } + }, { + key: "render", + value: function render() { + return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { + className: this.props.className, + id: this.containerId + }); + } + }]); + + return ReactFC; +}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); + +/* harmony default export */ __webpack_exports__["default"] = (ReactFC); + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__2__; + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__3__; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +var rng = __webpack_require__(5); +var bytesToUuid = __webpack_require__(6); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection + +// getRandomValues needs to be invoked in a context where "this" is a Crypto +// implementation. Also, find the complete implementation of crypto on IE11. +var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) || + (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto)); + +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; +} + + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} + +module.exports = bytesToUuid; + + +/***/ }), +/* 7 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isCallable", function() { return isCallable; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSameObjectContent", function() { return isSameObjectContent; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return isUndefined; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepCopyOf", function() { return deepCopyOf; }); +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function isObject(value) { + return value !== null && _typeof(value) === 'object'; +} +function isCallable(value) { + return typeof value === 'function'; +} +function isSameObjectContent(obj1, obj2) { + if (Object.keys(obj1).length !== Object.keys(obj2).length) { + return false; + } + + var keys = Object.keys(obj1); + + for (var i = 0; i < keys.length; i += 1) { + var key = keys[i]; + + if (isObject(obj1[key]) && isObject(obj2[key])) { + if (!isSameObjectContent(obj1[key], obj2[key])) { + return false; + } + } else if (obj1[key] !== obj2[key]) { + return false; + } + } + + return true; +} +function isUndefined(value) { + // eslint-disable-next-line no-void + var UNDEFINED = void 0; + return value === UNDEFINED; +} +function deepCopyOf(obj) { + return JSON.parse(JSON.stringify(obj)); +} + +/***/ }), +/* 8 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = (['type', 'id', 'width', 'height', 'dataFormat', 'dataSource', 'events', 'link', 'showDataLoadingMessage', 'showChartLoadingMessage', 'baseChartMessageFont', 'baseChartMessageFontSize', 'baseChartMessageColor', 'dataLoadStartMessage', 'dataLoadErrorMessage', 'dataInvalidMessage', 'dataEmptyMessage', 'typeNotSupportedMessage', 'loadMessage', 'renderErrorMessage', 'containerBackgroundColor', 'containerBackgroundOpacity', 'containerClassName', 'baseChartMessageImageHAlign', 'baseChartMessageImageVAlign', 'baseChartMessageImageAlpha', 'baseChartMessageImageScale', 'typeNotSupportedMessageImageHAalign', 'typeNotSupportedMessageImageVAlign', 'typeNotSupportedMessageImageAlpha', 'typeNotSupportedMessageImageScale', 'dataLoadErrorMessageImageHAlign', 'dataLoadErrorMessageImageVAlign', 'dataLoadErrorMessageImageAlpha', 'dataLoadErrorMessageImageScale', 'dataLoadStartMessageImageHAlign', 'dataLoadStartMessageImageVAlign', 'dataLoadStartMessageImageAlpha', 'dataLoadStartMessageImageScale', 'dataInvalidMessageImageHAlign', 'dataInvalidMessageImageVAlign', 'dataInvalidMessageImageAlpha', 'dataInvalidMessageImageScale', 'dataEmptyMessageImageHAlign', 'dataEmptyMessageImageVAlign', 'dataEmptyMessageImageAlpha', 'dataEmptyMessageImageScale', 'renderErrorMessageImageHAlign', 'renderErrorMessageImageVAlign', 'renderErrorMessageImageAlpha', 'renderErrorMessageImageScale', 'loadMessageImageHAlign', 'loadMessageImageVAlign', 'loadMessageImageAlpha', 'loadMessageImageScale']); + +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/react/js/react-fusioncharts.min.js b/graphs/fusioncharts-suite-xt/integrations/react/js/react-fusioncharts.min.js new file mode 100755 index 0000000000000000000000000000000000000000..6c8b3234c7849f743419fbe99818a42a7127b624 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/react/js/react-fusioncharts.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("fusioncharts")):"function"==typeof define&&define.amd?define("ReactFC",["react","fusioncharts"],t):"object"==typeof exports?exports.ReactFC=t(require("react"),require("fusioncharts")):e.ReactFC=t(e.React,e.FusionCharts)}(window,function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){var r=n(4),a=n(5);e.exports=function(e,t,n){var o=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var s=(e=e||{}).random||(e.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var i=0;i<16;++i)t[o+i]=s[i];return t||a(s)}},function(e,t,n){e.exports=n(6).default},function(e,t){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var r=new Uint8Array(16);e.exports=function(){return n(r),r}}else{var a=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),a[t]=e>>>((3&t)<<3)&255;return a}}},function(e,t){for(var n=[],r=0;r<256;++r)n[r]=(r+256).toString(16).substr(1);e.exports=function(e,t){var r=t||0,a=n;return[a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]]].join("")}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(1),s=n.n(o),i=n(2),c=n.n(i);function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e){return null!==e&&"object"===u(e)}function l(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n=Object.keys(e),r=0;r<n.length;r+=1){var a=n[r];if(f(e[a])&&f(t[a])){if(!l(e[a],t[a]))return!1}else if(e[a]!==t[a])return!1}return!0}function d(e){return void 0===e}function p(e){return JSON.parse(JSON.stringify(e))}var h=["type","id","width","height","dataFormat","dataSource","events","link","showDataLoadingMessage","showChartLoadingMessage","baseChartMessageFont","baseChartMessageFontSize","baseChartMessageColor","dataLoadStartMessage","dataLoadErrorMessage","dataInvalidMessage","dataEmptyMessage","typeNotSupportedMessage","loadMessage","renderErrorMessage","containerBackgroundColor","containerBackgroundOpacity","containerClassName","baseChartMessageImageHAlign","baseChartMessageImageVAlign","baseChartMessageImageAlpha","baseChartMessageImageScale","typeNotSupportedMessageImageHAalign","typeNotSupportedMessageImageVAlign","typeNotSupportedMessageImageAlpha","typeNotSupportedMessageImageScale","dataLoadErrorMessageImageHAlign","dataLoadErrorMessageImageVAlign","dataLoadErrorMessageImageAlpha","dataLoadErrorMessageImageScale","dataLoadStartMessageImageHAlign","dataLoadStartMessageImageVAlign","dataLoadStartMessageImageAlpha","dataLoadStartMessageImageScale","dataInvalidMessageImageHAlign","dataInvalidMessageImageVAlign","dataInvalidMessageImageAlpha","dataInvalidMessageImageScale","dataEmptyMessageImageHAlign","dataEmptyMessageImageVAlign","dataEmptyMessageImageAlpha","dataEmptyMessageImageScale","renderErrorMessageImageHAlign","renderErrorMessageImageVAlign","renderErrorMessageImageAlpha","renderErrorMessageImageScale","loadMessageImageHAlign","loadMessageImageVAlign","loadMessageImageAlpha","loadMessageImageScale"];function g(e){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function y(e,t){return!t||"object"!==g(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function b(e,t,n){return t&&v(e.prototype,t),n&&v(e,n),e}function O(e,t){return(O=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var S=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=y(this,m(t).call(this,e))).containerId=c()(),n.oldOptions=null,n.FusionCharts=e.fcLibrary||t.fusionChartsCore||s.a,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&O(e,t)}(t,a.a.Component),b(t,null,[{key:"fcRoot",value:function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];r.forEach(function(t){t.getName||t.name?e.addDep(t):t(e)}),t.fusionChartsCore=e}}]),b(t,[{key:"componentDidMount",value:function(){this.renderChart()}},{key:"componentWillReceiveProps",value:function(e){this.oldOptions&&this.detectChanges(e)}},{key:"componentWillUnmount",value:function(){this.chartObj.dispose()}},{key:"detectChanges",value:function(e){var t=this.resolveChartOptions(e),n=this.oldOptions,r=["width","height","type","dataFormat","dataSource","events"];this.checkAndUpdateChartDimensions(t,n),this.checkAndUpdateChartType(t,n),this.checkAndUpdateChartData(t,n),this.checkAndUpdateEvents(t,n),this.checkAndUpdateRestOptions(h.filter(function(e){return-1===r.indexOf(e)}),t,n),this.oldOptions=t}},{key:"checkAndUpdateChartDimensions",value:function(e,t){var n=e.width,r=e.height,a=t.width,o=t.height;String(n)===String(a)&&String(r)===String(o)||(d(n)||d(r)?(d(n)||this.chartObj.resizeTo({w:n}),d(r)||this.chartObj.resizeTo({h:r})):this.chartObj.resizeTo(n,r))}},{key:"checkAndUpdateChartType",value:function(e,t){var n=e.type,r=t.type;String(n).toLowerCase()!==String(r).toLowerCase()&&(d(n)||this.chartObj.chartType(String(n).toLowerCase()))}},{key:"checkAndUpdateChartData",value:function(e,t){var n=e.dataFormat,r=e.dataSource,a=t.dataFormat,o=t.dataSource;String(n).toLowerCase()!==String(a).toLowerCase()?d(n)||d(r)||(this.chartObj.setChartData(r,String(n).toLowerCase()),this.chartObj.render()):this.isSameChartData(r,o)||d(r)||this.chartObj.setChartData(r,n?String(n).toLowerCase():"json")}},{key:"isSameChartData",value:function(e,t){return f(e)&&f(t)?l(e,t):e===t}},{key:"checkAndUpdateEvents",value:function(e,t){var n,r,a=this,o=e.events,s=t.events;this.detectChartEventsChange(o,s)&&(d(o)||(n=Object.assign({},o),r=d(s)?{}:Object.assign({},s),Object.keys(r).forEach(function(e){r[e]===n[e]?n[e]=void 0:a.chartObj.removeEventListener(e,r[e])}),Object.keys(n).forEach(function(e){n[e]&&a.chartObj.addEventListener(e,n[e])})))}},{key:"detectChartEventsChange",value:function(e,t){return f(e)&&f(t)?!this.isSameChartEvents(e,t):!(e===t)}},{key:"isSameChartEvents",value:function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n=Object.keys(e),r=0;r<n.length;++r){var a=n[r];if(e[a]!==t[a])return!1}return!0}},{key:"checkAndUpdateRestOptions",value:function(e,t,n){var r=this,a=!1;e.forEach(function(e){var o=t[e],s=n[e];r.isSameOptionValue(o,s)||d(o)||r.chartObj.options&&r.chartObj.options.hasOwnProperty(e)&&(r.chartObj.options[e]=o,a=!0)}),a&&this.chartObj.render()}},{key:"isSameOptionValue",value:function(e,t){return f(e)&&f(t)?l(e,t):String(e)===String(t)}},{key:"renderChart",value:function(){var e=this,t=this.resolveChartOptions(this.props),n={};t.renderAt=this.containerId,Object.keys(this.props).forEach(function(t){if(t.match(/^fcEvent-.*/i)&&"function"==typeof e.props[t]){var r=t.replace(/^fcEvent-/i,"");n[r]=e.props[t]}}),Object.keys(n).length>0&&(void 0===t.events?t.events=n:t.events=Object.assign(t.events,n)),this.chartObj=new this.FusionCharts(t),this.chartObj.render(),this.oldOptions=t,this.props.onRender&&"function"==typeof this.props.onRender&&this.props.onRender(this.chartObj)}},{key:"resolveChartOptions",value:function(e){var t=e.chartConfig?e.chartConfig:{},n=h.reduce(function(t,n){return t[n]=e[n],t},{});return Object.assign(n,t),f(n.dataSource)&&(n.dataSource=p(n.dataSource)),f(n.link)&&(n.link=p(n.link)),f(n.events)&&(n.events=Object.assign({},n.events)),n}},{key:"render",value:function(){return a.a.createElement("div",{className:this.props.className,id:this.containerId})}}]),t}();t.default=S}])}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/react/sample/README.md b/graphs/fusioncharts-suite-xt/integrations/react/sample/README.md new file mode 100755 index 0000000000000000000000000000000000000000..0ec944649a30d9f3fe2def3d939be03cb719d97a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/react/sample/README.md @@ -0,0 +1,2 @@ +# React FusionCharts +We have created multiple samples using **React FusionCharts** for your reference. To view the samples click [here](https://fusioncharts.github.io/react-fusioncharts-component/ "React FusionCharts"). \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/MIT-LICENSE b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/MIT-LICENSE new file mode 100755 index 0000000000000000000000000000000000000000..ea966ec36e11d7385057ba3e4b4f7594ba66ef4f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright 2014 YOURNAME + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/README.md b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/README.md new file mode 100755 index 0000000000000000000000000000000000000000..53fc17b6ae392b44550e40e91e74b30ddc19c638 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/README.md @@ -0,0 +1,84 @@ +# Fusioncharts Exporter Handler + +FusionCharts export handler for Ruby on Rails. + +# Version + +2.0 + +## Installation + +Add this line to your application's Gemfile: +``` +gem 'fusioncharts_exporter' +``` + +And then execute: +``` +$ bundle +``` + +## Introduction + +### What is it? +FusionCharts Suite XT uses JavaScript to generate charts in the browser, using SVG and VML (for older IE). If you need to export the charts as images or PDF, you need a server-side helper library to convert the SVG to image/PDF. These export handlers allow you to take the SVG from FusionCharts charts and convert to image/PDF. + +### How does the export handler work? +- A chart is generated in the browser. When the export to image or PDF button is clicked, the chart generates the SVG string to represent the current state and sends to the export handler. The export handler URL is configured via chart attributes. +- The export handler accepts the SVG string along with chart configuration like chart type, width, height etc., and uses [RMagick](http://rmagick.rubyforge.org/) library to convert to image or PDF. +- The export handler either writes the image or PDF to disk, based on the configuration provided by chart, or streams it back to the browser. + +## Pre-requisites +You will have to install the following applications without which the exporter will fail to run. + +- [RMagick](http://rmagick.rubyforge.org/) + +## RMagick Installation + + Dependencies to run the this controller + + - rmagick + - json + + Installing rmagick in ubuntu + 1. First, check that the universe repository is enabled by inspecting '**/etc/apt/sources.list**' with your favourite editor. + + 2. You will need to use **_sudo_** to ensure that you have permissions to edit the file. + + 3. If universe is not included then modify the file so that it does. + + 4. deb http://us.archive.ubuntu.com/ubuntu precise main universe + 5. After any changes you should run this command to update your system. + + 6. **_sudo apt-get update_** + 7. You can now install the package like this. + + 8. Install librmagick-ruby + **_sudo apt-get install librmagick-ruby_** + + 10. Add this line to your application’s gemfile + 11. **_gem "rmagick", "~> 2.13.1"_** + +## Configuration +The following are the configurables to be modified as required in the `app/controllerfc_exporter_controller.rb`: + + +Location on the server where the image will be saved. +`save_path` + + + +## Mount the application +You will have to specify the end point of the export server. In order to do this, you will have to mount the export handler to your rails application. Add the following lines in `config/routes.rb`. + +For eg., if you want your export server hosted at `http://<my-website>/export`, then add the following lines: +``` + post 'fc_exporter/init' + get 'fc_exporter/init' +``` + +## Contributing and Testing + +1. Clone the repository: `TODO` +2. Run `bundle install` +3. Run `rails server` diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/Rakefile b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/Rakefile new file mode 100755 index 0000000000000000000000000000000000000000..338456c974079f2bf450ab9906a1bb318e301dfe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/Rakefile @@ -0,0 +1,20 @@ +begin + require 'bundler/setup' +rescue LoadError + puts 'You must `gem install bundler` and `bundle install` to run rake tasks' +end + +require 'rdoc/task' + +RDoc::Task.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'FusionchartsExporter' + rdoc.options << '--line-numbers' + rdoc.rdoc_files.include('README.rdoc') + rdoc.rdoc_files.include('lib/**/*.rb') +end + +load 'rails/tasks/engine.rake' + + +Bundler::GemHelper.install_tasks diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/javascripts/fusioncharts_exporter/application.js b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/javascripts/fusioncharts_exporter/application.js new file mode 100755 index 0000000000000000000000000000000000000000..5bc2e1c8b55a621a15f9f51b12fb04d2c01c73b9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/javascripts/fusioncharts_exporter/application.js @@ -0,0 +1,13 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. +// +// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require_tree . diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/javascripts/fusioncharts_exporter/exporter.js b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/javascripts/fusioncharts_exporter/exporter.js new file mode 100755 index 0000000000000000000000000000000000000000..dee720facdcda703fe5067aef3fcec32c121f50b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/javascripts/fusioncharts_exporter/exporter.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/stylesheets/fusioncharts_exporter/application.css b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/stylesheets/fusioncharts_exporter/application.css new file mode 100755 index 0000000000000000000000000000000000000000..a443db3401278f21dee3f448f317487a642967a9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/stylesheets/fusioncharts_exporter/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any styles + * defined in the other CSS/SCSS files in this directory. It is generally better to create a new + * file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/stylesheets/fusioncharts_exporter/exporter.css b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/stylesheets/fusioncharts_exporter/exporter.css new file mode 100755 index 0000000000000000000000000000000000000000..afad32db02d37ceee7791f6bb1af74351a46cdcd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/assets/stylesheets/fusioncharts_exporter/exporter.css @@ -0,0 +1,4 @@ +/* + Place all the styles related to the matching controller here. + They will automatically be included in application.css. +*/ diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/controllers/fusioncharts_exporter/application_controller.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/controllers/fusioncharts_exporter/application_controller.rb new file mode 100755 index 0000000000000000000000000000000000000000..f6d455ef15c4c7be3e59ac38c141d235ab7ee499 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/controllers/fusioncharts_exporter/application_controller.rb @@ -0,0 +1,4 @@ +module FusionchartsExporter + class ApplicationController < ActionController::Base + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/controllers/fusioncharts_exporter/exporter_controller.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/controllers/fusioncharts_exporter/exporter_controller.rb new file mode 100755 index 0000000000000000000000000000000000000000..9a61247c86f77cb85d2a51dae1a80c1788618687 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/controllers/fusioncharts_exporter/exporter_controller.rb @@ -0,0 +1,39 @@ +require_dependency "fusioncharts_exporter/application_controller" + +module FusionchartsExporter + class ExporterController < ApplicationController + + # The action that controls the export + def index + @exporter = Export.new + @exporter.setRootPath(Rails.root) + @exporter.setConfigFile(File.join(Rails.root, "config", "fusioncharts_exporter.yml")) + @exporter.setParams(params) + @exporter.process_image + + return download if @exporter.downloadable? + + return save if @exporter.saveable? + + end + + private + + # Download helper + def download + File.open(@exporter.get_downloaded_filename, "r") do |f| + send_data f.read, :filename => @exporter.get_export_filename, :type => @exporter.get_mime_type + + @exporter.remove_files + end + end + + # Save helper + def save + status = @exporter.save + + render :json => { "success" => status } + end + + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/helpers/fusioncharts_exporter/application_helper.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/helpers/fusioncharts_exporter/application_helper.rb new file mode 100755 index 0000000000000000000000000000000000000000..d80737a2eb9112f804bcdb4d9d9c0aaeed2404e9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/helpers/fusioncharts_exporter/application_helper.rb @@ -0,0 +1,4 @@ +module FusionchartsExporter + module ApplicationHelper + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/helpers/fusioncharts_exporter/exporter_helper.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/helpers/fusioncharts_exporter/exporter_helper.rb new file mode 100755 index 0000000000000000000000000000000000000000..24b7da27293d473ff73d1d53900efa5206d7976d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/helpers/fusioncharts_exporter/exporter_helper.rb @@ -0,0 +1,4 @@ +module FusionchartsExporter + module ExporterHelper + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/models/fusioncharts_exporter/export.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/models/fusioncharts_exporter/export.rb new file mode 100755 index 0000000000000000000000000000000000000000..1a39b095a04a7065a46b671e5a387e96a7ab0c91 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/models/fusioncharts_exporter/export.rb @@ -0,0 +1,165 @@ +module FusionchartsExporter + class Export + + # Path where all temporary images will be stored. + FUSIONCHARTS_TEMP_PATH = "tmp/fusioncharts" + + def setConfigFile(configFile) + @configFile = configFile + @config = YAML.load_file(@configFile) + + self + end + + def setParams(params) + @params = params + @options = {} + @export_params = @params[:parameters] + @export_params.split("|").each do |p| + splitted = p.split("=") + @options[splitted[0]] = splitted[1] + end + + self + end + + # Return the options instance variable + def get_options + @options + end + + # Return the filename with the absolute path of the current downloaded item + def get_downloaded_filename + get_download_filename + end + + def downloadable? + @options['exportaction'] === 'download' ? true : false + end + + def saveable? + @options['exportaction'] === 'save' ? true : false + end + + def remove_files + @remove_files.each { |f| File.delete(f) } + end + + def save + begin + dest = get_destination + FileUtils.mv(get_download_filename, dest) + + stat = true + rescue + stat = false + end + + @remove_files.reject!{ |f| f === get_download_filename } + self.remove_files + + if stat + return true + end + + return false + end + + def process_image + + pre_process_image + + File.open(@options['filepath'], "w") do |f| + f.write(@params[:stream]) + end + + extension = @options['exportformat'] + + unless(extension == 'svg') + + # Create a PNG / PDF image + temp_extension = extension == 'pdf' ? 'pdf' : 'png' + cmd = @config['inkscape_path'] + " --without-gui --export-background=#{@options['meta']['bgColor']} --file=#{@options['filepath']} --export-#{temp_extension}=#{@options['tempfilename']}.#{temp_extension} --export-width=#{@options['meta']['width']} --export-height=#{@options['meta']['height']}" + raise "Inkscape was unable to convert svg to png. Is Inkscape configured and installed correctly?" unless system(cmd) + @remove_files << @options['tempfilename'] + ".#{temp_extension}" + + # Create JPG image + if extension == 'jpg' || extension == 'jpeg' + cmd = @config['imagemagick_path'] + " -quality 100 #{@options['tempfilename']}.png #{@options['tempfilename']}.#{extension}" + raise "ImageMagick was unable to convert to jpg. Is ImageMagick configured and installed correctly?" unless system(cmd) + @remove_files << @options['tempfilename'] + ".jpg" + end + end + + end + + # Get the name file that will be called during download + def get_export_filename + @options['exportfilename'] + "." + @options['exportformat'] + end + + def get_mime_type(options=nil) + options = options || @options + mime_types = { + 'jpg' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'gif' => 'image/gif', + 'png' => 'image/png', + 'pdf' => 'application/pdf', + 'svg' => 'image/svg+xml' + } + + if(mime_types[options['exportformat']]) + return mime_types[options['exportformat']] + else + raise "Invalid mime type" + end + end + + def setRootPath(path) + @root_path = path + + self + end + + private + + # Get the full download filename with the path + def get_download_filename + @options['tempfilename'] + "." + @options['exportformat'] + end + + def pre_process_image + @random_filename = SecureRandom.urlsafe_base64 + "_" + Time.now.to_i.to_s + @random_filename_path = File.join(Rails.root, FUSIONCHARTS_TEMP_PATH, @random_filename) + + @options['tempfilename'] = @random_filename_path + @options['filepath'] = @random_filename_path + ".svg" + @options['meta'] = get_meta_options + @remove_files = [ @options['filepath'] ] + end + + + + # Get all meta request paramaters + def get_meta_options + + meta = {} + @params.each do |p| + match = p[0].match(/^meta_(.*)/) + if(match) + meta[$1] = p[1] + end + end + + return meta + + end + + # Get the absoulte save path where the file be saved on the server + def get_destination + File.join(@root_path, @config['save_path'], @random_filename + "." + @options['exportformat']) + end + + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/views/layouts/fusioncharts_exporter/application.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/views/layouts/fusioncharts_exporter/application.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..21847600c8ec40c60ae0f395ee7f89949f3ac1df --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/app/views/layouts/fusioncharts_exporter/application.html.erb @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html> +<head> + <title>FusionchartsExporter</title> + <%= stylesheet_link_tag "fusioncharts_exporter/application", media: "all" %> + <%= javascript_include_tag "fusioncharts_exporter/application" %> + <%= csrf_meta_tags %> +</head> +<body> + +<%= yield %> + +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/config/routes.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/config/routes.rb new file mode 100755 index 0000000000000000000000000000000000000000..8e9383d2d221b8b1c0403aefe1b28e225c6d65aa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/config/routes.rb @@ -0,0 +1,5 @@ +FusionchartsExporter::Engine.routes.draw do + + post "/" => "exporter#index", as: "fusioncharts_exporter_export" + +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter.rb new file mode 100755 index 0000000000000000000000000000000000000000..9dc0489ddd4b19829d780704261eac6e18ee0d7d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter.rb @@ -0,0 +1,4 @@ +require "fusioncharts_exporter/engine" + +module FusionchartsExporter +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter/engine.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter/engine.rb new file mode 100755 index 0000000000000000000000000000000000000000..8b173bcada61d5649e604372ed9876e6ddf829bd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter/engine.rb @@ -0,0 +1,9 @@ +module FusionchartsExporter + class Engine < ::Rails::Engine + isolate_namespace FusionchartsExporter + + config.generators do |g| + g.test_framework :rspec + end + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter/version.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter/version.rb new file mode 100755 index 0000000000000000000000000000000000000000..b8d6b21d8af47f0507cefdd6171519bdadde946f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/fusioncharts_exporter/version.rb @@ -0,0 +1,3 @@ +module FusionchartsExporter + VERSION = "0.0.1" +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/USAGE b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/USAGE new file mode 100755 index 0000000000000000000000000000000000000000..e01367f4098e209f7c06c118517d60e9dd4beeeb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/USAGE @@ -0,0 +1,8 @@ +Description: + Generates config file for the fusioncharts export handler + +Example: + rails generate fusioncharts_exporter:install + + This will create: + config/fusioncharts_exporter.yml diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/install_generator.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/install_generator.rb new file mode 100755 index 0000000000000000000000000000000000000000..aa459fdab197049afd7c33fa87cd68a1bb7fb01f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/install_generator.rb @@ -0,0 +1,19 @@ +module FusionchartsExporter + + class InstallGenerator < Rails::Generators::Base + + source_root File.expand_path('../templates', __FILE__) + + # Generate configuration file + def generate_config + template "fusioncharts_exporter.erb", "#{Rails.root}/config/fusioncharts_exporter.yml" + end + + # Create directory where all images will be stored temporarily + def generate_temp_dir + empty_directory File.join(Rails.root, "tmp", "fusioncharts") + end + + end + +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/templates/fusioncharts_exporter.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/templates/fusioncharts_exporter.erb new file mode 100755 index 0000000000000000000000000000000000000000..327a8ab1fc7af39f4cdeca59c6b3907feff092b5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/generators/fusioncharts_exporter/install/templates/fusioncharts_exporter.erb @@ -0,0 +1,3 @@ +inkscape_path: "/path/to/inkscape" +imagemagick_path: "/path/to/imagemagick" +save_path: "public/fusioncharts" \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/tasks/fusioncharts_exporter_tasks.rake b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/tasks/fusioncharts_exporter_tasks.rake new file mode 100755 index 0000000000000000000000000000000000000000..d0a21db8f64077e60f151dee61edd7363f0fe312 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/chart-export-handler/lib/tasks/fusioncharts_exporter_tasks.rake @@ -0,0 +1,4 @@ +# desc "Explaining what the task does" +# task :fusioncharts_exporter do +# # Task goes here +# end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts-rails.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts-rails.rb new file mode 100755 index 0000000000000000000000000000000000000000..0ba719dd8c0e78b7e5df012b682eaacdf2c66052 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts-rails.rb @@ -0,0 +1,4 @@ +require "erb" +require "json" +require "fusioncharts/rails/version" +require "fusioncharts/rails/chart" \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails.rb new file mode 100755 index 0000000000000000000000000000000000000000..08f05d289f3b8ece638f3079bd412ffc5b8b2d67 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails.rb @@ -0,0 +1,5 @@ +module Fusioncharts + module Rails + + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails/chart.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails/chart.rb new file mode 100755 index 0000000000000000000000000000000000000000..870551a41f3a3acb5dbe028afbeb9c88a7ec9be0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails/chart.rb @@ -0,0 +1,132 @@ +module Fusioncharts + + class Chart + + include ::ActionView::Helpers::OutputSafetyHelper + + attr_accessor :options, :fusionchartsEvent + attr_reader :width, :height, :type, :renderAt, :dataSource, :dataFormat, :jsonUrl, :xmlUrl + + # Constructor + def initialize(options=nil) + @fusionchartsEvent = "" + if options.nil? + @options = {} + else + @options = options + parse_options + end + end + + # Sets the width for a chart + def width=(width) + @width = width.to_s + + setOption('width', @width) + end + + # Sets the height for a chart + def height=(height) + @height = height.to_s + + setOption('height', @height) + end + + # Set the type for a chart + def type=(type) + @type = type + + setOption('type', @type) + end + + # Sets the dataformat for a chart. + # Valid values are: json / xml + def dataFormat=(format) + @dataFormat = format + + setOption('dataFormat', @dataFormat) + end + + # Set the DOM id where the chart needs to be rendered + def renderAt=(id) + @renderAt = id + + setOption('renderAt', @renderAt) + end + + # Set the datasource for the chart. It can take the following formats + # 1. Ruby Hash + # 2. XML string + # 3. JSON string + def dataSource=(dataSource) + @dataSource = dataSource + parse_datasource_json + end + + # Set the JSON url where data needs to be loaded + def jsonUrl=(url) + @jsonUrl = url + end + + # Set the XML url where data needs to be loaded + def xmlUrl=(url) + @xmlUrl = url + end + + # Returns where the chart needs to load XML data from a url + def xmlUrl? + self.xmlUrl ? true : false + end + + # Returns where the chart needs to load JSON data from a url + def jsonUrl? + self.jsonUrl ? true : false + end + + def addEvent(eventName, eventHandler) + @fusionchartsEvent << "\n_fc_chart.addEventListener(\"" << eventName << "\"," << eventHandler << ")\n"; + end + + # Render the chart + def render + config = json_escape JSON.generate(self.options) + dataUrlFormat = self.jsonUrl? ? "json" : ( self.xmlUrl ? "xml" : nil ) + template = File.read(File.expand_path("../../../templates/chart.erb", __FILE__)) + renderer = ERB.new(template) + return raw renderer.result(binding) + end + + private + # Helper method to add property to the options hash + def setOption(key, value) + self.options[key] = value + + return self + end + + # Helper method to convert json string to Ruby hash + def parse_datasource_json + @dataFormat = "json" unless defined? @dataFormat + + if !xmlUrl? or !jsonUrl? + @dataSource = JSON.parse(@dataSource) if @dataSource.is_a? String and @dataFormat == "json" + end + + setOption('dataSource', @dataSource) + end + + # Helper method that converts the constructor params into instance variables + def parse_options + keys = @options.keys + keys.each{ |k| instance_variable_set "@#{k}".to_sym, @options[k] if self.respond_to? k } + #parse_datasource_json + end + + # Escape tags in json, if avoided might be vulnerable to XSS + def json_escape(str) + str.to_s.gsub('/', '\/') + end + + end + +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails/version.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails/version.rb new file mode 100755 index 0000000000000000000000000000000000000000..4dd5292d8e6c9cc200adfb26da075c1d1f5a1b1f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/fusioncharts/rails/version.rb @@ -0,0 +1,5 @@ +module Fusioncharts + module Rails + VERSION = "0.0.2" + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/templates/chart.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/templates/chart.erb new file mode 100755 index 0000000000000000000000000000000000000000..b9f145551289bc5c754ccdb512f721122dd0cff8 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/fusioncharts-wrapper/templates/chart.erb @@ -0,0 +1,14 @@ +<script type="text/javascript"> + FusionCharts.ready(function() { + var _fc_chart = new FusionCharts(<%= config %>); + <% if(dataUrlFormat == 'json') %> + _fc_chart.setJSONUrl("<%= @jsonUrl %>") + <% elsif(dataUrlFormat == 'xml') %> + _fc_chart.setXMLUrl("<%= @xmlUrl %>") + <% end %> + + <%= @fusionchartsEvent %> + + _fc_chart.render(); + }); +</script> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/Gemfile b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/Gemfile new file mode 100755 index 0000000000000000000000000000000000000000..9a5a8b0f01c853ca7a162a4ad11ec010e9e979a0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/Gemfile @@ -0,0 +1,64 @@ +source 'https://rubygems.org' +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby '2.5.1' + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 5.2.0' +# Use sqlite3 as the database for Active Record +gem 'sqlite3' +# Use mysql as the database for Active Record +gem 'mysql2', '>= 0.4.4', '< 0.6.0' +# Use Puma as the app server +gem 'puma', '~> 3.11' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# See https://github.com/rails/execjs#readme for more supported runtimes +# gem 'mini_racer', platforms: :ruby + +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails', '~> 4.2' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks', '~> 5' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.5' +# Use Redis adapter to run Action Cable in production +# gem 'redis', '~> 4.0' +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use ActiveStorage variant +# gem 'mini_magick', '~> 4.8' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +# Reduces boot times through caching; required in config/boot.rb +gem 'bootsnap', '>= 1.1.0', require: false + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] +end + +group :development do + # Access an interactive console on exception pages or by calling 'console' anywhere in the code. + gem 'web-console', '>= 3.3.0' + gem 'listen', '>= 3.0.5', '< 3.2' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' +end + +group :test do + # Adds support for Capybara system testing and selenium driver + gem 'capybara', '>= 2.15', '< 4.0' + gem 'selenium-webdriver' + # Easy installation and use of chromedriver to run system tests with Chrome + gem 'chromedriver-helper' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/README.md b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/README.md new file mode 100755 index 0000000000000000000000000000000000000000..7db80e4ca1bf849701dce58a63f09a102cb9f931 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/README.md @@ -0,0 +1,24 @@ +# README + +This README would normally document whatever steps are necessary to get the +application up and running. + +Things you may want to cover: + +* Ruby version + +* System dependencies + +* Configuration + +* Database creation + +* Database initialization + +* How to run the test suite + +* Services (job queues, cache servers, search engines, etc.) + +* Deployment instructions + +* ... diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/Rakefile b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/Rakefile new file mode 100755 index 0000000000000000000000000000000000000000..e85f913914bd9d1342eae4cdd97b5520733a592a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative 'config/application' + +Rails.application.load_tasks diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/config/manifest.js b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/config/manifest.js new file mode 100755 index 0000000000000000000000000000000000000000..b16e53d6d56d262ebcd7692c54616a9df2a30f8b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/config/manifest.js @@ -0,0 +1,3 @@ +//= link_tree ../images +//= link_directory ../javascripts .js +//= link_directory ../stylesheets .css diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/application.js b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/application.js new file mode 100755 index 0000000000000000000000000000000000000000..d670530f294e5a472559394e4539c06676e90e77 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/application.js @@ -0,0 +1,30 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's +// vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require rails-ujs +//= require activestorage +//= require turbolinks +//= require_tree . +// Put equal sign "=" to include fusioncharts js into your project +// require fusioncharts/fusioncharts +// require fusioncharts/fusioncharts.charts +// require fusioncharts/fusioncharts.overlappedbar2d +// require fusioncharts/fusioncharts.overlappedcolumn2d +// require fusioncharts/fusioncharts.widgets +// require fusioncharts/fusioncharts.maps +// require fusioncharts/maps/fusioncharts.usa +// require fusioncharts/maps/fusioncharts.world +// require fusioncharts/themes/fusioncharts.theme.fusion +// require fusioncharts/themes/fusioncharts.theme.carbon +// require fusioncharts/themes/fusioncharts.theme.fint +// require fusioncharts/themes/fusioncharts.theme.ocean +// require fusioncharts/themes/fusioncharts.theme.zune diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/cable.js b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/cable.js new file mode 100755 index 0000000000000000000000000000000000000000..739aa5f022071bfaefac9de447f6250b5d83dd83 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/cable.js @@ -0,0 +1,13 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the `rails generate channel` command. +// +//= require action_cable +//= require_self +//= require_tree ./channels + +(function() { + this.App || (this.App = {}); + + App.cable = ActionCable.createConsumer(); + +}).call(this); diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/data.json b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/data.json new file mode 100755 index 0000000000000000000000000000000000000000..afcc83ff5e276f2c76ad200f56c35efa12e43cb4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/data.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fint" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/data.xml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/data.xml new file mode 100755 index 0000000000000000000000000000000000000000..a1e859da31666e6d213a5ca3d0e283d48972965a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/data.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" plotgradientcolor="" bgcolor="FFFFFF" showplotborder="0" divlinecolor="CCCCCC" showvalues="1" showcanvasborder="0" canvasbordercolor="CCCCCC" canvasborderthickness="1" showyaxisvalues="0" showlegend="1" showshadow="0" labelsepchar=": " basefontcolor="000000" labeldisplay="AUTO" numberscalevalue="1000,1000,1000" numberscaleunit="K,M,B" palettecolors="#008ee4,#9b59b6,#6baa01,#e44a00,#f8bd19,#d35400,#bdc3c7,#95a5a6,#34495e,#1abc9c" showborder="0"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" color="e44a00" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/samples.coffee b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/samples.coffee new file mode 100755 index 0000000000000000000000000000000000000000..24f83d18bbd38c24c4f7c3c2fc360cd68e857a2a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/javascripts/samples.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/stylesheets/application.css b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/stylesheets/application.css new file mode 100755 index 0000000000000000000000000000000000000000..d05ea0f51121598f49fa5bebf85fa0723d33d1a4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/stylesheets/samples.scss b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/stylesheets/samples.scss new file mode 100755 index 0000000000000000000000000000000000000000..90cb31ff21f2b5217697ec26603e16adfa27fc82 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/assets/stylesheets/samples.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the samples controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/channels/application_cable/channel.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/channels/application_cable/channel.rb new file mode 100755 index 0000000000000000000000000000000000000000..d67269728300b9dac6a4a0db443ece02d7b6c513 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/channels/application_cable/connection.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/channels/application_cable/connection.rb new file mode 100755 index 0000000000000000000000000000000000000000..0ff5442f476f98d578f77221b57164cffcf08de0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/controllers/application_controller.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/controllers/application_controller.rb new file mode 100755 index 0000000000000000000000000000000000000000..09705d12ab4dfe301535a973e2607fad4efc9d0d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/controllers/application_controller.rb @@ -0,0 +1,2 @@ +class ApplicationController < ActionController::Base +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/controllers/samples_controller.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/controllers/samples_controller.rb new file mode 100755 index 0000000000000000000000000000000000000000..e516536b972d8a4cc659f3fa97e24b6764833f93 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/controllers/samples_controller.rb @@ -0,0 +1,41 @@ +require 'fusioncharts-rails' + +require 'first_chart' +require 'first_widget' +require 'first_map' +require 'drilldown' +require 'angular_gauge' +require 'mscolumn2d' + +require 'drill_down_data_handler' + +class SamplesController < ApplicationController + protect_from_forgery except: :handler + def index + + ##### Variables for First Chart Sample + @first_chart=FirstChart.getChart + @first_widget=FirstWidget.getWidget + @first_map=FirstMap.getMap + + @drilldown_chart = Drilldown.getChart + + @myGauge = AngularGuage.getGauge + + @myMsColumn2dChart = Mscolumn2d.getChart + + render template: "/samples/#{params[:page]}" + + end + + def home + redirect_to "/samples/index" + end + + def handler + # render json: {"test"=>"test-data"} + render json: DrillDownDataHandler.getData(params) + # render json: DrillDownDataHandler.getChart(params) + end + +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/helpers/application_helper.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/helpers/application_helper.rb new file mode 100755 index 0000000000000000000000000000000000000000..de6be7945c6a59798eb0ace177df38b05e98c2f0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/helpers/samples_helper.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/helpers/samples_helper.rb new file mode 100755 index 0000000000000000000000000000000000000000..c8bc0b2786b3a84c8db95364ffdc47a5e1dfe225 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/helpers/samples_helper.rb @@ -0,0 +1,2 @@ +module SamplesHelper +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/jobs/application_job.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/jobs/application_job.rb new file mode 100755 index 0000000000000000000000000000000000000000..a009ace51ccf46bab4ac06100a225a1fa1801e65 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/jobs/application_job.rb @@ -0,0 +1,2 @@ +class ApplicationJob < ActiveJob::Base +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/mailers/application_mailer.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/mailers/application_mailer.rb new file mode 100755 index 0000000000000000000000000000000000000000..286b2239d139960190594225e0134fe1a5c05370 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/models/application_record.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/models/application_record.rb new file mode 100755 index 0000000000000000000000000000000000000000..10a4cba84df37181f4cf310fd85d8f0aaa5d90ba --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/models/sales_record.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/models/sales_record.rb new file mode 100755 index 0000000000000000000000000000000000000000..a84ec636811f65a062bfb3bdd587f6bf75ae132c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/models/sales_record.rb @@ -0,0 +1,2 @@ +class SalesRecord < ApplicationRecord +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/application.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/application.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..60afd4511668e7c7a74c54a34fd281b21e189b71 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/application.html.erb @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> + +<head> + <title>Fusioncharts Rails Samples</title> + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> + + <!-- FusionCharts Library --> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.gammel.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.zune.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.carbon.js"></script> + <script type="text/javascript" src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.ocean.js"></script> +</head> + + +<body style="font-family:'Helvetica Neue', Arial; font-size: 16px;"> + <%= yield %> +</body> + +</html> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/mailer.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/mailer.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..cbd34d2e9dd1176aeddb1efe6e1aeb0e2afd2931 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <style> + /* Email styles need to be inline */ + </style> + </head> + + <body> + <%= yield %> + </body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/mailer.text.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/mailer.text.erb new file mode 100755 index 0000000000000000000000000000000000000000..37f0bddbd746bc24923ce9a8eb0dae1ca3076284 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/angular-gauge-sample.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/angular-gauge-sample.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..a49d23b2fa3465a942843aaca5e544e518724ab0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/angular-gauge-sample.html.erb @@ -0,0 +1,7 @@ +<h3>Angular Gauge</h3> +<div id="gaugeContainer"></div> +<%=@myGauge.render() %> +<br/> +<br/> +<a href="index">Go Back</a> + diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-annotation.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-annotation.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..775bf82027049d0e78f70953223ec3cf55718893 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-annotation.html.erb @@ -0,0 +1,92 @@ +<% + require 'fusioncharts-rails' + + def getChart + chartData = { + "chart": { + "caption": "Bakersfield Central - Total footfalls", + "subCaption": "Last week", + "xAxisName": "Day", + "yAxisName": "No. of Visitors (In 1000s)", + "showValues": "0", + "theme": "fusion" + }, + "annotations":{ + "groups": [ + { + "id": "anchor-highlight", + "items": [ + { + "id": "high-star", + "type": "circle", + "x": "$dataset.0.set.2.x", + "y": "$dataset.0.set.2.y", + "radius": "12", + "color": "#6baa01", + "border": "2", + "borderColor": "#f8bd19" + }, + { + "id": "label", + "type": "text", + "text": "Highest footfall 25.5K", + "fillcolor": "#6baa01", + "rotate": "90", + "x": "$dataset.0.set.2.x+75", + "y": "$dataset.0.set.2.y-2" + } + ] + } + ] + }, + "data": [ + { + "label": "Mon", + "value": "15123" + }, + { + "label": "Tue", + "value": "14233" + }, + { + "label": "Wed", + "value": "25507" + }, + { + "label": "Thu", + "value": "9110" + }, + { + "label": "Fri", + "value": "15529" + }, + { + "label": "Sat", + "value": "20803" + }, + { + "label": "Sun", + "value": "19202" + } + ] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "spline", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Chart Annotation</h3> +<br/> +<div style="width: 100%; display: block;" align="center"> + <div id="chartContainer"><%= getChart.render() %></div> +</div> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-data-highlight.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-data-highlight.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..8198d34d3947a9952f7b3d6e9de9cea8d53d4775 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-data-highlight.html.erb @@ -0,0 +1,84 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Harry's SuperMart", + "subCaption": "Monthly revenue for last year", + "xAxisName": "Month", + "yAxisName": "Amount", + "numberPrefix": "$", + "theme": "fusion", + "rotateValues": "1", + "showPlotBorder": "1" + }, + "data": [ + { + "label": "Jan", + "value": "420000" + }, + { + "label": "Feb", + "value": "810000" + }, + { + "label": "Mar", + "value": "720000" + }, + { + "label": "Apr", + "value": "550000" + }, + { + "label": "May", + "value": "910000", + "alpha": "20", + "dashed": "1" + }, + { + "label": "Jun", + "value": "510000" + }, + { + "label": "Jul", + "value": "680000" + }, + { + "label": "Aug", + "value": "620000" + }, + { + "label": "Sep", + "value": "610000" + }, + { + "label": "Oct", + "value": "490000" + }, + { + "label": "Nov", + "value": "900000" + }, + { + "label": "Dec", + "value": "730000" + } + ] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Different language example</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-database.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-database.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..e8880dc2152200decb150a4877b1ed0f2b10ad61 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-database.html.erb @@ -0,0 +1,54 @@ +<% + def getChart + + # Chart appearance configuration + chartConfigObj = Hash.new + chartConfigObj = { + "caption" => "Sales by Continent", + "xAxisName" => "Continent", + "yAxisName" => "Total Sales", + "numberSuffix" => "K", + "theme" => "fusion" + } + + + dataTemplate = "{\"label\": \"%s\",\"value\": \"%s\"}," + + # Chart data as JSON string + labelValueJSONStr = "" + + result = SalesRecord.select("Region, SUM(TotalSales) as TotalSales").group("Region") + result.each do |row| + labelValuedata = dataTemplate % [row["Region"], row["TotalSales"].to_s, row["Region"]] + labelValueJSONStr.concat(labelValuedata) + end + + # Removing trailing comma character + labelValueJSONStr = labelValueJSONStr.chop + + # Chart JSON data template + chartJSONDataTemplate = "{ \"chart\": %s, \"data\": [%s] }" + + # Final Chart JSON data from template + chartJSONDataStr = chartJSONDataTemplate % [chartConfigObj.to_json, labelValueJSONStr] + + + + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartJSONDataStr + }) + end +%> + +<h3>Chart Using Database (SQLITE3)</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-export-at-server.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-export-at-server.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..1e1161750baaac3d0e1d177b18343f99eb35b7c4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-export-at-server.html.erb @@ -0,0 +1,144 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Salary Hikes by Country", + "subCaption": "2016 - 2017", + "exportEnabled": "1", + "exportMode": "server", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "Australia" + }, { + "label": "New-Zealand" + }, { + "label": "India" + }, { + "label": "China" + }, { + "label": "Myanmar" + }, { + "label": "Bangladesh" + }, { + "label": "Thailand" + }, { + "label": "South Korea" + }, { + "label": "Hong Kong" + }, { + "label": "Singapore" + }, { + "label": "Taiwan" + }, { + "label": "Vietnam" + }] + }], + "dataset": [{ + "seriesName": "2016 Actual Salary Increase", + "plotToolText": "Salaries increased by <b>$dataValue</b> in 2016", + "data": [{ + "value": "3" + }, { + "value": "3" + }, { + "value": "10" + }, { + "value": "7" + }, { + "value": "7.4" + }, { + "value": "10" + }, { + "value": "5.4" + }, { + "value": "4.5" + }, { + "value": "4.1" + }, { + "value": "4" + }, { + "value": "3.7" + }, { + "value": "9.3" + }] + }, { + "seriesName": "2017 Projected Salary Increase", + "plotToolText": "Salaries expected to increase by <b>$dataValue</b> in 2017", + "renderAs": "line", + "data": [{ + "value": "3" + }, { + "value": "2.8" + }, { + "value": "10" + }, { + "value": "6.9" + }, { + "value": "6.7" + }, { + "value": "9.4" + }, { + "value": "5.5" + }, { + "value": "5" + }, { + "value": "4" + }, { + "value": "4" + }, { + "value": "4.5" + }, { + "value": "9.8" + }] + }, { + "seriesName": "Inflation rate", + "plotToolText": "$dataValue projected inflation", + "renderAs": "area", + "showAnchors": "0", + "data": [{ + "value": "1.6" + }, { + "value": "0.6" + }, { + "value": "5.6" + }, { + "value": "2.3" + }, { + "value": "7" + }, { + "value": "5.6" + }, { + "value": "0.2" + }, { + "value": "1" + }, { + "value": "2.6" + }, { + "value": "0" + }, { + "value": "1.1" + }, { + "value": "2.4" + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "mscombi3d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Export Chart As Image (server-side)</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-export.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-export.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..6924d3f004bde462eab4340fa7b88496d0ae9325 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-export.html.erb @@ -0,0 +1,146 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Salary Hikes by Country", + "subCaption": "2016 - 2017", + "showhovereffect": "1", + "numberSuffix": "%", + "rotatelabels": "1", + "exportEnabled": "1", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "Australia" + }, { + "label": "New-Zealand" + }, { + "label": "India" + }, { + "label": "China" + }, { + "label": "Myanmar" + }, { + "label": "Bangladesh" + }, { + "label": "Thailand" + }, { + "label": "South Korea" + }, { + "label": "Hong Kong" + }, { + "label": "Singapore" + }, { + "label": "Taiwan" + }, { + "label": "Vietnam" + }] + }], + "dataset": [{ + "seriesName": "2016 Actual Salary Increase", + "plotToolText": "Salaries increased by <b>$dataValue</b> in 2016", + "data": [{ + "value": "3" + }, { + "value": "3" + }, { + "value": "10" + }, { + "value": "7" + }, { + "value": "7.4" + }, { + "value": "10" + }, { + "value": "5.4" + }, { + "value": "4.5" + }, { + "value": "4.1" + }, { + "value": "4" + }, { + "value": "3.7" + }, { + "value": "9.3" + }] + }, { + "seriesName": "2017 Projected Salary Increase", + "plotToolText": "Salaries expected to increase by <b>$dataValue</b> in 2017", + "renderAs": "line", + "data": [{ + "value": "3" + }, { + "value": "2.8" + }, { + "value": "10" + }, { + "value": "6.9" + }, { + "value": "6.7" + }, { + "value": "9.4" + }, { + "value": "5.5" + }, { + "value": "5" + }, { + "value": "4" + }, { + "value": "4" + }, { + "value": "4.5" + }, { + "value": "9.8" + }] + }, { + "seriesName": "Inflation rate", + "plotToolText": "$dataValue projected inflation", + "renderAs": "area", + "showAnchors": "0", + "data": [{ + "value": "1.6" + }, { + "value": "0.6" + }, { + "value": "5.6" + }, { + "value": "2.3" + }, { + "value": "7" + }, { + "value": "5.6" + }, { + "value": "0.2" + }, { + "value": "1" + }, { + "value": "2.6" + }, { + "value": "0" + }, { + "value": "1.1" + }, { + "value": "2.4" + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "mscombi3d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Export Chart As Image (client-side)</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-from-json-url.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-from-json-url.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..7490665b4453728b13ae085028e9c2b1e9e7b1c6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-from-json-url.html.erb @@ -0,0 +1,21 @@ +<% + def getChart + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataFormat: "jsonurl", + dataSource: "/data/drill-down.json" #/data/data.json" + }) + end +%> + +<h3>Chart using data from JSON URL</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-from-xml-url.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-from-xml-url.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..7fd73afc7e32b05c3638868b82804017722c1387 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-from-xml-url.html.erb @@ -0,0 +1,22 @@ +<% + def getChart + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataFormat: "xmlurl", + dataSource: "/data/data.xml" + }) + end + +%> + +<h3>Chart using data from XML URL</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-instancelevel-api.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-instancelevel-api.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..fc89574852d654bc75bfa6c4a16d7c4005add13a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-instancelevel-api.html.erb @@ -0,0 +1,133 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + id: "myChart", + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData, + }) + + end +%> + + + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + +<script> + track = function(){ + FusionCharts.items["myChart"].addEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click on the plot to see the value along with the label"; + }; + clickHandler = function(e){ + document.getElementById("message").innerHTML = "You have clicked on plot <b>"+ e.data.categoryLabel + "</b> whose value is <b>" + e.data.displayValue + "</b>"; + }; + reset = function(){ + FusionCharts.items["myChart"].removeEventListener("dataplotclick", clickHandler); + document.getElementById("message").innerHTML = "Click the below buttons to add an event dynamically to the chart"; + } +</script> + + <h3>Add event to a chart dyamically</h3> + <div> + <div id="chartContainer"></div> + <%= getChart.render() %> + </div> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onclick="track()" /> + <label for="radio1">LISTEN TO DATAPLOTCLICK EVENT</label> + <input type="radio" id="radio2" name="radios"value="false" onclick="reset()" /> + <label for="radio2">REMOVE DATAPLOTCLICK EVENT</label> + </div> + +<div> + <p id ="message"></p> +</div> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-interactive-event.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-interactive-event.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..5461c026ae7e30cad721b579e5a481d35902a2de --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-interactive-event.html.erb @@ -0,0 +1,72 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + + chart.addEvent("dataplotClick", "onDataplotClick"); + return chart + end +%> + +<script> + function onDataplotClick(eventObj) { + var dataValue = eventObj.data.dataValue; + var categoryLabel = eventObj.data.categoryLabel; + + document.getElementById("plotclick").innerHTML = "Category: " + categoryLabel + "\n" + "value: " + dataValue; + + } +</script> + +<h3>Show data plot value on click</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div> + <p id ="plotclick">Click on data plot above</p> + </div> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-language.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-language.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..bcda14b2661b19ffba09ec56a68a36338f971715 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-language.html.erb @@ -0,0 +1,82 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "سوبرماركت هاري", + "subCaption": "الإيرادات الشهرية للعام الماضي", + "xAxisName": "الشهر", + "yAxisName": "كمية", + "numberPrefix": "$", + "theme": "fusion", + "rotateValues": "1", + "exportEnabled": "1" + }, + "data": [ + { + "label": "يناير", + "value": "420000" + }, + { + "label": "فبراير", + "value": "810000" + }, + { + "label": "مارس", + "value": "720000" + }, + { + "label": "أبريل", + "value": "550000" + }, + { + "label": "مايو", + "value": "910000" + }, + { + "label": "يونيو", + "value": "510000" + }, + { + "label": "يوليو", + "value": "680000" + }, + { + "label": "أغسطس", + "value": "620000" + }, + { + "label": "سبتمبر", + "value": "610000" + }, + { + "label": "أكتوبر", + "value": "490000" + }, + { + "label": "نوفمبر", + "value": "900000" + }, + { + "label": "ديسمبر", + "value": "730000" + } + ] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Different language example</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-life-cycle-event.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-life-cycle-event.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..9267c5185f4745ede417163c07df433a256d6ff5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-life-cycle-event.html.erb @@ -0,0 +1,68 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + + chart.addEvent("dataLoaded", "onDataLoaded"); + return chart + end +%> + +<script> + function onDataLoaded() { + document.getElementById("dataLoaded").innerHTML = "Chart data is loaded succesfully!"; + } +</script> + +<h3>Show data plot value on click</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div> + <p id ="dataLoaded">Click on data plot above</p> + </div> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-message-example.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-message-example.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..3b5c05a3640258ec7b71d41b9ea17f19883035ab --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-message-example.html.erb @@ -0,0 +1,59 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataFormat: "xml", + dataSource: chartData, + dataInvalidMessage: "[CUSTOM MESSAGE] Unsupported data format or data is invalid.", + baseChartMessageFontSize: "18" + + }) + end +%> + +<h3>Configure chart message</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-number-format-module.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-number-format-module.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..4513be63b8843bc2d4155379e8caf458a5c1e113 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-number-format-module.html.erb @@ -0,0 +1,71 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + + chart.addEvent("renderComplete", "onRenderComplete"); + return chart + end +%> + +<script> + function onRenderComplete(eventObj) { + var formattedNumber = eventObj.sender.formatNumber(1234.5); + document.getElementById("rendered").innerHTML = "Format (123.5): " + formattedNumber; + + } +</script> + +<h3>Use of fusioncharts number module API</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div> + <p id ="rendered">Formatted number will appear here</p> + </div> +<br/> +<br/> + +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-product-level-api.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-product-level-api.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..59a471509757c86e49cd15445a576353f0492719 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-product-level-api.html.erb @@ -0,0 +1,137 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subCaption": "In MMbbl = One Million barrels", + "xAxisName": "Country", + "yAxisName": "Reserves (MMbbl)", + "numberSuffix": "K", + "theme": "fusion", + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + id: "mychart", + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + + end +%> + + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + +<script> + changeCaption = function () { + debugger; + FusionCharts("mychart").setChartAttribute('caption', 'Test Caption'); + } + changeXAxisName = function(){ + FusionCharts("mychart").setChartAttribute('xAxisName', 'Test X-Axis'); + } + changeYAxisName = function(){ + FusionCharts("mychart").setChartAttribute('yAxisName', 'Test Y-Axis'); + } + reset = function () { + + FusionCharts("mychart").setChartAttribute('caption', 'Countries With Most Oil Reserves [2017-18]'); + FusionCharts("mychart").setChartAttribute('xAxisName', 'Country'); + FusionCharts("mychart").setChartAttribute('yAxisName', 'Reserves (MMbbl)'); + } +</script> + +<h3>Change chart properties dynamically</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div> + <p align="center" id ="message"></p> + </div> + + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="radios" onclick="changeCaption()" /> + <label for="radio1">Change Caption: Test Caption</label> + <input type="radio" id="radio2" name="radios"value="false" onclick="changeXAxisName()" /> + <label for="radio2">Change X-Axis Name: Test X-Axis</label> + <input type="radio" id="radio3" name="radios"value="false" onclick="changeYAxisName()" /> + <label for="radio3">Change Y-Axis Name: Test Y-Axis</label> + <input type="radio" id="radio4" name="radios" value="false" onclick="reset()" /> + <label for="radio4">Reset</label> + </div> +<br/> +<br/> + +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-resize.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-resize.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..6e29ac1ed49e7f1b0e8b987fccff5ab0aedd392b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-resize.html.erb @@ -0,0 +1,141 @@ +<% + require 'fusioncharts-rails' + + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "100%", + height: "100%", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + +<h3>Chart Auto-Resise Sample</h3> + +<script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeSize(this.value); + }; + } + } + }); + + + function changeSize(size) { + document.getElementById('chartContainer').style.width = size.split('x')[0] + 'px'; + document.getElementById('chartContainer').style.height = size.split('x')[1] + 'px'; + }; +</script> + + + +<div align="center"> + <label style="padding: 0px 5px !important;">Select Chart Container Size (in pixels)</label> +</div> +<br/> +<div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="div-size" checked value="400x300"/> + <label for="radio1">400x300</label> + <input type="radio" id="radio2" name="div-size" value="600x500"/> + <label for="radio2">600x500</label> + <input type="radio" id="radio3" name="div-size" value="800x600"/> + <label for="radio3">800x600</label> + +</div> +<br/> +<br/> +<br/> +<div style="width: 100%; display: block;" align="center"> + <div id="chartContainer" style="border-style: solid;border-color:#5a5a5a;width: 400px; height: 300px;"><%= getChart.render() %></div> +</div> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-special-char.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-special-char.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..b29d836319a07c701b9244fd1107d462a3539f94 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-special-char.html.erb @@ -0,0 +1,38 @@ +<% + def getChart + chartData = "<chart caption='Harry's SuperMart' + subcaption='Monthly revenue for last year' xaxisname='Month' + yaxisname='Amount' numberprefix='¥' theme='fusion' + rotatevalues='1' exportenabled='1'> + <set label='Jan' value='420000' /> + <set label='Feb' value='810000' /> + <set label='Mar' value='720000' /> + <set label='Apr' value='550000' /> + <set label='May' value='910000' /> + <set label='Jun' value='510000' /> + <set label='Jul' value='680000' /> + <set label='Aug' value='620000' /> + <set label='Sep' value='610000' /> + <set label='Oct' value='490000' /> + <set label='Nov' value='900000' /> + <set label='Dec' value='730000' /> + </chart>" + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataFormat: "xml", + dataSource: chartData + }) + end +%> + +<h3>Chart using special character in XML data format</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-special-event.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-special-event.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..308dc840f4406ac5e58c65e68b1e368e2593ecce --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-special-event.html.erb @@ -0,0 +1,67 @@ +<% + def getChart + chartData = { + 'chart': { + 'caption': 'Server CPU Utilization', + 'subcaption': 'food.hsm.com', + 'lowerLimit': '0', + 'upperLimit': '100', + 'numberSuffix': '%', + 'valueAbovePointer': '0', + 'editmode': '1' + }, + 'colorRange': { + 'color': [{ + 'minValue': '0', + 'maxValue': '35', + 'label': 'Low', + 'code': '#1aaf5d' + }, { + 'minValue': '35', + 'maxValue': '70', + 'label': 'Moderate', + 'code': '#f2c500' + }, { + 'minValue': '70', + 'maxValue': '100', + 'label': 'High', + 'code': '#c02d00' + }] + }, + 'pointers': { + 'pointer': [{ + 'value': '72.5' + }] + } + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "hlineargauge", + renderAt: "chartContainer", + dataSource: chartData + }) + + chart.addEvent("realtimeUpdateComplete", "onUpdate"); + return chart + end +%> + +<script> + function onUpdate(eventObj) { + document.getElementById("dataUpdate").innerHTML = "Previous value: " + eventObj.data.prevData + " <br/>Updated value: " + eventObj.data.data.split('=')[1]; + } +</script> + +<h3>Example of data update event</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div> + <p id ="dataUpdate">Updated data will appear here</p> + </div> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-themes.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-themes.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..9ec33aeb31ad8d48dd738a72cdd874471752fa9d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-themes.html.erb @@ -0,0 +1,164 @@ +<% + def getChart1 + chartData = { + "chart": { + "caption": "Split of Sales by Product Category", + "subCaption": "5 top performing stores - last month", + "plotToolText": "<div><b>$label</b><br/>Product : <b>$seriesname</b><br/>Sales : <b>$$value</b></div>", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "Garden Groove harbour" + }, { + "label": "Bakersfield Central" + }, { + "label": "Los Angeles Topanga" + }, { + "label": "Compton-Rancho Dom" + }, { + "label": "Daly City Serramonte" + }] + }], + "dataset": [{ + "seriesname": "Non-Food Products", + "data": [{ + "value": "28800" + }, { + "value": "25400" + }, { + "value": "21800" + }, { + "value": "19500" + }, { + "value": "11500" + }] + }, { + "seriesname": "Food Products", + "data": [{ + "value": "17000" + }, { + "value": "19500" + }, { + "value": "12500" + }, { + "value": "14500" + }, { + "value": "17500" + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "overlappedcolumn2d", + renderAt: "chart-1", + dataSource: chartData + }) + end + + def getChart2 + + chartData = { + "chart": { + "caption": "Harry\'s SuperMart", + "subCaption": "Top 5 stores in last month by revenue", + "numberPrefix": "$", + "theme": "fusion" + }, + "data":[ + { + "label": "Bakersfield Central", + "value": "880000" + }, + { + "label": "Garden Groove harbour", + "value": "730000" + }, + { + "label": "Los Angeles Topanga", + "value": "590000" + }, + { + "label": "Compton-Rancho Dom", + "value": "520000" + }, + { + "label": "Daly City Serramonte", + "value": "330000" + } + ] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "column2d", + renderAt: "chart-2", + dataSource: chartData + }) + end +%> + + <script type="text/javascript"> + + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + ChangeTheme(this.value); + }; + } + } + }); + + + function ChangeTheme(theme) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].setChartAttribute('theme', theme); + } + } + }; + + </script> + + <h3>Chart Theme Sample</h3> + <div style="width: 100%; display: table;"> + <div style="display: table-row"> + <div id="chart-1" style="width: 40%; display: table-cell;"><%= getChart1.render() %></div> + <div id="chart-2" style="width: 40%; display: table-cell;"><%= getChart2.render() %></div> + </div> + </div> + <br/> + <br/> + + <div align="center"> + <label style="padding: 0px 5px !important;">Select a theme for all charts</label> + </div> + <br/> + <div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" checked value="fusion"/> Fusion + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="gammel"/> Gammel + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="zune"/> Zune + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="carbon"/> Carbon + </label> + <label style="padding: 0px 5px !important;"> + <input type="radio" name="theme-options" value="ocean"/> Ocean + </label> + </div> + +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-tooltip.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-tooltip.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..cf030a3712a2bcc6a5829e58a2425974f69ad034 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-tooltip.html.erb @@ -0,0 +1,96 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Top 3 Electronic Brands in Top 3 Revenue Earning States", + "subcaption": "Last month", + "aligncaptiontocanvas": "0", + "yaxisname": "Statewise Sales (in %)", + "xaxisname": "Brand", + "numberprefix": "$", + "showxaxispercentvalues": "1", + "showsum": "1", + "showPlotBorder": "1", + # Custom tool-text string built using a combination of HTML and chart macro variables + "plottooltext": "<div id='nameDiv' style='font-size: 14px; border-bottom: 1px dashed #666666; font-weight:bold; padding-bottom: 3px; margin-bottom: 5px; display: inline-block;'>$label :</div>{br}State: <b>$seriesName</b>{br}Sales : <b>$dataValue</b>{br}Market share in State : <b>$percentValue</b>{br}Overall market share of $label: <b>$xAxisPercentValue</b>", + "theme": "fusion" + }, + "categories": [ + { + "category": [ + { + "label": "Bose" + }, + { + "label": "Dell" + }, + { + "label": "Apple" + } + ] + } + ], + "dataset": [ + { + "seriesname": "California", + "data": [ + { + "value": "335000" + }, + { + "value": "225100" + }, + { + "value": "164200" + } + ] + }, + { + "seriesname": "Washington", + "data": [ + { + "value": "215000" + }, + { + "value": "198000" + }, + { + "value": "120000" + } + ] + }, + { + "seriesname": "Nevada", + "data": [ + { + "value": "298000" + }, + { + "value": "109300" + }, + { + "value": "153600" + } + ] + } + ] + } + + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "marimekko", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Customizing tooltip</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-update-onclick.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-update-onclick.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..612089c1e37bdfc0e8f48e7458526fb8f1c59760 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/chart-update-onclick.html.erb @@ -0,0 +1,152 @@ +<% + def getChart1 + chartData = { + "chart": { + "caption": "Sales by Region", + "xaxisname": "Region", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Europe", + "value": "827508", + "link": "j-updateChart-Europe" + }, { + "label": "North America", + "value": "342947", + "link": "j-updateChart-NA" + }, { + "label": "South America", + "value": "183881", + "link": "j-updateChart-SA" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "column2d", + renderAt: "chart-1", + dataSource: chartData + }) + end + + def getChart2 + + chartData = { + "chart": { + + } + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + id: "chartTwo", + width: "600", + height: "400", + type: "column2d", + renderAt: "chart-2", + dataSource: chartData, + dataEmptyMessage: "Click on the left chart to update this one" # Chart empty data message + }) + end +%> + + <script type="text/javascript"> + + function updateChart(value) { + var chartData = ""; + switch (value) { + case 'Europe': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488" + }, { + "label": "Belgium", + "value": "35132" + }, { + "label": "Denmark", + "value": "34779" + }, { + "label": "Finland", + "value": "19776" + }] + } + break; + + case 'NA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + }, { + "label": "Mexico", + "value": "24072", + }, { + "label": "USA", + "value": "263546", + }] + } + break; + case 'SA': + chartData = { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119", + }, { + "label": "Brazil", + "value": "114954", + }, { + "label": "Venezuela", + "value": "60806", + }] + } + break; + } // switch ends + + FusionCharts.items["chartTwo"].setJSONData(chartData); + } + + </script> + + <h3>Updating Different Chart</h3> + <table style="width: 100%;" > + <tr> + <td> + <div id="chart-1"><%= getChart1.render() %></div> + </td> + <td> + <div id="chart-2" ><%= getChart2.render() %></div> + </td> + </tr> + </table> + <br/> + <br/> + <br/> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/drilldown.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/drilldown.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..38f0b4c8d00550f9b61fb3c367cd6e68ce3b5ff2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/drilldown.html.erb @@ -0,0 +1,6 @@ +<h3>My Drilldown Chart</h3> +<div id="chartContainer"></div> +<%= @drilldown_chart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/dynamic-chartype-change.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/dynamic-chartype-change.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..028ebecf5ae94c8ee17110aa7836c0c025e18e96 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/dynamic-chartype-change.html.erb @@ -0,0 +1,142 @@ +<% + require 'fusioncharts-rails' + + def getChart + chartData = { + "chart": { + "caption": "Countries With Most Oil Reserves [2017-18]", + "subcaption": "In MMbbl = One Million barrels", + "xaxisname": "Country", + "yaxisname": "Reserves (MMbbl)", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Venezuela", + "value": "290" + }, { + "label": "Saudi", + "value": "260" + }, { + "label": "Canada", + "value": "180" + }, { + "label": "Iran", + "value": "140" + }, { + "label": "Russia", + "value": "115" + }, { + "label": "UAE", + "value": "100" + }, { + "label": "US", + "value": "30" + }, { + "label": "China", + "value": "30" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + + +<h3>Dynamic Chart Type Change</h3> + +<script type="text/javascript"> + FusionCharts && FusionCharts.ready(function () { + var trans = document.getElementById("controllers").getElementsByTagName("input"); + for (var i=0, len=trans.length; i<len; i++) { + if (trans[i].type == "radio"){ + trans[i].onchange = function() { + changeChartType(this.value); + }; + } + } + }); + + + function changeChartType(chartType) { + for (var k in FusionCharts.items) { + if (FusionCharts.items.hasOwnProperty(k)) { + FusionCharts.items[k].chartType(chartType); + } + } + }; +</script> + +<div align="center"> + <label style="padding: 0px 5px !important;">Select The Chart Type</label> +</div> +<br/> +<div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="div-size" checked value="column2d"/> + <label for="radio1">Column 2D</label> + <input type="radio" id="radio2" name="div-size" value="pie3d"/> + <label for="radio2">Pie 3D</label> + <input type="radio" id="radio3" name="div-size" value="bar2d"/> + <label for="radio3">Bar 2D</label> +</div> +<br/> +<br/> +<br/> +<div style="width: 100%; display: block;" align="center"> + <div id="chartContainer"><%= getChart.render() %></div> +</div> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-chart.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-chart.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..b9e52784b5ad29eeefbb088ace08333e45b33cc4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-chart.html.erb @@ -0,0 +1,6 @@ +<h3>My First Chart</h3> +<div id="chartContainer"></div> +<%=@first_chart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-map.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-map.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..c74cf537faaa7103c34252d060c7ec5dbb3ba5d9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-map.html.erb @@ -0,0 +1,6 @@ +<h3>My First Map</h3> +<div id="mapContainer"></div> +<%= @first_map.render()%> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-widget.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-widget.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..6622b530a66a1a882d9ea216675675f670f6d061 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/first-widget.html.erb @@ -0,0 +1,6 @@ +<h3>My First Widget</h3> +<div id="widgetContainer"></div> +<%=@first_widget.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/get-data-select-scatter-chart.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/get-data-select-scatter-chart.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..a5e608249983a38474b6c306745b2965d05ef364 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/get-data-select-scatter-chart.html.erb @@ -0,0 +1,412 @@ +<% + def getChart + chartData = { + 'chart': { + 'theme': 'fusion', + 'caption': 'Products Sold vs. Price points', + 'subcaption': 'Harry\'s SuperMart - Last Week', + 'yaxisname': 'Quantity Sold', + 'xaxisname': 'Price(In US $)', + 'xaxismaxvalue': '1000', + 'xaxisminvalue': '100', + 'yaxismaxvalue': '200', + 'xnumberprefix': '$', + 'ynumbersuffix': ' units', + 'showcanvasborder': '1', + 'canvasborderthickness': '0.4', + 'canvasborderalpha': '50', + 'showXAxisLine': '0', + 'showformbtn': '1', + 'formAction': '#', + 'submitdataasxml': '1' + }, + 'categories': [{ + 'verticallinecolor': '666666', + 'verticallinethickness': '1', + 'alpha': '40', + 'category': [{ + 'label': '$100', + 'x': '100', + 'showverticalline': '0' + }, { + 'label': '$200', + 'x': '200', + 'showverticalline': '1' + }, { + 'label': '$300', + 'x': '300', + 'showverticalline': '1' + }, { + 'label': '$400', + 'x': '400', + 'showverticalline': '1' + }, { + 'label': '$500', + 'x': '500', + 'showverticalline': '1' + }, { + 'label': '$600', + 'x': '600', + 'showverticalline': '1' + }, { + 'label': '$700', + 'x': '700', + 'showverticalline': '1' + }, { + 'label': '$800', + 'x': '800', + 'showverticalline': '1' + }, { + 'label': '$900', + 'x': '900', + 'showverticalline': '1' + }, { + 'label': '$1000', + 'x': '1000', + 'showverticalline': '0' + }] + }], + 'dataset': [{ + 'drawline': '0', + 'seriesname': 'Televisions', + 'color': '#6baa01', + 'anchorsides': '3', + 'anchorradius': '4', + 'anchorbgcolor': '#6baa01', + 'anchorbordercolor': '#6baa01', + 'data': [{ + 'id': 'TV_1', + 'y': '559', + 'x': '714' + }, { + 'id': 'TV_2', + 'y': '293', + 'x': '988' + }, { + 'id': 'TV_3', + 'y': '231', + 'x': '970' + }, { + 'id': 'TV_4', + 'y': '528', + 'x': '142' + }, { + 'id': 'TV_5', + 'y': '95', + 'x': '800' + }, { + 'id': 'TV_6', + 'y': '515', + 'x': '813' + }, { + 'id': 'TV_7', + 'y': '444', + 'x': '928' + }, { + 'id': 'TV_8', + 'y': '592', + 'x': '238' + }, { + 'id': 'TV_9', + 'y': '229', + 'x': '959' + }, { + 'id': 'TV_10', + 'y': '238', + 'x': '521' + }, { + 'id': 'TV_11', + 'y': '285', + 'x': '222' + }, { + 'id': 'TV_12', + 'y': '524', + 'x': '863' + }, { + 'id': 'TV_13', + 'y': '422', + 'x': '820' + }, { + 'id': 'TV_14', + 'y': '344', + 'x': '894' + }, { + 'id': 'TV_15', + 'y': '510', + 'x': '800' + }, { + 'id': 'TV_16', + 'y': '132', + 'x': '785' + }, { + 'id': 'TV_17', + 'y': '381', + 'x': '214' + }, { + 'id': 'TV_18', + 'y': '210', + 'x': '961' + }, { + 'id': 'TV_19', + 'y': '496', + 'x': '575' + }, { + 'id': 'TV_20', + 'y': '330', + 'x': '847' + }, { + 'id': 'TV_21', + 'y': '436', + 'x': '893' + }, { + 'id': 'TV_22', + 'y': '406', + 'x': '157' + }, { + 'id': 'TV_23', + 'y': '125', + 'x': '349' + }, { + 'id': 'TV_24', + 'y': '450', + 'x': '818' + }, { + 'id': 'TV_25', + 'y': '455', + 'x': '615' + }, { + 'id': 'TV_26', + 'y': '328', + 'x': '256' + }, { + 'id': 'TV_27', + 'y': '188', + 'x': '460' + }, { + 'id': 'TV_28', + 'y': '565', + 'x': '350' + }, { + 'id': 'TV_29', + 'y': '149', + 'x': '582' + }, { + 'id': 'TV_30', + 'y': '425', + 'x': '970' + }] + }, { + 'seriesname': 'Cell Phones', + 'color': '#f8bd19', + 'anchorsides': '4', + 'anchorradius': '4', + 'anchorbgcolor': '#f8bd19', + 'anchorbordercolor': '#f8bd19', + 'data': [{ + 'id': 'Mob_1', + 'y': '335', + 'x': '156' + }, { + 'id': 'Mob_2', + 'y': '339', + 'x': '927' + }, { + 'id': 'Mob_3', + 'y': '328', + 'x': '847' + }, { + 'id': 'Mob_4', + 'y': '1', + 'x': '177' + }, { + 'id': 'Mob_5', + 'y': '246', + 'x': '175' + }, { + 'id': 'Mob_6', + 'y': '368', + 'x': '441' + }, { + 'id': 'Mob_7', + 'y': '146', + 'x': '200' + }, { + 'id': 'Mob_8', + 'y': '347', + 'x': '482' + }, { + 'id': 'Mob_9', + 'y': '1', + 'x': '463' + }, { + 'id': 'Mob_10', + 'y': '63', + 'x': '440' + }, { + 'id': 'Mob_11', + 'y': '77', + 'x': '211' + }, { + 'id': 'Mob_12', + 'y': '108', + 'x': '824' + }, { + 'id': 'Mob_13', + 'y': '44', + 'x': '850' + }, { + 'id': 'Mob_14', + 'y': '77', + 'x': '712' + }, { + 'id': 'Mob_15', + 'y': '15', + 'x': '199' + }, { + 'id': 'Mob_16', + 'y': '333', + 'x': '836' + }, { + 'id': 'Mob_17', + 'y': '31', + 'x': '482' + }, { + 'id': 'Mob_18', + 'y': '90', + 'x': '604' + }, { + 'id': 'Mob_19', + 'y': '294', + 'x': '716' + }, { + 'id': 'Mob_20', + 'y': '241', + 'x': '870' + }, { + 'id': 'Mob_21', + 'y': '258', + 'x': '421' + }, { + 'id': 'Mob_22', + 'y': '186', + 'x': '456' + }, { + 'id': 'Mob_23', + 'y': '255', + 'x': '327' + }, { + 'id': 'Mob_24', + 'y': '203', + 'x': '995' + }, { + 'id': 'Mob_25', + 'y': '35', + 'x': '792' + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + id: "select_scatter", + width: "700", + height: "600", + type: "selectscatter", + renderAt: "chartContainer", + dataSource: chartData + }) + + chart.addEvent("renderComplete", "onRenderComplete"); + chart.addEvent("beforeDataSubmit", "onBeforeDataSubmit"); + chart.addEvent("dataRestored", "onDataRestored"); + + return chart + end +%> + + <script> + onRenderComplete = function (evtObj, argObj) { + + // argObj.container.parentNode.insertBefore(controllers, argObj.container.nextSibling); + /* + * getDataFromChart method prepares the + * tabular string from selection and + * write in a div and display it. + */ + evtObj.sender.getDataFromChart = function() { + var i, + j, + str, + ds = "", + dataArr, + flagData = false, + objDataset = evtObj.sender.getJSONData && evtObj.sender.getJSONData().dataset, + tableContainer = document.getElementById("tableView-1"); + + //Form tabular string + str = "<div style='margin:3px;font-family:'Arial','Helvetica';font-size: 12px;'> Data is returned by the chart as Array. The data is converted into tabular format using JavaScript.</div>"; + str += '<table border="1" cellpadding="1" cellspacing="0" bordercolor="#ffffff" width="100%">'; + for (i in objDataset) { + dataArr = objDataset[i].data; + if (dataArr.length > 0) { + flagData = true; + str += ' <tr>'; + str += ' <td width="20%" style="font-weight: bold;font-size: 14px;vertical-align: top;text-align:right;padding: 3px" color="' + objDataset[i].color + '">' + objDataset[i].seriesname + '</td>'; + + ds = '<table border="1" cellpadding="1" cellspacing="0" bordercolor="' + objDataset[i].color + '" width="100%">'; + ds += '<tr>'; + ds += '<td width="20%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Id</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Price (in USD)</td>'; + ds += '<td width="40%" style="font-weight: bold;font-size: 12px;background-color: #EEEEEE;text-align:center"> Quantity Sold</td>'; + ds += '</tr>'; + for (j = 0; j < dataArr.length; j++) { + var id = String(dataArr[j].id), + price = String(dataArr[j].x), + qty = String(dataArr[j].y); + + ds += '<tr>'; + ds += '<td width="20%" align="center">' + id + '</td>'; + ds += '<td width="40%" align="center">$' + price + ' </td>'; + ds += '<td width="40%" align="center">' + qty + ' units</td>'; + ds += '</tr>'; + } + ds += '</table>'; + str += ' <td width="80%" style="padding: 3px">' + ds + '</td>'; + str += ' </tr>'; + } + + } + str += '</table>'; + if (!flagData) { + str = "No Data Selected"; + } + tableContainer.style.display = "block"; + tableContainer.innerHTML = str; + } + }, + onBeforeDataSubmit = function (evtObj, argObj) { + document.getElementById("showData").textContent = ""; + // creating div for controllers + var controllers = document.createElement('div'); + controllers.setAttribute('id', 'controllers'); + controllers.style.display = "inline-block"; + controllers.innerHTML = "<div id='tableView-1' style='width:500px;display:none;margin-left:0px;max-height:250px;overflow:scroll;border: 1px solid #CCCCCC;margin: 3px;float: left;display:none; color: #666666;font-family:'Arial','Helvetica';font-size: 12px;'></div>"; + //Display container div and write table + document.getElementById("showData").appendChild(controllers); + evtObj.sender.getDataFromChart(); + }, + onDataRestored = function (evtObj, argObj) { + + document.getElementById("tableView-1").style.display = "none"; + document.getElementById("tableView-1").innerHTML = ""; + } + + </script> +<h3>Get data from select scatter chart and show them in tabular format</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div id ="showData">Select the data in the chart above then click on chart menu then Submit to get the tablular data.</div> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/index.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/index.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..bbc6acb222ef937b3b0d95723543541170c970ae --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/index.html.erb @@ -0,0 +1,111 @@ +<h1>FusionCharts Samples for Rails</h1> +<ol> + <li> + <a href="first-chart">Simple Chart Using Hash</a> + </li> + <li> + <a href="first-widget">Simple Widget Using Hash</a> + </li> + <li> + <a href="first-map">Simple Map Using Hash</a> + </li> + <li> + <a href="angular-gauge-sample">Angular Gauge</a> + </li> + <li> + <a href="chart-export">Export Chart As Image (client-side)</a> + </li> + <li> + <a href="chart-export-at-server">Export Chart As Image (server-side)</a> + </li> + <li> + <a href="drilldown">Chart with Drill-Down Feature</a> + </li> + <li> + <a href="mscolumn2d-sample">Multiseries Column 2D Chart</a> + </li> + <li> + <a href="mscombi3d-sample">Multiseries Combination 3D Chart</a> + </li> + <li> + <a href="pie3d-sample">Pie 3D Chart</a> + </li> + <li> + <a href="stacked-column2d-line-chart-sample">Stacked Column 2D with Line Chart</a> + </li> + <li> + <a href="chart-database">Chart Using Database (SQLITE3)</a> + </li> + <li> + <a href="usa-map-sample">USA Map</a> + </li> + <li> + <a href="chart-themes">Chart Themes</a> + </li> + <li> + <a href="chart-from-xml-url">Chart using data from XML URL</a> + </li> + <li> + <a href="chart-from-json-url">Chart using data from JSON URL</a> + </li> + <li> + <a href="chart-resize">Dynamic chart resize</a> + </li> + <li> + <a href="dynamic-chartype-change">Chart type change at runtime</a> + </li> + <li> + <a href="chart-annotation">Using annotations on chart</a> + </li> + <li> + <a href="chart-update-onclick">Updating different chart</a> + </li> + <li> + <a href="chart-tooltip">Customizing tooltip</a> + </li> + <li> + <a href="chart-data-highlight">DataPlot highlighting</a> + </li> + <li> + <a href="chart-instancelevel-api">Chart instance level API</a> + </li> + <li> + <a href="chart-interactive-event">Interactive chart event</a> + </li> + <li> + <a href="chart-language">Chart in different language</a> + </li> + <li> + <a href="chart-life-cycle-event">Chart life cycle event</a> + </li> + <li> + <a href="chart-message-example">Chart message</a> + </li> + <li> + <a href="chart-number-format-module">Number format module API</a> + </li> + <li> + <a href="chart-product-level-api">Chart product level API</a> + </li> + <li> + <a href="chart-resize">Chart auto-resize example</a> + </li> + <li> + <a href="chart-special-char">Special character in chart data</a> + </li> + <li> + <a href="chart-update-onclick">Showcasing chart message and update chart data on click</a> + </li> + <li> + <a href="special-charttype-api">Special chart type API</a> + </li> + <li> + <a href="chart-special-event">Data update event</a> + </li> + <li> + <a href="update-data-runtime">Updating data at runtime</a> + </li> + <li> + <a href="get-data-select-scatter-chart">Show data in tabular format from Select Scatter chart</a> + </li> +</ol> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/mscolumn2d-sample.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/mscolumn2d-sample.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..c6b185a7c0b7eb9697b790033c739d769efbbf99 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/mscolumn2d-sample.html.erb @@ -0,0 +1,6 @@ +<h3>MultiSeries Column 2D Chart</h3> +<div id="chartContainer"></div> +<%=@myMsColumn2dChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/mscombi3d-sample.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/mscombi3d-sample.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..e1a960806a3ed4a4c87f28d5c06b3b4add9ab623 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/mscombi3d-sample.html.erb @@ -0,0 +1,145 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Salary Hikes by Country", + "subCaption": "2016 - 2017", + "showhovereffect": "1", + "numberSuffix": "%", + "rotatelabels": "1", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "Australia" + }, { + "label": "New-Zealand" + }, { + "label": "India" + }, { + "label": "China" + }, { + "label": "Myanmar" + }, { + "label": "Bangladesh" + }, { + "label": "Thailand" + }, { + "label": "South Korea" + }, { + "label": "Hong Kong" + }, { + "label": "Singapore" + }, { + "label": "Taiwan" + }, { + "label": "Vietnam" + }] + }], + "dataset": [{ + "seriesName": "2016 Actual Salary Increase", + "plotToolText": "Salaries increased by <b>$dataValue</b> in 2016", + "data": [{ + "value": "3" + }, { + "value": "3" + }, { + "value": "10" + }, { + "value": "7" + }, { + "value": "7.4" + }, { + "value": "10" + }, { + "value": "5.4" + }, { + "value": "4.5" + }, { + "value": "4.1" + }, { + "value": "4" + }, { + "value": "3.7" + }, { + "value": "9.3" + }] + }, { + "seriesName": "2017 Projected Salary Increase", + "plotToolText": "Salaries expected to increase by <b>$dataValue</b> in 2017", + "renderAs": "line", + "data": [{ + "value": "3" + }, { + "value": "2.8" + }, { + "value": "10" + }, { + "value": "6.9" + }, { + "value": "6.7" + }, { + "value": "9.4" + }, { + "value": "5.5" + }, { + "value": "5" + }, { + "value": "4" + }, { + "value": "4" + }, { + "value": "4.5" + }, { + "value": "9.8" + }] + }, { + "seriesName": "Inflation rate", + "plotToolText": "$dataValue projected inflation", + "renderAs": "area", + "showAnchors": "0", + "data": [{ + "value": "1.6" + }, { + "value": "0.6" + }, { + "value": "5.6" + }, { + "value": "2.3" + }, { + "value": "7" + }, { + "value": "5.6" + }, { + "value": "0.2" + }, { + "value": "1" + }, { + "value": "2.6" + }, { + "value": "0" + }, { + "value": "1.1" + }, { + "value": "2.4" + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "mscombi3d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>MultiSeries Combination 3D Chart</h3> +<div id="chartContainer"></div> +<%=getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/pie3d-sample.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/pie3d-sample.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..b5c1f01e86526e1158db264b2b27e7844846891e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/pie3d-sample.html.erb @@ -0,0 +1,48 @@ +<% + def getChart + chartData = { + + "chart": { + "caption": "Recommended Portfolio Split", + "subCaption": "For a net-worth of $1M", + "showValues": "1", + "showPercentInTooltip": "0", + "numberPrefix": "$", + "enableMultiSlicing": "1", + "theme": "fusion" + }, + "data": [{ + "label": "Equity", + "value": "300000" + }, { + "label": "Debt", + "value": "230000" + }, { + "label": "Bullion", + "value": "180000" + }, { + "label": "Real-estate", + "value": "270000" + }, { + "label": "Insurance", + "value": "20000" + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "pie3d", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Pie 3D Chart</h3> +<div id="chartContainer"></div> +<%=getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/special-charttype-api.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/special-charttype-api.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..a5868bea2665ee3c8e7c19b3536c3266b3acbe10 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/special-charttype-api.html.erb @@ -0,0 +1,142 @@ +<% + def getChart + chartData = { + 'chart': { + 'caption': 'Market Share of Web Servers', + 'plottooltext': '<b>$percentValue</b> of web servers run on $label servers', + 'showLegend': '0', + 'enableMultiSlicing': '0', + 'showPercentValues': '1', + 'legendPosition': 'bottom', + 'useDataPlotColorForLabels': '1', + 'theme': 'fusion', + }, + 'data': [{ + 'label': 'Apache', + 'value': '32647479' + }, { + 'label': 'Microsoft', + 'value': '22100932' + }, { + 'label': 'Zeus', + 'value': '14376' + }, { + 'label': 'Other', + 'value': '18674221' + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + id: "first_chart", + width: "700", + height: "400", + type: "pie2d", + renderAt: "chartContainer", + dataSource: chartData + }) + + chart.addEvent("dataplotClick", "plotClickHandler"); + return chart + end +%> + + <style> + input[type=radio], input[type=checkbox] { + display:none; + } + + input[type=radio] + label, input[type=checkbox] + label { + display:inline-block; + margin:-2px; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255,255,255,0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top,#fff,#e6e6e6); + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); + background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); + background-image: -o-linear-gradient(top,#fff,#e6e6e6); + background-image: linear-gradient(to bottom,#fff,#e6e6e6); + background-repeat: repeat-x; + border: 1px solid #ccc; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-bottom-color: #b3b3b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05); + } + + input[type=radio]:checked + label, input[type=checkbox]:checked + label{ + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); + background-color:#e0e0e0; + } + </style> + + + <script> + selectedItem = "none"; + plotClickHandler = function(event){ + clickedPlot = (event.data.categoryLabel).toLowerCase(); + if (selectedItem !== clickedPlot) { + selectedItem = clickedPlot; + } else{ + selectedItem = 'none'; + } + }; + noneChecked = function(){ + FusionCharts("first_chart").slicePlotItem(0,false); + FusionCharts("first_chart").slicePlotItem(1,false); + FusionCharts("first_chart").slicePlotItem(2,false); + FusionCharts("first_chart").slicePlotItem(3,false); + } + apacheChecked = function(){ + FusionCharts("first_chart").slicePlotItem(0,true); + } + microsoftChecked = function(){ + FusionCharts("first_chart").slicePlotItem(1,true); + } + zeusChecked = function(){ + FusionCharts("first_chart").slicePlotItem(2,true); + } + otherChecked = function(){ + FusionCharts("first_chart").slicePlotItem(3,true); + } + </script> + +<h3>Use special chart type API</h3> +<div id="controllers" align="center" style="font-family:'Helvetica Neue', Arial; font-size: 14px;"> + <input type="radio" id="radio1" name="rdGrp-options" checked="checked" onclick="noneChecked()"/> + <label for="radio1">None</label> + <input type="radio" id="radio2" name="rdGrp-options" onclick="apacheChecked()"/> + <label for="radio2">Apache</label> + <input type="radio" id="radio3" name="rdGrp-options" onclick="microsoftChecked()"/> + <label for="radio3">Microsoft</label> + <input type="radio" id="radio4" name="rdGrp-options" onclick="zeusChecked()"/> + <label for="radio4">Zeus</label> + <input type="radio" id="radio5" name="rdGrp-options" onclick="otherChecked()"/> + <label for="radio5">Other</label> +</div> + +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <div> + <p id ="dataLoaded">Click on data plot above</p> + </div> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/stacked-column2d-line-chart-sample.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/stacked-column2d-line-chart-sample.erb new file mode 100755 index 0000000000000000000000000000000000000000..ed14128357d5b0fca6726a878807ebd545a8d46d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/stacked-column2d-line-chart-sample.erb @@ -0,0 +1,103 @@ +<% + def getChart + chartData = { + "chart": { + "showvalues": "0", + "caption": "Apple's Revenue & Profit", + "subCaption": "(2013-2016)", + "numberprefix": "$", + "numberSuffix": "B", + "plotToolText": "Sales of $seriesName in $label was <b>$dataValue</b>", + "showhovereffect": "1", + "yaxisname": "$ (In billions)", + "showSum": "1", + "theme": "fusion" + }, + "categories": [{ + "category": [{ + "label": "2013" + }, { + "label": "2014" + }, { + "label": "2015" + }, { + "label": "2016" + }] + }], + "dataset": [{ + "seriesname": "iPhone", + "data": [{ + "value": "21" + }, { + "value": "24" + }, { + "value": "27" + }, { + "value": "30" + }] + }, { + "seriesname": "iPad", + "data": [{ + "value": "8" + }, { + "value": "10" + }, { + "value": "11" + }, { + "value": "12" + }] + }, { + "seriesname": "Macbooks", + "data": [{ + "value": "2" + }, { + "value": "4" + }, { + "value": "5" + }, { + "value": "5.5" + }] + }, { + "seriesname": "Others", + "data": [{ + "value": "2" + }, { + "value": "4" + }, { + "value": "9" + }, { + "value": "11" + }] + }, { + "seriesname": "Profit", + "plotToolText": "Total profit in $label was <b>$dataValue</b>", + "renderas": "Line", + "data": [{ + "value": "17" + }, { + "value": "19" + }, { + "value": "13" + }, { + "value": "18" + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "stackedColumn2DLine", + renderAt: "chartContainer", + dataSource: chartData + }) + end +%> + +<h3>Stacked Column 2D Line Chart</h3> +<div id="chartContainer"></div> +<%=getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/test.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/test.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..b9e52784b5ad29eeefbb088ace08333e45b33cc4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/test.html.erb @@ -0,0 +1,6 @@ +<h3>My First Chart</h3> +<div id="chartContainer"></div> +<%=@first_chart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/update-data-runtime.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/update-data-runtime.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..062cd4e44ec9fc2312709908804e2400913ce6d7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/update-data-runtime.html.erb @@ -0,0 +1,64 @@ +<% + def getChart + chartData = { + 'chart': { + 'caption': 'Customer Satisfaction Score', + 'subcaption': 'Los Angeles Topanga', + 'plotToolText': 'Current Score: $value', + 'theme': 'fint', + 'chartBottomMargin': '50', + 'showValue': '1' + }, + 'colorRange': { + 'color': [{ + 'minValue': '0', + 'maxValue': '45', + 'code': '#e44a00' + }, { + 'minValue': '45', + 'maxValue': '75', + 'code': '#f8bd19' + }, { + 'minValue': '75', + 'maxValue': '100', + 'code': '#6baa01' + }] + }, + 'dials': { + 'dial': [{ + 'value': '70', + 'id': 'dial1' + }] + } + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + id: "angular_gauge", + width: "700", + height: "400", + type: "angulargauge", + renderAt: "chartContainer", + dataSource: chartData + }) + + return chart + end +%> + +<script> + updateData = function () { + var value = document.getElementById("dial-val").value; + FusionCharts("angular_gauge").setDataForId("dial1",value); + } +</script> + +<h3>Update dial value at runtime</h3> +<div id="chartContainer"></div> +<%= getChart.render() %> +<br/> + <label for="dial-val">Input dial value</label> + <input name="dial-val" id="dial-val" type= "number"/><input type ="button" name ="update dial" value ="Update Dial" onclick ="updateData()" /> +<br/> +<br/> +<a href="index">Go Back</a> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/usa-map-sample.html.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/usa-map-sample.html.erb new file mode 100755 index 0000000000000000000000000000000000000000..60d92e9fa7bcba17345f9dfd951593dbfb8b89b4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/app/views/samples/usa-map-sample.html.erb @@ -0,0 +1,259 @@ +<% + def getChart + chartData = { + "chart": { + "caption": "Average Temperature of US States", + "subcaption": "1979 - 2000", + "entityFillHoverColor": "#F8F8E9", + "numberSuffix": "°F", + "showLabels": "1", + + "borderThickness": "0.4", + "theme": "fusion", + "entityToolText": "<b>$lname</b> has an average temperature of <b>$datavalue</b>" + }, + "colorrange": { + "minvalue": "20", + "code": "#00A971", + "gradient": "1", + "color": [{ + "minvalue": "20", + "maxvalue": "40", + "code": "#EFD951" + }, { + "minvalue": "40", + "maxvalue": "60", + "code": "#FD8963" + }, + { + "minvalue": "60", + "maxvalue": "80", + "code": "#D60100" + } + + ] + }, + "data": [{ + "id": "HI", + "value": "70.0" + }, + { + "id": "DC", + "value": "52.3" + }, + { + "id": "MD", + "value": "54.2" + }, + { + "id": "DE", + "value": "55.3" + }, + { + "id": "RI", + "value": "50.1" + }, + { + "id": "WA", + "value": "48.3" + }, + { + "id": "OR", + "value": "48.4" + }, + { + "id": "CA", + "value": "59.4" + }, + { + "id": "AK", + "value": "26.6", + }, + { + "id": "ID", + "value": "44.4" + }, + { + "id": "NV", + "value": "49.9" + }, + { + "id": "AZ", + "value": "60.3" + }, + { + "id": "MT", + "value": "42.7" + }, + { + "id": "WY", + "value": "42.0" + }, + { + "id": "UT", + "value": "48.6" + }, + { + "id": "CO", + "value": "45.1" + }, + { + "id": "NM", + "value": "53.4" + }, + { + "id": "ND", + "value": "40.4" + }, + { + "id": "SD", + "value": "45.2" + }, + { + "id": "NE", + "value": "48.8" + }, + { + "id": "KS", + "value": "54.3" + }, + { + "id": "OK", + "value": "59.6" + }, + { + "id": "TX", + "value": "64.8" + }, + { + "id": "MN", + "value": "41.2" + }, + { + "id": "IA", + "value": "47.8" + }, + { + "id": "MO", + "value": "54.5" + }, + { + "id": "AR", + "value": "60.4" + }, + { + "id": "LA", + "value": "66.4" + }, + { + "id": "WI", + "value": "43.1" + }, + { + "id": "IL", + "value": "51.8" + }, + { + "id": "KY", + "value": "55.6" + }, + { + "id": "TN", + "value": "57.6" + }, + { + "id": "MS", + "value": "63.4" + }, + { + "id": "AL", + "value": "62.8" + }, + { + "id": "GA", + "value": "63.5" + }, + { + "id": "MI", + "value": "44.4" + }, + { + "id": "IN", + "value": "51.7" + }, + { + "id": "OH", + "value": "50.7" + }, + { + "id": "PA", + "value": "48.8" + }, + { + "id": "NY", + "value": "45.4" + }, + { + "id": "VT", + "value": "42.9" + }, + { + "id": "NH", + "value": "43.8" + }, + { + "id": "ME", + "value": "41.0" + }, + { + "id": "MA", + "value": "47.9" + }, + { + "id": "CT", + "value": "49.0" + }, + { + "id": "NJ", + "value": "52.7" + }, + { + "id": "WV", + "value": "51.8" + }, + { + "id": "VA", + "value": "55.1" + }, + { + "id": "NC", + "value": "59.0" + }, + { + "id": "SC", + "value": "62.4" + }, + { + "id": "FL", + "value": "70.7" + } + ] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "500", + type: "maps/usa", + renderAt: "mapContainer", + dataSource: chartData + }) + end +%> + +<h3>USA Map</h3> +<div id="mapContainer"></div> +<%=getChart.render() %> +<br/> +<br/> +<a href="index">Go Back</a> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config.ru b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config.ru new file mode 100755 index 0000000000000000000000000000000000000000..f7ba0b527b16a6f539991825ecd72c2e9b6e3af0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +run Rails.application diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/application.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/application.rb new file mode 100755 index 0000000000000000000000000000000000000000..be93d3c63de27c6302b7082d255d76dff3350557 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/application.rb @@ -0,0 +1,19 @@ +require_relative 'boot' + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module FusionchartsRailsSamples + class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 5.2 + + # Settings in config/environments/* take precedence over those specified here. + # Application configuration can go into files in config/initializers + # -- all .rb files in that directory are automatically loaded after loading + # the framework and any gems in your application. + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/boot.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/boot.rb new file mode 100755 index 0000000000000000000000000000000000000000..b9e460cef324d4f181108c7d209983da090e6b6a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/boot.rb @@ -0,0 +1,4 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. +require 'bootsnap/setup' # Speed up boot time by caching expensive operations. diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/cable.yml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/cable.yml new file mode 100755 index 0000000000000000000000000000000000000000..d761450511d3e5004855b1a7721cc2ad7e40f9ec --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: fusioncharts-rails-samples_production diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/credentials.yml.enc b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/credentials.yml.enc new file mode 100755 index 0000000000000000000000000000000000000000..112074aa666cc4ff3f18330616268a7cdd4a2e10 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/credentials.yml.enc @@ -0,0 +1 @@ +rQpmFDKgVEtYl4mTIUy8xaTJQkpLVayNTsTX70j4A3uY0xD/3yfl0GpQnklaPMLNzw9sBB7ZTdYvA9UNbPuz4jAz2+eEhPnqSxcMYmwPw5IqUfFwAZKK1odhe/rvt46nnfuxOh2NUNFhJZQ6H2JFPAq05v9E64euZ4MmczfvGt0x6vxNdBah5907fnVck1dtSSSWh5OAEOnai7E9wPC4NzHPqQEjY51H5BypiSM2Omom+dMWMAV6buyxWHFvruAdnn2qdq0gSXgpyRQoHIClsXRfk2NNunmgyUfRcisrHP2KjgHfjYvCfP5i6NrGVthEtH/RbLFlPzd2At6wABVUZpCN2Un6lxc7oZEYlTLFNa6PmOvMgJMw0Z+KBGvAgsBSTCVtO5Omjq2p482j2K/fEpzmaX5TV3XeQ2GM--03mP+NQoo8QkVUxk--ZtnMfhARmuhfN58dre4/gQ== \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/database.yml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/database.yml new file mode 100755 index 0000000000000000000000000000000000000000..0d02f249800d330a967f8c3cfbc7b5a87711b802 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/database.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +# +default: &default + adapter: sqlite3 + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environment.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environment.rb new file mode 100755 index 0000000000000000000000000000000000000000..426333bb46978d897be4cc6fac77b9fcaacf59d0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/development.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/development.rb new file mode 100755 index 0000000000000000000000000000000000000000..1311e3e4efe4f5724133ba97e18740483cb1a154 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/development.rb @@ -0,0 +1,61 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join('tmp', 'caching-dev.txt').exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Store uploaded files on the local file system (see config/storage.yml for options) + config.active_storage.service = :local + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/production.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/production.rb new file mode 100755 index 0000000000000000000000000000000000000000..3f67b785c987d469457c7e36d750b9e5dabf3131 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/production.rb @@ -0,0 +1,94 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Store uploaded files on the local file system (see config/storage.yml for options) + config.active_storage.service = :local + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "fusioncharts-rails-samples_#{Rails.env}" + + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/test.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/test.rb new file mode 100755 index 0000000000000000000000000000000000000000..0a38fd3ce920ae5f2a60d30abbd484fba7c1622e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/environments/test.rb @@ -0,0 +1,46 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Store uploaded files on the local file system in a temporary directory + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/application_controller_renderer.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/application_controller_renderer.rb new file mode 100755 index 0000000000000000000000000000000000000000..89d2efab2ba659d7814a7665a99f7f8d7429a072 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/assets.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/assets.rb new file mode 100755 index 0000000000000000000000000000000000000000..4b828e80cb778244843194acf5f8a74238ec2c13 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/assets.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join('node_modules') + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/backtrace_silencers.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/backtrace_silencers.rb new file mode 100755 index 0000000000000000000000000000000000000000..59385cdf379bd06a8d2326dcd4de6d5cd5d3f5b0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/content_security_policy.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/content_security_policy.rb new file mode 100755 index 0000000000000000000000000000000000000000..d3bcaa5ec84ac0761911dcdc0a7bf1c67f44a392 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/content_security_policy.rb @@ -0,0 +1,25 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https + +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end + +# If you are using UJS then enable automatic nonce generation +# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } + +# Report CSP violations to a specified URI +# For further information see the following documentation: +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# Rails.application.config.content_security_policy_report_only = true diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/cookies_serializer.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/cookies_serializer.rb new file mode 100755 index 0000000000000000000000000000000000000000..5a6a32d371fe575acf9f87e2ab7e8ae4d0f11e69 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/filter_parameter_logging.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/filter_parameter_logging.rb new file mode 100755 index 0000000000000000000000000000000000000000..4a994e1e7bb7ce28dcec98bad48b9a891d7dec51 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/inflections.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/inflections.rb new file mode 100755 index 0000000000000000000000000000000000000000..ac033bf9dc846101320c96a5ce8aceb8c96ec098 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/mime_types.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/mime_types.rb new file mode 100755 index 0000000000000000000000000000000000000000..dc1899682b01c3a6d9673faf746e235fb64fc4d2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/wrap_parameters.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/wrap_parameters.rb new file mode 100755 index 0000000000000000000000000000000000000000..bbfc3961bffef15dabb35fe0de4c409d6efb58c5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/locales/en.yml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/locales/en.yml new file mode 100755 index 0000000000000000000000000000000000000000..decc5a85735df127f96b89043ed6c6911713941a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/master.key b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/master.key new file mode 100755 index 0000000000000000000000000000000000000000..bdeb7442dbb908a21c94b1d009c731e041dee900 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/master.key @@ -0,0 +1 @@ +bca956e8169ce838016d1736dc2509ee \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/puma.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/puma.rb new file mode 100755 index 0000000000000000000000000000000000000000..a5eccf816b2f63b7022c72adeeb2fa79b6f6f1c3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/puma.rb @@ -0,0 +1,34 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. +# +# preload_app! + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/routes.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/routes.rb new file mode 100755 index 0000000000000000000000000000000000000000..83927d77db765e7802ed1e0b122b24171241b629 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/routes.rb @@ -0,0 +1,7 @@ +Rails.application.routes.draw do + root to: "samples#home" + get "/samples/drilldown/handler" => "samples#handler" + get "/samples/:page" => "samples#index" + + # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/spring.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/spring.rb new file mode 100755 index 0000000000000000000000000000000000000000..9fa7863f99d0d2d8bcd28f65d42789fbf8afadd6 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/spring.rb @@ -0,0 +1,6 @@ +%w[ + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +].each { |path| Spring.watch(path) } diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/storage.yml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/storage.yml new file mode 100755 index 0000000000000000000000000000000000000000..d32f76e8fbfebd47882dc3b350b092558b62dc08 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket + +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/development.sqlite3 b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/development.sqlite3 new file mode 100755 index 0000000000000000000000000000000000000000..2d0efc14264618f71acace2dbf33b2b47f196a8f Binary files /dev/null and b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/development.sqlite3 differ diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/migrate/20180725092631_create_sales_records.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/migrate/20180725092631_create_sales_records.rb new file mode 100755 index 0000000000000000000000000000000000000000..6aa8bfc6456c2afb1781964709505352a9991f00 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/migrate/20180725092631_create_sales_records.rb @@ -0,0 +1,12 @@ +class CreateSalesRecords < ActiveRecord::Migration[5.2] + def change + create_table :sales_records do |t| + t.string :Region + t.string :Country + t.string :City + t.integer :TotalSales + + t.timestamps + end + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/schema.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/schema.rb new file mode 100755 index 0000000000000000000000000000000000000000..1ab3b3e67fe418f1e6c47f24c491a08251c24eda --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/schema.rb @@ -0,0 +1,31 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 2018_07_25_092631) do + + create_table "Sales_Record", id: false, force: :cascade do |t| + t.text "Region" + t.text "Country" + t.text "City" + t.integer "TotalSales" + end + + create_table "sales_records", force: :cascade do |t| + t.string "Region" + t.string "Country" + t.string "City" + t.integer "TotalSales" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/seeds.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/seeds.rb new file mode 100755 index 0000000000000000000000000000000000000000..1beea2accd7ed91d080b323eef17dba95e95e27f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/angular_gauge.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/angular_gauge.rb new file mode 100755 index 0000000000000000000000000000000000000000..a0a86e55da98d5c6cf209ea6d794cf8e95dae8dc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/angular_gauge.rb @@ -0,0 +1,48 @@ +require 'json' + +class AngularGuage + def self.getGauge + + angularGaugeData = { + "chart": { + "caption": "Nordstorm's Customer Satisfaction Score for 2017", + "lowerLimit": "0", + "upperLimit": "100", + "showValue": "1", + "numberSuffix": "%", + "theme": "fusion", + "showToolTip": "0" + }, + "colorRange": { + "color": [{ + "minValue": "0", + "maxValue": "50", + "code": "#F2726F" + }, { + "minValue": "50", + "maxValue": "75", + "code": "#FFC533" + }, { + "minValue": "75", + "maxValue": "100", + "code": "#62B58F" + }] + }, + "dials": { + "dial": [{ + "value": "81" + }] + } + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "450", + height: "250", + type: "angulargauge", + renderAt: "gaugeContainer", + dataSource: angularGaugeData + }) + + end +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/drill_down_data_handler.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/drill_down_data_handler.rb new file mode 100755 index 0000000000000000000000000000000000000000..761ef179aa3bbc42e4eb8f5f5f48200e28fd7792 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/drill_down_data_handler.rb @@ -0,0 +1,76 @@ +require 'json' +class DrillDownDataHandler + + def self.processDataforDrillDown(dbData, columnName, drillLevel, maxLevel) + + # Chart appearance configuration + chartConfigObj = Hash.new + chartConfigObj = { + "caption" => "Sales by " + columnName, + "xAxisName" => columnName, + "yAxisName" => "Total Sales", + "numberSuffix" => "K", + "theme" => "fusion" + } + + dataTemplateWithLink = "{\"label\": \"%s\",\"value\": \"%s\", \"link\":\"newchart-jsonurl-/samples/drilldown/handler?label=%s&drillLevel=%s\"}," + dataTemplateWithoutLink = "{\"label\": \"%s\",\"value\": \"%s\"}," + + # Chart data as JSON string + labelValueJSONStr = "" + + dbData.each do |row| + if drillLevel.to_i < maxLevel - 1 + labelValuedata = dataTemplateWithLink % [row[columnName], row["TotalSales"].to_s, row[columnName], drillLevel] + else + labelValuedata = dataTemplateWithoutLink % [row[columnName], row["TotalSales"].to_s, row[columnName]] + end + labelValueJSONStr.concat(labelValuedata) + end + + # Removing trailing comma character + labelValueJSONStr = labelValueJSONStr.chop + + # Chart JSON data template + chartJSONDataTemplate = "{ \"chart\": %s, \"data\": [%s] }" + + # Final Chart JSON data from template + chartJSONDataStr = chartJSONDataTemplate % [chartConfigObj.to_json, labelValueJSONStr] + + return chartJSONDataStr + end + + def self.GetDBData(*args) + if args.size == 1 + columnName = args[0] + result = SalesRecord.select( columnName + ', SUM(TotalSales) as TotalSales').group(columnName) + else + columnName = args[0] + parentValue = args[1] + parentName = args[2] + result = SalesRecord.select( columnName + ', ' + parentName + ', SUM(TotalSales) as TotalSales').where(parentName + " = '" + parentValue + "'").group(columnName) + end + end + + def self.getData(params) + + # Drilldown column order + columnLevel = ["Region", "Country", "City"] + + # Get drilldown parameters + columnClickedUpon = params[:label] + drillDownLevel = params[:drillLevel] + + if drillDownLevel + iDrillDownLevel = drillDownLevel.to_i + 1 + data = GetDBData(columnLevel[iDrillDownLevel], columnClickedUpon, columnLevel[iDrillDownLevel - 1]) + drillDownLevel = iDrillDownLevel.to_s + else + drillDownLevel = "0" + data = GetDBData(columnLevel[drillDownLevel.to_i]) + end + + chartData = processDataforDrillDown(data, columnLevel[drillDownLevel.to_i], drillDownLevel, columnLevel.size) + end + +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/drilldown.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/drilldown.rb new file mode 100755 index 0000000000000000000000000000000000000000..1a04e1afe695a1531bdddb920e601020b9891c00 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/drilldown.rb @@ -0,0 +1,13 @@ +class Drilldown + def self.getChart + @chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataFormat: "jsonurl", + dataSource: "/samples/drilldown/handler" + }) + + end +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_chart.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_chart.rb new file mode 100755 index 0000000000000000000000000000000000000000..8823b4778009c9279f585634920cd2d8c43071cf --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_chart.rb @@ -0,0 +1,60 @@ +require 'json' +require 'fusioncharts-rails' + +class FirstChart + def self.getChart + + # Chart appearance configuration + chartAppearancesConfigObj = Hash.new + chartAppearancesConfigObj = { + "caption" => "Countries With Most Oil Reserves [2017-18]", + "subCaption" => "In MMbbl = One Million barrels", + "xAxisName" => "Country", + "yAxisName" => "Reserves (MMbbl)", + "numberSuffix" => "K", + "theme" => "fusion" + } + + # An array of hash objects which stores data + chartDataObj = [ + {"Venezuela" => "290"}, + {"Saudi" => "260"}, + {"Canada" => "180"}, + {"Iran" => "140"}, + {"Russia" => "115"}, + {"UAE" => "100"}, + {"US" => "30"}, + {"China" => "30"} + ] + + # Chart data template to store data in "Label" & "Value" format + labelValueTemplate = "{ \"label\": \"%s\", \"value\": \"%s\" }," + + # Chart data as JSON string + labelValueJSONStr = "" + + chartDataObj.each {|item| + data = labelValueTemplate % [item.keys[0], item[item.keys[0]]] + labelValueJSONStr.concat(data) + } + + # Removing trailing comma character + labelValueJSONStr = labelValueJSONStr.chop + + # Chart JSON data template + chartJSONDataTemplate = "{ \"chart\": %s, \"data\": [%s] }" + + # Final Chart JSON data from template + chartJSONDataStr = chartJSONDataTemplate % [chartAppearancesConfigObj.to_json, labelValueJSONStr] + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "column2d", + renderAt: "chartContainer", + dataSource: chartJSONDataStr + }) + + end +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_map.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_map.rb new file mode 100755 index 0000000000000000000000000000000000000000..7ee78c7663e8d0a626317a15cbca96a18c279f2a --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_map.rb @@ -0,0 +1,69 @@ +require 'json' + +class FirstMap + + # Map rendering + def self.getMap + + # Map appearance configuration + mapAppearancesConfigObj = { + "caption" => "Average Annual Population Growth", + "subcaption" => " 1955-2015", + "numbersuffix" => "%", + "includevalueinlabels" => "1", + "labelsepchar" => ": ", + "entityFillHoverColor" => "#FFF9C4", + "theme" => "fusion" + } + + # Map color range data + colorDataObj = { "minvalue" => "0", "code" => "#FFE0B2", "gradient" => "1", + "color" => [ + {"minValue" => "0.5", "maxValue" => "1", "code" => "#FFD74D"}, + {"minValue" => "1.0", "maxValue" => "2.0", "code" => "#FB8C00"}, + {"minValue" => "2.0", "maxValue" => "3.0", "code" => "#E65100"} + ] + } + + # Map data array + mapDataArray = [ + ["NA", ".82", "1"], + ["SA", "2.04", "1"], + ["AS", "1.78", "1"], + ["EU", ".40", "1"], + ["AF", "2.58", "1"], + ["AU", "1.30", "1"] + ] + + # Map data template + mapDataTemplate = "{ \"id\": \"%s\", \"value\": \"%s\", \"showLabel\": \"%s\" }," + + # Map data as JSON string + mapDataJSONStr = "" + + # Iterate all data in mapDataArray and converts it to actual data format + mapDataArray.each {|item| + data = mapDataTemplate % [item[0], item[1], item[2]] + mapDataJSONStr.concat(data) + } + + # Removing trailing comma + mapDataJSONStr = mapDataJSONStr.chop + + # Map JSON data template + mapJSONTemplate = "{ \"chart\": %s, \"colorRange\": %s, \"data\": [%s]}" + + # Map JSON data after combining all parts + mapJSONStr = mapJSONTemplate % [mapAppearancesConfigObj.to_json, colorDataObj.to_json, mapDataJSONStr] + + # Rendeing the Map + map = Fusioncharts::Chart.new({ + width: "600", + height: "400", + type: "maps/world", + renderAt: "mapContainer", + dataSource: mapJSONStr + }) + + end +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_widget.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_widget.rb new file mode 100755 index 0000000000000000000000000000000000000000..b44a10167663f600edaf01f9809ecee41c42e242 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/first_widget.rb @@ -0,0 +1,65 @@ +require 'json' + +class FirstWidget + + # Widget rendering + def self.getWidget + + # Widget appearance configuration + widgetAppearancesConfigObj = { + "caption" => "Nordstorm's Customer Satisfaction Score for 2017", + "lowerLimit" => "0", + "upperLimit" => "100", + "showValue" => "1", + "numberSuffix" => "%", + "theme" => "fusion", + "showToolTip" => "0" + } + + # Widget color range data + colorDataObj = {"color" => [ + {"minValue" => "0", "maxValue" => "50", "code" => "#F2726F"}, + {"minValue" => "50", "maxValue" => "75", "code" => "#FFC533"}, + {"minValue" => "75", "maxValue" => "100", "code" => "#62B58F"} + ] + } + + # Widget dial data in array format, multiple values can be separated by comma e.g. ["81", "23", "45",...] + widgetDialDataArray = ["81"] + + # Dial value in JSON format + widgetDialDataStr = "" + + # Template for dial value + widgetDialDataTemplate = "{ \"value\": \"%s\" }," + + # Iterates dial data array and converts them proper data format + widgetDialDataArray.each {|item| + data = widgetDialDataTemplate % [item] + widgetDialDataStr.concat(data) + } + + # Removing trailing comma + widgetDialDataStr = widgetDialDataStr.chop + + # Formats dial value(s) + widgetDialTemplate = "{ \"dial\": [%s]}" + widgetDialStr = "" + widgetDialStr = widgetDialTemplate % [widgetDialDataStr] + + # Final Widget JSON template + widgetJSONTemplate = "{ \"chart\": %s, \"colorRange\": %s, \"dials\": %s}" + + # Final Widget JSON data from template + widgetJSONStr = widgetJSONTemplate % [widgetAppearancesConfigObj.to_json, colorDataObj.to_json, widgetDialStr] + + # Rendering the widget + widget = Fusioncharts::Chart.new({ + width: "400", + height: "250", + type: "angulargauge", + renderAt: "widgetContainer", + dataSource: widgetJSONStr + }) + end +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts-rails.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts-rails.rb new file mode 100755 index 0000000000000000000000000000000000000000..0ba719dd8c0e78b7e5df012b682eaacdf2c66052 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts-rails.rb @@ -0,0 +1,4 @@ +require "erb" +require "json" +require "fusioncharts/rails/version" +require "fusioncharts/rails/chart" \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails.rb new file mode 100755 index 0000000000000000000000000000000000000000..08f05d289f3b8ece638f3079bd412ffc5b8b2d67 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails.rb @@ -0,0 +1,5 @@ +module Fusioncharts + module Rails + + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails/chart.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails/chart.rb new file mode 100755 index 0000000000000000000000000000000000000000..870551a41f3a3acb5dbe028afbeb9c88a7ec9be0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails/chart.rb @@ -0,0 +1,132 @@ +module Fusioncharts + + class Chart + + include ::ActionView::Helpers::OutputSafetyHelper + + attr_accessor :options, :fusionchartsEvent + attr_reader :width, :height, :type, :renderAt, :dataSource, :dataFormat, :jsonUrl, :xmlUrl + + # Constructor + def initialize(options=nil) + @fusionchartsEvent = "" + if options.nil? + @options = {} + else + @options = options + parse_options + end + end + + # Sets the width for a chart + def width=(width) + @width = width.to_s + + setOption('width', @width) + end + + # Sets the height for a chart + def height=(height) + @height = height.to_s + + setOption('height', @height) + end + + # Set the type for a chart + def type=(type) + @type = type + + setOption('type', @type) + end + + # Sets the dataformat for a chart. + # Valid values are: json / xml + def dataFormat=(format) + @dataFormat = format + + setOption('dataFormat', @dataFormat) + end + + # Set the DOM id where the chart needs to be rendered + def renderAt=(id) + @renderAt = id + + setOption('renderAt', @renderAt) + end + + # Set the datasource for the chart. It can take the following formats + # 1. Ruby Hash + # 2. XML string + # 3. JSON string + def dataSource=(dataSource) + @dataSource = dataSource + parse_datasource_json + end + + # Set the JSON url where data needs to be loaded + def jsonUrl=(url) + @jsonUrl = url + end + + # Set the XML url where data needs to be loaded + def xmlUrl=(url) + @xmlUrl = url + end + + # Returns where the chart needs to load XML data from a url + def xmlUrl? + self.xmlUrl ? true : false + end + + # Returns where the chart needs to load JSON data from a url + def jsonUrl? + self.jsonUrl ? true : false + end + + def addEvent(eventName, eventHandler) + @fusionchartsEvent << "\n_fc_chart.addEventListener(\"" << eventName << "\"," << eventHandler << ")\n"; + end + + # Render the chart + def render + config = json_escape JSON.generate(self.options) + dataUrlFormat = self.jsonUrl? ? "json" : ( self.xmlUrl ? "xml" : nil ) + template = File.read(File.expand_path("../../../templates/chart.erb", __FILE__)) + renderer = ERB.new(template) + return raw renderer.result(binding) + end + + private + # Helper method to add property to the options hash + def setOption(key, value) + self.options[key] = value + + return self + end + + # Helper method to convert json string to Ruby hash + def parse_datasource_json + @dataFormat = "json" unless defined? @dataFormat + + if !xmlUrl? or !jsonUrl? + @dataSource = JSON.parse(@dataSource) if @dataSource.is_a? String and @dataFormat == "json" + end + + setOption('dataSource', @dataSource) + end + + # Helper method that converts the constructor params into instance variables + def parse_options + keys = @options.keys + keys.each{ |k| instance_variable_set "@#{k}".to_sym, @options[k] if self.respond_to? k } + #parse_datasource_json + end + + # Escape tags in json, if avoided might be vulnerable to XSS + def json_escape(str) + str.to_s.gsub('/', '\/') + end + + end + +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails/version.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails/version.rb new file mode 100755 index 0000000000000000000000000000000000000000..4dd5292d8e6c9cc200adfb26da075c1d1f5a1b1f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/fusioncharts/rails/version.rb @@ -0,0 +1,5 @@ +module Fusioncharts + module Rails + VERSION = "0.0.2" + end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/handler.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/handler.rb new file mode 100755 index 0000000000000000000000000000000000000000..d710cab6ba82bc69745c94ece9aebb26c5b64586 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/handler.rb @@ -0,0 +1,163 @@ +class DrillDownDataHandler +@chartData = + { + "chart": { + "caption": "Projected Global IP Traffic, 2016-2019", + "subcaption": "Click on a column to drill-down into type of traffic", + "yaxisname": "Total IP traffic (PetaByte per Month)", + "formatnumberscale": "1", + "defaultnumberscale": "PB", + "yaxismaxvalue": "185000", + "numberscaleunit": "PB,EB", + "plottooltext": "<div><b>$label</b><br/>IP Traffic : <b>$value PB</b></div>", + "theme": "fusion" + }, + "data": [ + { + "label": "2016", + "value": "88426", + "link": "newchart-json-2016-type" + }, + { + "label": "2017", + "value": "108988", + "link": "newchart-json-2017-type" + }, + { + "label": "2018", + "value": "135483", + "link": "newchart-json-2018-type" + }, + { + "label": "2019", + "value": "167978", + "link": "newchart-json-2019-type" + } + ], + "linkeddata": [ + { + "id": "2016-type", + "linkedchart": { + "chart": { + "caption": "Global IP Traffic, 2016", + "subcaption": "By Type (PB per Month)", + "formatnumberscale": "1", + "rotatevalues": "0", + "yaxismaxvalue": "60000", + "defaultnumberscale": "PB", + "numberscalevalue": "1024,1024", + "numberscaleunit": "PB,EB", + "plottooltext": "<div><b>$label</b><br/>IP Traffic : <b>$value PB</b></div>", + "theme": "fusion" + }, + "data": [ + { + "label": "Fixed Internet", + "value": "58304" + }, + { + "label": "Managed IP", + "value": "23371" + }, + { + "label": "Mobile data", + "value": "6751" + } + ] + } + }, + { + "id": "2017-type", + "linkedchart": { + "chart": { + "caption": "Global IP Traffic, 2017", + "subcaption": "By Type (PB per Month)", + "formatnumberscale": "1", + "rotatevalues": "0", + "yaxismaxvalue": "75000", + "defaultnumberscale": "PB", + "numberscalevalue": "1024,1024", + "numberscaleunit": "PB,EB", + "plottooltext": "<div><b>$label</b><br/>IP Traffic : <b>$value PB</b></div>", + "theme": "fusion" + }, + "data": [ + { + "label": "Fixed Internet", + "value": "72251" + }, + { + "label": "Managed IP", + "value": "26087" + }, + { + "label": "Mobile data", + "value": "10650" + } + ] + } + }, + { + "id": "2018-type", + "linkedchart": { + "chart": { + "caption": "Global IP Traffic, 2018", + "subcaption": "By Type (PB per Month)", + "formatnumberscale": "1", + "rotatevalues": "0", + "yaxismaxvalue": "95000", + "defaultnumberscale": "PB", + "numberscalevalue": "1024,1024", + "numberscaleunit": "PB,EB", + "plottooltext": "<div><b>$label</b><br/>IP Traffic : <b>$value PB</b></div>", + "theme": "fusion" + }, + "data": [ + { + "label": "Fixed Internet", + "value": "90085" + }, + { + "label": "Managed IP", + "value": "29274" + }, + { + "label": "Mobile data", + "value": "16124" + } + ] + } + }, + { + "id": "2019-type", + "linkedchart": { + "chart": { + "caption": "Global IP Traffic, 2019", + "subcaption": "By Type (PB per Month)", + "formatnumberscale": "1", + "rotatevalues": "0", + "yaxismaxvalue": "120000", + "defaultnumberscale": "PB", + "numberscalevalue": "1024,1024", + "numberscaleunit": "PB,EB", + "plottooltext": "<div><b>$label</b><br/>IP Traffic : <b>$value PB</b></div>", + "theme": "fusion" + }, + "data": [ + { + "label": "Fixed Internet", + "value": "111899" + }, + { + "label": "Managed IP", + "value": "31858" + }, + { + "label": "Mobile data", + "value": "24221" + } + ] + } + } + ] + } \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/mscolumn2d.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/mscolumn2d.rb new file mode 100755 index 0000000000000000000000000000000000000000..ac1340f796f9d4e0e337951a9eca36f6aedd5c7b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/mscolumn2d.rb @@ -0,0 +1,83 @@ +require 'json' + +class Mscolumn2d + + def self.getChart + + chartData = { + "chart": { + "caption": "App Publishing Trend", + "subCaption": "2012-2016", + "xAxisName": "Years", + "yAxisName": "Total number of apps in store", + "drawCrossLine": "1", + "plotToolText": "<b>$dataValue</b> apps on $seriesName in $label", + "theme": "fusion" + }, + + "categories": [{ + "category": [{ + "label": "2012" + }, { + "label": "2013" + }, { + "label": "2014" + }, { + "label": "2015" + }, { + "label": "2016" + }] + }], + "dataset": [{ + "seriesname": "iOS App Store", + "data": [{ + "value": "125000" + }, { + "value": "300000" + }, { + "value": "480000" + }, { + "value": "800000" + }, { + "value": "1100000" + }] + }, { + "seriesname": "Google Play Store", + "data": [{ + "value": "70000" + }, { + "value": "150000" + }, { + "value": "350000" + }, { + "value": "600000" + }, { + "value": "1400000" + }] + }, { + "seriesname": "Amazon AppStore", + "data": [{ + "value": "10000" + }, { + "value": "100000" + }, { + "value": "300000" + }, { + "value": "600000" + }, { + "value": "900000" + }] + }] + } + + # Chart rendering + chart = Fusioncharts::Chart.new({ + width: "700", + height: "400", + type: "mscolumn2d", + renderAt: "chartContainer", + dataSource: chartData + }) + + end +end \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/templates/chart.erb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/templates/chart.erb new file mode 100755 index 0000000000000000000000000000000000000000..b9f145551289bc5c754ccdb512f721122dd0cff8 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/lib/templates/chart.erb @@ -0,0 +1,14 @@ +<script type="text/javascript"> + FusionCharts.ready(function() { + var _fc_chart = new FusionCharts(<%= config %>); + <% if(dataUrlFormat == 'json') %> + _fc_chart.setJSONUrl("<%= @jsonUrl %>") + <% elsif(dataUrlFormat == 'xml') %> + _fc_chart.setXMLUrl("<%= @xmlUrl %>") + <% end %> + + <%= @fusionchartsEvent %> + + _fc_chart.render(); + }); +</script> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/log/development.log b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/log/development.log new file mode 100755 index 0000000000000000000000000000000000000000..86e2fe9e78c3794a564916f4c0b76212cfa7efee --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/log/development.log @@ -0,0 +1,15367 @@ +Started GET "/" for 127.0.0.1 at 2018-07-21 14:00:44 +0530 +Processing by Rails::WelcomeController#index as HTML + Rendering /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/templates/rails/welcome/index.html.erb + Rendered /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/templates/rails/welcome/index.html.erb (3.5ms) +Completed 200 OK in 24ms (Views: 12.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:01:30 +0530 +Processing by SamplesController#index as HTML + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 619ms (Views: 609.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:11:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} +Completed 500 Internal Server Error in 14ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template examples/index with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:24:in `index' +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:11:34 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} +Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template examples/first-chart with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:24:in `index' +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:12:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 1147ms (Views: 1136.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:13:33 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 276ms (Views: 267.6ms | ActiveRecord: 0.0ms) + + +Started GET "/examples/first-chart" for 127.0.0.1 at 2018-07-21 14:17:47 +0530 + +ActionController::RoutingError (No route matches [GET] "/examples/first-chart"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:18:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 54ms (Views: 51.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:19:09 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 32ms (Views: 31.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:19:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 42ms (Views: 40.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:19:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 45ms (Views: 43.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:19:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.8ms) +Completed 200 OK in 47ms (Views: 44.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:19:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 46ms (Views: 43.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:20:42 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.3ms) +Completed 200 OK in 44ms (Views: 41.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:27:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 30ms (Views: 28.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-21 14:27:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.8ms) +Completed 200 OK in 36ms (Views: 33.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:27:30 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 36ms (Views: 34.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-21 14:27:33 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.7ms) +Completed 200 OK in 41ms (Views: 39.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:29:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.0ms) +Completed 200 OK in 46ms (Views: 44.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:29:16 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 40ms (Views: 38.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:30:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.6ms) +Completed 200 OK in 29ms (Views: 27.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:30:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 36ms (Views: 33.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:30:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 35ms (Views: 34.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:30:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 30ms (Views: 29.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:30:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.8ms) +Completed 200 OK in 35ms (Views: 33.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:31:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 37ms (Views: 35.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:31:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 40ms (Views: 38.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:31:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 36ms (Views: 34.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:31:19 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 34ms (Views: 32.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:40:16 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 32ms (Views: 30.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:41:38 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.6ms) +Completed 200 OK in 40ms (Views: 38.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:42:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 49ms (Views: 47.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-21 14:42:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (1.4ms) +Completed 200 OK in 42ms (Views: 40.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:42:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.8ms) +Completed 200 OK in 39ms (Views: 37.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 14:42:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.6ms) +Completed 200 OK in 46ms (Views: 43.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 14:42:44 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 36ms (Views: 34.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-21 14:42:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (8.7ms) +Completed 200 OK in 41ms (Views: 39.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:42:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 36ms (Views: 35.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-21 14:42:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.4ms) +Completed 200 OK in 41ms (Views: 39.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:43:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 40ms (Views: 39.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-21 14:43:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (1.0ms) +Completed 200 OK in 43ms (Views: 41.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:43:37 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 39ms (Views: 37.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscombi3d-sample" for 127.0.0.1 at 2018-07-21 14:43:38 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscombi3d-sample"} + Rendering samples/mscombi3d-sample.html.erb within layouts/application + Rendered samples/mscombi3d-sample.html.erb within layouts/application (2.0ms) +Completed 200 OK in 37ms (Views: 35.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:43:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 44ms (Views: 42.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/pie3d-sample" for 127.0.0.1 at 2018-07-21 14:43:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"pie3d-sample"} + Rendering samples/pie3d-sample.html.erb within layouts/application + Rendered samples/pie3d-sample.html.erb within layouts/application (1.2ms) +Completed 200 OK in 40ms (Views: 38.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:44:18 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 36ms (Views: 34.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/stacked-column2d-line-chart-sample" for 127.0.0.1 at 2018-07-21 14:44:23 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"stacked-column2d-line-chart-sample"} + Rendering samples/stacked-column2d-line-chart-sample.erb within layouts/application + Rendered samples/stacked-column2d-line-chart-sample.erb within layouts/application (1.3ms) +Completed 200 OK in 35ms (Views: 33.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:44:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 38ms (Views: 36.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-21 14:44:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (2.5ms) +Completed 200 OK in 41ms (Views: 39.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:47:33 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.5ms) +Completed 200 OK in 41ms (Views: 39.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:47:34 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 28ms (Views: 27.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-21 14:47:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.9ms) +Completed 200 OK in 37ms (Views: 34.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:48:20 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 36ms (Views: 34.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-21 14:48:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.8ms) +Completed 200 OK in 38ms (Views: 36.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-21 14:51:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.9ms) +Completed 200 OK in 30ms (Views: 28.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:52:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 36ms (Views: 35.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 14:55:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 30ms (Views: 29.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:05:34 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 357ms (Views: 356.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:05:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 36ms (Views: 34.4ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:05:53 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 39ms (Views: 37.8ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:07:44 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 39ms (Views: 38.0ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:08:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 39ms (Views: 37.6ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:08:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.6ms) +Completed 200 OK in 32ms (Views: 30.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:11:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.9ms) +Completed 200 OK in 32ms (Views: 31.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:14:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 38ms (Views: 36.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:14:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 33ms (Views: 31.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:14:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.9ms) +Completed 200 OK in 32ms (Views: 30.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:15:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.6ms) +Completed 200 OK in 33ms (Views: 31.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:16:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 42ms (Views: 39.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:19:34 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (1.7ms) +Completed 200 OK in 584ms (Views: 575.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:20:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (1.0ms) +Completed 200 OK in 300ms (Views: 291.6ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:44:42 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (1.1ms) +Completed 200 OK in 48ms (Views: 44.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:45:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 32ms (Views: 30.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:46:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.9ms) +Completed 200 OK in 35ms (Views: 33.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:46:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 41ms (Views: 39.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 15:46:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.0ms) +Completed 200 OK in 47ms (Views: 45.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 15:46:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 49ms (Views: 47.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:46:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.5ms) +Completed 200 OK in 46ms (Views: 43.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-21 15:46:18 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.7ms) +Completed 200 OK in 57ms (Views: 55.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 15:47:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 45ms (Views: 42.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-21 15:47:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.8ms) +Completed 200 OK in 39ms (Views: 38.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-21 15:47:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.8ms) +Completed 200 OK in 38ms (Views: 36.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-21 15:47:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 42ms (Views: 40.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-21 15:47:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.5ms) +Completed 200 OK in 38ms (Views: 37.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-21 15:47:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.5ms) +Completed 200 OK in 53ms (Views: 51.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-21 15:47:23 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Completed 200 OK in 37ms (Views: 36.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-21 15:47:31 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 39ms (Views: 38.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-21 15:47:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 47ms (Views: 45.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscombi3d-sample" for 127.0.0.1 at 2018-07-21 15:47:42 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscombi3d-sample"} + Rendering samples/mscombi3d-sample.html.erb within layouts/application + Rendered samples/mscombi3d-sample.html.erb within layouts/application (1.2ms) +Completed 200 OK in 41ms (Views: 39.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/pie3d-sample" for 127.0.0.1 at 2018-07-21 15:47:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"pie3d-sample"} + Rendering samples/pie3d-sample.html.erb within layouts/application + Rendered samples/pie3d-sample.html.erb within layouts/application (1.3ms) +Completed 200 OK in 47ms (Views: 45.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/stacked-column2d-line-chart-sample" for 127.0.0.1 at 2018-07-21 15:47:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"stacked-column2d-line-chart-sample"} + Rendering samples/stacked-column2d-line-chart-sample.erb within layouts/application + Rendered samples/stacked-column2d-line-chart-sample.erb within layouts/application (1.3ms) +Completed 200 OK in 39ms (Views: 38.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-21 15:47:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (1.9ms) +Completed 200 OK in 37ms (Views: 35.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:53:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 500 Internal Server Error in 32ms (ActiveRecord: 0.0ms) + + + +ActionView::Template::Error (couldn't find file 'google-code-prettify/run_prettify' with type 'application/javascript' +Checked in these paths: + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/config + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/images + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/javascripts + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/stylesheets + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/vendor/assets/javascripts + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/coffee-rails-4.2.2/lib/assets/javascripts + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actioncable-5.2.0/lib/assets/compiled + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activestorage-5.2.0/app/assets/javascripts + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-5.2.0/lib/assets/compiled + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/turbolinks-source-5.1.0/lib/assets/javascripts + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/node_modules): + 7: <%= csp_meta_tag %> + 8: + 9: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + 10: <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> + 11: </head> + 12: + 13: <body> + +app/assets/javascripts/application.js:24 +app/views/layouts/application.html.erb:10:in `_app_views_layouts_application_html_erb__2980489760477810854_70157771631520' +app/controllers/samples_controller.rb:24:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:53:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 200 OK in 816ms (Views: 808.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 15:53:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.8ms) +Completed 200 OK in 58ms (Views: 56.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:54:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 328ms (Views: 325.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 15:54:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.0ms) +Completed 200 OK in 44ms (Views: 42.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 15:54:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 547ms (Views: 539.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 15:54:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 60ms (Views: 58.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:00:16 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.0ms) +Completed 200 OK in 812ms (Views: 803.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:01:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.2ms) +Completed 200 OK in 55ms (Views: 52.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:02:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 807ms (Views: 799.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:02:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.1ms) +Completed 200 OK in 289ms (Views: 280.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:02:43 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 58ms (Views: 57.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:03:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 60ms (Views: 58.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:03:13 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 40ms (Views: 39.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:16:31 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.1ms) +Completed 200 OK in 254ms (Views: 245.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-21 16:16:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.6ms) +Completed 200 OK in 23ms (Views: 21.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 16:17:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 28ms (Views: 26.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/stacked-column2d-line-chart-sample" for 127.0.0.1 at 2018-07-21 16:17:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"stacked-column2d-line-chart-sample"} + Rendering samples/stacked-column2d-line-chart-sample.erb within layouts/application + Rendered samples/stacked-column2d-line-chart-sample.erb within layouts/application (1.2ms) +Completed 200 OK in 24ms (Views: 22.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 16:17:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 27ms (Views: 26.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscombi3d-sample" for 127.0.0.1 at 2018-07-21 16:17:09 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscombi3d-sample"} + Rendering samples/mscombi3d-sample.html.erb within layouts/application + Rendered samples/mscombi3d-sample.html.erb within layouts/application (1.3ms) +Completed 200 OK in 25ms (Views: 24.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 16:17:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 27ms (Views: 25.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-21 16:17:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.7ms) +Completed 200 OK in 26ms (Views: 24.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 16:17:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 29ms (Views: 27.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-21 16:17:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (1.9ms) +Completed 200 OK in 27ms (Views: 25.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-21 16:17:58 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (1.4ms) +Completed 200 OK in 26ms (Views: 24.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-21 18:02:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 29ms (Views: 27.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/stacked-column2d-line-chart-sample" for 127.0.0.1 at 2018-07-21 18:04:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"stacked-column2d-line-chart-sample"} + Rendering samples/stacked-column2d-line-chart-sample.erb within layouts/application + Rendered samples/stacked-column2d-line-chart-sample.erb within layouts/application (2.0ms) +Completed 200 OK in 31ms (Views: 29.6ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-23 14:09:12 +0530 +Processing by Rails::WelcomeController#index as HTML + Rendering /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/templates/rails/welcome/index.html.erb + Rendered /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.0/lib/rails/templates/rails/welcome/index.html.erb (5.1ms) +Completed 200 OK in 30ms (Views: 16.7ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-23 14:14:47 +0530 +Processing by SamplesController#index as HTML +Completed 500 Internal Server Error in 15ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template /samples with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:25:in `index' +Started GET "/" for 127.0.0.1 at 2018-07-23 14:15:14 +0530 + +ArgumentError (Missing :controller key on routes definition, please check your routes.): + +config/routes.rb:2:in `block in <main>' +config/routes.rb:1:in `<main>' +Started GET "/" for 127.0.0.1 at 2018-07-23 14:15:36 +0530 + +ActionController::RoutingError (No route matches [GET] "/"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/examples/index" for 127.0.0.1 at 2018-07-23 14:15:42 +0530 + +ActionController::RoutingError (No route matches [GET] "/examples/index"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/examples/index" for 127.0.0.1 at 2018-07-23 14:16:02 +0530 + +ActionController::RoutingError (No route matches [GET] "/examples/index"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 14:16:16 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 189ms (Views: 186.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 14:17:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 187ms (Views: 179.1ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-23 14:20:22 +0530 +Processing by SamplesController#index as HTML +Completed 500 Internal Server Error in 12ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template /samples with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:25:in `index' +Started GET "/" for 127.0.0.1 at 2018-07-23 14:28:57 +0530 +Processing by SamplesController#home as HTML + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 191ms (Views: 183.6ms | ActiveRecord: 0.0ms) + + +Started GET "/first-chart" for 127.0.0.1 at 2018-07-23 14:29:07 +0530 + +ActionController::RoutingError (No route matches [GET] "/first-chart"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/" for 127.0.0.1 at 2018-07-23 14:29:14 +0530 +Processing by SamplesController#home as HTML + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 19ms (Views: 18.5ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-23 14:29:59 +0530 +Processing by SamplesController#home as HTML + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 208ms (Views: 200.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-23 14:30:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.0ms) +Completed 200 OK in 25ms (Views: 23.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 14:30:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 200 OK in 24ms (Views: 22.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-23 14:30:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.7ms) +Completed 200 OK in 24ms (Views: 22.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/samples/first-chart" for 127.0.0.1 at 2018-07-23 14:30:25 +0530 + +ActionController::RoutingError (No route matches [GET] "/samples/samples/first-chart"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/" for 127.0.0.1 at 2018-07-23 14:31:46 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 7ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 14:31:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 200 OK in 177ms (Views: 175.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-23 14:31:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.1ms) +Completed 200 OK in 23ms (Views: 22.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-23 14:31:51 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.7ms) +Completed 200 OK in 23ms (Views: 21.6ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-23 14:31:55 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 1ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 14:31:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 19ms (Views: 18.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-23 14:31:56 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (1.6ms) +Completed 200 OK in 24ms (Views: 23.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 15:26:19 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 200 OK in 199ms (Views: 191.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-theme" for 127.0.0.1 at 2018-07-23 16:39:45 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-theme"} +Completed 500 Internal Server Error in 12ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template samples/chart-theme with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:41:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (203.6ms) +Completed 500 Internal Server Error in 211ms (ActiveRecord: 0.0ms) + + + +ActionView::Template::Error (undefined local variable or method `getChart1' for #<#<Class:0x00007f8358a79120>:0x00007f8356cb9838> +Did you mean? getChart + getChart2): + 144: <h3>Chart Theme Sample</h3> + 145: <div style="width: 100%; display: table;"> + 146: <div style="display: table-row"> + 147: <div id="chart-1" style="width: 40%; display: table-cell;"><%= getChart1.render() %></div> + 148: <div id="chart-2" style="width: 40%; display: table-cell;"><%= getChart2.render() %></div> + 149: </div> + 150: </div> + +app/views/samples/chart-themes.html.erb:147:in `_app_views_samples_chart_themes_html_erb___3707871204907459236_70101036801160' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:42:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.4ms) +Completed 200 OK in 211ms (Views: 203.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:45:18 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.9ms) +Completed 200 OK in 856ms (Views: 848.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/fusioncharts.overlappedcolumn2d.js" for 127.0.0.1 at 2018-07-23 16:45:19 +0530 + +ActionController::RoutingError (No route matches [GET] "/samples/fusioncharts.overlappedcolumn2d.js"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:46:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.0ms) +Completed 200 OK in 285ms (Views: 277.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/fusioncharts.overlappedcolumn2d.js" for 127.0.0.1 at 2018-07-23 16:46:13 +0530 + +ActionController::RoutingError (No route matches [GET] "/samples/fusioncharts.overlappedcolumn2d.js"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:46:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (43.7ms) +Completed 200 OK in 396ms (Views: 394.4ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/fusioncharts.overlappedcolumn2d.js" for 127.0.0.1 at 2018-07-23 16:46:27 +0530 + +ActionController::RoutingError (No route matches [GET] "/samples/fusioncharts.overlappedcolumn2d.js"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:47:47 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.9ms) +Completed 500 Internal Server Error in 195ms (ActiveRecord: 0.0ms) + + + +ActionView::Template::Error (couldn't find file 'fusioncharts/maps/fusioncharts.overlappedbar2d' with type 'application/javascript' +Checked in these paths: + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/config + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/images + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/javascripts + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/assets/stylesheets + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/vendor/assets/javascripts + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/coffee-rails-4.2.2/lib/assets/javascripts + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actioncable-5.2.0/lib/assets/compiled + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activestorage-5.2.0/app/assets/javascripts + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-5.2.0/lib/assets/compiled + /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/turbolinks-source-5.1.0/lib/assets/javascripts + /Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/node_modules): + 6: <%= csrf_meta_tags %> + 7: <%= csp_meta_tag %> + 8: + 9: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + 10: <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> + 11: <!-- <script type="text/javascript" src="https://static.fusioncharts.com/code/latest/fusioncharts.js"></script> + 12: <script type="text/javascript" src="https://csm.fusioncharts.com/files/assets/fusion-theme/fusioncharts.theme.fusion.js"></script> + +app/assets/javascripts/application.js:20 +app/views/layouts/application.html.erb:9:in `_app_views_layouts_application_html_erb__4340666555843921364_70322999630680' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:48:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.0ms) +Completed 200 OK in 825ms (Views: 816.5ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/fusioncharts.overlappedcolumn2d.js" for 127.0.0.1 at 2018-07-23 16:48:11 +0530 + +ActionController::RoutingError (No route matches [GET] "/samples/fusioncharts.overlappedcolumn2d.js"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:49:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.8ms) +Completed 200 OK in 833ms (Views: 825.1ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/" for 127.0.0.1 at 2018-07-23 16:50:05 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 1ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 16:50:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.2ms) +Completed 200 OK in 40ms (Views: 39.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-23 16:50:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 43ms (Views: 41.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/pie3d-sample" for 127.0.0.1 at 2018-07-23 16:50:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"pie3d-sample"} + Rendering samples/pie3d-sample.html.erb within layouts/application + Rendered samples/pie3d-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 43ms (Views: 42.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:51:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.8ms) +Completed 200 OK in 290ms (Views: 282.1ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:52:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.9ms) +Completed 200 OK in 295ms (Views: 287.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:53:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.8ms) +Completed 200 OK in 287ms (Views: 279.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:55:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.2ms) +Completed 200 OK in 308ms (Views: 299.9ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:55:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.9ms) +Completed 200 OK in 300ms (Views: 292.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:56:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.9ms) +Completed 200 OK in 287ms (Views: 279.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 16:56:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 58ms (Views: 56.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 16:57:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (3.0ms) +Completed 200 OK in 56ms (Views: 53.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 16:57:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 200 OK in 41ms (Views: 38.9ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 17:00:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.1ms) +Completed 200 OK in 295ms (Views: 286.9ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 17:00:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.5ms) +Completed 200 OK in 45ms (Views: 43.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 17:01:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.3ms) +Completed 200 OK in 35ms (Views: 34.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 17:02:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.4ms) +Completed 200 OK in 50ms (Views: 47.7ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 17:03:09 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 40ms (Views: 38.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 17:04:45 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.3ms) +Completed 200 OK in 37ms (Views: 35.0ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 17:04:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 47ms (Views: 45.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 17:09:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.4ms) +Completed 200 OK in 36ms (Views: 35.3ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 17:10:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.3ms) +Completed 200 OK in 38ms (Views: 36.6ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 17:10:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 39ms (Views: 37.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 17:12:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 290ms (Views: 282.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:47:56 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 500 Internal Server Error in 15ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:15: syntax error, unexpected '<', expecting keyword_end +<h3>Chart using data from XML ... +^ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:15: syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '(' +<h3>Chart using data from XML URL</h3> + ^~~~~ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:16: unknown regexp options - dv +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:17: syntax error, unexpected '<' +<%= getChart.render() +^): + +app/views/samples/chart-from-xml-url.html.erb:15: syntax error, unexpected '<', expecting keyword_end +app/views/samples/chart-from-xml-url.html.erb:15: syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '(' +app/views/samples/chart-from-xml-url.html.erb:16: unknown regexp options - dv +app/views/samples/chart-from-xml-url.html.erb:17: syntax error, unexpected '<' +app/controllers/samples_controller.rb:25:in `index' +Started POST "/__web_console/repl_sessions/7ace63b000bf28b8c03ede928b5c6fe5/trace" for 127.0.0.1 at 2018-07-23 17:48:22 +0530 +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:48:43 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (1.0ms) +Completed 200 OK in 874ms (Views: 866.6ms | ActiveRecord: 0.0ms) + + +Started GET "/Users/rahul/Work/FusionCharts%20Integrations/rails/fusioncharts-rails-samples/public/data/data.xml" for 127.0.0.1 at 2018-07-23 17:48:44 +0530 + +ActionController::RoutingError (No route matches [GET] "/Users/rahul/Work/FusionCharts%20Integrations/rails/fusioncharts-rails-samples/public/data/data.xml"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:49:33 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (1.0ms) +Completed 500 Internal Server Error in 12ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:11: unknown regexp options - pblc +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:11: syntax error, unexpected tSTRING_BEG, expecting '}' +...ils.root}/public/data/data.xml" +... ^ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:17: syntax error, unexpected tIDENTIFIER, expecting keyword_end +<div id="chartContainer"></div> + ^~~~~~~~~~~~~~ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:21: syntax error, unexpected tIDENTIFIER, expecting keyword_end +<a href="index">Go Back</a>'.freeze; + ^~~~~ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:25: unterminated string meets end of file + end + ^ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/chart-from-xml-url.html.erb:25: syntax error, unexpected end-of-input, expecting keyword_end + end + ^): + +app/views/samples/chart-from-xml-url.html.erb:11: unknown regexp options - pblc +app/views/samples/chart-from-xml-url.html.erb:11: syntax error, unexpected tSTRING_BEG, expecting '}' +app/views/samples/chart-from-xml-url.html.erb:17: syntax error, unexpected tIDENTIFIER, expecting keyword_end +app/views/samples/chart-from-xml-url.html.erb:21: syntax error, unexpected tIDENTIFIER, expecting keyword_end +app/views/samples/chart-from-xml-url.html.erb:25: unterminated string meets end of file +app/views/samples/chart-from-xml-url.html.erb:25: syntax error, unexpected end-of-input, expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:49:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.8ms) +Completed 200 OK in 57ms (Views: 54.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:50:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.8ms) +Completed 200 OK in 60ms (Views: 57.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:50:47 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.9ms) +Completed 200 OK in 41ms (Views: 38.3ms | ActiveRecord: 0.0ms) + + +Started GET "/public/data/data.xml" for 127.0.0.1 at 2018-07-23 17:50:48 +0530 + +ActionController::RoutingError (No route matches [GET] "/public/data/data.xml"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:50:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.6ms) +Completed 200 OK in 35ms (Views: 33.9ms | ActiveRecord: 0.0ms) + + +Started GET "/public/data/data.xml" for 127.0.0.1 at 2018-07-23 17:50:50 +0530 + +ActionController::RoutingError (No route matches [GET] "/public/data/data.xml"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/public/" for 127.0.0.1 at 2018-07-23 17:51:09 +0530 + +ActionController::RoutingError (No route matches [GET] "/public"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/public/data/data.xml" for 127.0.0.1 at 2018-07-23 17:51:18 +0530 + +ActionController::RoutingError (No route matches [GET] "/public/data/data.xml"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/rails/active_storage/" for 127.0.0.1 at 2018-07-23 17:52:20 +0530 + +ActionController::RoutingError (No route matches [GET] "/rails/active_storage"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/rails/active_storage/blobs/" for 127.0.0.1 at 2018-07-23 17:52:29 +0530 + +ActionController::RoutingError (No route matches [GET] "/rails/active_storage/blobs"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:55:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 38ms (Views: 36.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:55:42 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 37ms (Views: 36.0ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:56:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 44ms (Views: 40.7ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-23 17:56:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 39ms (Views: 37.4ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/" for 127.0.0.1 at 2018-07-23 17:57:36 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 8ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 17:57:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.8ms) +Completed 200 OK in 292ms (Views: 290.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-23 17:57:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 59ms (Views: 57.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-23 17:59:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (1.2ms) +Completed 200 OK in 61ms (Views: 57.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 18:03:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 55ms (Views: 52.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 21:04:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (2.6ms) +Completed 200 OK in 83ms (Views: 80.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 21:04:58 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 49ms (Views: 46.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-23 21:05:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.6ms) +Completed 200 OK in 46ms (Views: 44.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 21:11:20 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (2.0ms) +Completed 200 OK in 51ms (Views: 49.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 21:58:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 304ms (Views: 295.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 23:29:56 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.1ms) +Completed 200 OK in 80ms (Views: 79.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:29:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (2.0ms) +Completed 200 OK in 59ms (Views: 55.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 23:30:21 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 49ms (Views: 47.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:30:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.0ms) +Completed 200 OK in 67ms (Views: 65.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-23 23:30:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (3.7ms) +Completed 200 OK in 62ms (Views: 60.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 23:32:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 57ms (Views: 55.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:32:08 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.2ms) +Completed 200 OK in 48ms (Views: 47.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-23 23:32:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (3.6ms) +Completed 200 OK in 59ms (Views: 57.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 23:33:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 49ms (Views: 47.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:33:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Completed 200 OK in 55ms (Views: 53.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:50:31 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Completed 200 OK in 45ms (Views: 43.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:50:45 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.4ms) +Completed 200 OK in 305ms (Views: 296.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:54:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.3ms) +Completed 200 OK in 61ms (Views: 60.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:54:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.4ms) +Completed 200 OK in 298ms (Views: 288.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-23 23:54:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 63ms (Views: 61.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-23 23:54:45 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.8ms) +Completed 200 OK in 64ms (Views: 60.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-24 00:02:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Completed 200 OK in 41ms (Views: 40.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-24 00:02:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 59ms (Views: 57.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/pie3d-sample" for 127.0.0.1 at 2018-07-24 00:02:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"pie3d-sample"} + Rendering samples/pie3d-sample.html.erb within layouts/application + Rendered samples/pie3d-sample.html.erb within layouts/application (1.6ms) +Completed 200 OK in 59ms (Views: 56.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-24 15:27:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.2ms) +Completed 200 OK in 337ms (Views: 329.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-24 15:33:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 55ms (Views: 54.4ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-24 20:26:56 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 8ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-24 20:26:56 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.0ms) +Completed 200 OK in 343ms (Views: 341.4ms | ActiveRecord: 0.0ms) + + + [1m[35m (0.1ms)[0m [1m[34mSELECT sqlite_version(*)[0m + ↳ bin/rails:9 + [1m[35m (1.3ms)[0m [1m[35mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)[0m + ↳ bin/rails:9 + [1m[35m (1.1ms)[0m [1m[35mCREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ bin/rails:9 +Migrating to CreateSalesRecords (20180724174847) + [1m[35m (0.0ms)[0m [1m[36mbegin transaction[0m + ↳ bin/rails:9 + [1m[35m (0.5ms)[0m [1m[35mCREATE TABLE "sales_records" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "Region" varchar, "Country" varchar, "City" varchar, "TotalSales" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m + ↳ db/migrate/20180724174847_create_sales_records.rb:3 + [1m[36mActiveRecord::SchemaMigration Create (0.2ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20180724174847"]] + ↳ bin/rails:9 + [1m[35m (0.9ms)[0m [1m[36mcommit transaction[0m + ↳ bin/rails:9 + [1m[36mActiveRecord::InternalMetadata Load (0.1ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ?[0m [["key", "environment"], ["LIMIT", 1]] + ↳ bin/rails:9 + [1m[35m (0.0ms)[0m [1m[36mbegin transaction[0m + ↳ bin/rails:9 + [1m[36mActiveRecord::InternalMetadata Create (0.3ms)[0m [1m[32mINSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?)[0m [["key", "environment"], ["value", "development"], ["created_at", "2018-07-24 17:51:07.496079"], ["updated_at", "2018-07-24 17:51:07.496079"]] + ↳ bin/rails:9 + [1m[35m (0.9ms)[0m [1m[36mcommit transaction[0m + ↳ bin/rails:9 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 +Migrating to CreateSalesRecords (20180724174847) + [1m[35m (0.0ms)[0m [1m[36mbegin transaction[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.5ms)[0m [1m[35mDROP TABLE "sales_records"[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[36mActiveRecord::SchemaMigration Destroy (0.2ms)[0m [1m[31mDELETE FROM "schema_migrations" WHERE "schema_migrations"."version" = ?[0m [["version", "20180724174847"]] + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.6ms)[0m [1m[36mcommit transaction[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.4ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ bin/rails:9 +Migrating to CreateSalesRecords (20180724174847) + [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[34mSELECT sqlite_version(*)[0m + ↳ db/migrate/20180724174847_create_sales_records.rb:3 + [1m[35m (0.7ms)[0m [1m[35mCREATE TABLE "sales_records" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "Region" varchar, "Country" varchar, "City" varchar, "TotalSales" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m + ↳ db/migrate/20180724174847_create_sales_records.rb:3 + [1m[36mActiveRecord::SchemaMigration Create (0.4ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20180724174847"]] + ↳ bin/rails:9 + [1m[35m (1.0ms)[0m [1m[36mcommit transaction[0m + ↳ bin/rails:9 + [1m[36mActiveRecord::InternalMetadata Load (0.5ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ?[0m [["key", "environment"], ["LIMIT", 1]] + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m + ↳ bin/rails:9 + [1m[35m (0.0ms)[0m [1m[36mcommit transaction[0m + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ bin/rails:9 +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 00:03:21 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.1ms) +Completed 200 OK in 359ms (Views: 351.5ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-25 00:24:41 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 1ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 00:24:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" WHERE "sales_records"."Region" = ? LIMIT ?[0m [["Region", "LA"], ["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:48 + Rendered samples/index.html.erb within layouts/application (40.2ms) +Completed 200 OK in 123ms (Views: 119.3ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 00:25:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (2.9ms) +Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:55: syntax error, unexpected '=', expecting keyword_end + =SalesRecord.find_by Region: '... + ^): + +app/views/samples/index.html.erb:55: syntax error, unexpected '=', expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 00:36:01 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (2.9ms) +Completed 200 OK in 326ms (Views: 318.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 00:36:30 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.8ms) +Completed 500 Internal Server Error in 9ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:56: syntax error, unexpected '=', expecting keyword_end + =SalesRecord.select("Region")[... + ^): + +app/views/samples/index.html.erb:56: syntax error, unexpected '=', expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 00:37:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.8ms) +Completed 500 Internal Server Error in 9ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:56: syntax error, unexpected '=', expecting keyword_end + ="test" + ^): + +app/views/samples/index.html.erb:56: syntax error, unexpected '=', expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:28:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (4.2ms) +Completed 200 OK in 124ms (Views: 106.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:28:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.9ms) +Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:56: syntax error, unexpected '=', expecting keyword_end + ="test" + ^): + +app/views/samples/index.html.erb:56: syntax error, unexpected '=', expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:29:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 43ms (Views: 42.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:30:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" WHERE "sales_records"."Region" = ? LIMIT ?[0m [["Region", "LA"], ["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (33.9ms) +Completed 200 OK in 69ms (Views: 65.8ms | ActiveRecord: 1.8ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:30:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:54: syntax error, unexpected tLABEL +...d=(SalesRecord.find_by (Region: 'LA'));@output_buffer.safe_a... +... ^~~~~~~ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:54: syntax error, unexpected ')', expecting keyword_end +...sRecord.find_by (Region: 'LA'));@output_buffer.safe_append=' +... ^): + +app/views/samples/index.html.erb:54: syntax error, unexpected tLABEL +app/views/samples/index.html.erb:54: syntax error, unexpected ')', expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:33:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" WHERE "sales_records"."Region" = ? LIMIT ?[0m [["Region", "LA"], ["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (43.7ms) +Completed 500 Internal Server Error in 50ms (ActiveRecord: 0.1ms) + + + +Gem::LoadError (Error loading the 'mysql2' Active Record adapter. Missing a gem it depends on? mysql2 is not part of the bundle. Add it to your Gemfile.): + +app/views/samples/index.html.erb:56:in `_app_views_samples_index_html_erb__1495230459067515891_70327425124540' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:35:42 +0530 + [1m[35m (0.3ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" WHERE "sales_records"."Region" = ? LIMIT ?[0m [["Region", "LA"], ["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (14.2ms) +Completed 200 OK in 348ms (Views: 339.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:37:40 +0530 + [1m[35m (11.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:76: syntax error, unexpected end-of-input, expecting keyword_end + end + ^): + +app/views/samples/index.html.erb:76: syntax error, unexpected end-of-input, expecting keyword_end +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:37:53 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (48.8ms)[0m [1m[34mSELECT `sales_records`.* FROM `sales_records` WHERE `sales_records`.`Region` = 'LA' LIMIT 1[0m + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (53.8ms) +Completed 500 Internal Server Error in 62ms (ActiveRecord: 48.8ms) + + + +ActionView::Template::Error (Mysql2::Error: Table 'employees.sales_records' doesn't exist: SELECT `sales_records`.* FROM `sales_records` WHERE `sales_records`.`Region` = 'LA' LIMIT 1): + 51: + 52: <div> + 53: <!-- # SalesRecord.find_by Region: 'LA' --> + 54: <!-- <%=SalesRecord.find_by Region: 'LA'%> --> + 55: <% + 56: @connection = ActiveRecord::Base.establish_connection( + 57: :adapter => "mysql2", + +app/views/samples/index.html.erb:54:in `_app_views_samples_index_html_erb___1011492348238012521_70208409324840' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:40:23 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT `sales_records`.* FROM `sales_records` WHERE `sales_records`.`Region` = 'LA' LIMIT 1[0m + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (4.3ms) +Completed 500 Internal Server Error in 11ms (ActiveRecord: 1.1ms) + + + +ActionView::Template::Error (Mysql2::Error: Table 'employees.sales_records' doesn't exist: SELECT `sales_records`.* FROM `sales_records` WHERE `sales_records`.`Region` = 'LA' LIMIT 1): + 51: + 52: <div> + 53: <!-- # SalesRecord.find_by Region: 'LA' --> + 54: <!-- <%=SalesRecord.find_by Region: 'LA'%> --> + 55: <% + 56: @connection = ActiveRecord::Base.establish_connection( + 57: :adapter => "mysql2", + +app/views/samples/index.html.erb:54:in `_app_views_samples_index_html_erb___1011492348238012521_70208410325160' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:40:42 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:72: syntax error, unexpected '<', expecting ')' +</div>'.freeze; +^ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:76: unterminated regexp meets end of file + end + ^ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:76: syntax error, unexpected end-of-input, expecting ')' + end + ^): + +app/views/samples/index.html.erb:72: syntax error, unexpected '<', expecting ')' +app/views/samples/index.html.erb:76: unterminated regexp meets end of file +app/views/samples/index.html.erb:76: syntax error, unexpected end-of-input, expecting ')' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:41:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.3ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (3.3ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (41.8ms) +Completed 200 OK in 77ms (Views: 72.5ms | ActiveRecord: 3.7ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:41:23 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (0.8ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (38.7ms) +Completed 200 OK in 74ms (Views: 71.9ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:42:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (0.8ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (239.3ms) +Completed 500 Internal Server Error in 246ms (ActiveRecord: 1.2ms) + + + +ActionView::Template::Error (undefined local variable or method `val' for #<#<Class:0x00007fb55183c5a8>:0x00007fb550103da0> +Did you mean? eval): + 65: val = row["Region"] + 66: end + 67: %> + 68: <%=val %> + 69: + 70: </div> + +app/views/samples/index.html.erb:68:in `_app_views_samples_index_html_erb___1011492348238012521_70208354518320' +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 12:43:08 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.3ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (0.9ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (50.7ms) +Completed 200 OK in 87ms (Views: 84.2ms | ActiveRecord: 1.2ms) + + + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 +Migrating to CreateSalesRecords (20180724174847) + [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (1.2ms)[0m [1m[35mDROP TABLE "sales_records"[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[36mActiveRecord::SchemaMigration Destroy (0.4ms)[0m [1m[31mDELETE FROM "schema_migrations" WHERE "schema_migrations"."version" = ?[0m [["version", "20180724174847"]] + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.8ms)[0m [1m[36mcommit transaction[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/bin/rake:23 +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 13:47:37 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (0.9ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (45.2ms) +Completed 200 OK in 349ms (Views: 339.5ms | ActiveRecord: 1.3ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 13:48:33 +0530 + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 54ms (Views: 52.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 13:48:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 59ms (Views: 55.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 13:49:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (0.9ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (36.8ms) +Completed 200 OK in 71ms (Views: 68.7ms | ActiveRecord: 1.3ms) + + +Started GET "/handler" for 127.0.0.1 at 2018-07-25 13:50:44 +0530 + +ActionController::RoutingError (No route matches [GET] "/handler"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/handler" for 127.0.0.1 at 2018-07-25 13:52:43 +0530 + +ActionController::RoutingError (No route matches [GET] "/handler"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 13:52:51 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"handler"} +Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template samples/handler with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 13:52:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"handler"} +Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template samples/handler with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 14:14:54 +0530 + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"handler"=>"handler"} +Completed 406 Not Acceptable in 147ms (ActiveRecord: 0.0ms) + + + +ActionController::UnknownFormat (SamplesController#handler is missing a template for this request format and variant. + +request.formats: ["text/html"] +request.variant: [] + +NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.): + +actionpack (5.2.0) lib/action_controller/metal/implicit_render.rb:55:in `default_render' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:194:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rendering.rb:30:in `process_action' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:42:in `block in process_action' +activesupport (5.2.0) lib/active_support/callbacks.rb:132:in `run_callbacks' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:41:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rescue.rb:22:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `block in instrument' +activesupport (5.2.0) lib/active_support/notifications/instrumenter.rb:23:in `instrument' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `instrument' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:32:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/params_wrapper.rb:256:in `process_action' +activerecord (5.2.0) lib/active_record/railties/controller_runtime.rb:24:in `process_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:134:in `process' +actionview (5.2.0) lib/action_view/rendering.rb:32:in `process' +actionpack (5.2.0) lib/action_controller/metal.rb:191:in `dispatch' +actionpack (5.2.0) lib/action_controller/metal.rb:252:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:52:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:34:in `serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:52:in `block in serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `each' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `serve' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:840:in `call' +rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call' +rack (2.0.5) lib/rack/etag.rb:25:in `call' +rack (2.0.5) lib/rack/conditional_get.rb:25:in `call' +rack (2.0.5) lib/rack/head.rb:12:in `call' +actionpack (5.2.0) lib/action_dispatch/http/content_security_policy.rb:18:in `call' +rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context' +rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/cookies.rb:670:in `call' +activerecord (5.2.0) lib/active_record/migration.rb:559:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' +activesupport (5.2.0) lib/active_support/callbacks.rb:98:in `run_callbacks' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:26:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 14:15:20 +0530 + +ActionController::RoutingError (No route matches [GET] "/samples/handler"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 14:15:26 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"handler"=>"handler"} +Completed 406 Not Acceptable in 139ms (ActiveRecord: 0.0ms) + + + +ActionController::UnknownFormat (SamplesController#handler is missing a template for this request format and variant. + +request.formats: ["text/html"] +request.variant: [] + +NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.): + +actionpack (5.2.0) lib/action_controller/metal/implicit_render.rb:55:in `default_render' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:194:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rendering.rb:30:in `process_action' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:42:in `block in process_action' +activesupport (5.2.0) lib/active_support/callbacks.rb:132:in `run_callbacks' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:41:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rescue.rb:22:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `block in instrument' +activesupport (5.2.0) lib/active_support/notifications/instrumenter.rb:23:in `instrument' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `instrument' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:32:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/params_wrapper.rb:256:in `process_action' +activerecord (5.2.0) lib/active_record/railties/controller_runtime.rb:24:in `process_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:134:in `process' +actionview (5.2.0) lib/action_view/rendering.rb:32:in `process' +actionpack (5.2.0) lib/action_controller/metal.rb:191:in `dispatch' +actionpack (5.2.0) lib/action_controller/metal.rb:252:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:52:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:34:in `serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:52:in `block in serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `each' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `serve' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:840:in `call' +rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call' +rack (2.0.5) lib/rack/etag.rb:25:in `call' +rack (2.0.5) lib/rack/conditional_get.rb:25:in `call' +rack (2.0.5) lib/rack/head.rb:12:in `call' +actionpack (5.2.0) lib/action_dispatch/http/content_security_policy.rb:18:in `call' +rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context' +rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/cookies.rb:670:in `call' +activerecord (5.2.0) lib/active_record/migration.rb:559:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' +activesupport (5.2.0) lib/active_support/callbacks.rb:98:in `run_callbacks' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:26:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 14:15:47 +0530 +Processing by SamplesController#handler as HTML +Completed 406 Not Acceptable in 127ms (ActiveRecord: 0.0ms) + + + +ActionController::UnknownFormat (SamplesController#handler is missing a template for this request format and variant. + +request.formats: ["text/html"] +request.variant: [] + +NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.): + +actionpack (5.2.0) lib/action_controller/metal/implicit_render.rb:55:in `default_render' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:194:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rendering.rb:30:in `process_action' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:42:in `block in process_action' +activesupport (5.2.0) lib/active_support/callbacks.rb:132:in `run_callbacks' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:41:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rescue.rb:22:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `block in instrument' +activesupport (5.2.0) lib/active_support/notifications/instrumenter.rb:23:in `instrument' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `instrument' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:32:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/params_wrapper.rb:256:in `process_action' +activerecord (5.2.0) lib/active_record/railties/controller_runtime.rb:24:in `process_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:134:in `process' +actionview (5.2.0) lib/action_view/rendering.rb:32:in `process' +actionpack (5.2.0) lib/action_controller/metal.rb:191:in `dispatch' +actionpack (5.2.0) lib/action_controller/metal.rb:252:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:52:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:34:in `serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:52:in `block in serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `each' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `serve' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:840:in `call' +rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call' +rack (2.0.5) lib/rack/etag.rb:25:in `call' +rack (2.0.5) lib/rack/conditional_get.rb:25:in `call' +rack (2.0.5) lib/rack/head.rb:12:in `call' +actionpack (5.2.0) lib/action_dispatch/http/content_security_policy.rb:18:in `call' +rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context' +rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/cookies.rb:670:in `call' +activerecord (5.2.0) lib/active_record/migration.rb:559:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' +activesupport (5.2.0) lib/active_support/callbacks.rb:98:in `run_callbacks' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:26:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 14:16:00 +0530 +Processing by SamplesController#handler as HTML +Completed 406 Not Acceptable in 141ms (ActiveRecord: 0.0ms) + + + +ActionController::UnknownFormat (SamplesController#handler is missing a template for this request format and variant. + +request.formats: ["text/html"] +request.variant: [] + +NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.): + +actionpack (5.2.0) lib/action_controller/metal/implicit_render.rb:55:in `default_render' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:194:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rendering.rb:30:in `process_action' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:42:in `block in process_action' +activesupport (5.2.0) lib/active_support/callbacks.rb:132:in `run_callbacks' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:41:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rescue.rb:22:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `block in instrument' +activesupport (5.2.0) lib/active_support/notifications/instrumenter.rb:23:in `instrument' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `instrument' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:32:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/params_wrapper.rb:256:in `process_action' +activerecord (5.2.0) lib/active_record/railties/controller_runtime.rb:24:in `process_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:134:in `process' +actionview (5.2.0) lib/action_view/rendering.rb:32:in `process' +actionpack (5.2.0) lib/action_controller/metal.rb:191:in `dispatch' +actionpack (5.2.0) lib/action_controller/metal.rb:252:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:52:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:34:in `serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:52:in `block in serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `each' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `serve' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:840:in `call' +rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call' +rack (2.0.5) lib/rack/etag.rb:25:in `call' +rack (2.0.5) lib/rack/conditional_get.rb:25:in `call' +rack (2.0.5) lib/rack/head.rb:12:in `call' +actionpack (5.2.0) lib/action_dispatch/http/content_security_policy.rb:18:in `call' +rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context' +rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/cookies.rb:670:in `call' +activerecord (5.2.0) lib/active_record/migration.rb:559:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' +activesupport (5.2.0) lib/active_support/callbacks.rb:98:in `run_callbacks' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:26:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 14:16:10 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[35m (0.3ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ app/views/samples/index.html.erb:63 + [1m[35m (3.2ms)[0m [1m[34mSELECT * from sales_record[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (39.5ms) +Completed 200 OK in 75ms (Views: 70.3ms | ActiveRecord: 3.5ms) + + +Started GET "/samples/handler" for 127.0.0.1 at 2018-07-25 14:16:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"handler"} +Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms) + + + +ActionView::MissingTemplate (Missing template samples/handler with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: + * "/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views" +): + +app/controllers/samples_controller.rb:25:in `index' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:16:51 +0530 +Processing by SamplesController#handler as HTML +Completed 406 Not Acceptable in 133ms (ActiveRecord: 0.0ms) + + + +ActionController::UnknownFormat (SamplesController#handler is missing a template for this request format and variant. + +request.formats: ["text/html"] +request.variant: [] + +NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.): + +actionpack (5.2.0) lib/action_controller/metal/implicit_render.rb:55:in `default_render' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap' +actionpack (5.2.0) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:194:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rendering.rb:30:in `process_action' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:42:in `block in process_action' +activesupport (5.2.0) lib/active_support/callbacks.rb:132:in `run_callbacks' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:41:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rescue.rb:22:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `block in instrument' +activesupport (5.2.0) lib/active_support/notifications/instrumenter.rb:23:in `instrument' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `instrument' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:32:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/params_wrapper.rb:256:in `process_action' +activerecord (5.2.0) lib/active_record/railties/controller_runtime.rb:24:in `process_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:134:in `process' +actionview (5.2.0) lib/action_view/rendering.rb:32:in `process' +actionpack (5.2.0) lib/action_controller/metal.rb:191:in `dispatch' +actionpack (5.2.0) lib/action_controller/metal.rb:252:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:52:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:34:in `serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:52:in `block in serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `each' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `serve' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:840:in `call' +rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call' +rack (2.0.5) lib/rack/etag.rb:25:in `call' +rack (2.0.5) lib/rack/conditional_get.rb:25:in `call' +rack (2.0.5) lib/rack/head.rb:12:in `call' +actionpack (5.2.0) lib/action_dispatch/http/content_security_policy.rb:18:in `call' +rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context' +rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/cookies.rb:670:in `call' +activerecord (5.2.0) lib/active_record/migration.rb:559:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' +activesupport (5.2.0) lib/active_support/callbacks.rb:98:in `run_callbacks' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:26:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:26:43 +0530 + [1m[35m (0.5ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/controllers/samples_controller.rb:34: syntax error, unexpected ',', expecting => + render json: {"test","test-data"}, callback: "test... + ^ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/controllers/samples_controller.rb:34: syntax error, unexpected '}', expecting keyword_end +...nder json: {"test","test-data"}, callback: "testFunction" +... ^): + +app/controllers/samples_controller.rb:34: syntax error, unexpected ',', expecting => +app/controllers/samples_controller.rb:34: syntax error, unexpected '}', expecting keyword_end +Started POST "/__web_console/repl_sessions/dd01799d16550ffd0150d49e400005fe/trace" for 127.0.0.1 at 2018-07-25 14:27:04 +0530 +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:27:14 +0530 +Processing by SamplesController#handler as HTML +Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding. +Completed 422 Unprocessable Entity in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + + +ActionController::InvalidCrossOriginRequest (Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.): + +actionpack (5.2.0) lib/action_controller/metal/request_forgery_protection.rb:262:in `verify_same_origin_request' +activesupport (5.2.0) lib/active_support/callbacks.rb:426:in `block in make_lambda' +activesupport (5.2.0) lib/active_support/callbacks.rb:247:in `block in halting' +activesupport (5.2.0) lib/active_support/callbacks.rb:517:in `block in invoke_after' +activesupport (5.2.0) lib/active_support/callbacks.rb:517:in `each' +activesupport (5.2.0) lib/active_support/callbacks.rb:517:in `invoke_after' +activesupport (5.2.0) lib/active_support/callbacks.rb:133:in `run_callbacks' +actionpack (5.2.0) lib/abstract_controller/callbacks.rb:41:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/rescue.rb:22:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `block in instrument' +activesupport (5.2.0) lib/active_support/notifications/instrumenter.rb:23:in `instrument' +activesupport (5.2.0) lib/active_support/notifications.rb:168:in `instrument' +actionpack (5.2.0) lib/action_controller/metal/instrumentation.rb:32:in `process_action' +actionpack (5.2.0) lib/action_controller/metal/params_wrapper.rb:256:in `process_action' +activerecord (5.2.0) lib/active_record/railties/controller_runtime.rb:24:in `process_action' +actionpack (5.2.0) lib/abstract_controller/base.rb:134:in `process' +actionview (5.2.0) lib/action_view/rendering.rb:32:in `process' +actionpack (5.2.0) lib/action_controller/metal.rb:191:in `dispatch' +actionpack (5.2.0) lib/action_controller/metal.rb:252:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:52:in `dispatch' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:34:in `serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:52:in `block in serve' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `each' +actionpack (5.2.0) lib/action_dispatch/journey/router.rb:35:in `serve' +actionpack (5.2.0) lib/action_dispatch/routing/route_set.rb:840:in `call' +rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call' +rack (2.0.5) lib/rack/etag.rb:25:in `call' +rack (2.0.5) lib/rack/conditional_get.rb:25:in `call' +rack (2.0.5) lib/rack/head.rb:12:in `call' +actionpack (5.2.0) lib/action_dispatch/http/content_security_policy.rb:18:in `call' +rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context' +rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/cookies.rb:670:in `call' +activerecord (5.2.0) lib/active_record/migration.rb:559:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' +activesupport (5.2.0) lib/active_support/callbacks.rb:98:in `run_callbacks' +actionpack (5.2.0) lib/action_dispatch/middleware/callbacks.rb:26:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:29:20 +0530 +Processing by SamplesController#handler as HTML +Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:29:40 +0530 +Processing by SamplesController#handler as HTML +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:29:48 +0530 +Processing by SamplesController#handler as HTML +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 14:41:23 +0530 + [1m[35m (0.4ms)[0m [1m[35mSET @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML +Completed 200 OK in 2ms (Views: 1.2ms | ActiveRecord: 0.0ms) + + + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ bin/rails:9 +Migrating to CreateSalesRecords (20180725092631) + [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[34mSELECT sqlite_version(*)[0m + ↳ db/migrate/20180725092631_create_sales_records.rb:3 + [1m[35m (0.5ms)[0m [1m[35mCREATE TABLE "sales_records" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "Region" varchar, "Country" varchar, "City" varchar, "TotalSales" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m + ↳ db/migrate/20180725092631_create_sales_records.rb:3 + [1m[36mActiveRecord::SchemaMigration Create (0.2ms)[0m [1m[32mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20180725092631"]] + ↳ bin/rails:9 + [1m[35m (0.7ms)[0m [1m[36mcommit transaction[0m + ↳ bin/rails:9 + [1m[36mActiveRecord::InternalMetadata Load (0.3ms)[0m [1m[34mSELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ?[0m [["key", "environment"], ["LIMIT", 1]] + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m + ↳ bin/rails:9 + [1m[35m (0.0ms)[0m [1m[36mcommit transaction[0m + ↳ bin/rails:9 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ bin/rails:9 +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:03:15 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (249.2ms) +Completed 500 Internal Server Error in 272ms (ActiveRecord: 0.0ms) + + + +ActionView::Template::Error (undefined local variable or method `sales_record' for #<#<Class:0x00007fcdf33994a0>:0x00007fcdf3384a78>): + 51: + 52: <div> + 53: <% + 54: @val = sales_record.first + 55: %> + 56: <%=@val %> + 57: + +app/views/samples/index.html.erb:54:in `_app_views_samples_index_html_erb__2621936525527112902_70261262666140' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:03:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (22.7ms) +Completed 200 OK in 315ms (Views: 312.8ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:04:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (1.1ms) +Completed 200 OK in 36ms (Views: 34.6ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:04:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (1.1ms) +Completed 200 OK in 37ms (Views: 35.9ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:04:21 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (1.1ms) +Completed 200 OK in 34ms (Views: 32.8ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:04:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT "sales_records".* FROM "sales_records" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (1.2ms) +Completed 200 OK in 40ms (Views: 39.4ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:08:42 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (7.1ms) +Completed 500 Internal Server Error in 23ms (ActiveRecord: 0.5ms) + + + +ActionView::Template::Error (comparison of Symbol with 0 failed): + 51: + 52: <div> + 53: <% + 54: @val = SalesRecord.first(:Region) + 55: %> + 56: <%=@val %> + 57: + +app/views/samples/index.html.erb:54:in `_app_views_samples_index_html_erb__2370400192117707164_70135449382000' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:09:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (2.6ms) +Completed 500 Internal Server Error in 13ms (ActiveRecord: 0.0ms) + + + +ActionView::Template::Error (comparison of String with 0 failed): + 51: + 52: <div> + 53: <% + 54: @val = SalesRecord.first("Region") + 55: %> + 56: <%=@val %> + 57: + +app/views/samples/index.html.erb:54:in `_app_views_samples_index_html_erb__2370400192117707164_70135450001340' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:12:20 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT "sales_records"."Region" FROM "sales_records" WHERE (Region = 'LA') LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (16.4ms) +Completed 200 OK in 308ms (Views: 306.7ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:12:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT "sales_records"."Region" FROM "sales_records" WHERE (Region = 'LA') LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (3.4ms) +Completed 500 Internal Server Error in 10ms (ActiveRecord: 0.2ms) + + + +ActionView::Template::Error (missing attribute: City): + 51: + 52: <div> + 53: <% + 54: @val = SalesRecord.select('Region').where("Region = 'LA'").first.City + 55: %> + 56: <%=@val %> + 57: + +app/views/samples/index.html.erb:54:in `_app_views_samples_index_html_erb__2370400192117707164_70135451837740' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:13:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT "sales_records"."City" FROM "sales_records" WHERE (Region = 'LA') LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:54 + Rendered samples/index.html.erb within layouts/application (1.2ms) +Completed 200 OK in 34ms (Views: 32.4ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:17:18 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) FROM "sales_records" GROUP BY "sales_records"."Region" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:55 + Rendered samples/index.html.erb within layouts/application (1.6ms) +Completed 200 OK in 33ms (Views: 31.9ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:17:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) FROM "sales_records" GROUP BY "sales_records"."Region" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:55 + Rendered samples/index.html.erb within layouts/application (1.5ms) +Completed 200 OK in 38ms (Views: 36.7ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:19:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.7ms) +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:64: syntax error, unexpected keyword_ensure, expecting end-of-input + ensure + ^~~~~~): + +app/views/samples/index.html.erb:64: syntax error, unexpected keyword_ensure, expecting end-of-input +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:20:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:64: syntax error, unexpected keyword_ensure, expecting end-of-input + ensure + ^~~~~~): + +app/views/samples/index.html.erb:64: syntax error, unexpected keyword_ensure, expecting end-of-input +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:20:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.5ms) +Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.0ms) + + + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/app/views/samples/index.html.erb:64: syntax error, unexpected keyword_ensure, expecting end-of-input + ensure + ^~~~~~): + +app/views/samples/index.html.erb:64: syntax error, unexpected keyword_ensure, expecting end-of-input +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:20:20 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) FROM "sales_records" GROUP BY "sales_records"."Region" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:55 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 36ms (Views: 34.6ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:20:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) FROM "sales_records" GROUP BY "sales_records"."Region" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:55 + Rendered samples/index.html.erb within layouts/application (6.2ms) +Completed 500 Internal Server Error in 14ms (ActiveRecord: 0.4ms) + + + +ActionView::Template::Error (undefined method `to_a' for #<SalesRecord Region: "Asturias"> +Did you mean? to_s): + 52: <div> + 53: <% + 54: #@val = SalesRecord.select('City').where("Region = 'LA'").first.City + 55: @val = SalesRecord.select('Region, SUM(TotalSales)').group('Region').first.to_a + 56: + 57: + 58: #end + +app/views/samples/index.html.erb:55:in `_app_views_samples_index_html_erb__2370400192117707164_70135481759960' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:20:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) FROM "sales_records" GROUP BY "sales_records"."Region" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:55 + Rendered samples/index.html.erb within layouts/application (3.6ms) +Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.4ms) + + + +ActionView::Template::Error (missing attribute: TotalSales): + 52: <div> + 53: <% + 54: #@val = SalesRecord.select('City').where("Region = 'LA'").first.City + 55: @val = SalesRecord.select('Region, SUM(TotalSales)').group('Region').first.TotalSales + 56: + 57: + 58: #end + +app/views/samples/index.html.erb:55:in `_app_views_samples_index_html_erb__2370400192117707164_70135451873780' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:20:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region" LIMIT ?[0m [["LIMIT", 1]] + ↳ app/views/samples/index.html.erb:55 + Rendered samples/index.html.erb within layouts/application (1.3ms) +Completed 200 OK in 36ms (Views: 34.4ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:21:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (3.7ms) +Completed 500 Internal Server Error in 10ms (ActiveRecord: 0.5ms) + + + +ActionView::Template::Error (wrong number of arguments (given 1, expected 0)): + 54: #@val = SalesRecord.select('City').where("Region = 'LA'").first.City + 55: @result = SalesRecord.select('Region, SUM(TotalSales) as TotalSales').group('Region') + 56: + 57: @result.each(:as => :hash) do |row| + 58: + 59: end + 60: + +app/views/samples/index.html.erb:57:in `_app_views_samples_index_html_erb__2370400192117707164_70135480656020' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:27:21 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (1.5ms) +Completed 200 OK in 37ms (Views: 35.3ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:28:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (1.5ms) +Completed 200 OK in 40ms (Views: 38.4ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:29:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (3.9ms) +Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.5ms) + + + +ActionView::Template::Error (missing attribute: Country): + 55: @result = SalesRecord.select('Region, SUM(TotalSales) as TotalSales').group('Region') + 56: + 57: @result.each do |row| + 58: @val = row["Region"] + " " + row["Country"]+ " " + row["City"]+ " " + row["TotalSales"] + 59: + 60: end + 61: + +app/views/samples/index.html.erb:58:in `block in _app_views_samples_index_html_erb__2370400192117707164_70135496647160' +app/views/samples/index.html.erb:57:in `_app_views_samples_index_html_erb__2370400192117707164_70135496647160' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:29:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (4.4ms) +Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.6ms) + + + +ActionView::Template::Error (no implicit conversion of Integer into String): + 55: @result = SalesRecord.select('Region, SUM(TotalSales) as TotalSales').group('Region') + 56: + 57: @result.each do |row| + 58: @val = row["Region"] + " " + row["TotalSales"] + 59: + 60: end + 61: + +app/views/samples/index.html.erb:58:in `+' +app/views/samples/index.html.erb:58:in `block in _app_views_samples_index_html_erb__2370400192117707164_70135451374340' +app/views/samples/index.html.erb:57:in `_app_views_samples_index_html_erb__2370400192117707164_70135451374340' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:29:45 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (1.6ms) +Completed 200 OK in 38ms (Views: 36.4ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:37:28 +0530 +Processing by SamplesController#handler as HTML +Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `getData' for DrillDownDataHandler:Class +Did you mean? getChart): + +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:40:09 +0530 +Processing by SamplesController#handler as HTML +Completed 500 Internal Server Error in 2ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `getData' for DrillDownDataHandler:Class +Did you mean? getChart): + +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:40:29 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:44:52 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:46:31 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:47:28 +0530 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:47:36 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:49:52 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:50:22 +0530 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:176: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:50:33 +0530 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:171: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:171: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:50:59 +0530 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:170 +Completed 200 OK in 12ms (Views: 0.7ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 15:51:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.2ms) +Completed 200 OK in 303ms (Views: 300.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:51:48 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:170 +Completed 200 OK in 2ms (Views: 0.4ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:51:51 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (2.1ms) +Completed 200 OK in 65ms (Views: 63.0ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-25 15:51:53 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.8ms) +Completed 200 OK in 63ms (Views: 57.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:51:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (2.8ms) +Completed 200 OK in 49ms (Views: 46.6ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-25 15:51:58 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (1.0ms) +Completed 200 OK in 61ms (Views: 58.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:52:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (2.8ms) +Completed 200 OK in 62ms (Views: 59.2ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-25 15:52:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.8ms) +Completed 200 OK in 45ms (Views: 43.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:52:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (2.1ms) +Completed 200 OK in 44ms (Views: 41.9ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 15:52:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:52:06 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:170 +Completed 200 OK in 4ms (Views: 0.8ms | ActiveRecord: 0.8ms) + + +Completed 200 OK in 51ms (Views: 49.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:52:06 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:170 +Completed 200 OK in 2ms (Views: 0.4ms | ActiveRecord: 0.4ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 15:52:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.5ms) +Completed 200 OK in 41ms (Views: 34.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:52:57 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:170 + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): +Completed 200 OK in 5ms (Views: 0.8ms | ActiveRecord: 0.6ms) + + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 15:54:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.5ms) +Completed 200 OK in 43ms (Views: 35.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:54:26 +0530 +Processing by SamplesController#handler as TEXT +Completed 200 OK in 2ms (Views: 1.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 15:54:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (9.0ms) +Completed 200 OK in 49ms (Views: 46.8ms | ActiveRecord: 1.4ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 15:54:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:54:35 +0530 + Rendered samples/drilldown.html.erb within layouts/application (1.3ms) +Processing by SamplesController#handler as TEXT +Completed 200 OK in 2ms (Views: 1.9ms | ActiveRecord: 0.0ms) + + +Completed 200 OK in 57ms (Views: 55.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 15:54:35 +0530 +Processing by SamplesController#handler as TEXT +Completed 200 OK in 1ms (Views: 1.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:02:24 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 2ms (Views: 1.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:03:33 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 1ms (Views: 1.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:03:46 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 16ms (ActiveRecord: 0.0ms) + + + +NameError (undefined local variable or method `params' for DrillDownDataHandler:Class): + +lib/drill_down_data_handler.rb:169:in `getChart' +app/controllers/samples_controller.rb:38:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:07:20 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.0ms) + + + +ArgumentError (wrong number of arguments (given 1, expected 0)): + +lib/drill_down_data_handler.rb:2:in `getChart' +app/controllers/samples_controller.rb:38:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:08:04 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 8ms (Views: 0.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:49:56 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:49:58 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:50:04 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 7ms (Views: 0.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:52:53 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms) + + + +ArgumentError (wrong number of arguments (given 1, expected 0)): + +lib/drill_down_data_handler.rb:207:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:53:13 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 8ms (Views: 0.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA" for 127.0.0.1 at 2018-07-25 16:53:39 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA"} +Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 16:53:42 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 0ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:06:32 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:06:40 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 17ms (ActiveRecord: 0.0ms) + + + +NameError (undefined local variable or method `drillLevel' for DrillDownDataHandler:Class +Did you mean? drillDownLevel): + +lib/drill_down_data_handler.rb:215:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:07:07 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +TypeError (no implicit conversion of String into Integer): + +lib/drill_down_data_handler.rb:216:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:08:57 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 17ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `GetDBData' for DrillDownDataHandler:Class +Did you mean? getData): + +lib/drill_down_data_handler.rb:216:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:09:40 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `GetDBData' for DrillDownDataHandler:Class +Did you mean? getData): + +lib/drill_down_data_handler.rb:216:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:09:52 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 20ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `processDataforDrillDown' for DrillDownDataHandler:Class): + +lib/drill_down_data_handler.rb:222:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:10:06 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `processDataforDrillDown' for DrillDownDataHandler:Class): + +lib/drill_down_data_handler.rb:222:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:10:14 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 19ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `each' for nil:NilClass): + +lib/drill_down_data_handler.rb:189:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:222:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:11:11 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region= 'LA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:189 +Completed 200 OK in 21ms (Views: 0.5ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:15:02 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region= 'LA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:189 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:15:11 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region= 'LA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:190 +Completed 200 OK in 20ms (Views: 0.2ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:15:37 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region= 'LA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:190 +Completed 200 OK in 21ms (Views: 0.2ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:16:30 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region= 'LA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:190 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:19:29 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region= 'LA') GROUP BY "sales_records"."Country"[0m + ↳ app/controllers/samples_controller.rb:37 +Completed 200 OK in 15ms (Views: 5.7ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:25:54 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 7ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:26:18 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:26:39 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 8ms (Views: 0.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA" for 127.0.0.1 at 2018-07-25 17:26:54 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA"} +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:27:00 +0530 +Processing by SamplesController#handler as HTML +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:29:43 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +ArgumentError (wrong number of arguments (given 1, expected 3)): + +lib/drill_down_data_handler.rb:203:in `GetDBData' +lib/drill_down_data_handler.rb:220:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:32:50 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +TypeError (no implicit conversion of Integer into String): + +lib/drill_down_data_handler.rb:200:in `+' +lib/drill_down_data_handler.rb:200:in `GetDBData' +lib/drill_down_data_handler.rb:221:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:41:57 +0530 +Processing by SamplesController#handler as HTML +Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms) + + + +TypeError (no implicit conversion of Integer into String): + +lib/drill_down_data_handler.rb:200:in `+' +lib/drill_down_data_handler.rb:200:in `GetDBData' +lib/drill_down_data_handler.rb:221:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:42:08 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML +Completed 500 Internal Server Error in 18ms (ActiveRecord: 0.0ms) + + + +NameError (undefined local variable or method `columnName' for DrillDownDataHandler:Class): + +lib/drill_down_data_handler.rb:201:in `GetDBData' +lib/drill_down_data_handler.rb:221:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:42:30 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML +Completed 200 OK in 7ms (Views: 0.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:44:10 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML +Completed 200 OK in 8ms (Views: 0.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:44:24 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:45:33 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms) + + + +TypeError (no implicit conversion of nil into String): + +lib/drill_down_data_handler.rb:205:in `+' +lib/drill_down_data_handler.rb:205:in `GetDBData' +lib/drill_down_data_handler.rb:224:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:45:49 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} +Completed 200 OK in 7ms (Views: 0.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 17:49:38 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'LA') GROUP BY "sales_records"."Country"[0m + ↳ app/controllers/samples_controller.rb:37 +Completed 200 OK in 21ms (Views: 5.2ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:49:43 +0530 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/controllers/samples_controller.rb:37 +Completed 200 OK in 3ms (Views: 1.3ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:50:45 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/controllers/samples_controller.rb:37 +Completed 200 OK in 21ms (Views: 5.7ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:52:57 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/controllers/samples_controller.rb:37 +Completed 200 OK in 22ms (Views: 6.3ms | ActiveRecord: 7.3ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:53:26 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:189 +Completed 200 OK in 15ms (Views: 0.4ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:55:15 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 + +SyntaxError (/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:195: syntax error, unexpected =>, expecting keyword_end + chartObj["data"] => dataTemplate % [row[columnNa... + ^~ +/Users/rahul/Work/FusionCharts Integrations/rails/fusioncharts-rails-samples/lib/drill_down_data_handler.rb:234: syntax error, unexpected keyword_end, expecting end-of-input): + +lib/drill_down_data_handler.rb:195: syntax error, unexpected =>, expecting keyword_end +lib/drill_down_data_handler.rb:234: syntax error, unexpected keyword_end, expecting end-of-input +app/controllers/samples_controller.rb:10:in `<main>' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:55:36 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:193 +Completed 200 OK in 22ms (Views: 0.8ms | ActiveRecord: 7.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 17:56:10 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:193 +Completed 200 OK in 20ms (Views: 0.4ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:00:18 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 500 Internal Server Error in 17ms (ActiveRecord: 1.1ms) + + + +NameError (undefined local variable or method `data' for DrillDownDataHandler:Class +Did you mean? dbData): + +lib/drill_down_data_handler.rb:194:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:192:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:237:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:00:36 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 500 Internal Server Error in 27ms (ActiveRecord: 1.2ms) + + + +NameError (undefined local variable or method `chartAppearancesConfigObj' for DrillDownDataHandler:Class +Did you mean? chartConfigObj): + +lib/drill_down_data_handler.rb:204:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:237:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:01:11 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 200 OK in 23ms (Views: 0.2ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:01:38 +0530 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:02:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.0ms) +Completed 200 OK in 322ms (Views: 321.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:02:05 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.5ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:02:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Completed 200 OK in 1397ms (Views: 1394.6ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:02:27 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 200 OK in 4ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:03:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 44ms (Views: 42.5ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:03:42 +0530 +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:03:45 +0530 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:192 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:03:55 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:237 +Completed 200 OK in 15ms (Views: 0.2ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:05:17 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:197 +Completed 200 OK in 15ms (Views: 0.2ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:06:39 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:197 +Completed 200 OK in 22ms (Views: 0.2ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:07:32 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:197 +Completed 200 OK in 21ms (Views: 0.1ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:09:19 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 16ms (Views: 0.2ms | ActiveRecord: 1.6ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:12:07 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 23ms (Views: 0.1ms | ActiveRecord: 8.5ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:13:28 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 21ms (Views: 0.2ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:15:48 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 22ms (Views: 0.1ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:16:50 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 22ms (Views: 0.2ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:17:49 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 22ms (Views: 0.2ms | ActiveRecord: 8.2ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:20:57 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 21ms (Views: 0.1ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:21:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Completed 200 OK in 308ms (Views: 306.3ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:21:07 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 7ms (Views: 2.3ms | ActiveRecord: 0.9ms) + + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:21:43 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 21ms (Views: 0.2ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:22:27 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 22ms (Views: 0.2ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:25:04 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 22ms (Views: 0.1ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:25:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.2ms) +Completed 200 OK in 302ms (Views: 299.3ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:25:23 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 5ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:25:26 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (City = 'Victoria') GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:25:38 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (City = 'Victoria') GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:25:55 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (City = 'Victoria') GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:27:55 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (6.3ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (City = 'Victoria') GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 18ms (Views: 0.2ms | ActiveRecord: 6.6ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:29:01 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} +Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.0ms) + + + +TypeError (no implicit conversion of Integer into String): + +lib/drill_down_data_handler.rb:66:in `+' +lib/drill_down_data_handler.rb:66:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:29:53 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 500 Internal Server Error in 20ms (ActiveRecord: 6.4ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:28:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:27:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:75:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:30:20 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.8ms) +Completed 200 OK in 272ms (Views: 270.1ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:30:21 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 200 OK in 6ms (Views: 0.2ms | ActiveRecord: 1.1ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:30:23 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 500 Internal Server Error in 140ms (ActiveRecord: 0.3ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:28:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:27:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:75:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:30:55 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:27 +Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.4ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:28:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:27:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:75:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:32:31 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (5.7ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 500 Internal Server Error in 22ms (ActiveRecord: 6.5ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:29:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:28:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:76:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:41:31 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (6.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region = "Victoria") GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 500 Internal Server Error in 17ms (ActiveRecord: 6.6ms) + + + +ActiveRecord::StatementInvalid (SQLite3::SQLException: near "Victoria": syntax error: SELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region = "Victoria") GROUP BY "sales_records"."Country"): + +lib/drill_down_data_handler.rb:28:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:76:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:42:22 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region = 'Victoria'") GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 16ms (Views: 0.2ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:44:04 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 500 Internal Server Error in 20ms (ActiveRecord: 0.9ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:29:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:28:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:76:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:45:24 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 500 Internal Server Error in 21ms (ActiveRecord: 1.0ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:29:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:28:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:78:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:47:45 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} +Completed 500 Internal Server Error in 18ms (ActiveRecord: 0.0ms) + + + +NameError (undefined local variable or method `table_name' for DrillDownDataHandler:Class): + +lib/drill_down_data_handler.rb:54:in `GetDBData' +lib/drill_down_data_handler.rb:71:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:48:35 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} +Completed 500 Internal Server Error in 17ms (ActiveRecord: 0.0ms) + + + +NoMethodError (undefined method `table_name' for Class:Class): + +lib/drill_down_data_handler.rb:55:in `GetDBData' +lib/drill_down_data_handler.rb:72:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:49:50 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("sales_records"."Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 500 Internal Server Error in 16ms (ActiveRecord: 1.0ms) + + + +ActiveModel::MissingAttributeError (missing attribute: Region): + +lib/drill_down_data_handler.rb:29:in `block in processDataforDrillDown' +lib/drill_down_data_handler.rb:28:in `processDataforDrillDown' +lib/drill_down_data_handler.rb:79:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:18 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 23ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:54:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.2ms) +Completed 200 OK in 304ms (Views: 301.9ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:54:28 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 10ms (Views: 1.1ms | ActiveRecord: 0.9ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:32 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:36 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:38 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:39 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:40 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:40 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:40 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:40 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:41 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:41 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:41 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:54:41 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:54:47 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 38ms (Views: 36.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:54:48 +0530 +Processing by SamplesController#handler as TEXT + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 7ms (Views: 0.1ms | ActiveRecord: 0.7ms) + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:55:22 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:56:47 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:00 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:03 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:03 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:03 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:03 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:03 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 18:57:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.9ms) +Completed 200 OK in 38ms (Views: 37.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 18:57:05 +0530 + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 7ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:07 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 43ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:20 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:40 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:57:46 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:58:44 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:59:01 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 18:59:07 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ("Region" = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 19:01:31 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.0ms) +Completed 200 OK in 326ms (Views: 309.5ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:01:32 +0530 + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +Processing by SamplesController#handler as TEXT +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2591ms (Views: 0.1ms | ActiveRecord: 1.4ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:01:35 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 98ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:01:40 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:01:45 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:18:15 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.1ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 19:23:38 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.0ms) +Completed 200 OK in 44ms (Views: 42.1ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:23:38 +0530 + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 4ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=MA&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:25:43 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MA", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'MA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:25:52 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.1ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:30:53 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 10ms (Views: 0.2ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:34:33 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.1ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.1ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:35:07 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 23ms (Views: 0.2ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 19:35:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.3ms) +Completed 200 OK in 308ms (Views: 306.2ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:35:16 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 15ms (Views: 0.2ms | ActiveRecord: 2.1ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Asturias&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:35:22 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Asturias", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Asturias') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:35:42 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 19:35:56 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 41ms (Views: 39.0ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:35:57 +0530 + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 4ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:36:06 +0530 +Processing by SamplesController#handler as HTML + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:36:31 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:37:42 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Region, Country, City, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 16ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:38:03 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT Region, Country, City, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE ('Region' = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 17ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:40:16 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Region, Country, City, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 14ms (Views: 0.2ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:40:52 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 15ms (Views: 0.2ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 19:41:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (2.1ms) +Completed 200 OK in 290ms (Views: 287.1ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:41:03 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 5ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:41:06 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 91ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Australia&drillLevel=1" for 127.0.0.1 at 2018-07-25 19:41:08 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Australia", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Australia') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:28 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Melbourne&drillLevel=2" for 127.0.0.1 at 2018-07-25 19:41:14 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Melbourne", "drillLevel"=>"2"} +Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms) + + + +TypeError (no implicit conversion of nil into String): + +lib/drill_down_data_handler.rb:53:in `+' +lib/drill_down_data_handler.rb:53:in `GetDBData' +lib/drill_down_data_handler.rb:74:in `getData' +app/controllers/samples_controller.rb:37:in `handler' +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 19:44:12 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.1ms) +Completed 200 OK in 311ms (Views: 296.8ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 19:44:13 +0530 +Processing by SamplesController#handler as TEXT + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 1332ms (Views: 0.1ms | ActiveRecord: 1.1ms) + + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:44:20 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Australia&drillLevel=1" for 127.0.0.1 at 2018-07-25 19:44:22 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Australia", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Australia') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=MA&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:44:31 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MA", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-25 19:44:33 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:44:45 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Australia&drillLevel=1" for 127.0.0.1 at 2018-07-25 19:44:46 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Australia", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Australia') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Victoria&drillLevel=0" for 127.0.0.1 at 2018-07-25 19:45:24 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Victoria", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Victoria') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Australia&drillLevel=1" for 127.0.0.1 at 2018-07-25 19:45:26 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Australia", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Australia') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 22:18:14 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:18:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (1.7ms) +Completed 200 OK in 42ms (Views: 40.6ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 22:18:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:18:29 +0530 + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.6ms) + + +Completed 200 OK in 56ms (Views: 54.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:18:30 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:18:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (2.1ms) +Completed 200 OK in 48ms (Views: 45.5ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 22:18:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:18:40 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Completed 200 OK in 54ms (Views: 52.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:18:40 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 22:18:43 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Canada&drillLevel=1" for 127.0.0.1 at 2018-07-25 22:18:44 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Canada", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Canada') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-25 22:19:12 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:29 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:19:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:57 + Rendered samples/index.html.erb within layouts/application (2.3ms) +Completed 200 OK in 48ms (Views: 46.0ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-25 22:31:45 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.7ms) +Completed 200 OK in 54ms (Views: 52.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:31:47 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 42ms (Views: 39.8ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-25 22:31:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.7ms) +Completed 200 OK in 41ms (Views: 39.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-25 22:31:57 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (1.1ms) +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-25 22:31:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (1.1ms) +Completed 200 OK in 251ms (Views: 250.0ms | ActiveRecord: 0.0ms) + + +Completed 200 OK in 433ms (Views: 417.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:31:58 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (14.3ms) +Completed 200 OK in 59ms (Views: 54.8ms | ActiveRecord: 1.8ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:31:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.9ms) +Completed 200 OK in 73ms (Views: 70.9ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 49ms (Views: 45.8ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-25 22:32:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.0ms) +Completed 200 OK in 38ms (Views: 36.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.6ms) +Completed 200 OK in 44ms (Views: 42.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-25 22:32:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.8ms) +Completed 200 OK in 41ms (Views: 39.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:08 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.3ms) +Completed 200 OK in 48ms (Views: 46.4ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-25 22:32:10 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.7ms) +Completed 200 OK in 52ms (Views: 51.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 43ms (Views: 41.8ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-25 22:32:13 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 41ms (Views: 39.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.4ms) +Completed 200 OK in 45ms (Views: 43.2ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 22:32:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.2ms) +Completed 200 OK in 49ms (Views: 48.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:23 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (1.2ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (3.3ms) +Completed 200 OK in 45ms (Views: 42.5ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 22:32:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 40ms (Views: 38.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:32:27 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=MA&drillLevel=0" for 127.0.0.1 at 2018-07-25 22:32:28 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MA", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-25 22:32:30 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 47ms (Views: 45.3ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-25 22:32:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 46ms (Views: 44.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:44 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.2ms) +Completed 200 OK in 43ms (Views: 40.7ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/pie3d-sample" for 127.0.0.1 at 2018-07-25 22:32:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"pie3d-sample"} + Rendering samples/pie3d-sample.html.erb within layouts/application + Rendered samples/pie3d-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 40ms (Views: 38.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:32:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 44ms (Views: 42.5ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/stacked-column2d-line-chart-sample" for 127.0.0.1 at 2018-07-25 22:32:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"stacked-column2d-line-chart-sample"} + Rendering samples/stacked-column2d-line-chart-sample.erb within layouts/application + Rendered samples/stacked-column2d-line-chart-sample.erb within layouts/application (1.0ms) +Completed 200 OK in 46ms (Views: 45.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:33:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 42ms (Views: 40.4ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-25 22:33:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (1.9ms) +Completed 200 OK in 42ms (Views: 41.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:33:05 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.4ms) +Completed 200 OK in 45ms (Views: 43.6ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-25 22:33:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.6ms) +Completed 200 OK in 45ms (Views: 43.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:33:18 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 42ms (Views: 40.4ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:33:19 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.8ms) +Completed 200 OK in 41ms (Views: 39.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:33:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 43ms (Views: 41.5ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-25 22:33:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 48ms (Views: 46.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:33:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 42ms (Views: 40.0ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 22:41:33 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:41:33 +0530 + Rendered samples/drilldown.html.erb within layouts/application (2.0ms) +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Completed 200 OK in 59ms (Views: 57.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:41:33 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Qu%C3%A9bec&drillLevel=0" for 127.0.0.1 at 2018-07-25 22:41:36 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Québec", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Québec') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=Canada&drillLevel=1" for 127.0.0.1 at 2018-07-25 22:41:37 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Canada", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Canada') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:43:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 47ms (Views: 44.7ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-database" for 127.0.0.1 at 2018-07-25 22:43:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-database"} + Rendering samples/chart-database.html.erb within layouts/application + Rendered samples/chart-database.html.erb within layouts/application (208.8ms) +Completed 500 Internal Server Error in 217ms (ActiveRecord: 0.0ms) + + + +ActionView::Template::Error (undefined local variable or method `dbData' for #<#<Class:0x00007fee2227a408>:0x00007fee1f2bdad0>): + 17: # Chart data as JSON string + 18: labelValueJSONStr = "" + 19: + 20: dbData.each do |row| + 21: labelValuedata = dataTemplate % [row["Region"], row["TotalSales"].to_s, row[columnName]] + 22: labelValueJSONStr.concat(labelValuedata) + 23: end + +app/views/samples/chart-database.html.erb:20:in `getChart' +app/views/samples/chart-database.html.erb:50:in `_app_views_samples_chart_database_html_erb___3614384175116467087_70330375850260' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/chart-database" for 127.0.0.1 at 2018-07-25 22:46:46 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-database"} + Rendering samples/chart-database.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/chart-database.html.erb:21 + Rendered samples/chart-database.html.erb within layouts/application (11.9ms) +Completed 500 Internal Server Error in 33ms (ActiveRecord: 1.1ms) + + + +ActionView::Template::Error (765: unexpected token at '{ "chart": {"caption"=>"Sales by Continent", "xAxisName"=>"Continent", "yAxisName"=>"Total Sales", "numberSuffix"=>"K", "theme"=>"fusion"}, "data": [{"label": "Asturias","value": "35892"},{"label": "LA","value": "64531"},{"label": "MA","value": "87878"},{"label": "MI","value": "61634"},{"label": "NSW","value": "89865"},{"label": "OR","value": "62929"},{"label": "Québec","value": "150834"},{"label": "Victoria","value": "142472"}] }'): + 36: + 37: + 38: # Chart rendering + 39: chart = Fusioncharts::Chart.new({ + 40: width: "700", + 41: height: "400", + 42: type: "column2d", + +lib/fusioncharts/rails/chart.rb:107:in `parse_datasource_json' +lib/fusioncharts/rails/chart.rb:118:in `parse_options' +lib/fusioncharts/rails/chart.rb:16:in `initialize' +app/views/samples/chart-database.html.erb:39:in `new' +app/views/samples/chart-database.html.erb:39:in `getChart' +app/views/samples/chart-database.html.erb:51:in `_app_views_samples_chart_database_html_erb__1669735073849763318_70259090506140' +app/controllers/samples_controller.rb:27:in `index' +Started GET "/samples/chart-database" for 127.0.0.1 at 2018-07-25 22:48:19 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-database"} + Rendering samples/chart-database.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/chart-database.html.erb:21 + Rendered samples/chart-database.html.erb within layouts/application (9.2ms) +Completed 200 OK in 298ms (Views: 282.5ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:51:30 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.4ms) +Completed 200 OK in 65ms (Views: 63.1ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:51:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.2ms) +Completed 200 OK in 62ms (Views: 57.5ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:52:07 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (1.0ms) +Completed 200 OK in 50ms (Views: 48.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:52:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 65ms (Views: 63.3ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-25 22:52:13 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (1.4ms) +Completed 200 OK in 58ms (Views: 55.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:53:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (1.2ms) +Completed 200 OK in 49ms (Views: 47.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:55:13 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 34ms (Views: 32.5ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:55:23 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (1.4ms) +Completed 200 OK in 240ms (Views: 237.9ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:55:43 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 39ms (Views: 37.3ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:55:48 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 49ms (Views: 47.4ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-25 22:55:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.1ms) +Completed 200 OK in 42ms (Views: 40.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-widget" for 127.0.0.1 at 2018-07-25 22:55:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-widget"} + Rendering samples/first-widget.html.erb within layouts/application + Rendered samples/first-widget.html.erb within layouts/application (0.6ms) +Completed 200 OK in 42ms (Views: 40.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-25 22:55:56 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.8ms) +Completed 200 OK in 43ms (Views: 41.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-25 22:56:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.8ms) +Completed 200 OK in 44ms (Views: 42.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:56:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.1ms) +Completed 200 OK in 42ms (Views: 40.3ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 22:56:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.4ms) +Completed 200 OK in 41ms (Views: 39.5ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 22:56:10 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.6ms) +Completed 200 OK in 231ms (Views: 229.8ms | ActiveRecord: 0.0ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:56:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 46ms (Views: 43.9ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/angular-gauge-sample" for 127.0.0.1 at 2018-07-25 22:57:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"angular-gauge-sample"} + Rendering samples/angular-gauge-sample.html.erb within layouts/application + Rendered samples/angular-gauge-sample.html.erb within layouts/application (0.7ms) +Completed 200 OK in 60ms (Views: 56.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:57:04 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 47ms (Views: 45.0ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 22:57:06 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.9ms) +Completed 200 OK in 52ms (Views: 51.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:57:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.9ms) +Completed 200 OK in 57ms (Views: 54.7ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 22:57:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (2.9ms) +Completed 200 OK in 53ms (Views: 52.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:57:19 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.1ms) +Completed 200 OK in 47ms (Views: 45.6ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 22:57:21 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.1ms) +Completed 200 OK in 47ms (Views: 45.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 22:57:21 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=MA&drillLevel=0" for 127.0.0.1 at 2018-07-25 22:57:22 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MA", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-25 22:57:24 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:57:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.5ms) +Completed 200 OK in 54ms (Views: 51.9ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-25 22:57:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.9ms) +Completed 200 OK in 42ms (Views: 40.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-25 22:58:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.6ms) +Completed 200 OK in 37ms (Views: 35.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/mscolumn2d-sample" for 127.0.0.1 at 2018-07-25 22:58:45 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"mscolumn2d-sample"} + Rendering samples/mscolumn2d-sample.html.erb within layouts/application + Rendered samples/mscolumn2d-sample.html.erb within layouts/application (0.9ms) +Completed 200 OK in 295ms (Views: 281.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:58:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (9.0ms) +Completed 200 OK in 69ms (Views: 65.8ms | ActiveRecord: 1.5ms) + + +Started GET "/samples/pie3d-sample" for 127.0.0.1 at 2018-07-25 22:58:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"pie3d-sample"} + Rendering samples/pie3d-sample.html.erb within layouts/application + Rendered samples/pie3d-sample.html.erb within layouts/application (1.4ms) +Completed 200 OK in 59ms (Views: 56.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:58:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 54ms (Views: 52.0ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/stacked-column2d-line-chart-sample" for 127.0.0.1 at 2018-07-25 22:58:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"stacked-column2d-line-chart-sample"} + Rendering samples/stacked-column2d-line-chart-sample.erb within layouts/application + Rendered samples/stacked-column2d-line-chart-sample.erb within layouts/application (1.2ms) +Completed 200 OK in 68ms (Views: 66.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:59:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.3ms) +Completed 200 OK in 63ms (Views: 59.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-database" for 127.0.0.1 at 2018-07-25 22:59:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-database"} + Rendering samples/chart-database.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/chart-database.html.erb:21 + Rendered samples/chart-database.html.erb within layouts/application (3.1ms) +Completed 200 OK in 39ms (Views: 37.2ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:59:16 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.7ms) +Completed 200 OK in 42ms (Views: 40.8ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/usa-map-sample" for 127.0.0.1 at 2018-07-25 22:59:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"usa-map-sample"} + Rendering samples/usa-map-sample.html.erb within layouts/application + Rendered samples/usa-map-sample.html.erb within layouts/application (2.2ms) +Completed 200 OK in 42ms (Views: 41.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:59:20 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.6ms) +Completed 200 OK in 52ms (Views: 50.2ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-25 22:59:21 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.4ms) +Completed 200 OK in 45ms (Views: 43.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:59:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.8ms) +Completed 200 OK in 42ms (Views: 40.8ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-25 22:59:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 41ms (Views: 39.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:59:32 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 45ms (Views: 43.0ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-25 22:59:33 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (1.0ms) +Completed 200 OK in 46ms (Views: 44.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 22:59:35 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:60 + Rendered samples/index.html.erb within layouts/application (1.7ms) +Completed 200 OK in 41ms (Views: 39.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 22:59:51 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (2.8ms) +Completed 200 OK in 43ms (Views: 42.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 23:02:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.5ms) +Completed 200 OK in 37ms (Views: 36.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:02:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (2.8ms) +Completed 200 OK in 46ms (Views: 44.0ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/chart-export-at-server" for 127.0.0.1 at 2018-07-25 23:03:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export-at-server"} + Rendering samples/chart-export-at-server.html.erb within layouts/application + Rendered samples/chart-export-at-server.html.erb within layouts/application (2.1ms) +Completed 200 OK in 42ms (Views: 41.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:05:19 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (2.0ms) +Completed 200 OK in 51ms (Views: 49.3ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:06:22 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (1.6ms) +Completed 200 OK in 37ms (Views: 35.2ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/chart-export" for 127.0.0.1 at 2018-07-25 23:06:24 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export"} + Rendering samples/chart-export.html.erb within layouts/application + Rendered samples/chart-export.html.erb within layouts/application (1.5ms) +Completed 200 OK in 45ms (Views: 43.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:06:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (1.7ms) +Completed 200 OK in 41ms (Views: 39.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-export-at-server" for 127.0.0.1 at 2018-07-25 23:06:28 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export-at-server"} + Rendering samples/chart-export-at-server.html.erb within layouts/application + Rendered samples/chart-export-at-server.html.erb within layouts/application (1.3ms) +Completed 200 OK in 40ms (Views: 39.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:07:39 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/index.html.erb:63 + Rendered samples/index.html.erb within layouts/application (1.6ms) +Completed 200 OK in 36ms (Views: 34.5ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:07:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 41ms (Views: 40.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=LA&drillLevel=1" for 127.0.0.1 at 2018-07-25 23:58:44 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"LA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.2ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'LA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 10ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-25 23:58:54 +0530 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 1ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-25 23:58:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 331ms (Views: 330.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-25 23:59:00 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.8ms) +Completed 200 OK in 60ms (Views: 58.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-25 23:59:00 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 10ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/drilldown/handler?label=MA&drillLevel=0" for 127.0.0.1 at 2018-07-25 23:59:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MA", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/fusioncharts.common.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.carbon.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.fint.js.map"): + + +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.zune.js.map"): +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' + + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +ActionController::RoutingError (No route matches [GET] "/assets/fusioncharts/themes/fusioncharts.theme.ocean.js.map"): + +actionpack (5.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call' +web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app' +web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch' +web-console (3.6.2) lib/web_console/middleware.rb:20:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' +railties (5.2.0) lib/rails/rack/logger.rb:38:in `call_app' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `block in call' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `block in tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:28:in `tagged' +activesupport (5.2.0) lib/active_support/tagged_logging.rb:71:in `tagged' +railties (5.2.0) lib/rails/rack/logger.rb:26:in `call' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `block in call' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:65:in `block (3 levels) in broadcast' +activesupport (5.2.0) lib/active_support/logger_silence.rb:21:in `silence' +activesupport (5.2.0) lib/active_support/logger.rb:63:in `block (2 levels) in broadcast' +sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:11:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/request_id.rb:27:in `call' +rack (2.0.5) lib/rack/method_override.rb:22:in `call' +rack (2.0.5) lib/rack/runtime.rb:22:in `call' +activesupport (5.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/executor.rb:14:in `call' +actionpack (5.2.0) lib/action_dispatch/middleware/static.rb:127:in `call' +rack (2.0.5) lib/rack/sendfile.rb:111:in `call' +railties (5.2.0) lib/rails/engine.rb:524:in `call' +puma (3.12.0) lib/puma/configuration.rb:225:in `call' +puma (3.12.0) lib/puma/server.rb:658:in `handle_request' +puma (3.12.0) lib/puma/server.rb:472:in `process_client' +puma (3.12.0) lib/puma/server.rb:332:in `block in run' +puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' +Started GET "/samples/drilldown/handler?label=OR&drillLevel=0" for 127.0.0.1 at 2018-07-25 23:59:13 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"OR", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'OR') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=OR&drillLevel=0" for 127.0.0.1 at 2018-07-25 23:59:18 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"OR", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'OR') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-26 01:05:15 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 43ms (Views: 41.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=MI&drillLevel=0" for 127.0.0.1 at 2018-07-26 01:05:32 +0530 +Processing by SamplesController#handler as HTML + Parameters: {"label"=>"MI", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MI') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-26 16:16:36 +0530 + [1m[35m (0.4ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 7ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-26 16:16:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.1ms) +Completed 200 OK in 274ms (Views: 266.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-26 16:16:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.1ms) +Completed 200 OK in 23ms (Views: 21.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-26 16:16:47 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.8ms) +Completed 200 OK in 26ms (Views: 24.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-26 16:16:53 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 26ms (Views: 25.1ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-27 16:44:44 +0530 + [1m[35m (0.4ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 7ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 16:44:44 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.0ms) +Completed 200 OK in 242ms (Views: 233.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-27 16:44:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (1.1ms) +Completed 200 OK in 27ms (Views: 25.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 17:04:26 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 25ms (Views: 23.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-chart" for 127.0.0.1 at 2018-07-27 17:09:08 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-chart"} + Rendering samples/first-chart.html.erb within layouts/application + Rendered samples/first-chart.html.erb within layouts/application (0.9ms) +Completed 200 OK in 32ms (Views: 30.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 17:09:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 25ms (Views: 23.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/first-map" for 127.0.0.1 at 2018-07-27 17:09:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"first-map"} + Rendering samples/first-map.html.erb within layouts/application + Rendered samples/first-map.html.erb within layouts/application (0.7ms) +Completed 200 OK in 30ms (Views: 27.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 17:27:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 47ms (Views: 45.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-export-at-server" for 127.0.0.1 at 2018-07-27 17:27:08 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-export-at-server"} + Rendering samples/chart-export-at-server.html.erb within layouts/application + Rendered samples/chart-export-at-server.html.erb within layouts/application (1.3ms) +Completed 200 OK in 27ms (Views: 25.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 17:30:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 21ms (Views: 19.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 17:49:01 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 22ms (Views: 20.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:49:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.4ms) +Completed 200 OK in 30ms (Views: 29.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:51:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.8ms) +Completed 200 OK in 32ms (Views: 29.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:51:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.5ms) +Completed 200 OK in 26ms (Views: 24.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:54:52 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.4ms) +Completed 200 OK in 28ms (Views: 26.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:55:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.9ms) +Completed 200 OK in 30ms (Views: 28.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:55:42 +0530 + [1m[35m (0.7ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.4ms) +Completed 200 OK in 221ms (Views: 206.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:56:33 +0530 + [1m[35m (0.1ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (2.2ms) +Completed 200 OK in 206ms (Views: 196.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:57:57 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.3ms) +Completed 200 OK in 21ms (Views: 20.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-themes" for 127.0.0.1 at 2018-07-27 17:58:38 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-themes"} + Rendering samples/chart-themes.html.erb within layouts/application + Rendered samples/chart-themes.html.erb within layouts/application (1.4ms) +Completed 200 OK in 21ms (Views: 19.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-27 17:58:55 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.3ms) +Completed 200 OK in 25ms (Views: 23.5ms | ActiveRecord: 0.0ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-28 16:14:25 +0530 + [1m[35m (0.3ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 7ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-28 16:14:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.0ms) +Completed 200 OK in 222ms (Views: 213.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-28 16:14:29 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.1ms) +Completed 200 OK in 27ms (Views: 26.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-28 16:14:29 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 9ms (Views: 0.1ms | ActiveRecord: 2.1ms) + + +Started GET "/samples/drilldown/handler?label=MA&drillLevel=0" for 127.0.0.1 at 2018-07-28 16:14:33 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MA", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MA') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-28 16:14:36 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=MI&drillLevel=0" for 127.0.0.1 at 2018-07-28 16:14:42 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"MI", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'MI') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-28 16:14:43 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=NSW&drillLevel=0" for 127.0.0.1 at 2018-07-28 16:14:48 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"NSW", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'NSW') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-28 16:59:11 +0530 + [1m[35m (0.4ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.7ms) +Completed 200 OK in 224ms (Views: 215.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-28 16:59:12 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 11ms (Views: 0.1ms | ActiveRecord: 1.6ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-28 16:59:15 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=Germany&drillLevel=1" for 127.0.0.1 at 2018-07-28 16:59:17 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Germany", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Germany') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=South%20America&drillLevel=0" for 127.0.0.1 at 2018-07-28 16:59:25 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"South America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'South America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Venezuela&drillLevel=1" for 127.0.0.1 at 2018-07-28 16:59:26 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Venezuela", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Venezuela') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-28 17:17:59 +0530 + [1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.7ms) +Completed 200 OK in 643ms (Views: 634.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-database" for 127.0.0.1 at 2018-07-28 17:18:38 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-database"} + Rendering samples/chart-database.html.erb within layouts/application + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ app/views/samples/chart-database.html.erb:21 + Rendered samples/chart-database.html.erb within layouts/application (29.7ms) +Completed 200 OK in 53ms (Views: 50.0ms | ActiveRecord: 1.8ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-28 17:18:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.5ms) +Completed 200 OK in 26ms (Views: 23.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-29 01:02:48 +0530 + [1m[35m (0.5ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.4ms) +Completed 200 OK in 214ms (Views: 205.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:03:03 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.5ms) +Completed 200 OK in 30ms (Views: 29.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:03:03 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (3.9ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 15ms (Views: 0.1ms | ActiveRecord: 4.7ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:07:17 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (1.8ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 4ms (Views: 0.1ms | ActiveRecord: 1.8ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:08:45 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=Austria&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:09:32 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Austria", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Austria') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/drilldown/handler?label=Belgium&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:09:37 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Belgium", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Belgium') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Denmark&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:09:42 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Denmark", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Denmark') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Finland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:09:48 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Finland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Finland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Austria&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:12:55 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Austria", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Austria') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/drilldown/handler?label=Belgium&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:14:27 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Belgium", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Belgium') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Denmark&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:14:55 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Denmark", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Denmark') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Denmark&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:15:33 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Denmark", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Denmark') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Finland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:15:36 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Finland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Finland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Finland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:16:11 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Finland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Finland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=France&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:16:15 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"France", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'France') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Germany&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:16:39 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Germany", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Germany') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Ireland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:17:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Ireland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Ireland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:24:34 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 20ms (Views: 18.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:24:37 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:25:17 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Completed 200 OK in 23ms (Views: 21.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:25:19 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.2ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:32:19 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 23ms (Views: 21.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:32:38 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:32:43 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:34:12 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Completed 200 OK in 34ms (Views: 31.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:34:14 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:34:30 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 29ms (Views: 26.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:34:32 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:35:12 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=France&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:35:15 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"France", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'France') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Ireland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:35:40 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Ireland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Ireland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Italy&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:35:44 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Italy", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Italy') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:35:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Completed 200 OK in 22ms (Views: 20.7ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:35:52 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.2ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:36:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 22ms (Views: 20.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:36:52 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:37:46 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.7ms) +Completed 200 OK in 21ms (Views: 20.0ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:37:48 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.5ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.5ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:38:50 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 24ms (Views: 22.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:38:51 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.3ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.3ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:39:37 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 20ms (Views: 18.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:39:39 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:39:54 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 21ms (Views: 20.2ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:39:58 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.3ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.3ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:40:19 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=Ireland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:40:23 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Ireland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Ireland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Italy&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:40:30 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Italy", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Italy') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Norway&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:40:35 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Norway", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Norway') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Norway&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:40:55 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Norway", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Norway') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Poland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:40:58 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Poland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Poland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-29 01:41:30 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (0.6ms) +Completed 200 OK in 21ms (Views: 19.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 01:41:30 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:41:32 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/drilldown/handler?label=Portugal&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:41:34 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Portugal", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Portugal') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Poland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:41:56 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Poland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Poland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Spain&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:42:02 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Spain", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Spain') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Spain&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:42:25 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Spain", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Spain') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Sweden&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:42:28 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Sweden", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Sweden') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Switzerland&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:42:41 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Switzerland", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Switzerland') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=UK&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:42:59 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"UK", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'UK') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=North%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:43:16 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"North America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'North America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/drilldown/handler?label=Canada&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:43:35 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Canada", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Canada') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Mexico&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:44:19 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Mexico", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Mexico') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:44:42 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:45:20 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.9ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.9ms) + + +Started GET "/samples/drilldown/handler?label=North%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:45:24 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"North America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'North America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=North%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:45:54 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"North America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'North America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Canada&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:46:00 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Canada", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Canada') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Canada&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:46:38 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Canada", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Canada') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Mexico&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:46:47 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Mexico", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.3ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Mexico') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms) + + +Started GET "/samples/drilldown/handler?label=USA&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:46:50 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"USA", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'USA') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=South%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:48:15 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"South America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.8ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'South America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.8ms) + + +Started GET "/samples/drilldown/handler?label=South%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:48:51 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"South America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'South America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Argentina&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:48:54 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Argentina", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Argentina') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/samples/drilldown/handler?label=Brazil&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:49:05 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Brazil", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Brazil') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Venezuela&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:49:18 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Venezuela", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Venezuela') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=South%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:49:59 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"South America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'South America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-29 01:52:09 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (1.2ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.2ms) + + +Started GET "/samples/drilldown/handler?label=Austria&drillLevel=1" for 127.0.0.1 at 2018-07-29 01:57:16 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Austria", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.7ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Austria') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.7ms) + + +Started GET "/samples/drilldown/handler?label=Austria&drillLevel=1" for 127.0.0.1 at 2018-07-29 02:39:10 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Austria", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Austria') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-29 02:45:09 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (1.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 1.1ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-29 02:45:11 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.4ms) +Completed 200 OK in 25ms (Views: 24.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 02:45:14 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.8ms) +Completed 200 OK in 26ms (Views: 24.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-29 02:45:36 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.5ms) +Completed 200 OK in 26ms (Views: 24.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-xml-url" for 127.0.0.1 at 2018-07-29 02:45:38 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-xml-url"} + Rendering samples/chart-from-xml-url.html.erb within layouts/application + Rendered samples/chart-from-xml-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 24ms (Views: 22.9ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-29 02:45:40 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (0.6ms) +Completed 200 OK in 25ms (Views: 23.5ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 02:45:41 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.8ms) +Completed 200 OK in 31ms (Views: 29.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 02:47:25 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.7ms) +Completed 200 OK in 26ms (Views: 24.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 02:56:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.6ms) +Completed 200 OK in 20ms (Views: 18.8ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=Austria&drillLevel=1" for 127.0.0.1 at 2018-07-29 02:57:12 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Austria", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Austria') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 03:00:09 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.6ms) +Completed 200 OK in 20ms (Views: 19.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 03:02:49 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.6ms) +Completed 200 OK in 21ms (Views: 19.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 03:03:02 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.6ms) +Completed 200 OK in 21ms (Views: 20.3ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/chart-from-json-url" for 127.0.0.1 at 2018-07-29 03:10:27 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"chart-from-json-url"} + Rendering samples/chart-from-json-url.html.erb within layouts/application + Rendered samples/chart-from-json-url.html.erb within layouts/application (0.8ms) +Completed 200 OK in 25ms (Views: 23.1ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler?label=South%20America&drillLevel=0" for 127.0.0.1 at 2018-07-29 03:10:41 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"South America", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (0.6ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'South America') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.6ms) + + +Started GET "/samples/drilldown/handler?label=Venezuela&drillLevel=1" for 127.0.0.1 at 2018-07-29 03:10:42 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Venezuela", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.4ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Venezuela') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.4ms) + + +Started GET "/" for 127.0.0.1 at 2018-07-31 13:31:53 +0530 + [1m[35m (0.5ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#home as HTML +Redirected to http://localhost:3000/samples/index +Completed 302 Found in 7ms (ActiveRecord: 0.0ms) + + +Started GET "/samples/index" for 127.0.0.1 at 2018-07-31 13:31:53 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"index"} + Rendering samples/index.html.erb within layouts/application + Rendered samples/index.html.erb within layouts/application (1.6ms) +Completed 200 OK in 666ms (Views: 663.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-31 13:31:59 +0530 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.3ms) +Completed 200 OK in 27ms (Views: 25.4ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-31 13:31:59 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (3.7ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 15ms (Views: 0.1ms | ActiveRecord: 4.4ms) + + +Started GET "/samples/drilldown" for 127.0.0.1 at 2018-07-31 13:33:11 +0530 + [1m[35m (0.4ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m + ↳ /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98 +Processing by SamplesController#index as HTML + Parameters: {"page"=>"drilldown"} + Rendering samples/drilldown.html.erb within layouts/application + Rendered samples/drilldown.html.erb within layouts/application (1.5ms) +Completed 200 OK in 214ms (Views: 199.6ms | ActiveRecord: 0.0ms) + + +Started GET "/samples/drilldown/handler" for 127.0.0.1 at 2018-07-31 13:33:11 +0530 +Processing by SamplesController#handler as TEXT + [1m[36mSalesRecord Load (4.1ms)[0m [1m[34mSELECT Region, SUM(TotalSales) as TotalSales FROM "sales_records" GROUP BY "sales_records"."Region"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 14ms (Views: 0.2ms | ActiveRecord: 4.9ms) + + +Started GET "/samples/drilldown/handler?label=Europe&drillLevel=0" for 127.0.0.1 at 2018-07-31 13:33:13 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Europe", "drillLevel"=>"0"} + [1m[36mSalesRecord Load (1.0ms)[0m [1m[34mSELECT Country, Region, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Region = 'Europe') GROUP BY "sales_records"."Country"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 1.0ms) + + +Started GET "/samples/drilldown/handler?label=Germany&drillLevel=1" for 127.0.0.1 at 2018-07-31 13:33:15 +0530 +Processing by SamplesController#handler as TEXT + Parameters: {"label"=>"Germany", "drillLevel"=>"1"} + [1m[36mSalesRecord Load (0.5ms)[0m [1m[34mSELECT City, Country, SUM(TotalSales) as TotalSales FROM "sales_records" WHERE (Country = 'Germany') GROUP BY "sales_records"."City"[0m + ↳ lib/drill_down_data_handler.rb:22 +Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.5ms) + + diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/package.json b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/package.json new file mode 100755 index 0000000000000000000000000000000000000000..3e9a0697a7d2906824ac3971022126d59c426d56 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/package.json @@ -0,0 +1,5 @@ +{ + "name": "fusioncharts-rails-samples", + "private": true, + "dependencies": {} +} diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/404.html b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/404.html new file mode 100755 index 0000000000000000000000000000000000000000..2be3af26fc5a3d019690b50e0849651dde258794 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/404.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html> +<head> + <title>The page you were looking for doesn't exist (404)</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <style> + .rails-default-error-page { + background-color: #EFEFEF; + color: #2E2F30; + text-align: center; + font-family: arial, sans-serif; + margin: 0; + } + + .rails-default-error-page div.dialog { + width: 95%; + max-width: 33em; + margin: 4em auto 0; + } + + .rails-default-error-page div.dialog > div { + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #BBB; + border-top: #B00100 solid 4px; + border-top-left-radius: 9px; + border-top-right-radius: 9px; + background-color: white; + padding: 7px 12% 0; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + + .rails-default-error-page h1 { + font-size: 100%; + color: #730E15; + line-height: 1.5em; + } + + .rails-default-error-page div.dialog > p { + margin: 0 0 1em; + padding: 1em; + background-color: #F7F7F7; + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #999; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top-color: #DADADA; + color: #666; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + </style> +</head> + +<body class="rails-default-error-page"> + <!-- This file lives in public/404.html --> + <div class="dialog"> + <div> + <h1>The page you were looking for doesn't exist.</h1> + <p>You may have mistyped the address or the page may have moved.</p> + </div> + <p>If you are the application owner check the logs for more information.</p> + </div> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/422.html b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/422.html new file mode 100755 index 0000000000000000000000000000000000000000..c08eac0d1df79f30154726ea242c08e0ee851c4b --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/422.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html> +<head> + <title>The change you wanted was rejected (422)</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <style> + .rails-default-error-page { + background-color: #EFEFEF; + color: #2E2F30; + text-align: center; + font-family: arial, sans-serif; + margin: 0; + } + + .rails-default-error-page div.dialog { + width: 95%; + max-width: 33em; + margin: 4em auto 0; + } + + .rails-default-error-page div.dialog > div { + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #BBB; + border-top: #B00100 solid 4px; + border-top-left-radius: 9px; + border-top-right-radius: 9px; + background-color: white; + padding: 7px 12% 0; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + + .rails-default-error-page h1 { + font-size: 100%; + color: #730E15; + line-height: 1.5em; + } + + .rails-default-error-page div.dialog > p { + margin: 0 0 1em; + padding: 1em; + background-color: #F7F7F7; + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #999; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top-color: #DADADA; + color: #666; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + </style> +</head> + +<body class="rails-default-error-page"> + <!-- This file lives in public/422.html --> + <div class="dialog"> + <div> + <h1>The change you wanted was rejected.</h1> + <p>Maybe you tried to change something you didn't have access to.</p> + </div> + <p>If you are the application owner check the logs for more information.</p> + </div> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/500.html b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/500.html new file mode 100755 index 0000000000000000000000000000000000000000..78a030af22ea129d02a7745790b79fbe81a9e3ab --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/500.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> +<head> + <title>We're sorry, but something went wrong (500)</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <style> + .rails-default-error-page { + background-color: #EFEFEF; + color: #2E2F30; + text-align: center; + font-family: arial, sans-serif; + margin: 0; + } + + .rails-default-error-page div.dialog { + width: 95%; + max-width: 33em; + margin: 4em auto 0; + } + + .rails-default-error-page div.dialog > div { + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #BBB; + border-top: #B00100 solid 4px; + border-top-left-radius: 9px; + border-top-right-radius: 9px; + background-color: white; + padding: 7px 12% 0; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + + .rails-default-error-page h1 { + font-size: 100%; + color: #730E15; + line-height: 1.5em; + } + + .rails-default-error-page div.dialog > p { + margin: 0 0 1em; + padding: 1em; + background-color: #F7F7F7; + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #999; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top-color: #DADADA; + color: #666; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + </style> +</head> + +<body class="rails-default-error-page"> + <!-- This file lives in public/500.html --> + <div class="dialog"> + <div> + <h1>We're sorry, but something went wrong.</h1> + </div> + <p>If you are the application owner check the logs for more information.</p> + </div> +</body> +</html> diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/apple-touch-icon-precomposed.png b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/apple-touch-icon-precomposed.png new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/apple-touch-icon.png b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/apple-touch-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/data.json b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/data.json new file mode 100755 index 0000000000000000000000000000000000000000..df0998a5901519f1ae78834819f62ff60d230ebe --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/data.json @@ -0,0 +1,24 @@ +{ + "chart": { + "caption": "Monthly revenue for last year", + "subCaption": "Harry's SuperMart", + "xAxisName": "Month", + "yAxisName": "Revenues (In USD)", + "numberPrefix": "$", + "theme": "fusion" + }, + "data": [ + {"label": "Jan", "value": "420000"}, + {"label": "Feb", "value": "810000"}, + {"label": "Mar", "value": "720000"}, + {"label": "Apr", "value": "550000"}, + {"label": "May", "value": "910000"}, + {"label": "Jun", "value": "510000"}, + {"label": "Jul", "value": "680000"}, + {"label": "Aug", "value": "620000"}, + {"label": "Sep", "value": "610000"}, + {"label": "Oct", "value": "490000"}, + {"label": "Nov", "value": "900000"}, + {"label": "Dec", "value": "730000"} + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/data.xml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/data.xml new file mode 100755 index 0000000000000000000000000000000000000000..28c7ad44b3acc59437dd5f6f625d9dfabc6d9e3d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/data.xml @@ -0,0 +1,12 @@ +<chart caption="Top 10 Most Popular Sports in the World" subcaption="Based on number of viewers" yaxisname="Number of Viewers" theme="fusion"> +<set label="Football" value="3500000000" tooltext="Popular in: {br}Europe{br}Africa{br}Asia{br}Americas" /> +<set label="Cricket" value="3000000000" tooltext="Popular in: {br}India{br}UK{br}Pakistan{br}Australia" /> +<set label="Field Hockey" value="2200000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Australia" /> +<set label="Tennis" value="1000000000" tooltext="Popular in: {br}Europe{br}Americas{br}Asia" /> +<set label="Volleyball" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Americas{br}Australia" /> +<set label="Table Tennis" value="900000000" tooltext="Popular in: {br}Asia{br}Europe{br}Africa{br}Americas" /> +<set label="Baseball" value="500000000" tooltext="Popular in: {br}US{br}Japan{br}Cuba{br}Dominican Republic" /> +<set label="Golf" value="400000000" tooltext="Popular in: {br}US{br}Canada{br}Europe" /> +<set label="Basketball" value="400000000" tooltext="Popular in: {br}US{br}Canada" /> +<set label="American football" value="390000000" tooltext="Popular in:{br}US" /> +</chart> \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/drill-down.json b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/drill-down.json new file mode 100755 index 0000000000000000000000000000000000000000..a2eb73d401a96028459f3ef296b6145ef3ce31c2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/data/drill-down.json @@ -0,0 +1,632 @@ +{ + "chart": { + "caption": "Sales by Region", + "xaxisname": "Region", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Europe", + "value": "827508", + "link": "newchart-json-Europe" + }, { + "label": "North America", + "value": "342947", + "link": "newchart-json-NorthAmerica" + }, { + "label": "South America", + "value": "183881", + "link": "newchart-json-SouthAmerica" + }], + "linkeddata": [{ + "id": "Europe", + "linkedchart": { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Austria", + "value": "139488", + "link": "newchart-json-Austria" + }, { + "label": "Belgium", + "value": "35132", + "link": "newchart-json-Belgium" + }, { + "label": "Denmark", + "value": "34779", + "link": "newchart-json-Denmark" + }, { + "label": "Finland", + "value": "19776", + "link": "newchart-json-Finland" + }, { + "label": "France", + "value": "84628", + "link": "newchart-json-France" + }, { + "label": "Germany", + "value": "244619", + "link": "newchart-json-Germany" + }, { + "label": "Ireland", + "value": "57311", + "link": "newchart-json-Ireland" + }, { + "label": "Italy", + "value": "17562", + "link": "newchart-json-Italy" + }, { + "label": "Norway", + "value": "5735", + "link": "newchart-json-Norway" + }, { + "label": "Poland", + "value": "3531", + "link": "newchart-json-Poland" + }, { + "label": "Portugal", + "value": "12465", + "link": "newchart-json-Portugal" + }, { + "label": "Spain", + "value": "19430", + "link": "newchart-json-Spain" + }, { + "label": "Sweden", + "value": "59516", + "link": "newchart-json-Sweden" + }, { + "label": "Switzerland", + "value": "32916", + "link": "newchart-json-Switzerland" + }, { + "label": "UK", + "value": "60613", + "link": "newchart-json-UK" + }], + "linkeddata": [{ + "id": "Austria", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Graz", + "value": "113229" + }, { + "label": "Salzburg", + "value": "26258" + }] + } + }, + { + "id": "Belgium", + "linkedchart": { + + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Bruxelles", + "value": "10429" + }, { + "label": "Charleroi", + "value": "24703" + }] + } + }, + { + "id": "Denmark", + "linkedchart": { + + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "København", + "value": "18136" + }, { + "label": "Århus", + "value": "16642" + }] + } + }, + { + "id": "Finland", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Helsinki", + "value": "3161" + }, { + "label": "Oulu", + "value": "16615" + }] + } + }, + { + "id": "France", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Lille", + "value": "11666" + }, { + "label": "Lyon", + "value": "9934" + }, { + "label": "Marseille", + "value": "23847" + }, { + "label": "Nantes", + "value": "3927" + }, { + "label": "Paris", + "value": "2423" + }, { + "label": "Reims", + "value": "1480" + }, { + "label": "Strasbourg", + "value": "19087" + }, { + "label": "Toulouse", + "value": "10268" + }, { + "label": "Versailles", + "value": "1992" + }] + } + }, + { + "id": "Germany", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Aachen", + "value": "3763" + }, { + "label": "Berlin", + "value": "4595" + }, { + "label": "Brandenburg", + "value": "31744" + }, { + "label": "Cunewalde", + "value": "117477" + }, { + "label": "Frankfurt a.M. ", + "value": "21278" + }, { + "label": "Köln", + "value": "13155" + }, { + "label": "Leipzig", + "value": "5042" + }, { + "label": "Mannheim", + "value": "3239" + }, { + "label": "München", + "value": "28719" + }, { + "label": "Münster", + "value": "4952" + }, { + "label": "Stuttgart", + "value": "10651" + }] + } + }, + { + "id": "Ireland", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Cork", + "value": "57311" + }] + } + }, + { + "id": "Italy", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Bergamo", + "value": "7602" + }, { + "label": "Reggio Emilia", + "value": "7553" + }, { + "label": "Torino", + "value": "2405" + }] + } + }, + { + "id": "Norway", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Stavern", + "value": "5735" + }] + } + }, + { + "id": "Poland", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Warszawa", + "value": "3531" + }] + } + }, + { + "id": "Portugal", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Lisboa", + "value": "12465" + }] + } + }, + { + "id": "Spain", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Barcelona", + "value": "836" + }, { + "label": "Madrid", + "value": "6764" + }, { + "label": "Sevilla", + "value": "11829" + }] + } + }, + { + "id": "Sweden", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Bräcke", + "value": "32551" + }, { + "label": "Luleå", + "value": "26965" + }] + } + }, + { + "id": "Switzerland", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Bern", + "value": "12884" + }, { + "label": "Genève", + "value": "20031" + }] + } + }, + { + "id": "UK", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Cowes", + "value": "6146" + }, { + "label": "London", + "value": "54467" + }] + } + } + ] + } + }, + { + "id": "NorthAmerica", + "linkedchart": { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Canada", + "value": "55329", + "link": "newchart-json-Canada" + }, { + "label": "Mexico", + "value": "24072", + "link": "newchart-json-Mexico" + }, { + "label": "USA", + "value": "263546", + "link": "newchart-json-USA" + }], + "linkeddata": [{ + "id": "Canada", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Montréal", + "value": "32202" + }, { + "label": "Tsawassen", + "value": "22604" + }, { + "label": "Vancouver", + "value": "522" + }] + } + }, + { + "id": "Mexico", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "México D.F.", + "value": "24072" + }] + } + }, + { + "id": "USA", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Albuquerque", + "value": "52243" + }, { + "label": "Anchorage", + "value": "16323" + }, { + "label": "Boise", + "value": "115663" + }, { + "label": "Butte", + "value": "1947" + }, { + "label": "Elgin", + "value": "3063" + }, { + "label": "Eugene", + "value": "19709" + }, { + "label": "Kirkland", + "value": "1571" + }, { + "label": "Lander", + "value": "12487" + }, { + "label": "Portland", + "value": "7619" + }, { + "label": "San Francisco", + "value": "3488" + }, { + "label": "Seattle", + "value": "29070" + }, { + "label": "Walla Walla", + "value": "357" + }] + } + } + ] + } + }, { + "id": "SouthAmerica", + "linkedchart": { + "chart": { + "caption": "Sales by Country", + "xaxisname": "Country", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Argentina", + "value": "8119", + "link": "newchart-json-Argentina" + }, { + "label": "Brazil", + "value": "114954", + "link": "newchart-json-Brazil" + }, { + "label": "Venezuela", + "value": "60806", + "link": "newchart-json-Venezuela" + }], + "linkeddata": [{ + "id": "Argentina", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Buenos Aires", + "value": "8119" + }] + } + }, + { + "id": "Brazil", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Campinas", + "value": "8700" + }, { + "label": "Resende", + "value": "6479" + }, { + "label": "Rio de Janeiro", + "value": "53994" + }, { + "label": "São Paulo", + "value": "45780" + }] + } + }, + { + "id": "Venezuela", + "linkedchart": { + "chart": { + "caption": "Sales by City", + "xaxisname": "City", + "yaxisname": "Total Sales", + "numbersuffix": "K", + "theme": "fusion" + }, + "data": [{ + "label": "Barquisimeto", + "value": "17821" + }, { + "label": "Caracas", + "value": "1488" + }, { + "label": "I. de Margarita", + "value": "17886" + }, { + "label": "San Cristóbal", + "value": "23610" + }] + } + } + + ] + + } + } + ] +} \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/favicon.ico b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/robots.txt b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/robots.txt new file mode 100755 index 0000000000000000000000000000000000000000..37b576a4a015ac63021a1121d55a96235ec03525 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/public/robots.txt @@ -0,0 +1 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/application_system_test_case.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/application_system_test_case.rb new file mode 100755 index 0000000000000000000000000000000000000000..d19212abd5ced9378de164299b0eab073b16bd7e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/application_system_test_case.rb @@ -0,0 +1,5 @@ +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :selenium, using: :chrome, screen_size: [1400, 1400] +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/controllers/samples_controller_test.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/controllers/samples_controller_test.rb new file mode 100755 index 0000000000000000000000000000000000000000..39181adefa5021cde2cbdf86e8603816ff06c4a9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/controllers/samples_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class SamplesControllerTest < ActionDispatch::IntegrationTest + test "should get index" do + get samples_index_url + assert_response :success + end + +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/fixtures/sales_records.yml b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/fixtures/sales_records.yml new file mode 100755 index 0000000000000000000000000000000000000000..24ac454b555ab22f4ddd42e15600e88ad1207c9e --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/fixtures/sales_records.yml @@ -0,0 +1,13 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + Region: MyString + Country: MyString + City: MyString + TotalSales: 1 + +two: + Region: MyString + Country: MyString + City: MyString + TotalSales: 1 diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/models/sales_record_test.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/models/sales_record_test.rb new file mode 100755 index 0000000000000000000000000000000000000000..deaa47d44d23d8d498fd081e7818368793e41bf9 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/models/sales_record_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class SalesRecordTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/test_helper.rb b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/test_helper.rb new file mode 100755 index 0000000000000000000000000000000000000000..3ab84e3d1492557a104e5f8b2cdd50d5de65f80d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/rubyonrails/samples/test/test_helper.rb @@ -0,0 +1,10 @@ +ENV['RAILS_ENV'] ||= 'test' +require_relative '../config/environment' +require 'rails/test_help' + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/graphs/fusioncharts-suite-xt/integrations/vue/README.md b/graphs/fusioncharts-suite-xt/integrations/vue/README.md new file mode 100755 index 0000000000000000000000000000000000000000..5d7ad3f896a6d5414de9e95db6dbfc9911c71af2 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/vue/README.md @@ -0,0 +1,256 @@ +# vue-fusioncharts + +A simple and lightweight `VueJS` component for `FusionCharts` JavaScript Charting Library. The `Vue-FusionCharts` wrapper lets you easily include FusionCharts in your `VueJS` projects. + +## Installation + +### npm + +```bash +npm install vue-fusioncharts --save +``` + +### yarn + +```bash +yarn add vue-fusioncharts +``` + +### VanillaJS + +Download [`vue-fusioncharts.js`](https://github.com/fusioncharts/vue-fusioncharts/blob/master/dist/vue-fusioncharts.js) and include it in the HTML `<script>` tag. + +```html +<script src='vue-fusioncharts.js' type='text/javascript'></script> +``` + +## Getting Started + +### CommonJS + +```js +const Vue = require('vue'); +const VueFusionCharts = require('vue-fusioncharts'); + +// import FusionCharts modules and resolve dependency +const FusionCharts = require('fusioncharts'); +const Charts = require('fusioncharts/fusioncharts.charts'); + +// register VueFusionCharts component +Vue.use(VueFusionCharts, FusionCharts, Charts); +``` + +### AMD + +```js +require.config({ + paths: { + 'vue': 'path/to/vue', + 'vue-fusioncharts': 'path/to/vue-fusioncharts', + 'fusioncharts': 'path/to/fusioncharts' + 'charts': 'path/to/fusioncharts/fusioncharts.charts' + } +}) + +require(['vue', 'vue-fusioncharts', 'fusioncharts', 'charts'], function (Vue, VueFusionCharts, FusionCharts, Charts) { + + // register VueFusionCharts component + Vue.use(VueFusionCharts, FusionCharts, Charts); +}); +``` + +### VanillaJS + +If you are not using any bundler, you can refer the file in a script tag. The library will be available in a global object named `VueFusionCharts`. + +```html +<head> + <script type="text/javascript" src="https://unpkg.com/vue@2.3.3"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/fusioncharts.js"></script> + <script type="text/javascript" src="https://unpkg.com/fusioncharts/fusioncharts.charts.js"></script> + <script type="text/javascript" src="https://unpkg.com/vue-fusioncharts/dist/vue-fusioncharts.min.js"></script> +</head> + +<body> + + <div id="app"> + <fusioncharts + :type="type" + :width="width" + :height="height" + :dataFormat="dataFormat" + :dataSource="dataSource" + @dataplotRollover="dataplotRollover"> + </fusioncharts> + <p>Display Value: {{displayValue}}</p> + </div> + + <script> + // Use VueFusionCharts component by calling the Vue.use() method: + Vue.use(VueFusionCharts); + + const myDataSource = { + chart: { + caption: 'Vue FusionCharts Sample', + theme: 'fint' + } + data: [{value: 1.9}, {value: 2.3}, {value: 2.1}] + } + // bootstrap the demo + var app = new Vue({ + el: '#chart', + data: { + type: 'Pie2D', + width: '500', + height: '300', + dataFormat: 'json', + dataSource: myDataSource, + displayValue: '' + }, + methods:{ + dataplotRollover: function (e) { + app.displayValue = e.data.displayValue + } + } + } + }); + </script> +</body> +``` +Click [here](https://jsfiddle.net/rohitcoolblog/5Lt720a9/) to view the live example. + +## Register `vue-fusioncharts` Component + +### Register Globally + +Use the `Vue.use` method to register the component globally. + +```js +Vue.use(VueFusionCharts, FusionCharts, Charts); +``` + +### Component Props + +* `options` + + The commonly used configurations required to initialize FusionCharts are described in the table below. The complete list of supported configurations can be found in the [FusionCharts API documentation](http://www.fusioncharts.com/dev/api/fusioncharts.html). + + <table> + <thead> + <tr> + <th width="20%">Name</th> + <th width="25%">Type</th> + <th width="20%">Default value</th> + <th width="35%">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td>type</td> + <td>String</td> + <td>none</td> + <td>Name of the chart type to be rendered.</td> + </tr> + <tr> + <td>width</td> + <td>String/Number</td> + <td><code>400</code></td> + <td>Width in pixels (for example, <code>640</code>) or percent (for example, <code>50%</code>).</td> + </tr> + <tr> + <td>height</td> + <td>String/Number</td> + <td><code>400</code></td> + <td>Height in pixels (for example, <code>640</code>) or percent (for example, <code>50%</code>).</td> + </tr> + <tr> + <td>id</td> + <td>String</td> + <td><code>chart-object-*</code></td> + <td>Name of the current chart instance, after the chart has been created.</td> + </tr> + <tr> + <td>dataFormat</td> + <td>String</td> + <td><code>JSON</code></td> + <td>Format of the source data, passed to the <code>dataSource</code> attribute. Currently FusionCharts accepts data in the <code>JSON</code> and <code>XML</code> formats.</td> + </tr> + <tr> + <td>dataSource</td> + <td>String/Object</td> + <td><code>none</code></td> + <td>Source data/source of the chart data and the chart configuration. Currently FusionCharts accepts data in the <code>JSON</code> and <code>XML</code> formats.</td> + </tr> + </tbody> + </table> +## Working with Events + +To attach event listeners to FusionCharts, you can use the `v-on` or `@` operator in the vue-fusioncharts component. + +```html +<fusioncharts +:type="type" +:width="width" +:height="height" +:dataFormat="dataFormat" +:dataSource="dataSource" +@eventName="eventHandler"> +</fusioncharts> +``` +Where `eventName` can be any fusioncharts event. You can find the list of events at [fusioncharts devcenter](https://www.fusioncharts.com/dev/api/fusioncharts/fusioncharts-events) + +## Working with APIs + +To call APIs we will need the chart object. To get the chart object from the component we can use `ref` and retrieve it from `this.$refs[refname].chartObj` + +```html +<fusioncharts +:type="type" +:width="width" +:height="height" +:dataFormat="dataFormat" +:dataSource="dataSource" +@dataPlotRollover="onDataPlotRollover" +ref="fc"> +</fusioncharts> +``` +Now, we can access the chart object from `this.$refs.fc.chartObj` + +```js +var app = new Vue({ + el: '#chart', + data: { + type: 'Pie2D', + width: '500', + height: '300', + dataFormat: 'json', + dataSource: myDataSource, + }, + methods:{ + onDataPlotRollover: function (e) { + this.$refs.fc.chartObj.slicePlotItem(0); + } + } +}); +``` +This example will slice a Pie2d section when you rollover the chart. + +## Contributing + +* Clone the repository. +* Install dependencies +* Run `npm start` to start the dev server. +* Open `http://localhost:8080/` in your browser. + +```sh +$ git clone https://github.com/fusioncharts/vue-fusioncharts.git +$ cd vue-fusioncharts +$ npm install +$ npm start +``` + +### [Demos and Documentation](https://fusioncharts.github.io/vue-fusioncharts/) + +> ### Using Legacy Webpack Templates +> If you are using legacy webpack templates using (ex: `vue init webpack-simple myProject`), you need to use the new UglifyJS webpack plugin as the default plugin doesn't support ES5+ syntaxes. +> Refer here on what to change in the webpack.config.js: https://github.com/vuejs-templates/webpack-simple/issues/166#issuecomment-354394253 diff --git a/graphs/fusioncharts-suite-xt/integrations/vue/js/vue-fusioncharts.js b/graphs/fusioncharts-suite-xt/integrations/vue/js/vue-fusioncharts.js new file mode 100755 index 0000000000000000000000000000000000000000..8a1ec5fdd6ebb4ac66e1774c1313cea13663779f --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/vue/js/vue-fusioncharts.js @@ -0,0 +1,504 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("fusioncharts")); + else if(typeof define === 'function' && define.amd) + define(["fusioncharts"], factory); + else if(typeof exports === 'object') + exports["VueFusionCharts"] = factory(require("fusioncharts")); + else + root["VueFusionCharts"] = factory(root["FusionCharts"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 2); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var optionsMap = { + type: 'type', + id: 'id', + width: 'width', + height: 'height', + dataFormat: 'dataFormat', + dataSource: 'dataSource', + events: 'events', + link: 'link', + showDataLoadingMessage: 'showDataLoadingMessage', + showChartLoadingMessage: 'showChartLoadingMessage', + baseChartMessageFont: 'baseChartMessageFont', + baseChartMessageFontSize: 'baseChartMessageFontSize', + baseChartMessageColor: 'baseChartMessageColor', + dataLoadStartMessage: 'dataLoadStartMessage', + dataLoadErrorMessage: 'dataLoadErrorMessage', + dataInvalidMessage: 'dataInvalidMessage', + dataEmptyMessage: 'dataEmptyMessage', + typeNotSupportedMessage: 'typeNotSupportedMessage', + loadMessage: 'loadMessage', + renderErrorMessage: 'renderErrorMessage', + containerBackgroundColor: 'containerBackgroundColor', + containerBackgroundOpacity: 'containerBackgroundOpacity', + containerClassName: 'containerClassName', + baseChartMessageImageHAlign: 'baseChartMessageImageHAlign', + baseChartMessageImageVAlign: 'baseChartMessageImageVAlign', + baseChartMessageImageAlpha: 'baseChartMessageImageAlpha', + baseChartMessageImageScale: 'baseChartMessageImageScale', + typeNotSupportedMessageImageHAlign: 'typeNotSupportedMessageImageHAlign', + typeNotSupportedMessageImageVAlign: 'typeNotSupportedMessageImageVAlign', + typeNotSupportedMessageImageAlpha: 'typeNotSupportedMessageImageAlpha', + typeNotSupportedMessageImageScale: 'typeNotSupportedMessageImageScale', + dataLoadErrorMessageImageHAlign: 'dataLoadErrorMessageImageHAlign', + dataLoadErrorMessageImageVAlign: 'dataLoadErrorMessageImageVAlign', + dataLoadErrorMessageImageAlpha: 'dataLoadErrorMessageImageAlpha', + dataLoadErrorMessageImageScale: 'dataLoadErrorMessageImageScale', + dataLoadStartMessageImageHAlign: 'dataLoadStartMessageImageHAlign', + dataLoadStartMessageImageVAlign: 'dataLoadStartMessageImageVAlign', + dataLoadStartMessageImageAlpha: 'dataLoadStartMessageImageAlpha', + dataLoadStartMessageImageScale: 'dataLoadStartMessageImageScale', + dataInvalidMessageImageHAlign: 'dataInvalidMessageImageHAlign', + dataInvalidMessageImageVAlign: 'dataInvalidMessageImageVAlign', + dataInvalidMessageImageAlpha: 'dataInvalidMessageImageAlpha', + dataInvalidMessageImageScale: 'dataInvalidMessageImageScale', + dataEmptyMessageImageHAlign: 'dataEmptyMessageImageHAlign', + dataEmptyMessageImageVAlign: 'dataEmptyMessageImageVAlign', + dataEmptyMessageImageAlpha: 'dataEmptyMessageImageAlpha', + dataEmptyMessageImageScale: 'dataEmptyMessageImageScale', + renderErrorMessageImageHAlign: 'renderErrorMessageImageHAlign', + renderErrorMessageImageVAlign: 'renderErrorMessageImageVAlign', + renderErrorMessageImageAlpha: 'renderErrorMessageImageAlpha', + renderErrorMessageImageScale: 'renderErrorMessageImageScale', + loadMessageImageHAlign: 'loadMessageImageHAlign', + loadMessageImageVAlign: 'loadMessageImageVAlign', + loadMessageImageAlpha: 'loadMessageImageAlpha', + loadMessageImageScale: 'loadMessageImageScale', + /////////////////////////////////////////////////////// + dataformat: 'dataFormat', + datasource: 'dataSource', + showdataloadingmessage: 'showDataLoadingMessage', + showchartloadingmessage: 'showChartLoadingMessage', + basechartmessagefont: 'baseChartMessageFont', + basechartmessagefontsize: 'baseChartMessageFontSize', + basechartmessagecolor: 'baseChartMessageColor', + dataloadstartmessage: 'dataLoadStartMessage', + dataloaderrormessage: 'dataLoadErrorMessage', + datainvalidmessage: 'dataInvalidMessage', + dataemptymessage: 'dataEmptyMessage', + typenotsupportedmessage: 'typeNotSupportedMessage', + loadmessage: 'loadMessage', + rendererrormessage: 'renderErrorMessage', + containerbackgroundcolor: 'containerBackgroundColor', + containerbackgroundopacity: 'containerBackgroundOpacity', + containerclassname: 'containerClassName', + basechartmessageimagehalign: 'baseChartMessageImageHAlign', + basechartmessageimagevalign: 'baseChartMessageImageVAlign', + basechartmessageimagealpha: 'baseChartMessageImageAlpha', + basechartmessageimagescale: 'baseChartMessageImageScale', + typenotsupportedmessageimagehalign: 'typeNotSupportedMessageImageHAlign', + typenotsupportedmessageimagevalign: 'typeNotSupportedMessageImageVAlign', + typenotsupportedmessageimagealpha: 'typeNotSupportedMessageImageAlpha', + typenotsupportedmessageimagescale: 'typeNotSupportedMessageImageScale', + dataloaderrormessageimagehalign: 'dataLoadErrorMessageImageHAlign', + dataloaderrormessageimagevalign: 'dataLoadErrorMessageImageVAlign', + dataloaderrormessageimagealpha: 'dataLoadErrorMessageImageAlpha', + dataloaderrormessageimagescale: 'dataLoadErrorMessageImageScale', + dataloadstartmessageimagehalign: 'dataLoadStartMessageImageHAlign', + dataloadstartmessageimagevalign: 'dataLoadStartMessageImageVAlign', + dataloadstartmessageimagealpha: 'dataLoadStartMessageImageAlpha', + dataloadstartmessageimagescale: 'dataLoadStartMessageImageScale', + datainvalidmessageimagehalign: 'dataInvalidMessageImageHAlign', + datainvalidmessageimagevalign: 'dataInvalidMessageImageVAlign', + datainvalidmessageimagealpha: 'dataInvalidMessageImageAlpha', + datainvalidmessageimagescale: 'dataInvalidMessageImageScale', + dataemptymessageimagehalign: 'dataEmptyMessageImageHAlign', + dataemptymessageimagevalign: 'dataEmptyMessageImageVAlign', + dataemptymessageimagealpha: 'dataEmptyMessageImageAlpha', + dataemptymessageimagescale: 'dataEmptyMessageImageScale', + rendererrormessageimagehalign: 'renderErrorMessageImageHAlign', + rendererrormessageimagevalign: 'renderErrorMessageImageVAlign', + rendererrormessageimagealpha: 'renderErrorMessageImageAlpha', + rendererrormessageimagescale: 'renderErrorMessageImageScale', + loadmessageimagehalign: 'loadMessageImageHAlign', + loadmessageimagevalign: 'loadMessageImageVAlign', + loadmessageimagealpha: 'loadMessageImageAlpha', + loadmessageimagescale: 'loadMessageImageScale' +}; + +exports.default = function (FC) { + return { + name: 'fusioncharts', + template: '<div></div>', + render: function render(h) { + this.containerID = 'fc-' + this._uid; + return h('div', { + attrs: { + 'id': this.containerID + } + }); + }, + props: { + options: Object, + type: String, + id: String, + width: '', + height: '', + dataFormat: String, + dataSource: '', + events: Object, + link: Object, + showDataLoadingMessage: Boolean, + showChartLoadingMessage: Boolean, + baseChartMessageFont: String, + baseChartMessageFontSize: String, + baseChartMessageColor: String, + dataLoadStartMessage: String, + dataLoadErrorMessage: String, + dataInvalidMessage: String, + dataEmptyMessage: String, + typeNotSupportedMessage: String, + loadMessage: String, + renderErrorMessage: String, + containerBackgroundColor: String, + containerBackgroundOpacity: Number, + containerClassName: String, + baseChartMessageImageHAlign: String, + baseChartMessageImageVAlign: String, + baseChartMessageImageAlpha: Number, + baseChartMessageImageScale: Number, + typeNotSupportedMessageImageHAlign: String, + typeNotSupportedMessageImageVAlign: String, + typeNotSupportedMessageImageAlpha: Number, + typeNotSupportedMessageImageScale: Number, + dataLoadErrorMessageImageHAlign: String, + dataLoadErrorMessageImageVAlign: String, + dataLoadErrorMessageImageAlpha: Number, + dataLoadErrorMessageImageScale: Number, + dataLoadStartMessageImageHAlign: String, + dataLoadStartMessageImageVAlign: String, + dataLoadStartMessageImageAlpha: Number, + dataLoadStartMessageImageScale: Number, + dataInvalidMessageImageHAlign: String, + dataInvalidMessageImageVAlign: String, + dataInvalidMessageImageAlpha: Number, + dataInvalidMessageImageScale: Number, + dataEmptyMessageImageHAlign: String, + dataEmptyMessageImageVAlign: String, + dataEmptyMessageImageAlpha: Number, + dataEmptyMessageImageScale: Number, + renderErrorMessageImageHAlign: String, + renderErrorMessageImageVAlign: String, + renderErrorMessageImageAlpha: Number, + renderErrorMessageImageScale: Number, + loadMessageImageHAlign: String, + loadMessageImageVAlign: String, + loadMessageImageAlpha: Number, + loadMessageImageScale: Number, + /////////////////////////////////////////////// + dataformat: String, + datasource: '', + showdataloadingmessage: Boolean, + showchartloadingmessage: Boolean, + basechartmessagefont: String, + basechartmessagefontsize: String, + basechartmessagecolor: String, + dataloadstartmessage: String, + dataloaderrormessage: String, + datainvalidmessage: String, + dataemptymessage: String, + typenotsupportedmessage: String, + loadmessage: String, + rendererrormessage: String, + containerbackgroundcolor: String, + containerbackgroundopacity: Number, + containerclassname: String, + basechartmessageimagehalign: String, + basechartmessageimagevalign: String, + basechartmessageimagealpha: Number, + basechartmessageimagescale: Number, + typenotsupportedmessageimagehalign: String, + typenotsupportedmessageimagevalign: String, + typenotsupportedmessageimagealpha: Number, + typenotsupportedmessageimagescale: Number, + dataloaderrormessageimagehalign: String, + dataloaderrormessageimagevalign: String, + dataloaderrormessageimagealpha: Number, + dataloaderrormessageimagescale: Number, + dataloadstartmessageimagehalign: String, + dataloadstartmessageimagevalign: String, + dataloadstartmessageimagealpha: Number, + dataloadstartmessageimagescale: Number, + datainvalidmessageimagehalign: String, + datainvalidmessageimagevalign: String, + datainvalidmessageimagealpha: Number, + datainvalidmessageimagescale: Number, + dataemptymessageimagehalign: String, + dataemptymessageimagevalign: String, + dataemptymessageimagealpha: Number, + dataemptymessageimagescale: Number, + rendererrormessageimagehalign: String, + rendererrormessageimagevalign: String, + rendererrormessageimagealpha: Number, + rendererrormessageimagescale: Number, + loadmessageimagehalign: String, + loadmessageimagevalign: String, + loadmessageimagealpha: Number, + loadmessageimagescale: Number + + }, + methods: { + attachListeners: function attachListeners() { + var _this = this; + + if (this.$listeners && _typeof(this.$listeners) === 'object') { + Object.keys(this.$listeners).forEach(function (event) { + _this.chartObj.addEventListener(event, function (e) { + _this.$emit(event, e); + }); + }); + } + }, + createEvents: function createEvents() { + var _this2 = this; + + var ret = { + 'events': {} + }; + if (this.$listeners && _typeof(this.$listeners) === 'object') { + Object.keys(this.$listeners).forEach(function (event) { + ret.events[event] = function (e) { + _this2.$emit(event, e); + }; + }); + } + return ret; + }, + setLastOptions: function setLastOptions(config) { + this._oldOptions = Object.assign({}, config); + }, + getLastOptions: function getLastOptions() { + return this._oldOptions; + }, + getOptions: function getOptions() { + var config = {}, + THIS = this; + for (var i in optionsMap) { + if (THIS[i] !== undefined && THIS[i] !== null) { + config[optionsMap[i]] = THIS[i]; + } + } + + var options = Object.assign(Object.assign({}, THIS.options), config); + + return options; + }, + renderChart: function renderChart() { + var THIS = this, + config = THIS.getOptions(), + chartObj = THIS.chartObj; + + config.renderAt = this.containerID; + THIS.setLastOptions(config); + + if (chartObj && chartObj.dispose) { + chartObj.dispose(); + } + var events = this.createEvents(); + config.events = Object.assign({}, config.events, events.events); + + THIS.chartObj = chartObj = new FC(config); + chartObj.render(); + }, + updateChart: function updateChart() { + var THIS = this, + config = THIS.getOptions(), + prevConfig = THIS.getLastOptions(), + chartObj = THIS.chartObj; + + if (config.width !== prevConfig.width || config.height !== prevConfig.height) { + chartObj && chartObj.resizeTo(config.width, config.height); + } else if (config.type !== prevConfig.type) { + chartObj.chartType(config.type); + } else { + chartObj.setChartData(config.dataSource, config.dataFormat); + } + + THIS.setLastOptions(config); + } + }, + watch: { + type: function type() { + this.chartObj.chartType(this.type); + }, + width: function width() { + this.chartObj.resizeTo(this.width, this.height); + }, + height: function height() { + this.chartObj.resizeTo(this.width, this.height); + }, + options: { + handler: function handler() { + this.updateChart(); + }, + deep: true + }, + dataSource: { + handler: function handler() { + this.chartObj.setChartData(this.datasource || this.dataSource, this.dataFormat || this.dataformat); + }, + deep: true + }, + datasource: { + handler: function handler() { + this.chartObj.setChartData(this.datasource || this.dataSource, this.dataFormat || this.dataformat); + }, + deep: true + } + }, + deactivated: function deactivated() { + this.chartObj && this.chartObj.dispose(); + }, + beforeDestroy: function beforeDestroy() { + this.chartObj && this.chartObj.dispose(); + }, + mounted: function mounted() { + this.renderChart(); + }, + ready: function ready() { + this.renderChart(); + } + }; +}; + +module.exports = exports['default']; + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE_1__; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _fusioncharts = __webpack_require__(1); + +var _fusioncharts2 = _interopRequireDefault(_fusioncharts); + +var _vueFusioncharts = __webpack_require__(0); + +var _vueFusioncharts2 = _interopRequireDefault(_vueFusioncharts); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var addDep = function addDep(FC, _FC, modules) { + if (FC) { + if (modules.getName || modules.name) { + FC.addDep(modules); + } else { + modules(FC); + } + } else { + modules(_FC); + } +}; +var install = function install(Vue, FC) { + for (var _len = arguments.length, options = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + options[_key - 2] = arguments[_key]; + } + + options && options.forEach && options.forEach(function (modules) { + addDep(FC, _fusioncharts2.default, modules); + }); + var component = (0, _vueFusioncharts2.default)(FC); + + Vue.component(component.name, component); +}; + +exports.default = install; +module.exports = exports['default']; + +/***/ }) +/******/ ]); +}); +//# sourceMappingURL=vue-fusioncharts.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/vue/js/vue-fusioncharts.min.js b/graphs/fusioncharts-suite-xt/integrations/vue/js/vue-fusioncharts.min.js new file mode 100755 index 0000000000000000000000000000000000000000..9286013e6c3fe7078b85bf34bdb41ee9b97450a4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/vue/js/vue-fusioncharts.min.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("fusioncharts")):"function"==typeof define&&define.amd?define(["fusioncharts"],e):"object"==typeof exports?exports.VueFusionCharts=e(require("fusioncharts")):a.VueFusionCharts=e(a.FusionCharts)}(this,function(a){return function(a){function e(t){if(s[t])return s[t].exports;var r=s[t]={i:t,l:!1,exports:{}};return a[t].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var s={};return e.m=a,e.c=s,e.i=function(a){return a},e.d=function(a,s,t){e.o(a,s)||Object.defineProperty(a,s,{configurable:!1,enumerable:!0,get:t})},e.n=function(a){var s=a&&a.__esModule?function(){return a.default}:function(){return a};return e.d(s,"a",s),s},e.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},e.p="",e(e.s=2)}([function(a,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},r={type:"type",id:"id",width:"width",height:"height",dataFormat:"dataFormat",dataSource:"dataSource",events:"events",link:"link",showDataLoadingMessage:"showDataLoadingMessage",showChartLoadingMessage:"showChartLoadingMessage",baseChartMessageFont:"baseChartMessageFont",baseChartMessageFontSize:"baseChartMessageFontSize",baseChartMessageColor:"baseChartMessageColor",dataLoadStartMessage:"dataLoadStartMessage",dataLoadErrorMessage:"dataLoadErrorMessage",dataInvalidMessage:"dataInvalidMessage",dataEmptyMessage:"dataEmptyMessage",typeNotSupportedMessage:"typeNotSupportedMessage",loadMessage:"loadMessage",renderErrorMessage:"renderErrorMessage",containerBackgroundColor:"containerBackgroundColor",containerBackgroundOpacity:"containerBackgroundOpacity",containerClassName:"containerClassName",baseChartMessageImageHAlign:"baseChartMessageImageHAlign",baseChartMessageImageVAlign:"baseChartMessageImageVAlign",baseChartMessageImageAlpha:"baseChartMessageImageAlpha",baseChartMessageImageScale:"baseChartMessageImageScale",typeNotSupportedMessageImageHAlign:"typeNotSupportedMessageImageHAlign",typeNotSupportedMessageImageVAlign:"typeNotSupportedMessageImageVAlign",typeNotSupportedMessageImageAlpha:"typeNotSupportedMessageImageAlpha",typeNotSupportedMessageImageScale:"typeNotSupportedMessageImageScale",dataLoadErrorMessageImageHAlign:"dataLoadErrorMessageImageHAlign",dataLoadErrorMessageImageVAlign:"dataLoadErrorMessageImageVAlign",dataLoadErrorMessageImageAlpha:"dataLoadErrorMessageImageAlpha",dataLoadErrorMessageImageScale:"dataLoadErrorMessageImageScale",dataLoadStartMessageImageHAlign:"dataLoadStartMessageImageHAlign",dataLoadStartMessageImageVAlign:"dataLoadStartMessageImageVAlign",dataLoadStartMessageImageAlpha:"dataLoadStartMessageImageAlpha",dataLoadStartMessageImageScale:"dataLoadStartMessageImageScale",dataInvalidMessageImageHAlign:"dataInvalidMessageImageHAlign",dataInvalidMessageImageVAlign:"dataInvalidMessageImageVAlign",dataInvalidMessageImageAlpha:"dataInvalidMessageImageAlpha",dataInvalidMessageImageScale:"dataInvalidMessageImageScale",dataEmptyMessageImageHAlign:"dataEmptyMessageImageHAlign",dataEmptyMessageImageVAlign:"dataEmptyMessageImageVAlign",dataEmptyMessageImageAlpha:"dataEmptyMessageImageAlpha",dataEmptyMessageImageScale:"dataEmptyMessageImageScale",renderErrorMessageImageHAlign:"renderErrorMessageImageHAlign",renderErrorMessageImageVAlign:"renderErrorMessageImageVAlign",renderErrorMessageImageAlpha:"renderErrorMessageImageAlpha",renderErrorMessageImageScale:"renderErrorMessageImageScale",loadMessageImageHAlign:"loadMessageImageHAlign",loadMessageImageVAlign:"loadMessageImageVAlign",loadMessageImageAlpha:"loadMessageImageAlpha",loadMessageImageScale:"loadMessageImageScale",dataformat:"dataFormat",datasource:"dataSource",showdataloadingmessage:"showDataLoadingMessage",showchartloadingmessage:"showChartLoadingMessage",basechartmessagefont:"baseChartMessageFont",basechartmessagefontsize:"baseChartMessageFontSize",basechartmessagecolor:"baseChartMessageColor",dataloadstartmessage:"dataLoadStartMessage",dataloaderrormessage:"dataLoadErrorMessage",datainvalidmessage:"dataInvalidMessage",dataemptymessage:"dataEmptyMessage",typenotsupportedmessage:"typeNotSupportedMessage",loadmessage:"loadMessage",rendererrormessage:"renderErrorMessage",containerbackgroundcolor:"containerBackgroundColor",containerbackgroundopacity:"containerBackgroundOpacity",containerclassname:"containerClassName",basechartmessageimagehalign:"baseChartMessageImageHAlign",basechartmessageimagevalign:"baseChartMessageImageVAlign",basechartmessageimagealpha:"baseChartMessageImageAlpha",basechartmessageimagescale:"baseChartMessageImageScale",typenotsupportedmessageimagehalign:"typeNotSupportedMessageImageHAlign",typenotsupportedmessageimagevalign:"typeNotSupportedMessageImageVAlign",typenotsupportedmessageimagealpha:"typeNotSupportedMessageImageAlpha",typenotsupportedmessageimagescale:"typeNotSupportedMessageImageScale",dataloaderrormessageimagehalign:"dataLoadErrorMessageImageHAlign",dataloaderrormessageimagevalign:"dataLoadErrorMessageImageVAlign",dataloaderrormessageimagealpha:"dataLoadErrorMessageImageAlpha",dataloaderrormessageimagescale:"dataLoadErrorMessageImageScale",dataloadstartmessageimagehalign:"dataLoadStartMessageImageHAlign",dataloadstartmessageimagevalign:"dataLoadStartMessageImageVAlign",dataloadstartmessageimagealpha:"dataLoadStartMessageImageAlpha",dataloadstartmessageimagescale:"dataLoadStartMessageImageScale",datainvalidmessageimagehalign:"dataInvalidMessageImageHAlign",datainvalidmessageimagevalign:"dataInvalidMessageImageVAlign",datainvalidmessageimagealpha:"dataInvalidMessageImageAlpha",datainvalidmessageimagescale:"dataInvalidMessageImageScale",dataemptymessageimagehalign:"dataEmptyMessageImageHAlign",dataemptymessageimagevalign:"dataEmptyMessageImageVAlign",dataemptymessageimagealpha:"dataEmptyMessageImageAlpha",dataemptymessageimagescale:"dataEmptyMessageImageScale",rendererrormessageimagehalign:"renderErrorMessageImageHAlign",rendererrormessageimagevalign:"renderErrorMessageImageVAlign",rendererrormessageimagealpha:"renderErrorMessageImageAlpha",rendererrormessageimagescale:"renderErrorMessageImageScale",loadmessageimagehalign:"loadMessageImageHAlign",loadmessageimagevalign:"loadMessageImageVAlign",loadmessageimagealpha:"loadMessageImageAlpha",loadmessageimagescale:"loadMessageImageScale"};e.default=function(a){return{name:"fusioncharts",template:"<div></div>",render:function(a){return this.containerID="fc-"+this._uid,a("div",{attrs:{id:this.containerID}})},props:{options:Object,type:String,id:String,width:"",height:"",dataFormat:String,dataSource:"",events:Object,link:Object,showDataLoadingMessage:Boolean,showChartLoadingMessage:Boolean,baseChartMessageFont:String,baseChartMessageFontSize:String,baseChartMessageColor:String,dataLoadStartMessage:String,dataLoadErrorMessage:String,dataInvalidMessage:String,dataEmptyMessage:String,typeNotSupportedMessage:String,loadMessage:String,renderErrorMessage:String,containerBackgroundColor:String,containerBackgroundOpacity:Number,containerClassName:String,baseChartMessageImageHAlign:String,baseChartMessageImageVAlign:String,baseChartMessageImageAlpha:Number,baseChartMessageImageScale:Number,typeNotSupportedMessageImageHAlign:String,typeNotSupportedMessageImageVAlign:String,typeNotSupportedMessageImageAlpha:Number,typeNotSupportedMessageImageScale:Number,dataLoadErrorMessageImageHAlign:String,dataLoadErrorMessageImageVAlign:String,dataLoadErrorMessageImageAlpha:Number,dataLoadErrorMessageImageScale:Number,dataLoadStartMessageImageHAlign:String,dataLoadStartMessageImageVAlign:String,dataLoadStartMessageImageAlpha:Number,dataLoadStartMessageImageScale:Number,dataInvalidMessageImageHAlign:String,dataInvalidMessageImageVAlign:String,dataInvalidMessageImageAlpha:Number,dataInvalidMessageImageScale:Number,dataEmptyMessageImageHAlign:String,dataEmptyMessageImageVAlign:String,dataEmptyMessageImageAlpha:Number,dataEmptyMessageImageScale:Number,renderErrorMessageImageHAlign:String,renderErrorMessageImageVAlign:String,renderErrorMessageImageAlpha:Number,renderErrorMessageImageScale:Number,loadMessageImageHAlign:String,loadMessageImageVAlign:String,loadMessageImageAlpha:Number,loadMessageImageScale:Number,dataformat:String,datasource:"",showdataloadingmessage:Boolean,showchartloadingmessage:Boolean,basechartmessagefont:String,basechartmessagefontsize:String,basechartmessagecolor:String,dataloadstartmessage:String,dataloaderrormessage:String,datainvalidmessage:String,dataemptymessage:String,typenotsupportedmessage:String,loadmessage:String,rendererrormessage:String,containerbackgroundcolor:String,containerbackgroundopacity:Number,containerclassname:String,basechartmessageimagehalign:String,basechartmessageimagevalign:String,basechartmessageimagealpha:Number,basechartmessageimagescale:Number,typenotsupportedmessageimagehalign:String,typenotsupportedmessageimagevalign:String,typenotsupportedmessageimagealpha:Number,typenotsupportedmessageimagescale:Number,dataloaderrormessageimagehalign:String,dataloaderrormessageimagevalign:String,dataloaderrormessageimagealpha:Number,dataloaderrormessageimagescale:Number,dataloadstartmessageimagehalign:String,dataloadstartmessageimagevalign:String,dataloadstartmessageimagealpha:Number,dataloadstartmessageimagescale:Number,datainvalidmessageimagehalign:String,datainvalidmessageimagevalign:String,datainvalidmessageimagealpha:Number,datainvalidmessageimagescale:Number,dataemptymessageimagehalign:String,dataemptymessageimagevalign:String,dataemptymessageimagealpha:Number,dataemptymessageimagescale:Number,rendererrormessageimagehalign:String,rendererrormessageimagevalign:String,rendererrormessageimagealpha:Number,rendererrormessageimagescale:Number,loadmessageimagehalign:String,loadmessageimagevalign:String,loadmessageimagealpha:Number,loadmessageimagescale:Number},methods:{attachListeners:function(){var a=this;this.$listeners&&"object"===t(this.$listeners)&&Object.keys(this.$listeners).forEach(function(e){a.chartObj.addEventListener(e,function(s){a.$emit(e,s)})})},createEvents:function(){var a=this,e={events:{}};return this.$listeners&&"object"===t(this.$listeners)&&Object.keys(this.$listeners).forEach(function(s){e.events[s]=function(e){a.$emit(s,e)}}),e},setLastOptions:function(a){this._oldOptions=Object.assign({},a)},getLastOptions:function(){return this._oldOptions},getOptions:function(){var a={},e=this;for(var s in r)void 0!==e[s]&&null!==e[s]&&(a[r[s]]=e[s]);return Object.assign(Object.assign({},e.options),a)},renderChart:function(){var e=this,s=e.getOptions(),t=e.chartObj;s.renderAt=this.containerID,e.setLastOptions(s),t&&t.dispose&&t.dispose();var r=this.createEvents();s.events=Object.assign({},s.events,r.events),e.chartObj=t=new a(s),t.render()},updateChart:function(){var a=this,e=a.getOptions(),s=a.getLastOptions(),t=a.chartObj;e.width!==s.width||e.height!==s.height?t&&t.resizeTo(e.width,e.height):e.type!==s.type?t.chartType(e.type):t.setChartData(e.dataSource,e.dataFormat),a.setLastOptions(e)}},watch:{type:function(){this.chartObj.chartType(this.type)},width:function(){this.chartObj.resizeTo(this.width,this.height)},height:function(){this.chartObj.resizeTo(this.width,this.height)},options:{handler:function(){this.updateChart()},deep:!0},dataSource:{handler:function(){this.chartObj.setChartData(this.datasource||this.dataSource,this.dataFormat||this.dataformat)},deep:!0},datasource:{handler:function(){this.chartObj.setChartData(this.datasource||this.dataSource,this.dataFormat||this.dataformat)},deep:!0}},deactivated:function(){this.chartObj&&this.chartObj.dispose()},beforeDestroy:function(){this.chartObj&&this.chartObj.dispose()},mounted:function(){this.renderChart()},ready:function(){this.renderChart()}}},a.exports=e.default},function(e,s){e.exports=a},function(a,e,s){"use strict";function t(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(e,"__esModule",{value:!0});var r=s(1),g=t(r),n=s(0),i=t(n),o=function(a,e,s){a?s.getName||s.name?a.addDep(s):s(a):s(e)},d=function(a,e){for(var s=arguments.length,t=Array(s>2?s-2:0),r=2;r<s;r++)t[r-2]=arguments[r];t&&t.forEach&&t.forEach(function(a){o(e,g.default,a)});var n=(0,i.default)(e);a.component(n.name,n)};e.default=d,a.exports=e.default}])}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/integrations/vue/sample/README.md b/graphs/fusioncharts-suite-xt/integrations/vue/sample/README.md new file mode 100755 index 0000000000000000000000000000000000000000..bb323e071eebf90e1b73f3a2476875d13715535d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/integrations/vue/sample/README.md @@ -0,0 +1,2 @@ +# Vue FusionCharts +We have created multiple samples using **Vue FusionCharts** for your reference. To view the samples click [here](https://fusioncharts.github.io/vue-fusioncharts/ "Vue FusionCharts"). \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.charts.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.charts.js new file mode 100755 index 0000000000000000000000000000000000000000..4cc4d371f60ce5a9dc8f72218026bce9808db877 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.charts.js @@ -0,0 +1,2 @@ +!function(t){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=t:t()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[1],{256:function(t,e,o){"use strict";e.__esModule=!0,e.Mssplinearea=e.Msspline=e.MSSplineDy=e.Splinearea=e.Spline=e.MSColumn2D=e.MSColumn3D=e.MSLine=e.MSBar2D=e.MSBar3D=e.MSArea=e.Marimekko=e.MSCombi2D=e.MSCombi3D=e.MSColumnLine3D=e.StackedColumn2DLine=e.StackedColumn3DLine=e.MSCombidy2D=e.MSColumn3DLineDy=e.StackedColumn3DLineDy=e.MSStackedColumn2DLineDy=e.StackedColumn2D=e.StackedColumn3D=e.StackedBar2D=e.StackedBar3D=e.StackedArea2D=e.MSStackedColumn2D=e.Scatter=e.Bubble=e.ScrollColumn2D=e.ScrollLine2D=e.ScrollArea2D=e.ScrollStackedColumn2D=e.ScrollCombi2D=e.ScrollCombiDy2D=e.Pareto3D=e.Pareto2D=e.Doughnut3D=e.Doughnut2D=e.Pie3D=e.Pie2D=e.Bar3D=e.Bar2D=e.Area=e.Line=e.Column3D=e.Column2D=undefined;var n=q(o(257)),r=q(o(333)),a=q(o(345)),i=q(o(350)),l=q(o(351)),c=q(o(364)),s=q(o(368)),u=q(o(372)),p=q(o(378)),f=q(o(379)),d=q(o(382)),h=q(o(392)),g=q(o(394)),b=q(o(406)),y=q(o(408)),m=q(o(407)),v=q(o(411)),C=q(o(403)),w=q(o(412)),D=q(o(413)),_=q(o(424)),O=q(o(426)),S=q(o(429)),P=q(o(433)),k=q(o(435)),x=q(o(438)),E=q(o(439)),N=q(o(441)),A=q(o(442)),j=q(o(395)),T=q(o(445)),M=q(o(447)),F=q(o(449)),B=q(o(446)),I=q(o(448)),L=q(o(450)),R=q(o(427)),G=q(o(430)),V=q(o(434)),z=q(o(454)),H=q(o(436)),W=q(o(404)),Y=q(o(455)),U=q(o(456)),X=q(o(457)),Z=q(o(458)),J=q(o(459));function q(t){return t&&t.__esModule?t:{"default":t}}e.Column2D=n["default"],e.Column3D=r["default"],e.Line=a["default"],e.Area=i["default"],e.Bar2D=l["default"],e.Bar3D=c["default"],e.Pie2D=s["default"],e.Pie3D=u["default"],e.Doughnut2D=p["default"],e.Doughnut3D=f["default"],e.Pareto2D=d["default"],e.Pareto3D=h["default"],e.ScrollCombiDy2D=g["default"],e.ScrollCombi2D=b["default"],e.ScrollStackedColumn2D=y["default"],e.ScrollArea2D=m["default"],e.ScrollLine2D=v["default"],e.ScrollColumn2D=C["default"],e.Bubble=w["default"],e.Scatter=D["default"],e.MSStackedColumn2D=_["default"],e.StackedArea2D=O["default"],e.StackedBar3D=S["default"],e.StackedBar2D=P["default"],e.StackedColumn3D=k["default"],e.StackedColumn2D=x["default"],e.MSStackedColumn2DLineDy=E["default"],e.StackedColumn3DLineDy=N["default"],e.MSColumn3DLineDy=A["default"],e.MSCombidy2D=j["default"],e.StackedColumn3DLine=T["default"],e.StackedColumn2DLine=M["default"],e.MSColumnLine3D=F["default"],e.MSCombi3D=B["default"],e.MSCombi2D=I["default"],e.Marimekko=L["default"],e.MSArea=R["default"],e.MSBar3D=G["default"],e.MSBar2D=V["default"],e.MSLine=z["default"],e.MSColumn3D=H["default"],e.MSColumn2D=W["default"],e.Spline=Y["default"],e.Splinearea=U["default"],e.MSSplineDy=Z["default"],e.Msspline=X["default"],e.Mssplinearea=J["default"],e["default"]={name:"charts",type:"package",requiresFusionCharts:!0,extension:function(t){t.addDep(n["default"]),t.addDep(r["default"]),t.addDep(a["default"]),t.addDep(i["default"]),t.addDep(l["default"]),t.addDep(c["default"]),t.addDep(s["default"]),t.addDep(u["default"]),t.addDep(p["default"]),t.addDep(f["default"]),t.addDep(d["default"]),t.addDep(h["default"]),t.addDep(g["default"]),t.addDep(b["default"]),t.addDep(y["default"]),t.addDep(m["default"]),t.addDep(v["default"]),t.addDep(C["default"]),t.addDep(w["default"]),t.addDep(D["default"]),t.addDep(_["default"]),t.addDep(O["default"]),t.addDep(S["default"]),t.addDep(P["default"]),t.addDep(k["default"]),t.addDep(x["default"]),t.addDep(E["default"]),t.addDep(N["default"]),t.addDep(A["default"]),t.addDep(j["default"]),t.addDep(T["default"]),t.addDep(M["default"]),t.addDep(F["default"]),t.addDep(B["default"]),t.addDep(I["default"]),t.addDep(L["default"]),t.addDep(R["default"]),t.addDep(G["default"]),t.addDep(V["default"]),t.addDep(z["default"]),t.addDep(H["default"]),t.addDep(W["default"]),t.addDep(Y["default"]),t.addDep(U["default"]),t.addDep(Z["default"]),t.addDep(X["default"]),t.addDep(J["default"])}}},257:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(258)),r=a(o(331));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return i(e,t),e.getName=function(){return"Column2D"},e.prototype.getName=function(){return"Column2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.friendlyName="Column Chart",this.config.singleseries=!0,this.config.defaultDatasetType="column",this.config.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=l},333:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(334)),r=a(o(342));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o.defaultZeroPlaneHighlighted=!1,o}return i(e,t),e.getName=function(){return"Column3D"},e.prototype.getName=function(){return"Column3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.hasLegend=!1,e.singleseries=!0,e.friendlyName="3D Column Chart",e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=l},334:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(258)),r=i(o(335)),a=i(o(339));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.registerFactory("canvas",r["default"]),o.registerFactory("dataset",a["default"],["vCanvas"]),o}return l(e,t),e.getName=function(){return"SSCartesian3D"},e.prototype.getName=function(){return"SSCartesian3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.hasLegend=!1,e.showplotborder=0,e.drawcrosslineontop=0,e.showzeroplaneontop=0},e}(n["default"]);e["default"]=c},335:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e=void 0;if((0,a.componentFactory)(t,n["default"],"canvas",t.config.showVolumeChart?2:1),e=t.getChildren("canvas"))for(var o=0,i=e.length;o<i;o++)e[o].configure(),(0,a.componentFactory)(e[o],r["default"],"axisRefVisualCartesian")};var n=i(o(336)),r=i(o(324)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}},336:function(t,e,o){"use strict";e.__esModule=!0;var n=s(o(263)),r=o(118),a=o(122),i=o(125),l=s(o(337)),c=s(o(338));function s(t){return t&&t.__esModule?t:{"default":t}}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var p=(0,i.getDep)("redraphael","plugin"),f=r.preDefStr.ROUND,d=r.preDefStr.miterStr,h=Math.max,g=p,b={chart2D:{bgColor:"bgColor",bgAlpha:"bgAlpha",bgAngle:"bgAngle",bgRatio:"bgRatio",canvasBgColor:"canvasBgColor",canvasBaseColor:"canvasBaseColor",divLineColor:"divLineColor",legendBgColor:"legendBgColor",legendBorderColor:"legendBorderColor",toolTipbgColor:"toolTipbgColor",toolTipBorderColor:"toolTipBorderColor",baseFontColor:"baseFontColor",anchorBgColor:"anchorBgColor"},chart3D:{bgColor:"bgColor3D",bgAlpha:"bgAlpha3D",bgAngle:"bgAngle3D",bgRatio:"bgRatio3D",canvasBgColor:"canvasBgColor3D",canvasBaseColor:"canvasBaseColor3D",divLineColor:"divLineColor3D",divLineAlpha:"divLineAlpha3D",legendBgColor:"legendBgColor3D",legendBorderColor:"legendBorderColor3D",toolTipbgColor:"toolTipbgColor3D",toolTipBorderColor:"toolTipBorderColor3D",baseFontColor:"baseFontColor3D",anchorBgColor:"anchorBgColor3D"}},y=function(){this.hide()},m=function(){this.hide(),this._.cubeside.hide(),this._.cubetop.hide()},v=function(){this.show(),this._.cubeside.show(),this._.cubetop.show()};(0,i.addDep)({name:"canvas3dAnimation",type:"animationRule",extension:l["default"]}),(0,c["default"])(p);var C=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return u(e,t),e.prototype.getName=function(){return"canvas"},e.prototype.getType=function(){return"canvas"},e.prototype.drawCanvas=function(){this.getFromEnv("chart").isBar?this.drawCanvas3dBar():this.drawCanvas3dColumn()},e.prototype.configureAttributes=function(){t.prototype.configureAttributes.call(this),this.config.xDepth=10,this.config.yDepth=10},e.prototype.drawCanvas3dColumn=function(){var t,e,o,n,i,l,c,s,u,f,d,h,g,C,w,D,_=this.getFromEnv("chart"),O=_.getFromEnv("dataSource"),S=this.config,P=_.config,k=S.canvasLeft,x=S.canvasTop,E=S.canvasWidth,N=S.canvasHeight,A=O.chart,j=this.getFromEnv("animationManager"),T=_.getFromEnv("color-manager"),M=this.getGraphicalElement("canvasBorderElement"),F=this.getGraphicalElement("canvasElement"),B=this.config,I=B.clip={},L=this.getContainer("canvasGroup"),R=this.getGraphicalElement("canvasBg"),G=this.getGraphicalElement("canvas3DBase"),V=r.preDefStr.miterStr,z=Math.max,H=(r.preDefStr.ROUND,_.getChildContainer("plotGroup")),W=_.getChildContainer("datalabelsGroup"),Y=this.getGraphicalElement("canvas3dbaseline"),U=B.canvasBgColor,X=B.showCanvasBG=Boolean((0,r.pluckNumber)(A.showcanvasbg,1)),Z=P.canvasBgDepth,J=P.showCanvasBase,q=P.canvasBaseDepth,$=B.canvasBaseColor3D=(0,r.pluck)(A.canvasbasecolor,T.getColor("canvasBaseColor3D")),K=B.use3DLighting=(0,r.pluckNumber)(A.use3dlighting,1),Q=b.chart3D,tt=B.canvasBorderRadius=(0,r.pluckNumber)(A.plotborderradius,0),et=B.canvasBorderColor=(0,a.convertColor)((0,r.pluck)(A.canvasbordercolor,T.getColor(r.canvasBorderColorStr))),ot=B.canBGAlpha=(0,r.pluck)(A.canvasbgalpha,T.getColor("canvasBgAlpha")),nt=B.canBGColor=(0,r.pluck)(A.canvasbgcolor,T.getColor(Q.canvasBgColor)),rt=P.canvasBasePadding||2;U=B.canvasBgColor=K?{FCcolor:{color:(0,a.getDarkColor)(nt,85)+r.COMMASTRING+(0,a.getLightColor)(nt,55),alpha:ot+r.COMMASTRING+ot,ratio:r.BGRATIOSTRING,angle:(0,a.getAngle)(P.width-(P.marginLeft+P.marginRight),P.height-(P.marginTop+P.marginBottom),1)}}:(0,a.convertColor)(nt,ot),nt=nt.split(r.COMMASTRING)[0],ot=ot.split(r.COMMASTRING)[0],w=B.xDepth,D=B.yDepth,l={x:k-0,y:x-0,width:E+0,height:N+0,r:tt,"stroke-width":0,stroke:et,"stroke-linejoin":V},t=j.setAnimation({el:M||"rect",attr:l,component:this,label:"canvas",container:L}),M||this.addGraphicalElement("canvasBorderElement",t),I["clip-canvas"]=[z(0,k-w),z(0,x),z(1,E+w),z(1,N+D)],I["clip-canvas-init"]=[z(0,k-w),z(0,x-D),1,z(1,N+2*D)],g=I["clip-canvas"].slice(0),j.setAnimation({el:H,attr:{"clip-rect":g},component:this}),j.setAnimation({el:W,attr:{"clip-rect":g},component:this}),l={x:k,y:x,width:E,height:N,r:tt,"stroke-width":0,stroke:"none",fill:(0,r.toRaphaelColor)(U)},e=j.setAnimation({el:F||"rect",attr:l,component:this,label:"canvas",callback:X?r.stubFN:y,container:L}),F||this.addGraphicalElement("canvasElement",e),i=["M",k+E,x,"L",k+E+Z,x+1.2*Z,k+E+Z,x+N-Z,k+E,x+N,"Z"],o=j.setAnimation({el:R||"path",attr:{path:i,"stroke-width":0,stroke:"none",fill:(0,r.toRaphaelColor)(U)},component:this,label:"canvas",callback:X?r.stubFN:y,container:L}),R||this.addGraphicalElement("canvasBg",o),X?(o.show(),e.show()):(o.hide(),e.hide()),c=k-w-rt,s=x+N+D+rt,u=E,f=q,d=w+rt,h=D+rt,n=j.setAnimation({el:G||"cubepath",component:this,index:0,attr:{cubepath:[c,s,u,f,d,h],stroke:"none","stroke-width":0,fill:$.replace(r.dropHash,r.HASHSTRING),noGradient:!K},callback:J?r.stubFN:m,label:"canvas",container:L}),G||this.addGraphicalElement("canvas3DBase",n),C=j.setAnimation({el:Y||"path",attr:{path:["M",k,x+N,"H",E+k],stroke:p.tintshade($.replace(r.dropHash,r.HASHSTRING),.05).rgba},component:this,callback:J?r.stubFN:y,label:"canvas",container:L}),Y||this.addGraphicalElement("canvas3dbaseline",C),J&&(v.call(n),C.show())},e.prototype.drawCanvas3dBar=function(){var t,e,o,n,i,l,c,s,u,p,C,w,D,_,O=this.getFromEnv("chart"),S=O.getFromEnv("dataSource"),P=O.config,k=P.canvasLeft,x=P.canvasTop,E=P.canvasWidth,N=P.canvasHeight,A=S.chart,j=O.getFromEnv("color-manager"),T=this.getGraphicalElement("canvasBorderElement"),M=this.getGraphicalElement("canvasElement"),F=this.config,B=F.clip={},I=this.getContainer("canvasGroup"),L=this.getGraphicalElement("canvasBg"),R=this.getGraphicalElement("canvas3DBase"),G=O.getChildContainer("plotGroup"),V=O.getChildContainer("datalabelsGroup"),z=this.getFromEnv("animationManager"),H=this.getGraphicalElement("canvas3dbaseline"),W=F.canvasBgColor,Y=F.showCanvasBG=Boolean((0,r.pluckNumber)(A.showcanvasbg,1)),U=P.canvasBgDepth,X=P.showCanvasBase,Z=P.canvasBaseDepth,J=F.canvasBaseColor3D=(0,r.pluck)(A.canvasbasecolor,j.getColor("canvasBaseColor3D")),q=F.use3DLighting=(0,r.pluckNumber)(A.use3dlighting,1),$=b.chart3D,K=F.canvasBorderRadius=(0,r.pluckNumber)(A.plotborderradius,0),Q=F.canvasBorderWidth=0,tt=.5*Q,et=F.canvasBorderColor=(0,a.convertColor)((0,r.pluck)(A.canvasbordercolor,j.getColor(r.canvasBorderColorStr))),ot=F.canBGAlpha=(0,r.pluck)(A.canvasbgalpha,j.getColor("canvasBgAlpha")),nt=F.canBGColor=(0,r.pluck)(A.canvasbgcolor,j.getColor($.canvasBgColor)),rt=F.xDepth,at=F.yDepth;W=F.canvasBgColor=q?{FCcolor:{color:(0,a.getDarkColor)(nt,85)+","+(0,a.getLightColor)(nt,55),alpha:ot+","+ot,ratio:r.BGRATIOSTRING,angle:(0,a.getAngle)(P.width-(P.marginLeft+P.marginRight),P.height-(P.marginTop+P.marginBottom),1)}}:(0,a.convertColor)(nt,ot),nt=nt.split(",")[0],ot=ot.split(",")[0],rt=F.xDepth=5,at=F.yDepth=5,i={x:k-tt,y:x-tt,width:E+Q,height:N+Q,r:K,"stroke-width":Q,stroke:et,"stroke-linejoin":Q>2?f:d},t=z.setAnimation({el:T||"rect",attr:i,container:I,label:"canvas",component:this}),T||this.addGraphicalElement("canvasBorderElement",t),B["clip-canvas"]=[h(0,k-rt),h(0,x),h(1,E+rt),h(1,N+at)],B["clip-canvas-init"]=[h(0,k-rt),h(0,x-at),1,h(1,N+2*at)],D=B["clip-canvas"].slice(0),z.setAnimation({el:G,attr:{"clip-rect":D},component:this}),z.setAnimation({el:V,attr:{"clip-rect":D},component:this}),i={x:k,y:x,width:E,height:N,r:K,"stroke-width":0,stroke:"none",fill:(0,r.toRaphaelColor)(W)},e=z.setAnimation({el:M||"rect",attr:i,component:this,label:"canvas",container:I}),M||this.addGraphicalElement("canvasElement",e),l=["M",k,x,"L",k+1.2*U,x-U,k+E-U,x-U,k+E,x,"Z"],o=z.setAnimation({el:L||"path",attr:{path:l,"stroke-width":0,stroke:"none",fill:(0,r.toRaphaelColor)(W)},component:this,callback:Y?r.stubFN:y,label:"canvas",container:I}),L||this.addGraphicalElement("canvasBg",o),Y?(e.show(),o.show()):(e.hide(),o.hide()),c=k-rt-Z-1,s=x+at+1,u=Z,p=N,C=rt+1,w=at+1,n=z.setAnimation({el:R||"cubepath",attr:{cubepath:[c,s,u,p,C,w],stroke:"none","stroke-width":0,fill:J.replace(r.dropHash,r.HASHSTRING),noGradient:!q},component:this,callback:X?r.stubFN:m,label:"canvas",container:I}),R||this.addGraphicalElement("canvas3DBase",n),_=z.setAnimation({el:H||"path",attr:{path:["M",k,x,"V",N+x],stroke:g.tintshade(J.replace(r.dropHash,r.HASHSTRING),.05).rgba},component:this,callback:X?r.stubFN:y,label:"canvas",container:I}),H||this.addGraphicalElement("canvas3dbaseline",_),X&&(_.show(),v.call(n))},e}(n["default"]);e["default"]=C},337:function(t,e,o){"use strict";e.__esModule=!0;e["default"]={"initial.canvas.canvas":{"canvas.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"}]}}},338:function(t,e,o){"use strict";e.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e["default"]=function(t){var e,o=Math.atan2;t.define&&t.define([{name:"cubepath",cubepath:function(){var o,a,i,l,c={"stroke-linejoin":"round","shape-rendering":"precision",stroke:"none"},s=arguments,u=s.length-1,p=s[u],f=function(t,o,a,i,l,c){var s=this,u=s._.cubetop,p=s._.cubeside;return"object"===(void 0===t?"undefined":n(t))||t===e&&o===e&&a===e&&i===e&&l===e&&c===e?this:(t=(0,r.pluckNumber)(t,s.attrs.x,0),o=(0,r.pluckNumber)(o,s.attrs.y,0),a=(0,r.pluckNumber)(a,s.attrs.width,0),i=(0,r.pluckNumber)(i,s.attrs.height,0),l=(0,r.pluckNumber)(l,s.attrs.xDepth,0),c=(0,r.pluckNumber)(c,s.attrs.yDepth,0),s.attrs.x=t,s.attrs.y=o,s.attrs.width=a,s.attrs.height=i,s.attrs.xDepth=l,s.attrs.yDepth=c,s._attr("path",["M",t+a,o,"l",0,i,-a,0,0,-i,"z"]),u.attr("path",["M",t,o,"l",1,1,a-1,0,0,-1,l,-c,-a,0,"z"]),p.attr("path",["M",t+a-1,o+1,"l",0,i-1,1,0,l,-c,0,-i,-l,c]),this)};for(i in p&&p.constructor===t.el.constructor?s[u]=e:p=e,o=this.path(c,p),a=this.path(c,p),(l=this.path(c,p))._.cubetop=o.follow(l,e,"before"),l._.cubeside=a.follow(l,e,"before"),t.fn.cubepath.ca)l.ca[i]=t.fn.cubepath.ca[i];return l._attr=l.attr,l._shadow=l.shadow,l.attr=function(t,o){var r="object"===(void 0===t?"undefined":n(t));return r&&(t.cubepath?o=[].concat(t.cubepath):((o=[]).push(t.x),o.push(t.y),o.push(t.width),o.push(t.height),o.push(t.xDepth),o.push(t.yDepth)),t.noGradient!==e&&(l.attrs.noGradient=t.noGradient)),t===e&&o===e?this.attrs:o===e?this.attrs[t]:(r?f.apply(this,o):"drop-shadow"===t&&function(t,e,o,n){var r=this,a=r._.cubetop,i=r._.cubeside;return r.dropshadow&&(a.dropshadow(t,-e,o,n),i.dropshadow(t,-e,o,n)),!1}.apply(this,[].concat(o)),l._attr(t),this)},l.appendTo=function(t){t.appendChild(l._.cubetop),t.appendChild(l._.cubeside),t.appendChild(l)},"object"===n(s[0])?l.attr(s[0]):f.apply(l,[s[0],s[1],s[2],s[3],s[4],s[5]])},fn:{_getBBox2:function(){var t=this._.cubeside.getBBox(),e=this._.cubetop.getBBox(),o=this.getBBox();return{x:o.x+e.height,y:o.y-t.width,width:o.width,height:o.height}},shadow:function(){return this._.cubeside.shadow.apply(this._.cubeside,arguments),this._.cubetop.shadow.apply(this._.cubetop,arguments),this._shadow.apply(this,arguments)}},ca:{"stroke-linejoin":function(){return{"stroke-linejoin":"round"}},fill:function(n,r){var a,i=this,l=i._.cubetop,c=i._.cubeside,s=i._attr("cubepath")||[0,0,0,0,0,0],u=s[2],p=s[4],f=s[5];return r===e&&(r=i._attr("noGradient")),n=t.color(n),r?(i._attr("fill",n),l.attr("fill",t.tintshade(n,-.78).rgba),c.attr("fill",t.tintshade(n,-.65).rgba)):(a="opacity"in n?"rgba("+[n.r,n.g,n.b,n.opacity]+")":"rgb("+[n.r,n.g,n.b]+")",i._attr("fill",[270,t.tintshade(a,.55).rgba,t.tintshade(a,-.65).rgba].join("-")),c.attr("fill",[270,t.tintshade(a,-.75).rgba,t.tintshade(a,-.35).rgba].join("-")),l.attr("fill",[45+t.deg(o(f,p+u)),t.tintshade(a,-.78).rgba,t.tintshade(a,.22).rgba].join("-"))),!1}}}])};var r=o(118)},339:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e,o,n,a=t.getChildren().canvas[0].getChildren("vCanvas")[0],c=t.getFromEnv("dataSource"),s=c.dataset,u=t.config.defaultDatasetType||"",p=c.data||s&&s[0].data;o=l(p),p&&0!==p.length?((0,r.componentFactory)(a,i["default"],"datasetGroup_"+u),n=a.getChildren("datasetGroup_"+u)[0],e=t.getDSdef(),(0,r.datasetFactory)(n,e,"dataset",1,[o])):t.setChartMessage()};var n,r=o(118),a=o(340),i=(n=a)&&n.__esModule?n:{"default":n};var l=function(t){var e=[];return(0,r.fcEach)(t,function(t){"true"!==t.vline&&!0!==t.vline&&1!==t.vline&&"1"!==t.vline&&e.push(t)}),{data:e}}},340:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(131)),r=o(125),a=i(o(341));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}(0,r.addDep)({name:"column3dManagerAnimation",type:"animationRule",extension:a["default"]});var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.setState("visible",!0),o}return l(e,t),e.prototype.getType=function(){return"group"},e.prototype.getName=function(){return"column3d"},e.prototype.getCanvasPadding=function(){var t,e,o={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return this._mapChildren(function(n){for(e in t=n.getCanvasPadding&&n.getCanvasPadding()||{})t.hasOwnProperty(e)&&(o[e]=Math.max(t[e],o[e]))}),o},e.prototype.createContainer=function(){var t=this.getFromEnv("animationManager"),e=void 0,o=void 0,n=this.getLinkedParent().getChildContainer();for(e in n)o=n[e],!this.getChildContainer(e)&&this.addChildContainer(e,t.setAnimation({el:"group",attr:{name:"manager"+e},container:o,component:this,label:"group"}))},e.prototype.draw3DContainer=function(){var t,e=this.getFromEnv("animationManager"),o=this.getChildContainer("plotGroup3d"),n=this.getFromEnv("xAxis").getTicksLen(),r=o&&o.negative,a=o&&o.positive,i=this.getLinkedParent().getChildContainer().columnVcanvasGroup;for(!this.getChildContainer("plotGroup3d")&&this.addChildContainer("plotGroup3d",e.setAnimation({el:"group",attr:{name:"3d-plots"},container:i,component:this,label:"group"})),o=this.getChildContainer("plotGroup3d"),this.addToEnv("plotGroup3d",o),r=o.negative=e.setAnimation({el:r||"group",attr:{name:"negative-values"},container:o,component:this,label:"group"}),a=o.positive=e.setAnimation({el:a||"group",attr:{name:"positive-values"},container:o,component:this,label:"group"}),o.zeroPlane=e.setAnimation({el:o.zeroPlane||"group",attr:{name:"zero-plane"},container:o,component:this,label:"group"}).insertBefore(o.positive),(o.negativeGroupArray=o.negativeGroupArray=r.data("categoryplots"))||(r.data("categoryplots",new Array(n)),o.negativeGroupArray=r.data("categoryplots")),(o.positiveGroupAarray=o.positiveGroupAarray=a.data("categoryplots"))||(a.data("categoryplots",new Array(n)),o.positiveGroupAarray=a.data("categoryplots")),t=0;t<n;t++)o.negativeGroupArray[t]=e.setAnimation({el:o.negativeGroupArray[t]||"group",attr:{name:"negative-group-"+t},container:r,component:this,label:"group"}),o.positiveGroupAarray[t]=e.setAnimation({el:o.positiveGroupAarray[t]||"group",attr:{name:"positive-group-"+t},container:a,component:this,label:"group"})},e.prototype.drawZeroPlane=function(){var t,e,o=this.getFromEnv("chart"),n=o.getFromEnv("animationManager"),r=o.isBar,a=o.config,i=a.use3dlighting,l=this.getChildContainer("plotGroup3d"),c=this.getFromEnv("yAxis"),s=c.getLimit(),u=s.max,p=s.min,f=this.getGraphicalElement("zeroplane"),d={},h=a.xDepth,g=a.yDepth,b=c.getPixel(c.getAxisBase());p<0&&u>=0?(!this.graphics&&(this.graphics={}),e=l.zeroPlane,d.fill=a.zeroPlaneColor,d.noGradient=!i,d.stroke=a.zeroPlaneBorderColor||"none",d["stroke-width"]=a.zeroPlaneShowBorder?1:0,d.x=r?b-h:a.canvasLeft-h,d.y=r?a.canvasTop+g:b+g,d.width=r?1:a.canvasWidth,d.height=r?a.canvasHeight:1,d.xDepth=h,d.yDepth=g,f&&(f.show(),f._.cubetop.show(),f._.cubeside.show()),t={el:f||"cubepath",attr:d,container:e,component:this,label:"zeroPlane"}):f&&(t={el:f,attr:r?{x:b-g}:{y:b+g},component:this,doNotRemove:!0,callback:function(){f.hide(),f._.cubetop.hide(),f._.cubeside.hide()},container:l,label:"zeroPlane"}),t&&this.addGraphicalElement("zeroplane",n.setAnimation(t))},e.prototype.draw=function(){this.createContainer(),this.draw3DContainer(),this.drawZeroPlane()},e.prototype.childChanged=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},e=this.config,o=this.getLinkedParent(),n=void 0,r=0,a=this.getState("visible"),i={},l=void 0;this._mapChildren(function(t){t.getState("visible")&&r++}),this.setState("visible",!!r),a!==!!r&&(l=!0),!1!==t.dataLimitChanged&&((n=this.getDataLimits()).min===e.range.min&&n.max===e.range.max||(e.range.min=n.min,e.range.max=n.max,i.dataLimitChanged=!0,l=!0)),l?o.childChanged&&o.childChanged(i):this.asyncDraw()},e.prototype.getAxisValuePadding=function(){var t={},e=-Infinity,o=-Infinity;return this._mapChildren(function(n){n.getState("removed")||(t=n.getAxisValuePadding&&n.getAxisValuePadding()||{},e=Math.max(e,t.left||-Infinity),o=Math.max(o,t.right||-Infinity))}),e===-Infinity&&(e=0),o===-Infinity&&(o=0),this.config.padding||(this.config.padding={},this.config.padding.left=e,this.config.padding.right=o),{left:e,right:o}},e.prototype.getDataLimits=function(t){var e=+Infinity,o=-Infinity,n=void 0,r=0,a=function(t){o=Math.max(o,t.max),e=Math.min(e,t.min)};return this._mapChildren(function(e){e.getState("removed")||(!1!==e.getState("visible")?(r++,n=e.getDataLimits(t),a(n)):t&&(n=e.getDataLimits(t),a(n)))}),r?this.setState("visible",!0):this.setState("visible",!1),this.config.range||(this.config.range={},this.config.range.min=this.config.dataMin,this.config.range.max=this.config.dataMax),{max:o,min:e}},e.prototype.isVisible=function(){return!this.isNotVisible},e}(n["default"]);e["default"]=c},341:function(t,e,o){"use strict";e.__esModule=!0,e["default"]={"initial.group.column3d":function(){return{"zeroPlane.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"axis"}]}}}}},342:function(t,e,o){"use strict";e.__esModule=!0;var n=c(o(331)),r=o(118),a=o(343),i=o(125),l=c(o(344));function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}(0,i.addDep)({name:"column3dAnimation",type:"animationRule",extension:l["default"]});var u=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.setContainerVisibility=r.stubFN,o}return s(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"column3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.use3dlighting=r.UNDEF},e.prototype.createContainer=function(){var t=this.getLinkedParent(),e=this.getFromEnv("paper");!this.getContainer("labelGroup")&&this.addContainer("labelGroup",function(t,e,o){return e.group(t,o)}("label-group",e,t.getChildContainer("vcanvasLabelGroup")).attr("class","fusioncharts-datalabels")).attr("opacity",1)},e.prototype._getHoveredPlot=function(t,e){var o,n,r=this.getFromEnv("chart").isBar;return o=this.getFromEnv("xAxis").getValue(r?e:t),(n=Math.round(o))-o>0?a._checkPointerOverColumn.call(this,n,t,e)||a._checkPointerOverColumn.call(this,n-1,t,e):a._checkPointerOverColumn.call(this,n+1,t,e)||a._checkPointerOverColumn.call(this,n,t,e)},e}(n["default"]);e["default"]=u},343:function(t,e,o){"use strict";e.__esModule=!0;var n=Math.round;e._checkPointerOverColumn=function(t,e,o){var r,a,i,l,c,s,u,p,f,d=this.getFromEnv("chart").config,h=d.plotborderthickness,g=d.showplotborder,b=this.components.data,y=b[t];if(y)return r=y.config.setValue,c=(c=(h=g?h:0)/2)%2==0?c+1:n(c),null!==r&&(s=y._xPos-10,p=y._width+10,u=y._yPos,f=y._height+10,i=o-u+c,l=!!(l=!!(l=(a=e-s+c)>=0&&a<=p+h&&i>=0&&i<=f+h)&&e+o-(s+u)-10>0)&&e+o-(s+u+p+f)+10<0)?{pointIndex:t,hovered:l,pointObj:b[t]}:void 0}},344:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(332),a=(n=r)&&n.__esModule?n:{"default":n};e["default"]={"initial.dataset.column3D":a["default"]["initial.dataset.column"]}},345:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(258)),r=i(o(346)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=a.preDefStr.SEVENTYSTRING,s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o.axisPaddingLeft=0,o.axisPaddingRight=0,o}return l(e,t),e.getName=function(){return"Line"},e.prototype.getName=function(){return"Line"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Line Chart",e.singleseries=!0,e.defaultDatasetType="line",e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha=a.HUNDREDSTRING,e.anchorimagealpha=a.HUNDREDSTRING,e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha=c,e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha=a.HUNDREDSTRING,e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0,e.zeroplanethickness=1,e.enablemousetracking=!0,e.zeroplanealpha=40,e.showzeroplaneontop=0,e.defaultcrosslinethickness=1},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=s},350:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(258)),r=i(o(347)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=a.preDefStr.SEVENTYSTRING,s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=0,o}return l(e,t),e.getName=function(){return"Area2D"},e.prototype.getName=function(){return"Area2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Area Chart",e.singleseries=!0,e.defaultDatasetType="area",e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha=a.HUNDREDSTRING,e.anchorimagealpha=a.HUNDREDSTRING,e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha=c,e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha=a.HUNDREDSTRING,e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0,e.enablemousetracking=!0,e.defaultcrosslinethickness=1},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=s},351:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(352)),r=a(o(362));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.isBar=!0,o}return i(e,t),e.getName=function(){return"Bar2D"},e.prototype.getType=function(){return"chartAPI"},e.prototype.getName=function(){return"Bar2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.friendlyName="Bar Chart",this.config.singleseries=!0,this.config.defaultDatasetType="bar2d",this.config.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){},e}(n["default"]);e["default"]=l},352:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(258),a=(n=r)&&n.__esModule?n:{"default":n},i=o(353);function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.prototype.getName=function(){return"SSBarCartesian"},e.getName=function(){return"SSBarCartesian"},e.prototype._feedAxesRawData=function(){return i.__feedAxesRawData.call(this)},e.prototype._spaceManager=function(){i.__spaceManager.call(this)},e.prototype._postSpaceManagement=function(){i.__postSpaceManagement.call(this)},e}(a["default"]);e["default"]=c},364:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(365)),r=a(o(366));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o.fireGroupEvent=!0,o.isBar=!0,o.defaultZeroPlaneHighlighted=!1,o}return i(e,t),e.getName=function(){return"Bar3D"},e.prototype.getName=function(){return"Bar3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.singleseries=!0,e.friendlyName="3D Bar Chart",e.defaultDatasetType="bar3d",e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=l},365:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(334),a=(n=r)&&n.__esModule?n:{"default":n},i=o(353);function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.__feedAxesRawData=i.__feedAxesRawData,o.__spaceManager=i.__spaceManager,o.__postSpaceManagement=i.__postSpaceManagement,o}return l(e,t),e.getName=function(){return"SSBarCartesian3D"},e.prototype.getName=function(){return"SSBarCartesian3D"},e.prototype._feedAxesRawData=function(){return i.__feedAxesRawData.call(this)},e.prototype._spaceManager=function(){i.__spaceManager.call(this)},e.prototype._postSpaceManagement=function(){i.__postSpaceManagement.call(this)},e}(a["default"]);e["default"]=c},366:function(t,e,o){"use strict";e.__esModule=!0;var n=l(o(342)),r=o(362),a=o(125),i=l(o(367));function l(t){return t&&t.__esModule?t:{"default":t}}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}(0,a.addDep)({name:"bar3DAnimation",type:"animationRule",extension:i["default"]});var s=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return c(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"bar3D"},e.prototype._checkPointerOverColumn=function(t,e,o){var n,r,a,i,l,c,s,u,p=this.getFromEnv("chart").config,f=p.plotborderthickness,d=p.showplotborder,h=this.components.data,g=h[t];if(g)return n=g.config.setValue,f=d?f:0,null!==n&&(c=g._yPos,u=g._height+5,l=g._xPos-5,s=g._width+5,a=o-c,i=!!(i=!!(i=(r=e-l)>=0&&r<=s+f&&a>=0&&a<=u+f)&&e+o-(l+c)-5>0)&&e+o-(l+c+s+u)+5<0)?{pointIndex:t,hovered:i,pointObj:h[t]}:void 0},e.prototype._getHoveredPlot=function(t,e){var o,n,r=this.getFromEnv("chart").isBar;return o=this.getFromEnv("xAxis").getValue(r?e:t),(n=Math.round(o))-o>0?this._checkPointerOverColumn(n,t,e)||this._checkPointerOverColumn(n-1,t,e):this._checkPointerOverColumn(n+1,t,e)||this._checkPointerOverColumn(n,t,e)},e.prototype.drawLabel=function(){r.drawLabel.call(this)},e}(n["default"]);e["default"]=s},367:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(363),a=(n=r)&&n.__esModule?n:{"default":n};e["default"]={"initial.dataset.bar3D":a["default"]["initial.dataset.bar2D"]}},368:function(t,e,o){"use strict";e.__esModule=!0;var n=h(o(369)),r=h(o(261)),a=o(118),i=o(122),l=h(o(265)),c=h(o(267)),s=h(o(269)),u=h(o(371)),p=h(o(357)),f=o(355),d=o(129);function h(t){return t&&t.__esModule?t:{"default":t}}function g(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var b=Math,y=b.min,m=b.max,v=b.abs,C=b.PI,w=b.round,D=C/180,_=180/C,O=0,S=function(t,e,o){var n,r,a=!!o,i=void 0,l=void 0;return t?((r=(n=t.components&&t.components.data||[])[e=t.config.reversePlotOrder?n.length-e-1:e])&&(i=r.config,l=a!==r.config.sliced||void 0===o?t.plotGraphicClick.call(r.graphics.element):i.sliced),l):l},P=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultSeriesType="pie",o.defaultPlotShadow=1,o.reverseLegend=1,o.defaultPaletteOptions=undefined,o.sliceOnLegendClick=!0,o.dontShowLegendByDefault=!0,o.defaultZeroPlaneHighlighted=!1,o.hasCanvas=!0,o.eiMethods={isPlotItemSliced:function(t){var e,o,n=this.apiInstance,r=n&&n.getDatasets();return r&&(r=r[0])&&(e=r.components.data)&&e[t]&&(o=e[t].config)&&o.sliced},addData:function(){var t=this.apiInstance,e=t&&t.getDatasets();return e&&(e=e[0])&&e.addData.apply(e,arguments)},removeData:function(){var t=this.apiInstance,e=t&&t.getDatasets();return e&&(e=e[0])&&e.removeData.apply(e,arguments)},updateData:function(){var t=this.apiInstance,e=t&&t.getDatasets();return e&&(e=e[0])&&e.updateData.apply(e,arguments)},slicePlotItem:function(t,e,o){var n=this.apiInstance;if(!o)return S(n.getDatasets()[0],t,e);n.addJob("eiMethods-slice-plot"+O++,function(){var r=S(n.getDatasets()[0],t,e);return"function"==typeof o&&o(r)},d.priorityList.postRender)},startingAngle:function(t,e,o){var n,r=this.apiInstance;if(!o)return r._startingAngle(t,e);r.addJob("eiMethods-start-angle"+O++,function(){n=r._startingAngle(t,e),"function"==typeof o&&o(n)},d.priorityList.postRender)}},o.registerFactory("dataset",u["default"],["vCanvas","legend"]),o.registerFactory("legend",p["default"]),o}return g(e,t),e.getName=function(){return"Pie2D"},e.prototype.getName=function(){return"Pie2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.alignCaptionWithCanvas=0,e.formatnumberscale=1,e.isSingleSeries=!0,e.friendlyName="Pie Chart",e.defaultDatasetType="Pie2D",e.plotborderthickness=1,e.decimals=2,e.alphaanimation=0,e.singletonPlaceValue=!0,e.usedataplotcolorforlabels=0,e.enableslicing=a.ONESTRING,e.skipCanvasDrawing=!0},e.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e);var o=this.getFromEnv("chart-attrib");this.config.showLegend=(0,a.pluckNumber)(o.showlegend,0)},e.prototype.configureAttributes=function(t){var e=this.config;this.parseChartAttr(t),this.createComponent(t),this.config.skipConfigureIteration.axis=!0,this.configureChildren(),this._createToolBox(),this.getFromEnv("toolTipController").setStyle({bgColor:(0,i.convertColor)(e.tooltipbgcolor||"FFF",e.tooltipbgalpha||100),rawBgColor:(e.tooltipbgcolor||"FFF").replace(/^#?([a-f0-9]+)/gi,"#$1"),fontColor:(e.tooltipcolor||e.basefontcolor||"545454").replace(/^#?([a-f0-9]+)/gi,"#$1"),borderColor:(0,i.convertColor)(e.tooltipbordercolor||"666",e.tooltipborderalpha||100),rawBorderColor:(e.tooltipbordercolor||"666").replace(/^#?([a-f0-9]+)/gi,"#$1"),bgAlpha:(0,a.pluckNumber)(e.tooltipbgalpha,100),borderThickness:(0,a.pluckNumber)(e.tooltipborderthickness,1),showToolTipShadow:(0,a.pluckNumber)(e.showtooltipshadow||0),borderRadius:(0,a.pluckNumber)(e.tooltipborderradius,0),"font-size":e.basefontsize||10,"font-family":e.basefont||this.getFromEnv("style").inCanfontFamily,padding:(0,a.pluckNumber)(e.tooltippadding||3),borderAlpha:(0,a.pluckNumber)(e.tooltipborderalpha,100)})},e.prototype._createLayers=function(){t.prototype._createLayers.call(this);var e=this.getFromEnv("animationManager");!this.getChildContainer("legendGroup")&&this.addChildContainer("legendGroup",e.setAnimation({el:"group",attr:{name:"legend"},component:this,container:this.getContainer("parentgroup"),label:"group"}))},e.prototype.createComponent=function(){var t=void 0;t=this.config.skipConfigureIteration={},this.createBaseComponent(),this.getFromEnv("animationManager").setAnimationState(this._firstConfigure?"initial":"update"),(0,a.componentFactory)(this,l["default"],"caption"),t.caption=!0,(0,a.componentFactory)(this,c["default"],"subCaption"),t.subCaption=!0,(0,a.componentFactory)(this,s["default"],"background"),t.background=!0,t.canvas=!0,this._createConfigurableComponents&&this._createConfigurableComponents(),this.config.realtimeEnabled&&this._realTimeConfigure&&this._realTimeConfigure()},e.prototype._postSpaceManagement=function(){this.config.showLegend&&this.getChildren("legend")&&this.getChildren("legend")[0].postSpaceManager()},e.prototype._checkInvalidSpecificData=function(){var t,e,o,n=0,r=0,a=this.getFromEnv("dataSource").data;if(!a)return!0;for(e=a.length||0,t=0;t<e;t++)o=Number(a[t].value),n+=isNaN(o)||0!==o?0:1,r+=isNaN(o)?1:0;return n+r>=e},e.prototype._spaceManager=function(){var t,e,o,n,r=this.config,l=this.getChildren("dataset")[0],c=l.components.data,s=l.config,u=this.getFromEnv("legend"),p=this.getFromEnv("color-manager"),f=this.getFromEnv("smartLabel"),d=[],h=s.dataLabelCounter,g=0,b=this.getFromEnv("dataSource").chart,C=(0,a.pluckNumber)(b.managelabeloverflow,0),w=(0,a.pluckNumber)(b.slicingdistance),D=s.preSliced||r.allPlotSliceEnabled!==a.ZEROSTRING||b.showlegend===a.ONESTRING&&b.interactivelegend!==a.ZEROSTRING?v((0,a.pluckNumber)(w,20)):0,_=(0,a.pluckNumber)(b.pieradius,0),O=(0,a.pluckNumber)(b.enablesmartlabels,b.enablesmartlabel,1),S=O?(0,a.pluckNumber)(b.skipoverlaplabels,b.skipoverlaplabel,1):0,P=(0,a.pluckNumber)(b.issmartlineslanted,1),k=h?(0,a.pluckNumber)(b.labeldistance,b.smartlabelclearance,5):D,x=k,E=r.width,N=r.height,A=(this._manageActionBarSpace(.225*N)||{}).bottom,j=E-(r.marginRight+r.marginLeft),T=N-(r.marginTop+r.marginBottom)-(A?A+r.marginBottom:0),M=y(T,j),F=(0,a.pluck)(b.smartlinecolor,p.getColor("plotFillColor")),B=(0,a.pluckNumber)(b.smartlinealpha,100),I=(0,a.pluckNumber)(b.smartlinethickness,.7),L=s.dataLabelOptions=l._parseDataLabelOptions(),R=L.style,G=h?(0,a.pluckNumber)(parseInt(R.lineHeight,10),12):0,V=0===_?.15*M:_,z=2*V,H={bottom:0,right:0},W=s.pieYScale,Y=s.pieSliceDepth;if(L.connectorWidth=I,L.connectorPadding=(0,a.pluckNumber)(b.connectorpadding,5),L.connectorColor=(0,i.convertColor)(F,B),h&&(x=k+D),n=z+2*(G+x),T-=((t=this._manageChartMenuBar(n<T?T-n:T/2)).top||0)+(t.bottom||0),s.showLegend&&(this.config.hasLegend=!0,(0,a.pluck)(b.legendposition,a.POSITION_BOTTOM).toLowerCase()!==a.POSITION_RIGHT?T-=(H=u._manageLegendPosition(T/2)).bottom:j-=(H=u._manageLegendPosition(T/2)).right),this._allocateSpace(H),f.useEllipsesOnOverflow(r.useEllipsesWhenOverflow),1!==h)for(;h--;)f.setStyle(c[h].config.style||r.dataLabelStyle),d[h]=e=f.getOriSize(c[h].config.displayValue),g=m(g,e.width);0===_?V=this._stubRadius(j,g,T,x,D,G,V,k):(s.slicingDistance=D,s.pieMinRadius=V,L.distance=k),o=T-2*(V*W+G),s.managedPieSliceDepth=Y>o?Y-o:s.pieSliceDepth,L.isSmartLineSlanted=P,L.enableSmartLabels=O,L.skipOverlapLabels=S,L.manageLabelOverflow=C},e.prototype._stubRadius=function(t,e,o,n,r,i,l,c){var s,u=this.getChildren("dataset")[0],p=u.config,f=this.getFromEnv("dataSource").chart,d=(0,a.pluckNumber)(f.slicingdistance),h=p.dataLabelOptions||(p.dataLabelOptions=u._parseDataLabelOptions());return(s=y(t/2-e-r,o/2-i)-n)>=l?l=s:d||(r=m(y(n-(l-s),r),10)),p.slicingDistance=r,p.pieMinRadius=l,h.distance=c,l},e.prototype._startingAngle=function(t,e){var o,n=this.getChildren("dataset")[0],r=n.config,a=(o=r.startAngle)*-_+(-1*o<0?360:0);return isNaN(t)||r.singletonCase||r.isRotating||(t+=e?a:0,r.startAngle=-t*D,n._rotate(t),a=t),w(100*((a%=360)+(a<0?360:0)))/100},e.prototype._manageLegendSpace=function(){f._manageLegendSpace.call(this)},e.prototype.getDSdef=function(){return n["default"]},e}(r["default"]);e["default"]=P},371:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e,o,a=t.getFromEnv("dataSource"),i=a.dataset,l=a.data||i&&i[0].data;o=r(l),l&&0!==l.length?(e=t.getDSdef(),(0,n.datasetFactory)(t,e,"dataset",1,[o])):t.setChartMessage()};var n=o(118),r=function(t){var e=[];return(0,n.fcEach)(t,function(t){"true"!==t.vline&&!0!==t.vline&&1!==t.vline&&"1"!==t.vline&&e.push(t)}),{catData:[],data:e}}},372:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(368)),r=i(o(373)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=Math,s=c.round,u=c.min,p=c.max,f=c.PI,d=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=0,o}return l(e,t),e.getName=function(){return"Pie3D"},e.prototype.getName=function(){return"Pie3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="3D Pie Chart",e.defaultDatasetType="Pie3D",e.plotborderthickness=.1,e.alphaanimation=1},e.prototype.animate=function(){var t,e,o,n,r,a,i,l,c=this.components.dataset[0],s=c.config,u=c.components.data,p=u.length,d=s.alphaAnimation,h=this.get("config","animationObj"),g=h.duration||0,b=h.dummyObj,y=h.animObj,m=h.animType;if(!d)for(t=0;t<p;t++)o=(e=u[t]).graphics,r=e.config.shapeArgs,a=2*f,(n=o.element)&&(n.attr({sAngle:a,eAngle:a}),i=r.sAngle,l=r.eAngle,(void 0).animateWith(b,y,{cx:i-a,cy:l-a},g,m))},e.prototype._stubRadius=function(t,e,o,n,r,i,l){var c,s=this.getChildren("dataset")[0],f=s.config,d=s.config,h=(0,a.pluckNumber)(d.slicingdistance),g=f.dataLabelOptions||(f.dataLabelOptions=s._parseDataLabelOptions()),b=f.pieYScale,y=f.pieSliceDepth;return(c=u(t/2-e-r,((o-=y)/2-i)/b)-n)>=l?l=c:h||(r=n=p(u(n-(l-c),r),10)),f.slicingDistance=r,f.pieMinRadius=l,g.distance=n,l},e.prototype._startingAngle=function(t,e){var o,n=this.getChildren("dataset")[0],r=n.config,a=(o=r.startAngle)+(o<0?360:0);return isNaN(t)||r.singletonCase||r.isRotating||(t+=e?a:0,n._rotate(t),a=t),s(100*((a%=360)+(a<0?360:0)))/100},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=d},373:function(t,e,o){"use strict";e.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=o(369),a=d(r),i=o(118),l=o(122),c=d(o(131)),s=o(374),u=d(o(376)),p=o(125),f=d(o(377));function d(t){return t&&t.__esModule?t:{"default":t}}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function b(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var y=(0,p.getDep)("redraphael","plugin"),m=window,v=void 0,C=8===window.document.documentMode?"visible":"",w=i.preDefStr.elementStr,D="M",_="L",O="v",S="A",P="Z",k=Math,x=k.max,E=k.min,N=k.abs,A=k.ceil,j=k.sin,T=k.atan2,M=k.cos,F=k.floor,B=k.round,I=k.PI,L=2*I,R=I/2,G=I+R,V=function(t,e){for(var o=[],n=0,r=t.length;n<r;n++)o[n]=e.call(t[n],t[n],n,t);return o},z=function(t){return"string"==typeof t},H=function(t,e){return parseInt(t,e||10)},W={lighting3D:{},lighting2D:{}},Y=function(t,e,o,n,r){return T((e-o[1]-n.top)/r,t-o[0]-n.left)},U=function(t){var e=this.data("plotItem"),o=e.index,n=e.chart,r=n.getFromEnv("animationManager"),a=n.config,i=n.getChildren("dataset")[0],l=i.config,c=i.components.data[o],s=c.graphics,u=c.config,p=s.element,f=u.hoverEffects;l.isRotating||(n.plotEventHandler(p,t,"DataPlotRollOver"),f.enabled&&r.setAnimation({el:p,attr:f,component:i})),a.isHovered=!0},X=function(t){var e=this.data("plotItem"),o=e.index,n=e.chart,r=n.getFromEnv("animationManager"),a=n.config,i=n.getChildren("dataset")[0],l=i.config,c=i.components.data[o],s=c.graphics,u=c.config,p=s.element;l.isRotating||(n.plotEventHandler(p,t,"DataPlotRollOut"),r.setAnimation({el:p,attr:{color:u.color.color.split(",")[0],alpha:u._3dAlpha,borderWidth:u.borderWidth,borderColor:u.borderColor},component:i})),a.isHovered=!1},Z=function(t){var e,o=this.data("plotItem").chart.getChildren("dataset")[0],n=(0,i.pluckNumber)(t.button,t.originalEvent.button),r=o.config,a=t.data[0],l=t.data[1];r.isRightClicked=!(i.touchEnabled||0===n||1===n),r.enableRotation&&!r.isRightClicked&&(r.isRotating=!1,e=Y.call(t,a,l,r.center,r.chartPosition=(0,i.getPosition)(o.getFromEnv("chart-container")),r.pieYScale),r.dragStartAngle=e,r._lastAngle=-r.startAngle,r.startingAngleOnDragStart=r.startAngle)},J=function(){var t=this.data("plotItem"),e=t.index,o=t.chart,n=o.getFromEnv("animationManager"),r=o.config,a=o.getChildren("dataset")[0],l=a.config,c=a.components.data[e],s=c.graphics,u=c.config,p=s.element,f=l.startAngle;l.isRightClicked||l.isRotating&&(setTimeout(function(){l.isRotating=!1},0),o.fireChartInstanceEvent("rotationEnd",{startingAngle:(0,i.normalizeAngle)(f,!0),changeInAngle:f-l.startingAngleOnDragStart}),!r.isHovered&&n.setAnimation({el:p,attr:{color:u.color.color.split(",")[0],alpha:u._3dAlpha,borderWidth:u.borderWidth,borderColor:u.borderColor},component:a}))},q=function(t){var e,o,n,r=this.data("plotItem").chart,a=t.data,l=a[0],c=a[1],s=a[2],u=a[3],p=r.getChildren("dataset")[0],f=p.config;isNaN(l)||isNaN(c)||!f.enableRotation||f.singletonCase||f.isRightClicked||(e=Y.call(t,s,u,f.center,f.chartPosition,f.pieYScale),f.dragStartAngle===e||f.isRotating||(f.isRotating=!0,r.fireChartInstanceEvent("rotationStart",{startingAngle:(0,i.normalizeAngle)(f.startAngle,!0)})),n=e-f.dragStartAngle,f.dragStartAngle=e,f.moveDuration=0,f._lastAngle+=180*n/I,o=(new Date).getTime(),(!f._lastTime||f._lastTime+f.timerThreshold<o)&&(f._lastTime||p._rotate(),f.timerId=setTimeout(function(){r.disposed&&r.disposing||p._rotate()},f.timerThreshold),f._lastTime=o))},$=function(t,e){return t._conf.index-e._conf.index||t._conf.cIndex-e._conf.cIndex||t._conf.isStart-e._conf.isStart||t._conf.si-e._conf.si},K=function(t,e){return t.point.value-e.point.value},Q=function(t,e){return t.angle-e.angle},tt=["start","start","end","end"],et=[-1,1,1,-1],ot=[1,1,-1,-1],nt={stroke:!0,strokeWidth:!0,"stroke-width":!0,dashstyle:!0,"stroke-dasharray":!0,translateX:!0,translateY:!0,"stroke-opacity":!0,fill:!0,"fill-opacity":!0,opacity:!0,transform:!0,cursor:!0,sAngle:!0,eAngle:!0,color:!0,alpha:!0,borderColor:!0,borderAlpha:!0,borderWidth:!0,rolloverProps:!0,showBorderEffect:!0,positionIndex:!0,cx:!0,cy:!0,radiusYFactor:!0,r:!0,innerR:!0},rt=function(t,e){var o,n,r,a,i,l,c,s=this,u=s._confObject,p={},f=u.elements,d=u.Pie3DManager;if(z(t)&&((c=e)!==v&&null!==c)&&(o=t,(t={})[o]=e),!t||z(t))s=nt[t]?u[t]:s._attr(t);else{for(o in t)n=t[o],nt[o]?(u[o]=n,"cursor"===o||"transform"===o||"opacity"===o||"fill-opacity"===o?(p[o]=n,l=!0):"sAngle"===o||"eAngle"===o||"cx"===o||"cy"===o||"radiusYFactor"===o||"r"===o||"innerR"===o?a=!0:"color"!==o&&"alpha"!==o&&"borderColor"!==o&&"borderAlpha"!==o&&"borderWidth"!==o||(i=!0)):s._attr(o,n);if(a&&(d._setSliceShape(u),d.refreshDrawing()),(i||a)&&d._setSliceCosmetics(u),l){for(r in f)f[r].attr(p);s._attr(p)}}return s},at=function(t,e,o){if(!o){var n,r=this._confObject.elements;for(n in r)r[n].on(t,e);return this._on(t,e)}this._on(t,e,!0)},it=function(t,e,o){var n,r=this._confObject.elements,a=m.navigator.userAgent.toLowerCase().indexOf("android")>-1;for(n in r)a&&"topBorder"!==n&&"frontOuter"!==n&&"startSlice"!==n&&"endSlice"!==n||r[n].drag(t,e,o);return this._drag(t,e,o)},lt=function(){var t,e=this._confObject.elements;for(t in e)e[t].hide();return this._hide()},ct=function(){var t,e=this._confObject.elements;for(t in e)e[t].show();return this._show()},st=function(){var t,e=this._confObject,o=e.elements;for(t in o)o[t].destroy();return i.hasSVG&&(e.clipTop.destroy(),e.clipOuterFront.destroy(),e.clipOuterBack.destroy(),e.clipOuterFront1&&e.clipOuterFront1.destroy(),e.clipInnerFront&&e.clipInnerFront.destroy(),e.clipInnerBack&&e.clipInnerBack.destroy()),this._destroy()},ut=function(t,e){var o,n=this._confObject.elements;if(e===v)return this._data(t);for(o in n)n[o].data(t,e);return this._data(t,e)},pt=0;(0,p.addDep)({name:"pie3dAnimation",type:"animationRule",extension:u["default"]});var ft=function(t){function e(){return h(this,e),g(this,t.apply(this,arguments))}return b(e,t),e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.setBorderWidth=v,e.alphaanimation=1,e.showBorderEffect=v},e.prototype.placeDataLabels=function(t){var e,o,n,a,l,c,s,u,p,f,d,h,g,b,y,m,w,O,S,P,T,F,V,z,H,W,Y,$,nt,rt,at,it,lt,ct,st,ut,pt,ft=this,dt=ft.getFromEnv("chart"),ht=dt.getFromEnv("toolTipController"),gt=dt.config,bt=ft.config,yt=ft.components.data,mt=bt.piePlotOptions,vt=gt.canvasLeft,Ct=gt.canvasTop,wt=gt.canvasWidth,Dt=vt+.5*gt.canvasWidth,_t=Ct+.5*gt.canvasHeight,Ot=dt.getFromEnv("smartLabel"),St=bt.dataLabelOptions,Pt=St.style,kt=(0,i.pluckNumber)(A(parseFloat(Pt.lineHeight)),12),xt=(0,i.getFirstValue)(St.placeInside,!1),Et=St.skipOverlapLabels,Nt=St.manageLabelOverflow,At=St.connectorPadding,jt=St.distance,Tt=St.connectorWidth,Mt=[[],[],[],[]],Ft=vt,Bt=Ct,It=wt,Lt=parseInt(Pt.fontSize,10),Rt=Lt,Gt=Rt/2,Vt=[At,At,-At,-At],zt=St.isSmartLineSlanted,Ht=jt>0,Wt=bt.center||(bt.center=[Dt,_t,mt.size,mt.innerSize||0]),Yt=Wt[1],Ut=Wt[0],Xt=Wt[2],Zt=Wt[4],Jt=bt.labelsRadius,qt=B(100*bt.labelsRadiusY)/100,$t=bt.maxLabels,Kt=bt.enableSmartLabels,Qt=bt.pieSliceDepth/2,te=dt.getFromEnv("animationManager"),ee=ft.getContainer("label-group");if(Ot.useEllipsesOnOverflow(gt.useEllipsesWhenOverflow),bt.dataLabelCounter)if(t||Ot.setStyle(Pt),1==yt.length)T=yt[0],at=T.graphics,rt=T.config,pt=rt._textAttrs,ut=rt._textCss,H=at.label,it=at.connector,rt.slicedTranslation=[Ft,Bt],null!==rt.y&&rt.y!==v&&(pt.visibility=C,pt["text-anchor"]="middle",pt.x=Ut,pt.y=Yt+Gt-2,pt._x=Ut),ut.cursor=rt.labellink?"pointer":"",(H=at.label=te.setAnimation({el:at.label||"text",attr:pt,css:ut,label:"label",container:ee,component:ft})).on("fc-dragstart",Z).on("fc-dragmove",q).on("fc-dragend",J).on("fc-click",r.labelClickFn.bind(H,dt,T.config.labellink)).on("fc-mouseup",(0,r.plotClickHandler)(ft,H)).on("fc-mouseover",U).on("fc-mouseout",X),pt._x&&(H.x=pt._x,delete pt.x),H.data("plotItem",pt.plotItem).data("eventArgs",pt.eventArgs),pt.visibility===C&&H.show(),it&&it.hide();else if(xt)(0,i.fcEach)(yt,function(t){var e,o,n;at=t.graphics,rt=t.config,pt=rt._textAttrs,H=at.label,null!==rt.y&&rt.y!==v&&(F=rt.angle,S=Yt+Wt[6]*j(F)+Gt-2,y=Ut+Wt[5]*M(F),pt._x=y,pt._y=S,rt.sliced&&(o=(e=t.slicedTranslation)[0]-Ft,n=e[1]-Bt,y+=o,S+=n),pt.visibility=C,pt.align="middle",pt.x=y,pt.y=S),ut.cursor=rt.labellink?"pointer":"",(H=at.label=te.setAnimation({el:at.label||"text",attr:pt,css:ut,label:"label",container:ee,component:ft})).data("plotItem",pt.plotItem).data("eventArgs",pt.eventArgs),pt.visibility===C&&H.show(),H.x=pt._x,H._x=pt._x,H._y=pt._y});else{for((0,i.fcEach)(yt,function(t){if(at=t.graphics,rt=t.config,ut=rt._textCss,!((pt=rt._textAttrs).text=rt.displayValue))return at.connector&&te.setAnimation({el:at.connector,component:ft,callback:r.hideFn}),void(at.label&&te.setAnimation({el:at.label,component:ft,callback:r.hideFn}));at=t.graphics,null!==rt.y&&rt.y!==v&&(H=at.label,(it=at.connector)&&it.show(),H&&H.show()),H=at.label,(F=rt.angle)<0&&(F=L+F),Mt[F>=0&&F<R?1:F<I?2:F<G?3:0].push({point:t,angle:F})}),a=4;a--;){if(Et&&(V=Mt[a].length-$t)>0)for(Mt[a].sort(K),c=0,f=(z=Mt[a].splice(0,V)).length;c<f;c+=1)T=z[c].point,(at=T.graphics).label&&te.setAnimation({el:at.label,attr:{visibility:"hidden"},component:ft}),at.connector&&te.setAnimation({el:at.connector,attr:{visibility:"hidden"},component:ft});Mt[a].sort(Q)}for(st=x(Mt[0].length,Mt[1].length,Mt[2].length,Mt[3].length),ct=x(E(st,$t)*Rt,qt+Rt),Mt[1].reverse(),Mt[3].reverse(),Ot.setStyle(Pt),d=4;d--;){for(f=(P=Mt[d]).length,Et||(Gt=(Rt=f>$t?ct/f:Lt)/2),p=f*Rt,o=ct,a=0;a<f;a+=1,p-=Rt)o<(s=N(ct*j(P[a].angle)))?s=o:s<p&&(s=p),o=(P[a].oriY=s)-Rt;for(n=tt[d],u=ct-(f-1)*Rt,o=0,a=P.length-1;a>=0;a-=1,u+=Rt)T=P[a].point,at=T.graphics,rt=T.config,pt=rt._textAttrs,ut=rt._textCss,null!==rt.y&&pt.text&&(F=P[a].angle,h=rt.sliced,H=at.label,(s=N(ct*j(F)))<o?s=o:s>u&&(s=u),o=s+Rt,w=(s+P[a].oriY)/2,g=Ut+ot[d]*Jt*M(k.asin(w/ct)),w*=et[d],w+=Yt,O=Yt+Zt*j(F),b=Ut+Xt*M(F),(d<2&&g<b||d>1&&g>b)&&(g=b),S=w+Gt-2,m=(y=g+Vt[d])+Vt[d],pt._x=m,Nt&&(l=d>1?m-vt:vt+It-m,Ot.setStyle(rt.style),kt=(0,i.pluckNumber)(A(parseFloat(rt.style.lineHeight)),12)+(2*A(parseFloat(rt.style.border),12)||0),nt=Ot.getSmartText(rt.displayValue,l,kt),pt.text=nt.text,pt.tooltip=nt.tooltext),F<I&&(w+=Qt,O+=Qt,S+=Qt),pt._y=S,h&&(Y=rt.transX,$=rt.transY,y+=Y,g+=Y,b+=Y,w+=$,O+=$,m+=Y),pt.visibility=C,pt["text-anchor"]=n,pt.x=m,pt.y=w,pt.opacity=1,ut.cursor=rt.labellink?"pointer":"",W=at.label,(H=te.setAnimation({el:W||"text",attr:pt,css:ut,container:ee,component:ft,label:"label"})).data("textPos",{x:m,y:w}).data("plotItem",pt.plotItem).data("eventArgs",pt.eventArgs),W||(at.label=H,H.on("fc-dragstart",Z).on("fc-dragmove",q).on("fc-dragend",J).on("fc-click",r.labelClickFn.bind(H,dt,T.config.labellink)).on("fc-click",(0,r.plotClickHandler)(ft,H)).on("fc-mouseover",U).on("fc-mouseout",X)),H.x=pt._x,H._x=pt._x,H.y=pt._y,pt.tooltip&&(ht.enableToolTip(H,pt.tooltip),delete pt.tooltip),Ht&&Tt&&Kt&&(it=at.connector,rt.connectorPath=lt=[D,b,O,_,zt?g:b,w,y,w],e={path:lt,"stroke-width":Tt,stroke:St.connectorColor||"#606060",opacity:1,visibility:C},it&&te.setAnimation({el:it,attr:e,label:"connector",component:ft})))}}},e.prototype._parsePie3DOptions=function(){var t=this.config;return{size:2*t.pieMinRadius,slicedOffset:t.slicingDistance,allowPointSelect:!0,cursor:"pointer",innerSize:"pie3d"===this.getName()?0:s._getInnerSize.call(this)}},e.prototype._parseBorderConfig=function(t,e,o){var n=this.config.pieBorderColor,r=this.getFromEnv("chart-attrib"),a=(0,i.pluck)(o.bordercolor,n),c=(0,i.pluck)(o.borderalpha,r.plotborderalpha,r.pieborderalpha);return{setPlotBorderColor:a=(0,i.pluck)(a,(0,l.getLightColor)(t,90)).split(",")[0],setPlotBorderAlpha:c=r.showplotborder==i.ZEROSTRING?i.ZEROSTRING:(0,i.pluck)(c,e,"80")}},e.prototype._initPie3dManager=function(){var t,e,o,n,r,a,l,c,s,u,p,f=this.getFromEnv("chart"),d=f.config,h=0,g=this.config,b=this.components,y=g.dataLabelOptions,m=g.pie3DOptions=this._parsePie3DOptions(),v=(0,i.pluck)(g.startAngle,0)%L,C=g.managedPieSliceDepth,w=g.slicedOffset=m.slicedOffset,D=d.canvasWidth,_=d.canvasHeight,O=[d.canvasLeft+.5*D,d.canvasTop+.5*_-.5*C],S=b.data,P=E(D,_),x=y.distance,N=g.pieYScale,A=g.slicedOffsetY||(g.slicedOffsetY=w*g.pieYScale),T=this.getFromEnv("pie3DManager");for(O.push(2*g.pieMinRadius,m.innerSize||0),(O=V(O,function(t,e){return/%$/.test(t)?[D,_-C,P,P][e]*H(t)/100:t}))[2]/=2,O[3]/=2,O.push(O[2]*N),O.push((O[2]+O[3])/2),O.push(O[5]*N),this.getX=function(t,e){return a=k.asin((t-O[1])/(O[2]+x)),O[0]+(e?-1:1)*(M(a)*(O[2]+x))},g.center=O,(0,i.fcEach)(S,function(t){h+=t.config.y}),g.labelsRadius=O[2]+x,g.labelsRadiusY=g.labelsRadius*N,g.quadrantHeight=(_-C)/2,g.quadrantWidth=D/2,c=(l=B(1e3*(l=v))/1e3)+L,e=(0,i.pluckNumber)(parseInt(y.style.fontSize,10),10)+4,g.maxLabels=F(g.quadrantHeight/e),g.labelFontSize=e,g.connectorPadding=(0,i.pluckNumber)(y.connectorPadding,5),g.isSmartLineSlanted=(0,i.pluck)(y.isSmartLineSlanted,!0),g.connectorWidth=(0,i.pluckNumber)(y.connectorWidth,1),g.enableSmartLabels=y.enableSmartLabels,T||(T=new dt(f),this.attachChild(T,"pie3DManager",!1),this.addToEnv("pie3DManager",T)),this._configurePie3DManager(),t=S.length-1;t>=0;t-=1)n=S[t].config,o=l,s=h?n.y/h:0,(l=B(1e3*(l+s*L))/1e3)>c&&(l=c),r=l,n.shapeArgs={sAngle:B(1e3*o)/1e3,eAngle:B(1e3*r)/1e3},n.centerAngle=a=(r+o)/2%L,n.slicedTranslation=[B(M(a)*w),B(j(a)*A)],u=M(a)*O[2],g.radiusY=p=j(a)*O[4],n.tooltipPos=[O[0]+.7*u,O[1]+p],n.percentage=100*s,n.total=h},e.prototype._configurePie3DManager=function(){var t=this.config,e=this.components,o=this.getFromEnv("pie3DManager"),n=e.data;o&&o.configure(t.pieSliceDepth,1===n.length,t.use3DLighting,!1)},e.prototype.allocatePosition=function(){var t,e,o,n,r,a,l,c=this.getFromEnv("chart").config,s=this.config,u=this.components.data,p=(0,i.pluck)(s.startAngle,0)%L,f=s.pie3DOptions=this._parsePie3DOptions(),d=s.pieYScale,h=s.managedPieSliceDepth,g=c.canvasWidth,b=c.canvasHeight,y=E(g,b),m=[c.canvasLeft+.5*g,c.canvasTop+.5*b-.5*h],v=0,C=u.length;for(m.push(2*s.pieMinRadius,f.innerSize||0),(m=V(m,function(t,e){return/%$/.test(t)?[g,b-h,y,y][e]*H(t)/100:t}))[2]/=2,m[3]/=2,m.push(m[2]*d),m.push((m[2]+m[3])/2),m.push(m[5]*d),s.center=m,(0,i.fcEach)(u,function(t){v+=t.config.y}),l=(p=B(1e3*p)/1e3)+L,t=u.length-1;t>=0;t-=1)r=u[t],o=p,a=v?r.config.y/v:0,(p=B(1e3*(p+a*L))/1e3)>l&&(p=l),n=p,r.config.shapeArgs={sAngle:B(1e3*o)/1e3,eAngle:B(1e3*n)/1e3};for(t=0;t<C;t++)e=u[t],this.parsePlotAttributes(e,t),this.parseLabelAttributes(e,t)},e.prototype.parsePlotAttributes=function(t,e){var o,n,r,a,l,c,s,u,p,f,d,h,g,b,y,m,C,w,D=this.components,_=this.config,O=this.getFromEnv("chart"),S=O.config,P=D.data,k=_.dataLabelOptions,x=k.style,E=_.slicingDistance,N=_.slicedOffsetY||(_.slicedOffsetY=E*_.pieYScale),A=_.showBorderEffect,T=P.length,F=_.usePerPointLabelColor,B=S.textDirection,I=e,L=S.dataLabelStyle;o=_.center,_.prevPositions,n=_.pieYScale,(b=(g=t.config)._textAttrs)||(b=g._textAttrs={}),(y=g._textCss)||(y=g._textCss={}),l=g.y,c=g.displayValue,u=g.sliced,d=g.shapeArgs,p=g.centerAngle,h=g.toolText,s=!!g.link,x=g.style,null!==l&&l!==v&&(m={sAngle:d.sAngle,eAngle:d.eAngle,r:o[2],innerR:o[3],cx:o[0],cy:o[1],radiusYFactor:n,opacity:1},c!==v?(x?((y=g._textCss)||(y=g._textCss={}),y.fontFamily=x.fontFamily,y.fontSize=x.fontSize,y.lineHeight=x.lineHeight,y.fontWeight=x.fontWeight,y.fontStyle=x.fontStyle):g._textCss&&(delete g._textCss,y=v),g.style=x||(x=L),b.text=c,b.fill=(F?(0,i.toRaphaelColor)(g.color):x.color)||"#000000",b["text-bound"]=[x.backgroundColor,x.borderColor,x.borderThickness,x.borderPadding,x.borderRadius,x.borderDash],b.direction=B,b.lineHeight=x.lineHeight,k.distance>0&&(f=k.connectorWidth)&&k.enableSmartLabels&&(C={"stroke-width":f,stroke:k.connectorColor||"#606060",cursor:s?"pointer":"",opacity:1})):b.text="",g.plotItem=a={chart:O,index:I,seriesData:_,value:l,angle:g.angle=p,link:g.link,shapeArgs:d,slicedX:u&&!_.singletonCase?M(p)*E:0,slicedY:u&&!_.singletonCase?j(p)*N:0,sliced:u,labelText:c,name:g.name,percentage:g.percentage,toolText:h,originalIndex:T-I-1,style:g.style,transX:g.transX=M(p)*E,transY:g.transY=j(p)*N,slicedTranslation:g.slicedTranslation="t"+g.transX+","+g.transY,label:void 0,connector:void 0},g.eventArgs=r={index:_.reversePlotOrder?T-1-I:I,link:g.link,value:g.y,displayValue:g.displayValueArgs,categoryLabel:g.categoryLabel,isSliced:g.sliced,toolText:g.toolText},w={color:g.color.color.split(",")[0],alpha:g._3dAlpha,borderWidth:g.borderWidth,borderColor:g.borderColor,borderAlpha:g.borderConfig.setPlotBorderAlpha},(0,i.extend2)(m,w),m.cursor=s?"pointer":"",m.showBorderEffect=A,m.transform="t"+a.slicedX+","+a.slicedY,b.plotItem=a,b.eventArgs=r,g.props={element:{attr:m},connector:{attr:C},label:{attr:b,css:y}})},e.prototype.draw=function(){var t,e,o,n,a,l,c,s,u,p,f,d,h,g,b,y,m,C,w,D,_,O,S,P,k,x,E,N,A=this,T=A.components,F=A.config,B=A.getFromEnv("chart"),I=B.config,L=B.getFromEnv("animationManager"),R=T.data,G=F.dataLabelOptions,V=G.style,z=F.slicingDistance,H=F.slicedOffsetY||(F.slicedOffsetY=z*F.pieYScale),W=F.showBorderEffect,Y=R.length,$=F.usePerPointLabelColor,K=I.textDirection,Q=F.valueTotal,tt=T.removeDataArr||[],et=A.getState("visible"),ot=A.getContainer("labelGroup"),nt={},rt=A.getFromEnv("toolTipController"),at=I.dataLabelStyle;for(A.getContainer("pie-groups")||A._createContainer(),ot=A.getContainer("label-group"),D=A.getContainer("plot-group"),L.setAnimation({el:ot,attr:{css:at},component:A,label:"labelcontainer",callback:function(){et&&Q?(ot.show(),D.show()):(ot.hide(),D.hide())}}),A._initPie3dManager(),o=A.getFromEnv("pie3DManager"),tt.length&&A.remove(),t=F.center,F.prevPositions||t,e=F.pieYScale,R&&Y||(R=[]),w=-1;++w<Y;)if((O=(b=(l=R[w]).config)._textAttrs)||(O=b._textAttrs={}),y=l.graphics,c=b.y,s=b.displayValue,p=b.sliced,h=b.shapeArgs,f=b.centerAngle,g=b.toolText,u=!!b.link,V=b.style,null!==c&&c!==v){for(E in _=y.element,m=y.label,C=y.connector,P={sAngle:h.sAngle,eAngle:h.eAngle,r:t[2],innerR:t[3],cx:t[0],cy:t[1],radiusYFactor:e,opacity:1},_?x=!1:(x=!0,(_=y.element=o.useSliceFromPool())||(_=y.element=o.createSlice().drag(q,Z,J).on("fc-mouseover",U).on("fc-mouseout",X)).on("fc-click",(0,r.plotClickHandler)(A,_))),s!==v&&(V?((S=b._textCss)||(S=b._textCss={}),S.fontFamily=V.fontFamily,S.fontSize=V.fontSize,S.lineHeight=V.lineHeight,S.fontWeight=V.fontWeight,S.fontStyle=V.fontStyle):b._textCss&&(m&&m.removeCSS(),delete b._textCss,S=v),b.style=V||(V=at),O.text=s,O.fill=($?(0,i.toRaphaelColor)(b.color):V.color)||"#000000",O["text-bound"]=[V.backgroundColor,V.borderColor,V.borderThickness,V.borderPadding,V.borderRadius,V.borderDash],O.direction=K,O.lineHeight=V.lineHeight,m&&S&&(L.setAnimation({el:m,attr:{css:S},component:A}),delete S.fontFamily,delete S.fontSize,delete S.lineHeight,delete S.fontWeight,delete S.fontStyle,S=v),G.distance>0&&(d=G.connectorWidth)&&G.enableSmartLabels&&(k={"stroke-width":d,stroke:G.connectorColor||"#606060",cursor:u?"pointer":"",opacity:1},ot.show(),C=y.connector=L.setAnimation({el:y.connector||"path",attr:k,container:ot,label:"connector",component:A}).show().on("fc-dragstart",Z).on("fc-dragmove",q).on("fc-dragend",J).on("fc-mouseover",U).on("fc-mouseout",X))),Q?(m&&m.show(),C&&C.show()):(m&&m.hide(),C&&C.hide()),a={chart:B,index:w,seriesData:F,value:c,angle:b.angle=f,link:b.link,shapeArgs:h,slicedX:p&&!F.singletonCase?M(f)*z:0,slicedY:p&&!F.singletonCase?j(f)*H:0,sliced:p,labelText:s,name:b.name,percentage:b.percentage,toolText:g,originalIndex:Y-w-1,style:b.style,graphic:_,transX:b.transX=M(f)*z,transY:b.transY=j(f)*H,slicedTranslation:b.slicedTranslation="t"+b.transX+","+b.transY,label:m,connector:C},n={index:F.reversePlotOrder?Y-1-w:w,link:b.link,value:b.y,displayValue:b.displayValueArgs,categoryLabel:b.categoryLabel,isSliced:b.sliced,toolText:b.toolText},nt={color:b.color.color.split(",")[0],alpha:b._3dAlpha,borderWidth:b.borderWidth,borderColor:b.borderColor,borderAlpha:b.borderConfig.setPlotBorderAlpha},x&&(0,i.extend2)(P,nt),_.data("groupId",w).data("plotItem",a).data("eventArgs",n),_.data("groupId",w).data("plotItem",a).data("eventArgs",n),P.cursor=u?"pointer":"",P.showBorderEffect=W,P.color=b.color.color.split(",")[0],P.alpha=b._3dAlpha,P.borderWidth=b.borderWidth,P.borderColor=b.borderColor,rt.enableToolTip(_,g),N=_._confObject.elements)rt.enableToolTip(N[E],g);P.transform="t"+a.slicedX+","+a.slicedY,O.plotItem=a,O.eventArgs=n,L.setAnimation({el:_,attr:P,component:A,label:"slice",state:x?"appearing":"updating"}),C&&C.data("plotItem",a).data("eventArgs",n)}ot.show(),A.placeDataLabels(!1),A.drawn=!0,F.prevPositions=t.slice(0)},e.prototype.remove=function(){var t,e,o,n,r=this.config,a=this.components,i=this.getFromEnv("animationManager"),l=a.removeDataArr||[],c=this.pool=this.pool=[],s=l.length,u=this.getFromEnv("pie3DManager"),p=function(t,e){return function(){e===w?(u.removeSlice(t.element),delete t.element):t[e].hide()}},f=r.startAngle,d=r.center;for(o=0;o<s;o++){for(t in e=l[0].graphics)n=e[t],c[t]||(c[t]=[]),t===w?i.setAnimation({el:n,attr:{sAngle:-f,eAngle:.01-f,r:d[2],innerR:d[3],cx:d[0],cy:d[1]},component:this,callback:p(e,t)}):i.setAnimation({el:n,attr:{opacity:0},component:this,callback:p(e,t)});l.splice(0,1)}},e.prototype._rotate=function(t){var e,o=this,n=o.config,r=o.getFromEnv("animationManager"),a=o.components.data,l=n.slicedOffset,c=n.slicedOffsetY,s=n.startAngle,u=o.getFromEnv("pie3DManager");t=isNaN(t)?-n._lastAngle:t,e=(t-s)%360,n.startAngle=(0,i.pluckNumber)(t,n.startAngle)%360,e=-e*I/180,u&&u.rotate(e),(0,i.fcEach)(a,function(t){var n,a=t.graphics,s=t.config,u=a.element,p=s.shapeArgs,f=p.sAngle+=e,d=p.eAngle+=e,h=s.angle=(0,i.normalizeAngle)((f+d)/2),g=s.sliced,b=M(h),y=j(h);n=s.slicedTranslation=[B(b*l),B(y*c)],s.transX=n[0],s.transY=n[1],s.slicedX=g?M(e)*l:0,s.slicedY=g?j(e)*c:0,u&&g&&r.setAnimation({el:u,attr:{transform:"t"+n[0]+","+n[1]},component:o})}),o.placeDataLabels(!0,a)},e.prototype.foldingFn=function(){var t=this.config.startAngle;return{sAngle:-t,eAngle:.01-t}},e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"pie3d"},e}(a["default"]);y&&y._availableAnimAttrs&&y._availableAnimAttrs.cx&&(y._availableAnimAttrs.innerR=y._availableAnimAttrs.depth=y._availableAnimAttrs.radiusYFactor=y._availableAnimAttrs.sAngle=y._availableAnimAttrs.eAngle=y._availableAnimAttrs.cx),(0,f["default"])(y);var dt=function(t){function e(o){h(this,e);var n=g(this,t.call(this)),r=n;return r.config={},r.linkedItems={chart:o},n}return b(e,t),e.prototype.getType=function(){return"pie3DManager"},e.prototype.getName=function(){return"pie3d"},e.prototype.createSlice=function(){var t=this.renderer,e=void 0,o={elements:{},Pie3DManager:this},n=this.slicingWallsArr,r=o.elements,a=i.hasSVG?"litepath":"path";return(e=t[a](this.getContainer("topGroup")))._confObject=o,o.thisElement=e,e._destroy=e.destroy,e.destroy=st,e._show=e.show,e.show=ct,e._hide=e.hide,e.hide=lt,e._on=e.on,e.on=at,e._drag=e.drag,e.drag=it,e._attr=e.attr,e.attr=rt,e._data=e.data,e.data=ut,this.pointElemStore.push(e),r.topBorder=t[a](this.getContainer("topGroup")),r.bottom=t[a](this.getContainer("bottomBorderGroup")).attr({"stroke-width":0}),r.bottomBorder=t[a](this.getContainer("bottomBorderGroup")),r.frontOuter=t[a](this.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0}),r.backOuter=t[a](this.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0}),r.startSlice=t[a](this.getContainer("slicingWallsFrontGroup")),r.endSlice=t[a](this.getContainer("slicingWallsFrontGroup")),r.frontOuter1=t[a](this.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0}),r.frontOuter._conf={si:pt,isStart:.5},r.frontOuter1._conf={si:pt,isStart:.5},r.startSlice._conf={si:pt,isStart:0},r.endSlice._conf={si:pt,isStart:1},r.backOuter._conf={si:pt,isStart:.4},n.push(r.startSlice,r.frontOuter1,r.frontOuter,r.backOuter,r.endSlice),this.isDoughnut&&(r.frontInner=t[a](this.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0}),r.backInner=t[a](this.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0}),r.backInner._conf={si:pt,isStart:.5},r.frontInner._conf={si:pt,isStart:.4},n.push(r.frontInner,r.backInner)),pt+=1,e},e.prototype.refreshDrawing=function(){var t=this.slicingWallsArr,e=0,o=void 0,n=t.length,r=void 0,a=void 0,i=void 0,l=void 0,c=this.getContainer("slicingWallsFrontGroup"),s=this.getContainer("slicingWallsBackGroup");for(t.sort($),r=function(t){var e,o,n,r,a=t[0]&&t[0]._conf.index;for(n=a<=I,o=1,e=t.length;o<e;o+=1)if((r=t[o]._conf.index)<=I!==n||r<a)return o;return 0}(t);e<n;e+=1,r+=1)r===n&&(r=0),(l=(o=t[r])._conf.index)<R?c.appendChild(o):l<=I?(a?o.insertBefore(a):c.appendChild(o),a=o):l<=G?(i?o.insertBefore(i):s.appendChild(o),i=o):s.appendChild(o)},e.prototype.configure=function(t,e,o,r){var a,i=this.getLinkedParent(),l=this.getFromEnv("paper"),c=i.getContainer("plot-group");"object"===(void 0===(a=t)?"undefined":n(a))&&(e=(t=t.depth).hasOnePoint,o=t.use3DLighting,r=t.isDoughnut),this.renderer||(this.renderer=l),this.hasOnePoint=e,this.use3DLighting=o,this.isDoughnut=r,this.depth=t,!this.getContainer("bottomBorderGroup")&&this.addContainer("bottomBorderGroup",l.group("bottom-border",c)),this.getContainer("bottomBorderGroup").attr({transform:"t0,"+t}),!this.getContainer("slicingWallsBackGroup")&&this.addContainer("slicingWallsBackGroup",l.group("slicingWalls-back-Side",c)),!this.getContainer("slicingWallsFrontGroup")&&this.addContainer("slicingWallsFrontGroup",l.group("slicingWalls-front-Side",c)),!this.getContainer("topGroup")&&this.addContainer("topGroup",l.group("top-Side",c)),!this.pointElemStore&&(this.pointElemStore=[]),!this.slicingWallsArr&&(this.slicingWallsArr=[]),this.moveCmdArr=[D],this.lineCmdArr=[_],this.closeCmdArr=[P],this.colorObjs=[]},e.prototype._parseSliceColor=function(t,e,o){var n,r,a,c,s,u,p,f,d,h,g,b,y,m,v,C,w,D,_,O,S=3,P=this.use3DLighting,k=P?W.lighting3D:W.lighting2D,x=o.radiusYFactor,E=o.cx,N=o.cy,A=o.r,j=A*x,T=o.innerR||0,M=E+A,F=E-A,B=E+T,I=E-T;return~t.indexOf("rgb")&&(t=(0,l.rawRGBtoHEX)(t)),g=(e=e||100)/2,k[t]&&k[t][e]?O=k[t][e]:(k[t]||(k[t]={}),k[t][e]||(k[t][e]={}),O=k[t][e],P?(n=(0,l.getDarkColor)(t,80),r=(0,l.getDarkColor)(t,75),u=(0,l.getLightColor)(t,85),p=(0,l.getLightColor)(t,70),f=(0,l.getLightColor)(t,40),d=(0,l.getLightColor)(t,50),h=(0,l.getLightColor)(t,65),a=(0,l.getDarkColor)(t,69),c=(0,l.getDarkColor)(t,75),s=(0,l.getDarkColor)(t,95)):(S=10,n=(0,l.getDarkColor)(t,90),r=(0,l.getDarkColor)(t,87),u=(0,l.getLightColor)(t,93),p=(0,l.getLightColor)(t,87),f=(0,l.getLightColor)(t,80),h=d=(0,l.getLightColor)(t,85),s=(0,l.getDarkColor)(t,85),a=(0,l.getDarkColor)(t,75),c=(0,l.getDarkColor)(t,80)),b=r+","+u+","+p+","+u+","+r,m=e+","+e+","+e+","+e+","+e,y=r+","+t+","+u+","+t+","+r,v=g+","+g+","+g+","+g+","+g,w=r+","+t+","+f+","+t+","+r,D=c+","+u+","+d+","+u+","+a,_="FFFFFF,FFFFFF,FFFFFF,FFFFFF,FFFFFF",C="0,"+g/S+","+e/S+","+g/S+",0",i.hasSVG?O.top={FCcolor:{gradientUnits:"userSpaceOnUse",radialGradient:!0,color:h+","+s,alpha:e+","+e,ratio:"0,100"}}:O.top={FCcolor:{gradientUnits:"objectBoundingBox",color:p+","+p+","+u+","+r,alpha:e+","+e+","+e+","+e,angle:-72,ratio:"0,8,15,77"}},O.frontOuter={FCcolor:{gradientUnits:"userSpaceOnUse",y1:0,y2:0,color:D,alpha:m,angle:0,ratio:"0,20,15,15,50"}},O.backOuter={FCcolor:{gradientUnits:"userSpaceOnUse",y1:0,y2:0,color:w,alpha:v,angle:0,ratio:"0,62,8,8,22"}},O.frontInner={FCcolor:{gradientUnits:"userSpaceOnUse",y1:0,y2:0,color:y,alpha:v,angle:0,ratio:"0,25,5,5,65"}},O.backInner={FCcolor:{gradientUnits:"userSpaceOnUse",y1:0,y2:0,color:b,alpha:m,angle:0,ratio:"0,62,8,8,22"}},O.topBorder={FCcolor:{gradientUnits:"userSpaceOnUse",y1:0,y2:0,color:_,alpha:C,angle:0,ratio:"0,20,15,15,50"}},O.topInnerBorder={FCcolor:{gradientUnits:"userSpaceOnUse",y1:0,y2:0,color:_,alpha:C,angle:0,ratio:"0,50,15,15,20"}},O.bottom=(0,i.toRaphaelColor)((0,l.convertColor)(t,g)),O.startSlice=(0,i.toRaphaelColor)((0,l.convertColor)(n,e)),O.endSlice=(0,i.toRaphaelColor)((0,l.convertColor)(n,e))),O.cx===E&&O.cy===N&&O.rx===A&&O.radiusYFactor===x&&O.innerRx===T||(i.hasSVG&&(O.top.FCcolor.cx=E,O.top.FCcolor.cy=N,O.top.FCcolor.r=A,O.top.FCcolor.fx=E-.3*A,O.top.FCcolor.fy=N+1.2*j),O.topBorder.FCcolor.x1=O.backOuter.FCcolor.x1=O.frontOuter.FCcolor.x1=F,O.topBorder.FCcolor.x2=O.backOuter.FCcolor.x2=O.frontOuter.FCcolor.x2=M,O.topInnerBorder.FCcolor.x1=O.backInner.FCcolor.x1=O.frontInner.FCcolor.x1=I,O.topInnerBorder.FCcolor.x2=O.backInner.FCcolor.x2=O.frontInner.FCcolor.x2=B,O.cx=E,O.cy=N,O.rx=A,O.radiusYFactor=x,O.innerRx=T),O},e.prototype.allocatePosition=function(){},e.prototype.rotate=function(t){var e,o=this.pointElemStore,n=0,r=o.length;if(!this.hasOnePoint){for(;n<r;n+=1)(e=o[n]._confObject).sAngle+=t,e.eAngle+=t,this._setSliceShape(e);this.refreshDrawing()}},e.prototype.removeSlice=function(t){var e,o,n=this.pointElemStore,r=t._confObject.elements,a=this.slicingWallsArr,i=n.length;for(e=i-1;e>=0;e-=1)n[e]===t&&n.splice(e,1);for(e=(i=a.length)-1;e>=0;e-=1)(o=a[e])!==r.startSlice&&o!==r.frontOuter1&&o!==r.frontOuter&&o!==r.backInner&&o!==r.endSlice||a.splice(e,1);t.hide&&t.hide(),this._slicePool||(this._slicePool=[]),this._slicePool.push(t),this.refreshDrawing()},e.prototype.useSliceFromPool=function(){var t,e=this._slicePool||(this._slicePool=[]),o=this.slicingWallsArr,n=!1;return e.length&&(n=e.shift(),this.pointElemStore.push(n),n.show(),t=n._confObject.elements,o.push(t.startSlice,t.frontOuter1,t.frontOuter),t.backInner&&o.push(t.backInner),o.push(t.endSlice)),n},e.prototype._setSliceShape=function(t,e){var o,n,r,a,l,c,s,u,p,f,d,h,g,b,y,m,v,C,w,k,x,E,N,A,T,F,B,V,z,H,W,Y,U,X,Z,J,q,$,K,Q,tt,et,ot,nt=function(t,e,o,n,r,a,i,l){return t==o&&e==n?[]:[S,r,a,0,l,i,o,n]},rt=t.sAngle,at=t.eAngle,it=(0,i.normalizeAngle)(rt),lt=(0,i.normalizeAngle)(at),ct=this.isDoughnut,st=t.radiusYFactor,ut=t.cx,pt=t.cy,ft=t.r,dt=ft*st,ht=ft+(i.hasSVG?-1:2),gt=dt+(i.hasSVG?-1:2),bt=t.innerR||0,yt=bt*st,mt=this.depth,vt=mt+pt,Ct=ut+ft,wt=ut-ft,Dt=ut+bt,_t=ut-bt,Ot=pt-dt,St=[D,_t,Ot,_,_t,vt+dt,P],Pt=t.elements,kt="path",xt=(it+lt)/2,Et=it>lt;n=M(it),r=j(it),a=M(lt),l=j(lt),c=ut+ft*n,u=ut+ht*n,p=pt+gt*r,C=(s=pt+dt*r)+mt,w=ut+ft*a,f=ut+ht*a,d=pt+gt*l,x=(k=pt+dt*l)+mt,ct?(h=ut+bt*n,m=(g=pt+yt*r)+mt,b=ut+bt*a,v=(y=pt+yt*l)+mt,t.startSlice=[D,c,s,_,c,C,h,m,h,g,P],t.endSlice=[D,w,k,_,w,x,b,v,b,y,P]):(t.startSlice=[D,c,s,_,c,C,ut,vt,ut,pt,P],t.endSlice=[D,w,k,_,w,x,ut,vt,ut,pt,P]),i.hasSVG?(o=function(t,e){return(t>e?L:0)+e-t}(it,lt),t.clipTopPath=ct?[[D,c,s,S,ft,dt,0,o>I?1:0,1,w,k,_,b,y,S,bt,yt,0,o>I?1:0,0,h,g,P]]:[[D,c,s,S,ft,dt,0,o>I?1:0,1,w,k,_,ut,pt,P]],t.clipOuterFrontPath1=[St],t.clipTopBorderPath=[[D,u,p,S,ht,gt,0,o>I?1:0,1,f,d,_,w,k,w,k+1,S,ft,dt,0,o>I?1:0,0,c,s+1,_,c,s,P]],rt!=at?it>lt?it<I?(t.clipOuterFrontPath=[[D,Ct,pt,S,ft,dt,0,0,1,w,k,O,mt,S,ft,dt,0,0,0,Ct,pt+mt,P]],t.clipOuterFrontPath1=[[D,wt,pt,S,ft,dt,0,0,0,c,s,O,mt,S,ft,dt,0,0,1,wt,pt+mt,P]],t.clipOuterBackPath=[[D,Ct,pt,S,ft,dt,0,1,0,wt,pt,O,mt,S,ft,dt,0,1,1,Ct,pt+mt,P]],ct&&(t.clipInnerBackPath=[[D,Dt,pt,S,bt,yt,0,1,0,_t,pt,O,mt,S,bt,yt,0,1,1,Dt,pt+mt,P]],t.clipInnerFrontPath=[[D,Dt,pt,S,bt,yt,0,0,1,b,y,O,mt,S,bt,yt,0,0,0,Dt,pt+mt,P,D,_t,pt,S,bt,yt,0,0,0,h,g,O,mt,S,bt,yt,0,0,1,_t,pt+mt,P]])):lt>I?(t.clipOuterFrontPath=[[D,Ct,pt,S,ft,dt,0,1,1,wt,pt,O,mt,S,ft,dt,0,1,0,Ct,pt+mt,P]],t.clipOuterBackPath=[[D,wt,pt,S,ft,dt,0,0,1,w,k,O,mt,S,ft,dt,0,0,0,wt,pt+mt,P,D,Ct,pt,S,ft,dt,0,0,0,c,s,O,mt,S,ft,dt,0,0,1,Ct,pt+mt,P]],ct&&(t.clipInnerFrontPath=[[D,Dt,pt,S,bt,yt,0,1,1,_t,pt,O,mt,S,bt,yt,0,1,0,Dt,pt+mt,P]],t.clipInnerBackPath=[[D,_t,pt,S,bt,yt,0,0,1,b,y,O,mt,S,bt,yt,0,0,0,_t,pt+mt,P,D,Dt,pt,S,bt,yt,0,0,0,h,g,O,mt,S,bt,yt,0,0,1,Dt,pt+mt,P]])):(t.clipOuterFrontPath=[[D,Ct,pt,S,ft,dt,0,0,1,w,k,O,mt,S,ft,dt,0,0,0,Ct,pt+mt,P]],t.clipOuterBackPath=[[D,c,s,S,ft,dt,0,0,1,Ct,pt,O,mt,S,ft,dt,0,0,0,c,C,P]],ct&&(t.clipInnerFrontPath=[[D,Dt,pt,S,bt,yt,0,0,1,b,y,O,mt,S,bt,yt,0,0,0,Dt,pt+mt,P]],t.clipInnerBackPath=[[D,h,g,S,bt,yt,0,0,1,Dt,pt,O,mt,S,bt,yt,0,0,0,h,m,P]])):it<I?lt>I?(t.clipOuterFrontPath=[[D,c,s,S,ft,dt,0,0,1,wt,pt,O,mt,S,ft,dt,0,0,0,c,C,P]],t.clipOuterBackPath=[[D,wt,pt,S,ft,dt,0,0,1,w,k,O,mt,S,ft,dt,0,0,0,wt,pt+mt,P]],ct&&(t.clipInnerFrontPath=[[D,h,g,S,bt,yt,0,0,1,_t,pt,O,mt,S,bt,yt,0,0,0,h,m,P]],t.clipInnerBackPath=[[D,_t,pt,S,bt,yt,0,0,1,b,y,O,mt,S,bt,yt,0,0,0,_t,pt+mt,P]])):(t.clipOuterFrontPath=[[D,c,s,S,ft,dt,0,0,1,w,k,O,mt,S,ft,dt,0,0,0,c,C,P]],t.clipOuterBackPath=[St],ct&&(t.clipInnerFrontPath=[[D,h,g,S,bt,yt,0,0,1,b,y,O,mt,S,bt,yt,0,0,0,h,m,P]],t.clipInnerBackPath=[St])):(t.clipOuterFrontPath=[St],t.clipOuterBackPath=[[D,c,s,S,ft,dt,0,0,1,w,k,O,mt,S,ft,dt,0,0,0,c,C,P]],ct&&(t.clipInnerFrontPath=[St],t.clipInnerBackPath=[[D,h,g,S,bt,yt,0,0,1,b,y,O,mt,S,bt,yt,0,0,0,h,m,P]])):t.clipOuterFrontPath=t.clipOuterBackPath=t.clipInnerBackPath=t.clipInnerFrontPath=[St],kt="litepath",t.clipBottomBorderPath=t.clipTopPath,t.startSlice=[t.startSlice],t.endSlice=[t.endSlice]):(V=this.moveCmdArr,z=this.lineCmdArr,H=this.closeCmdArr,W=[ut,pt],Y=[wt,pt],U=[ut,Ot],X=[Ct,pt],Z=[ut,pt+dt],J=[wt,vt],q=[Ct,vt],$=[_t,pt],K=[Dt,pt],Q=[_t,vt],tt=[Dt,vt],t.clipOuterFrontPath1=[],rt!=at?(it>lt?it<I?(E=nt(c,s,wt,pt,ft,dt,1,0),A=nt(wt,pt,Ct,pt,ft,dt,1,0),F=nt(Ct,pt,w,k,ft,dt,1,0),t.clipOuterBackPath=V.concat(Y,A,z,q,nt(Ct,vt,wt,vt,ft,dt,0,0),H),t.clipOuterFrontPath1=V.concat([c,s],E,z,J,nt(wt,vt,c,C,ft,dt,0,0),H),t.clipOuterFrontPath=V.concat(X,F,z,[w,x],nt(w,x,Ct,vt,ft,dt,0,0),H),t.clipTopBorderPath=V.concat([c,s],E,A,F),ct?(N=nt(b,y,Dt,pt,bt,yt,0,0),T=nt(Dt,pt,_t,pt,bt,yt,0,0),B=nt(_t,pt,h,g,bt,yt,0,0),t.clipInnerBackPath=V.concat(K,T,z,Q,nt(_t,vt,Dt,vt,bt,yt,1,0),H),t.clipInnerFrontPath=V.concat($,B,z,[h,m],nt(h,m,_t,vt,bt,yt,1,0),H,V,[b,y],N,z,tt,nt(Dt,vt,b,v,bt,yt,1,0),H),t.clipTopPath=t.clipTopBorderPath.concat(z,[b,y],N,T,B,H),t.clipTopBorderPath=t.clipTopBorderPath.concat(V,[b,y],N,T,B)):t.clipTopPath=t.clipTopBorderPath.concat(z,W,H)):lt>I?(E=nt(c,s,Ct,pt,ft,dt,1,0),A=nt(Ct,pt,wt,pt,ft,dt,1,0),F=nt(wt,pt,w,k,ft,dt,1,0),t.clipOuterFrontPath=V.concat(X,A,z,J,nt(wt,vt,Ct,vt,ft,dt,0,0),H),t.clipOuterBackPath=V.concat([c,s],E,z,q,nt(Ct,vt,c,C,ft,dt,0,0),H,V,Y,F,z,[w,x],nt(w,x,wt,vt,ft,dt,0,0),H),t.clipTopBorderPath=V.concat([c,s],E,A,F),ct?(N=nt(b,y,_t,pt,bt,yt,0,0),T=nt(_t,pt,Dt,pt,bt,yt,0,0),B=nt(Dt,pt,h,g,bt,yt,0,0),t.clipInnerFrontPath=V.concat($,T,z,tt,nt(Dt,vt,_t,vt,bt,yt,1,0),H),t.clipInnerBackPath=V.concat(K,B,z,[h,m],nt(h,m,Dt,vt,bt,yt,1,0),H,V,[b,y],N,z,Q,nt(_t,vt,b,v,bt,yt,1,0),H),t.clipTopPath=t.clipTopBorderPath.concat(z,[b,y],N,T,B,H),t.clipTopBorderPath=t.clipTopBorderPath.concat(V,[b,y],N,T,B)):t.clipTopPath=t.clipTopBorderPath.concat(z,W,H)):(E=nt(c,s,Ct,pt,ft,dt,1,0),A=nt(Ct,pt,w,k,ft,dt,1,0),t.clipOuterFrontPath=V.concat(X,A,z,[w,x],nt(w,x,Ct,vt,ft,dt,0,0),H),t.clipOuterBackPath=V.concat([c,s],E,z,q,nt(Ct,vt,c,C,ft,dt,0,0),H),t.clipTopBorderPath=V.concat([c,s],E,A),ct?(N=nt(b,y,Dt,pt,bt,yt,0,0),T=nt(Dt,pt,h,g,bt,yt,0,0),t.clipInnerFrontPath=V.concat([b,y],N,z,tt,nt(Dt,vt,b,v,bt,yt,1,0),H),t.clipInnerBackPath=V.concat(K,T,z,[h,m],nt(h,m,Dt,vt,bt,yt,1,0),H),t.clipTopPath=t.clipTopBorderPath.concat(z,[b,y],N,T,H),t.clipTopBorderPath=t.clipTopBorderPath.concat(V,[b,y],N,T)):t.clipTopPath=t.clipTopBorderPath.concat(z,W,H)):it<I?lt>I?(E=nt(c,s,wt,pt,ft,dt,1,0),A=nt(wt,pt,w,k,ft,dt,1,0),t.clipOuterBackPath=V.concat(Y,A,z,[w,x],nt(w,x,wt,vt,ft,dt,0,0),H),t.clipOuterFrontPath=V.concat([c,s],E,z,J,nt(wt,vt,c,C,ft,dt,0,0),H),t.clipTopBorderPath=V.concat([c,s],E,A),ct?(N=nt(b,y,_t,pt,bt,yt,0,0),T=nt(_t,pt,h,g,bt,yt,0,0),t.clipInnerBackPath=V.concat([b,y],N,z,Q,nt(_t,vt,b,v,bt,yt,1,0),H),t.clipInnerFrontPath=V.concat($,T,z,[h,m],nt(h,m,_t,vt,bt,yt,1,0),H),t.clipTopPath=t.clipTopBorderPath.concat(z,[b,y],N,T,H),t.clipTopBorderPath=t.clipTopBorderPath.concat(V,[b,y],N,T)):t.clipTopPath=t.clipTopBorderPath.concat(z,W,H)):(E=nt(c,s,w,k,ft,dt,1,0),t.clipOuterBackPath=V.concat([c,s]),t.clipTopBorderPath=t.clipOuterBackPath.concat(E),t.clipOuterFrontPath=t.clipTopBorderPath.concat(z,[w,x],nt(w,x,c,C,ft,dt,0,0),H),ct?(N=nt(b,y,h,g,bt,yt,0,0),t.clipInnerBackPath=V.concat([b,y]),t.clipTopPath=t.clipTopBorderPath.concat(z,[b,y],N,H),t.clipTopBorderPath=t.clipTopBorderPath.concat(V,[b,y],N),t.clipInnerFrontPath=t.clipInnerBackPath.concat(N,z,[h,m],nt(h,m,b,v,bt,yt,1,0),H)):t.clipTopPath=t.clipTopBorderPath.concat(z,W,H)):(E=nt(c,s,w,k,ft,dt,1,0),t.clipOuterFrontPath=V.concat([c,s]),t.clipTopBorderPath=t.clipOuterFrontPath.concat(E),t.clipOuterBackPath=t.clipTopBorderPath.concat(z,[w,x],nt(w,x,c,C,ft,dt,0,0),H),ct?(N=nt(b,y,h,g,bt,yt,0,0),t.clipInnerFrontPath=V.concat([b,y]),t.clipTopPath=t.clipTopBorderPath.concat(z,[b,y],N,H),t.clipTopBorderPath=t.clipTopBorderPath.concat(t.clipInnerFrontPath,N),t.clipInnerBackPath=t.clipInnerFrontPath.concat(N,z,[h,m],nt(h,m,b,v,bt,yt,1,0),H)):t.clipTopPath=t.clipTopBorderPath.concat(z,W,H)),E=V.concat(Y,z,X),N=V.concat(U,z,Z),t.clipTopPath=t.clipTopPath.concat(E,N),t.clipOuterFrontPath=t.clipOuterFrontPath.concat(E),t.clipOuterFrontPath1=t.clipOuterFrontPath1.concat(E),t.clipOuterBackPath=t.clipOuterBackPath.concat(E),ct&&(N=V.concat($,z,K),t.clipInnerFrontPath=t.clipInnerFrontPath.concat(N),t.clipInnerBackPath=t.clipInnerBackPath.concat(N))):(t.clipTopPath=t.clipOuterFrontPath=t.clipOuterBackPath=[],ct&&(t.clipInnerFrontPath=t.clipInnerBackPath=[])),t.clipBottomBorderPath=t.clipTopBorderPath),e||(Pt.startSlice._conf.index=it,Pt.endSlice._conf.index=lt,Pt.backOuter._conf.index=ot=Et&&(it<=G||lt>G)||it<=G&<>G?G:it>I?it:lt,Pt.frontOuter._conf.index=et=lt<=R?lt:it>lt||it<=R?R:it,Pt.frontOuter1._conf.index=it,Pt.frontOuter1._conf.cIndex=I,it>lt?(Pt.backOuter._conf.cIndex=it<G?G:L,Pt.startSlice._conf.cIndex=it<I?(it+I)/2:(it+L)/2,Pt.endSlice._conf.cIndex=Pt.frontOuter._conf.cIndex=0):Pt.backOuter._conf.cIndex=Pt.startSlice._conf.cIndex=Pt.endSlice._conf.cIndex=Pt.frontOuter._conf.cIndex=xt,o>I?Pt.frontOuter1.show().attr(kt,t.clipOuterFrontPath1):Pt.frontOuter1.hide(),t.thisElement._attr(kt,t.clipTopPath),Pt.bottom.attr(kt,t.clipTopPath),Pt.bottomBorder.attr(kt,t.clipBottomBorderPath),Pt.topBorder&&Pt.topBorder.attr(kt,t.clipTopBorderPath),Pt.frontOuter.attr(kt,t.clipOuterFrontPath),Pt.backOuter.attr(kt,t.clipOuterBackPath),ct&&(Pt.backInner.attr(kt,t.clipInnerBackPath),Pt.frontInner.attr(kt,t.clipInnerFrontPath),Pt.backInner._conf.index=ot,Pt.frontInner._conf.index=et,it>lt?(Pt.backInner._conf.cIndex=L,Pt.frontInner._conf.cIndex=0):Pt.backInner._conf.cIndex=Pt.frontInner._conf.cIndex=xt),this.hasOnePoint?(Pt.startSlice.hide(),Pt.endSlice.hide()):(Pt.startSlice.attr(kt,t.startSlice).show(),Pt.endSlice.attr(kt,t.endSlice).show()))},e.prototype._setSliceCosmetics=function(t){var e,o,n=t.thisElement,r=t.showBorderEffect,a=t.elements,c=(0,l.convertColor)(t.borderColor,(0,i.pluckNumber)(t.borderAlpha,t.alpha)),s=t.borderWidth;t.color&&(t.color=t.color.color?t.color.color:t.color,e=this._parseSliceColor(t.color,t.alpha,t),i.hasSVG?(o={fill:(0,i.toRaphaelColor)(e.top),"stroke-width":0},r?a.topBorder.show().attr({fill:(0,i.toRaphaelColor)(e.topBorder),"stroke-width":0}):(a.topBorder.hide(),o.stroke=c,o["stroke-width"]=s),n._attr(o)):(n._attr({fill:(0,i.toRaphaelColor)(e.top),"stroke-width":0}),a.topBorder.attr({stroke:c,"stroke-width":s})),a.bottom.attr({fill:(0,i.toRaphaelColor)(e.bottom)}),a.bottomBorder.attr({stroke:c,"stroke-width":s}),a.frontOuter.attr({fill:(0,i.toRaphaelColor)(e.frontOuter)}),a.frontOuter1.attr({fill:(0,i.toRaphaelColor)(e.frontOuter)}),a.backOuter.attr({fill:(0,i.toRaphaelColor)(e.backOuter)}),a.startSlice.attr({fill:(0,i.toRaphaelColor)(e.startSlice),stroke:c,"stroke-width":s}),a.endSlice.attr({fill:(0,i.toRaphaelColor)(e.endSlice),stroke:c,"stroke-width":s}),this.isDoughnut&&(a.frontInner.attr({fill:(0,i.toRaphaelColor)(e.frontInner)}),a.backInner.attr({fill:(0,i.toRaphaelColor)(e.backInner)})))},e}(c["default"]);e["default"]=ft},374:function(t,e,o){"use strict";e.__esModule=!0,e._getInnerSize=undefined;var n=l(o(369)),r=o(125),a=o(118),i=l(o(375));function l(t){return t&&t.__esModule?t:{"default":t}}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=function(){var t,e,o,n,r,i,l,c,s,u=this.getFromEnv("chart"),p=this.config,f=u.getFromEnv("dataSource").chart,d=p.doughnutradius,h=(0,a.pluckNumber)(f.use3dlighting,1)?(0,a.pluckNumber)(f.radius3d,f["3dradius"],50):100,g=p.pieMinRadius;if(h>100&&(h=100),h<0&&(h=0),t=/%/.test(d)?g*(d=Number(d.split("%")[0])/100):d<=0||d>=g?g/2:(0,a.pluckNumber)(d),p.innerRadius=t,h>0&&a.hasSVG&&(o=(100-(e=parseInt(t/g*100,10)))/2,i=e+","+(n=parseInt(o*h/100,10))+","+2*(o-n)+","+n,this&&(c=this.components.data)))for(l=0,s=c.length;l<s;l+=1)(r=c[l].config).color&&(r.color.ratio=i,r.hoverEffects&&r.hoverEffects.color&&(r.hoverEffects.color.ratio=i));return 2*t};(0,r.addDep)({name:"doughnut2dAnimation",type:"animationRule",extension:i["default"]});var u=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return c(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"doughnut2D"},e.prototype.configureAttributes=function(e){t.prototype.configureAttributes.call(this,e);var o=this.config,n=this.getFromEnv("chartConfig");o.doughnutradius=(0,a.pluck)(n.doughnutradius,o.doughnutradius,"50%")},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.doughnutradius="50%"},e.prototype._parsePiePlotOptions=function(){var e=t.prototype._parsePiePlotOptions.call(this);return e.innerSize=this._getInnerSize(),e},e.prototype._getInnerSize=function(){return s.call(this)},e.prototype.allocatePosition=function(){this.config.innerSize=this._getInnerSize(),t.prototype.allocatePosition.call(this)},e}(n["default"]);e._getInnerSize=s,e["default"]=u},375:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(370),a=(n=r)&&n.__esModule?n:{"default":n};e["default"]={"initial.dataset.doughnut2D":a["default"]["initial.dataset.pie2D"]}},376:function(t,e,o){"use strict";e.__esModule=!0,e["default"]={"initial.dataset.pie3d":function(){return{"group.appearing":function(t){var e=t.component.getFromEnv("chartConfig");return"plots"===t.attr.name?[{initialAttr:{opacity:"0"},finalAttr:{opacity:"1"},slot:e.alphaanimation?"plot":"initial"}]:[{initialAttr:{opacity:"1"},finalAttr:{opacity:"1"},slot:"final"}]},"slice.appearing":function(t){var e=t.component,o=e.getFromEnv("chart").config,n=e.config,r=t.attr;return o.alphaanimation?[{initialAttr:{opacity:"1"},slot:"plot"}]:n.animateClockWise?[{initialAttr:{sAngle:0,eAngle:0,transform:""},finalAttr:{sAngle:r.sAngle,eAngle:r.eAngle,transform:""},slot:"plot",startEnd:{start:0,end:.75}},{finalAttr:{transform:r.transform},slot:"plot",startEnd:{start:.75,end:1}}]:[{initialAttr:{sAngle:2*Math.PI,eAngle:2*Math.PI,transform:""},finalAttr:{sAngle:r.sAngle,eAngle:r.eAngle,transform:""},slot:"plot",startEnd:{start:0,end:.75}},{finalAttr:{transform:r.transform},slot:"plot",startEnd:{start:.75,end:1}}]},"label.updating":[{initialAttr:{opacity:"1"},finalAttr:{opacity:"1"},slot:"final"}],"label.appearing":[{initialAttr:{opacity:"0"},finalAttr:{opacity:"1"},slot:"final"}],"connector.updating":function(t){return[{initialAttr:{path:t.el.attr("path")||t.attr.path,opacity:t.el.attr("opacity")},finalAttr:{path:t.attr.path},slot:"final"}]},"connector.appearing":function(t){return[{initialAttr:"string"==typeof t.el?{opacity:"0"}:{path:t.attr.path,opacity:"0"},slot:"final"}]},"connector-sliced.updating":function(t){return[{initialAttr:{path:t.el.attr("path")},finalAttr:{path:t.attr.path},slot:"plot"}]},"label-sliced.updating":function(t){return[{initialAttr:{x:t.el.attr("x"),y:t.el.attr("y")},slot:"plot"}]},"*":null}}}},378:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(368)),r=i(o(374)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.getName=function(){return"Doughnut2D"},e.prototype.getName=function(){return"Doughnut2D"},e.prototype.configureAttributes=function(e){t.prototype.configureAttributes.call(this,e);var o=this.config,n=this.getFromEnv("chart-attrib");o.doughnutradius=(0,a.pluck)(n.doughnutradius,"50%")},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Doughnut Chart",e.defaultDatasetType="Doughnut2D",e.singletonPlaceValue=!1},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=c},379:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(372)),r=a(o(380));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return i(e,t),e.getName=function(){return"Doughnut3D"},e.prototype.getName=function(){return"Doughnut3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="3D Doughnut Chart",e.defaultDatasetType="Doughnut3D",e.singletonPlaceValue=!1},e.prototype.getDSdef=function(){return r["default"]},e}(n["default"]);e["default"]=l},380:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(373)),r=a(o(381));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}(0,o(125).addDep)({name:"doughnut3dAnimation",type:"animationRule",extension:r["default"]});var l=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return i(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"doughnut3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.doughnutradius="50%"},e.prototype._configurePie3DManager=function(){var t=this.config,e=this.components,o=this.getFromEnv("pie3DManager"),n=e.data;o&&o.configure(t.pieSliceDepth,1===n.length,t.use3DLighting,!0)},e}(n["default"]);e["default"]=l},381:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(376),a=(n=r)&&n.__esModule?n:{"default":n};e["default"]={"initial.dataset.doughnut3D":a["default"]["initial.dataset.pie3d"]}},382:function(t,e,o){"use strict";e.__esModule=!0,e._setCategories=undefined;var n=s(o(383)),r=o(387),a=o(389),i=s(o(390)),l=o(118),c=s(o(391));function s(t){return t&&t.__esModule?t:{"default":t}}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var p=l.preDefStr.NINETYSTRING;function f(){var t,e,o=this.getFromEnv("dataSource"),n=o.dataset,r=this.getFromEnv("number-formatter"),a=this.getChildren("xAxis"),i=o.data||n&&n[0].data||[],l=[],c={};for(e=i.length-1;e>=0;e--)"true"===(t=i[e]).vline||"1"===t.vline||1===t.vline||!0===t.vline?(c[e]=t,i.splice(e,1)):null===r.getCleanValue(t.value,!0)&&i.splice(e,1);for(e in i.sort(function(t,e){return r.getCleanValue(e.value,!0)-r.getCleanValue(t.value,!0)}),l=i.slice(),c)l.splice(e,0,c[e]);a[0].setTickValues(l)}var d=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.isPercentage=!0,o.registerFactory("axis",i["default"],["canvas"]),o.registerFactory("dataset",c["default"],["vCanvas"]),o}return u(e,t),e.getName=function(){return"Pareto2D"},e.prototype.getName=function(){return"Pareto2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.singleseries=!0,e.hasLegend=!1,e.defaultDatasetType="column",e.plotfillalpha=p,e.enablemousetracking=!0},e.prototype._setCategories=function(){f.call(this)},e.prototype._checkInvalidSpecificData=function(){var t=this.getFromEnv("dataSource").data;if(!t||!t.length)return!0},e.prototype.getDSdef=function(t){return"column"===t?r.ParetoColumnDataset:a.ParetoLineDataset},e.prototype.getDSGroupdef=function(){},e}(n["default"]);e["default"]=d,e._setCategories=f},387:function(t,e,o){"use strict";e.__esModule=!0,e.ParetoColumnDataset=undefined;var n=o(118),r=o(122),a=c(o(331)),i=o(125),l=c(o(388));function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=Math,p=u.min,f=u.max,d=u.abs;(0,i.addDep)({name:"paretoAnimation",type:"animationRule",extension:l["default"]});var h=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return s(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"paretoColumn"},e.prototype.configureAttributes=function(t){if(!t)return!1;this.trimData(t),this.config.JSONData=t;var e,o,a,i,l,c,s,u,h,g,b,y,m,v,C,w,D,_,O,S,P,k,x,E,N,A,j,T,M,F,B,I,L,R,G,V,z,H,W,Y,U,X,Z,J,q,$,K,Q,tt=this.getFromEnv("chart"),et=this.config,ot=this.getFromEnv("xAxis"),nt=et.JSONData,rt=nt.data,at=rt&&rt.length,it=this.getFromEnv("chart-attrib"),lt=this.getFromEnv("color-manager"),ct=this.index||this.positionIndex,st=lt.getPlotColor(ct),ut=(0,n.pluckNumber)(nt.dashed,it.plotborderdashed),pt=(0,n.pluckNumber)(it.useplotgradientcolor,1),ft=(0,n.pluckNumber)(it.showtooltip,1),dt=(0,n.parseUnsafeString)(it.yaxisname),ht=(0,n.parseUnsafeString)(it.xaxisname),gt=this.components.data,bt=this.getFromEnv("number-formatter"),yt=tt.config.is3D,mt=-Infinity,vt=+Infinity,Ct=0,wt=[],Dt=0,_t=et.tootipSepChar=(0,n.pluck)(it.tooltipsepchar,", ");for(et.defaultPadding={left:.5,right:.5},et.enableAnimation=Y=(0,n.pluckNumber)(it.animation,it.defaultanimation,1),et.animation=!!Y&&{duration:1e3*(0,n.pluckNumber)(it.animationduration,1)},et.showTooltip=(0,n.pluckNumber)(it.showtooltip,1),et.valuePadding=(0,n.pluckNumber)(it.valuepadding,2),et.rotateValues=(0,n.pluckNumber)(it.rotatevalues)?270:0,et.showHoverEffect=y=(0,n.pluckNumber)(it.plothovereffect,it.showhovereffect,void 0),et.showShadow=b||yt?(0,n.pluckNumber)(it.showshadow,1):(0,n.pluckNumber)(it.showshadow,lt.getColor("showShadow")),et.useDataPlotColorForLabels=Q=(0,n.pluckNumber)(it.usedataplotcolorforlabels,0),et.use3dlineshift=(0,n.pluckNumber)(it.use3dlineshift,tt.use3dlineshift),e=et.showplotborder=(0,n.pluckNumber)(it.showplotborder,yt?0:1),et.plotDashLen=u=(0,n.pluckNumber)(it.plotborderdashlen,5),et.plotDashGap=h=(0,n.pluckNumber)(it.plotborderdashgap,4),et.plotfillangle=m=(0,n.pluckNumber)(360-it.plotfillangle,90),et.plotfillalpha=v=(0,n.pluck)(it.plotfillalpha,"100"),et.plotColor=st,et.isRoundEdges=b=(0,n.pluckNumber)(it.useroundedges,0),et.plotRadius=(0,n.pluckNumber)(it.useRoundEdges,et.isRoundEdges?1:0),et.plotfillratio=C=(0,n.pluck)(it.plotfillratio),et.plotgradientcolor=w=(0,n.getDefinedColor)(it.plotgradientcolor,lt.getColor("plotGradientColor")),!pt&&(w=""),et.plotborderalpha=D=e&&!yt?(0,n.pluck)(it.plotborderalpha,v,"100"):0,et.plotbordercolor=_=(0,n.pluck)(it.plotbordercolor,yt?"#ffffff":lt.getColor("plotBorderColor")),et.plotborderthickness=g=(0,n.pluckNumber)(it.plotborderthickness,1),et.plotBorderDashStyle=S=ut?(0,n.getDashStyle)(u,h):"none",et.showValues=(0,n.pluckNumber)(it.showvalues,1),et.definedGroupPadding=f((0,n.pluckNumber)(it.plotspacepercent),0),et.plotSpacePercent=f((0,n.pluckNumber)(it.plotspacepercent,20)%100,0),et.maxcolwidth=(0,n.pluckNumber)(it.maxcolwidth,50),et.plotpaddingpercent=(0,n.pluckNumber)(it.plotpaddingpercent),et.placevaluesinside=(0,n.pluckNumber)(it.placevaluesinside,0),et.use3dlighting=(0,n.pluckNumber)(it.use3dlighting,1),et.parentYAxis=0,this.setState("visible",1===(0,n.pluckNumber)(nt.visible,1)),this.setState("dirty",!0),gt||(gt=this.components.data=[]),J=0;J<at;J++)Ct+=$=d(bt.getCleanValue(rt[J].value)),wt[J]=(0,n.extend2)({},rt[J]),wt[J].value=$;for(wt.sort(function(t,e){return e.value-t.value}),et.imageCount=0,J=0;J<at;J++)P=wt[J],(x=gt[J])||(x=gt[J]={graphics:{}}),x.config||(E=gt[J].config={}),null!==(k=d(bt.getCleanValue(P.value)))&&(E=x&&x.config,K=ot.getLabel(J),E.label=(0,n.getValidValue)((0,n.parseUnsafeString)((0,n.pluck)(K.label))),E.showValue=(0,n.pluckNumber)(P.showvalue,et.showValues),E.setValue=k,E.setLink=(0,n.pluck)(P.link),E.setDisplayValue=A=(0,n.parseUnsafeString)(P.displayvalue),Dt+=E.setValue,q=bt.dataLabels(k),E.shadow={opacity:et.showShadow?v/100:0},U=(0,n.pluckNumber)(P.dashed),X=(0,n.pluckNumber)(P.dashlen,u),Z=h=(0,n.pluckNumber)(P.dashgap,h),E.plotBorderDashStyle=O=1===U?(0,n.getDashStyle)(X,Z):0===U?"none":S,st=lt.getPlotColor(J),st=(0,n.pluck)(P.color,st),C=(0,n.pluck)(P.ratio,et.plotfillratio),v=(0,n.pluck)(P.alpha,et.plotfillalpha),D=(0,n.pluck)(P.alpha,et.plotborderalpha),k<0&&!b&&(c=m,m=360-m),E.colorArr=N=(0,r.getColumnColor)(st+","+w,v,C,m,b,_,D.toString(),0,!!yt),0!==y&&(j=(0,n.pluck)(P.hovercolor,it.plotfillhovercolor,it.columnhovercolor,st),T=(0,n.pluck)(P.hoveralpha,it.plotfillhoveralpha,it.columnhoveralpha,v),!(M=(0,n.pluck)(P.hovergradientcolor,it.plothovergradientcolor,w))&&(M=""),F=(0,n.pluck)(P.hoverratio,it.plothoverratio,C),B=(0,n.pluckNumber)(360-P.hoverangle,360-nt.hoverangle,360-it.plothoverangle,m),I=(0,n.pluck)(P.borderhovercolor,it.plotborderhovercolor,_),L=(0,n.pluck)(P.borderhoveralpha,nt.borderhoveralpha,it.plotborderhoveralpha,it.plotfillhoveralpha,D,v),R=(0,n.pluckNumber)(P.borderhoverthickness,nt.borderhoverthickness,it.plotborderhoverthickness,g),G=(0,n.pluckNumber)(P.borderhoverdashed,it.plotborderhoverdashed),V=(0,n.pluckNumber)(P.borderhoverdashgap,it.plotborderhoverdashgap,u),z=(0,n.pluckNumber)(P.borderhoverdashlen,it.plotborderhoverdashlen,h),H=G?(0,n.getDashStyle)(z,V):O,1==y&&j===st&&(j=(0,r.getLightColor)(j,70)),W=(0,r.getColumnColor)(j+","+M,T,F,B,b,I,L.toString(),0,!!yt),E.setRolloutAttr={fill:yt?[(0,n.toRaphaelColor)(N[0]),!et.use3dlighting]:(0,n.toRaphaelColor)(N[0]),stroke:e&&(0,n.toRaphaelColor)(N[1]),"stroke-width":g,"stroke-dasharray":O},E.setRolloverAttr={fill:yt?[(0,n.toRaphaelColor)(W[0]),!et.use3dlighting]:(0,n.toRaphaelColor)(W[0]),stroke:e&&(0,n.toRaphaelColor)(W[1]),"stroke-width":R,"stroke-dasharray":H}),Q&&ot.updateTicksValues(J,{labelfontcolor:(0,r.convertColor)(st)}),E.originalPlotColor=st,E.displayValue=(0,n.pluck)(A,q),i=E.setTooltext=E.origToolText=(0,n.getValidValue)((0,n.parseUnsafeString)((0,n.pluck)(P.tooltext,it.plottooltext))),E.toolTipValue=bt.dataLabels(k,et.parentYAxis),E._x=J,E._y=k,o=E.toolTipValue,mt=f(mt,k),vt=p(vt,k),ft?(et.showTooltip?void 0!==i?(a={formattedValue:o,label:E.label,yaxisName:dt,xaxisName:ht,cumulativeValue:Dt,cumulativeDataValue:bt.dataLabels(Dt),cumulativePercentValue:void 0,sum:bt.dataLabels(Ct),unformattedSum:Ct},l=[1,2,3,5,6,7,20,21,22,23,24,25],s=(0,n.parseTooltext)(i,l,a,P,it)):s=E.label?E.label+_t:"":s=!1,E.toolText=s):s=!1,E.toolText=s,E.tooltext=i,E.setTooltext=s,c&&(m=c));et.maxValue=mt,et.minValue=vt},e}(a["default"]);e.ParetoColumnDataset=h},388:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(332),a=(n=r)&&n.__esModule?n:{"default":n};e["default"]={"initial.dataset.paretoColumn":a["default"]["initial.dataset.column"]}},389:function(t,e,o){"use strict";e.__esModule=!0,e.ParetoLineDataset=undefined;var n,r=o(346),a=(n=r)&&n.__esModule?n:{"default":n},i=o(118),l=o(122);function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=Math,u=s.min,p=s.max,f=s.abs,d=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return c(e,t),e.prototype.configureAttributes=function(t){if(!t)return!1;this.trimData(t),this.config.JSONData=t;var e,o,n,r,a,c,s,d,h,g,b,y,m=this.getFromEnv("chart"),v=this.config,C=this.getFromEnv("xAxis"),w=v.JSONData,D=w.data,_=D&&D.length,O=this.getFromEnv("chart-attrib"),S=this.getFromEnv("color-manager"),P=(0,i.pluckNumber)(O.showtooltip,1),k=((0,i.parseUnsafeString)(O.yaxisname),(0,i.parseUnsafeString)(O.xaxisname),this.components.data),x=this.getFromEnv("number-formatter"),E=m.config.is3D,N=-Infinity,A=+Infinity,j=0,T=[],M=0,F=v.tootipSepChar=(0,i.pluck)(O.tooltipsepchar,", ");for(v.defaultPadding={left:.5,right:.5},v.enableAnimation=c=(0,i.pluckNumber)(O.animation,O.defaultanimation,1),v.animation=!!c&&{duration:1e3*(0,i.pluckNumber)(O.animationduration,1)},v.showTooltip=(0,i.pluckNumber)(O.showtooltip,1),v.valuePadding=(0,i.pluckNumber)(O.valuepadding,2),v.rotateValues=(0,i.pluckNumber)(O.rotatevalues)?270:0,v.showHoverEffect=(0,i.pluckNumber)(O.plothovereffect,O.showhovereffect,void 0),v.showShadow=E?(0,i.pluckNumber)(O.showshadow,1):(0,i.pluckNumber)(O.showshadow,S.getColor("showShadow")),v.useDataPlotColorForLabels=(0,i.pluckNumber)(O.usedataplotcolorforlabels,0),v.use3dlineshift=(0,i.pluckNumber)(O.use3dlineshift,m.use3dlineshift),v.drawLine=1,v.linecolor=(0,l.getFirstColor)((0,i.pluck)(O.linecolor,S.getColor("plotBorderColor"))),v.linethickness=(0,i.pluckNumber)(O.linethickness,2),v.linealpha=(0,i.pluck)(O.linealpha,"100"),v.linedashed=(0,i.pluckNumber)(O.linedashed,0),v.linedashlen=(0,i.pluckNumber)(w.linedashlen,O.linedashlen,5),v.linedashgap=(0,i.pluckNumber)(w.linedashgap,O.linedashgap,4),s=(0,i.getDashStyle)(v.linedashlen,v.linedashgap),v.lineDashStyle=v.linedashed?s:"none",v.drawanchors=(0,i.pluckNumber)(O.drawanchors,O.showanchors),v.anchorbgcolor=(0,i.pluck)(O.anchorbgcolor,S.getColor("anchorBgColor")),v.anchorbordercolor=(0,i.pluck)(O.anchorbordercolor,v.linecolor),v.anchorradius=(0,i.pluckNumber)(O.anchorradius,3),v.anchoralpha=(0,i.pluck)(O.anchoralpha),v.anchorbgalpha=(0,i.pluck)(O.anchorbgalpha,100),v.anchorborderthickness=(0,i.pluck)(O.anchorborderthickness,1),v.anchorsides=(0,i.pluck)(O.anchorsides,0),v.anchorimageurl=(0,i.pluck)(O.anchorimageurl),v.anchorimagealpha=(0,i.pluckNumber)(O.anchorimagealpha,100),v.anchorimagescale=(0,i.pluckNumber)(O.anchorimagescale,100),v.anchorimagepadding=(0,i.pluckNumber)(O.anchorimagepadding,1),v.anchorstartangle=(0,i.pluckNumber)(O.anchorstartangle,90),v.parentYAxis=1,v.valuePosition=(0,i.pluck)(O.valueposition,"auto"),v.showvalues=v.showValues=(0,i.pluckNumber)(O.showlinevalues,O.showvalues,1),this.setState("visible",1===(0,i.pluckNumber)(w.visible,1)),this.setState("dirty",!0),v.shadow={opacity:v.showShadow?v.linealpha/100:0},v.showCumulativeLine=(0,i.pluckNumber)(O.showcumulativeline,1),v.maxRadius=-Infinity,k||(k=this.components.data=[]),d=0;d<_;d++)j+=g=f(x.getCleanValue(D[d].value)),T[d]=(0,i.extend2)({},D[d]),T[d].value=g;for(T.sort(function(t,e){return e.value-t.value}),v.imageCount=0,d=0;d<_;d++)o=T[d],(r=k[d])||(r=k[d]={graphics:{}}),r.config||(a=k[d].config={}),null!==(n=f(x.getCleanValue(o.value)))&&(a=r&&r.config,b=C.getLabel(d),a.label=(0,i.getValidValue)((0,i.parseUnsafeString)((0,i.pluck)(b.label))),a.showValue=(0,i.pluckNumber)(o.showvalue,v.showValues),a.setValue=n,a.setLink=(0,i.pluck)(o.link),a.setDisplayValue=(0,i.parseUnsafeString)(o.displayvalue),M+=a.setValue,n=a.setValue=M/j*100,h=x.percentValue(n),a.toolTipValue=h,a.displayValue=h,a.valuePosition=(0,i.pluck)(o.valueposition,v.valuePosition),a.anchorProps=this._parseAnchorProperties(d,T),a.hoverEffects=this._parseHoverEffectOptions(r),y=a.anchorProps,v.maxRadius=Math.max(v.maxRadius,y.radius+y.borderThickness/2),a._x=d,a._y=n,a.toolTipValue,N=p(N,n),A=u(A,n),P?(e=!!v.showTooltip&&(a.label?a.label+F+a.toolTipValue:""),a.toolText=e):e=!1,a.toolText=e,a.tooltext=void 0,a.setTooltext=e);v.maxValue=N,v.minValue=A},e}(a["default"]);e.ParetoLineDataset=d},390:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e=t.getFromEnv("chart-attrib"),o=(0,a.pluckNumber)(e.showcumulativeline,1),i=t.getChildren("canvas")[0],l=i.getChildren("axisRefVisualCartesian")[0],c={zoomable:!0,pannable:!0},s=t._feedAxesRawData(),u=void 0,p=void 0,f=function(){return l.asyncDraw()};(0,a.componentFactory)(t,r["default"],"xAxis",1,s.xAxisConf),p=t.getChildren().xAxis[0],l.setLinkedItem(p.getId(),p),i.attachAxis(p,!1,t.zoomX?c:{}),p.setLinkedItem("canvas",i),(0,a.componentFactory)(t,n["default"],"yAxis",o?2:1,s.yAxisConf),(u=t.getChildren("yAxis"))&&u[1]&&u[1].setAxisConfig({isPercent:!0,drawLabels:!0,drawPlotLines:!0,drawAxisName:!0,drawAxisLine:!0,drawPlotBands:!0,drawTrendLines:!0,drawTrendLabels:!0}),u.forEach(function(e){!0!==e.getState("removed")?(e.setLinkedItem("canvas",i),l.setLinkedItem(e.getId(),e),i.attachAxis(e,!0,t.zoomY?c:{}),l.setLinkedItem(e.getId(),e),l.addExtEventListener("visiblerangeset",f,e)):i.detachAxis(e)}),t._setCategories()};var n=i(o(292)),r=i(o(321)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}},391:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e,o=t.getChildren(),n=t.getFromEnv("chart-attrib"),r=o.canvas[0].getChildren("vCanvas"),l=t.getFromEnv("dataSource"),c=l.dataset,s=(0,i.pluckNumber)(n.showcumulativeline,1),u=l.data||c&&c[0].data,p=void 0,f=void 0;e={data:u},u&&0!==u.length?(p=t.getDSdef("column"),t.config.is3D&&((0,i.componentFactory)(r[0],a["default"],"datasetGroup_column"),f=r[0].getChildren("datasetGroup_column")[0]),(0,i.datasetFactory)(f||r[0],p,"dataset",1,[e]),s&&(p=t.getDSdef("line"),(0,i.datasetFactory)(r[1],p,"dataset",1,[e],[1]))):t.setChartMessage()};var n,r=o(340),a=(n=r)&&n.__esModule?n:{"default":n},i=o(118)},392:function(t,e,o){"use strict";e.__esModule=!0;var n=c(o(382)),r=o(118),a=o(393),i=o(389),l=c(o(335));function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.fireGroupEvent=!0,o.defaultPlotShadow=1,o.isPercentage=!0,o.registerFactory("canvas",l["default"]),o}return s(e,t),e.getName=function(){return"Pareto3D"},e.prototype.getName=function(){return"Pareto3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="3D Pareto Chart",e.singleseries=!0,e.hasLegend=!1,e.defaultDatasetType="column3d",e.plotfillalpha=r.preDefStr.NINETYSTRING,e.use3dlineshift=1,e.enablemousetracking=!0,e.showzeroplaneontop=0},e.prototype.getDSdef=function(t){return"column"===t?a.ParetoColumn3DDataset:i.ParetoLineDataset},e}(n["default"]);e["default"]=u},393:function(t,e,o){"use strict";e.__esModule=!0,e.ParetoColumn3DDataset=undefined;var n=o(387),r=o(343);function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var i=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return a(e,t),e.prototype._getHoveredPlot=function(t,e){var o,n;return o=this.getFromEnv("xAxis").getValue(t),(n=Math.round(o))-o>0?r._checkPointerOverColumn.call(this,n,t,e)||r._checkPointerOverColumn.call(this,n-1,t,e):r._checkPointerOverColumn.call(this,n+1,t,e)||r._checkPointerOverColumn.call(this,n,t,e)},e.prototype.createContainer=function(){var t=this.getLinkedParent();!this.getContainer("labelGroup")&&this.addContainer("labelGroup",function(t,e,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:t},container:e,state:"appearing",component:o,label:"group"})}("label-group",t.getChildContainer("vcanvasLabelGroup"),this).attr("class","fusioncharts-datalabels"))},e}(n.ParetoColumnDataset);e.ParetoColumn3DDataset=i},394:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(395),a=(n=r)&&n.__esModule?n:{"default":n},i=o(403),l=o(405);function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.canvasborderthickness=1,o.avgScrollPointWidth=40,o.hasScroll=!0,o.eiMethods={scrollTo:l.scrollTo},o}return c(e,t),e.getName=function(){return"ScrollCombiDy2D"},e.includeInputOptions=function(){return["SwipeGesture"]},e.prototype.getName=function(){return"ScrollCombiDy2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Scrollable Dual Y-Axis Combination Chart",e.defaultDatasetType="column",e.showzeroplaneontop=0},e.prototype.configureAttributes=function(e){t.prototype.configureAttributes.call(this,e),i.configurer.call(this,e)},e.prototype._setAxisScale=function(){i._setAxisScale.call(this)},e.prototype._resetViewPortConfig=function(){i._resetViewPortConfig.call(this)},e}(a["default"]);e["default"]=s},395:function(t,e,o){"use strict";e.__esModule=!0;var n=f(o(383)),r=f(o(331)),a=f(o(347)),i=f(o(346)),l=f(o(396)),c=f(o(400)),s=f(o(402)),u=o(118),p=f(o(385));function f(t){return t&&t.__esModule?t:{"default":t}}function d(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var h=u.preDefStr.SEVENTYSTRING,g=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.isDual=!0,o.registerFactory("dataset",p["default"],["vCanvas"]),o}return d(e,t),e.getName=function(){return"MSCombidy2D"},e.prototype.getName=function(){return"MSCombidy2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Multi-series Dual Y-Axis Combination Chart",e.sDefaultDatasetType="line",e.defaultDatasetType="column",e.enablemousetracking=!0,e.isdual=1,e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha=u.HUNDREDSTRING,e.anchorimagealpha=u.HUNDREDSTRING,e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha=h,e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha=u.HUNDREDSTRING,e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0,e.showzeroplaneontop=0},e.prototype.getDSdef=function(t){return"splinearea"===t?l["default"]:"spline"===t?c["default"]:"area"===t?a["default"]:"line"===t?i["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column"===t?s["default"]:void 0},e.prototype.getDSType=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return"splinearea"===t.toLowerCase()?"splinearea":"spline"===t.toLowerCase()?"spline":"area"===t.toLowerCase()?"area":"line"===t.toLowerCase()?"line":"column"},e}(n["default"]);e["default"]=g},403:function(t,e,o){"use strict";e.__esModule=!0,e.configurer=e._resetViewPortConfig=e._setAxisScale=undefined;var n=c(o(404)),r=c(o(331)),a=c(o(402)),i=o(118),l=o(405);function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=Math.floor,p=void 0;function f(){var t,e,o,n,r,a=this.config,l=this.getChildren("xAxis")[0],c=l.getTicksLen(),s=this.getFromEnv("dataSource").chart,p=a.width,f=0,d=a.scrollToEnd,h=(0,i.pluckNumber)(s.numvisibleplot,u(p/this.avgScrollPointWidth));this.iterateComponents(function(t){t.getType&&"dataset"===t.getType()&&t.getName&&"column"===t.getName()&&!t.getState("removed")&&f++}),this.config.isstacked&&(f=1),o=c*(f=f||1);var g=l.getVisibleConfig();e=g.maxValue,t=g.minValue,h>=2&&h<o?(n=h/f,l.setScrollType("always"),d?t=e-n:e=t+n,l.setVisibleConfig(t,e)):(r=l.getLimit(),l.setVisibleConfig(r.min,r.max),l.setScrollType("none"))}function d(){this.config.viewPortConfig={scaleX:1,scaleY:1,x:0,y:0}}function h(){var t,e=this.getFromEnv("dataSource").chart;(t=this.config).scrollToEnd=(0,i.pluckNumber)(e.scrolltoend,0),t.lastScrollPosition=p}var g=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.tooltipConstraint="plot",o.canvasborderthickness=1,o.avgScrollPointWidth=40,o.hasScroll=!0,o.defaultPlotShadow=1,o.binSize=0,o.eiMethods.scrollTo=l.scrollTo,o}return s(e,t),e.getName=function(){return"ScrollColumn2D"},e.includeInputOptions=function(){return["SwipeGesture"]},e.prototype.getName=function(){return"ScrollColumn2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.defaultDatasetType="column",e.showzeroplaneontop=1,e.friendlyName="Scrollable Multi-series Column Chart"},e.prototype.configureAttributes=function(e){t.prototype.configureAttributes.call(this,e),h.call(this,e)},e.prototype._setAxisScale=function(){f.call(this)},e.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e),this.config.drawTrendRegion=0},e.prototype._resetViewPortConfig=function(){d.call(this)},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e}(n["default"]);e["default"]=g,e._setAxisScale=f,e._resetViewPortConfig=d,e.configurer=h},406:function(t,e,o){"use strict";e.__esModule=!0;var n=p(o(407)),r=p(o(331)),a=p(o(347)),i=p(o(346)),l=p(o(396)),c=p(o(400)),s=p(o(402)),u=p(o(385));function p(t){return t&&t.__esModule?t:{"default":t}}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var d=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.hasScroll=!0,o.canvasborderthickness=1,o.avgScrollPointWidth=40,o.defaultPlotShadow=1,o.registerFactory("dataset",u["default"],["vCanvas"]),o}return f(e,t),e.getName=function(){return"ScrollCombi2D"},e.prototype.getName=function(){return"ScrollCombi2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Scrollable Combination Chart",e.defaultDatasetType="column",e.zeroplanethickness=1,e.zeroplanealpha=80,e.enablemousetracking=!0,e.showzeroplaneontop=0},e.prototype.getDSdef=function(t){return"splinearea"===t?l["default"]:"spline"===t?c["default"]:"area"===t?a["default"]:"line"===t?i["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column"===t?s["default"]:void 0},e.prototype.getDSType=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return"splinearea"===t.toLowerCase()?"splinearea":"spline"===t.toLowerCase()?"spline":"area"===t.toLowerCase()?"area":"line"===t.toLowerCase()?"line":"column"},e}(n["default"]);e["default"]=d},407:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(403)),r=i(o(347)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=a.preDefStr.SEVENTYSTRING,s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.canvasborderthickness=1,o.hasScroll=!0,o.avgScrollPointWidth=75,o.defaultPlotShadow=0,o.binSize=0,o}return l(e,t),e.getName=function(){return"ScrollArea2D"},e.prototype.getName=function(){return"ScrollArea2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Scrollable Multi-series Area Chart",e.defaultDatasetType="scrollarea2d",e.enablemousetracking=!0,e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha=a.HUNDREDSTRING,e.anchorimagealpha=a.HUNDREDSTRING,e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha=c,e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha=a.HUNDREDSTRING,e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0,e.defaultcrosslinethickness=1},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return undefined},e}(n["default"]);e["default"]=s},408:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(403)),r=a(o(409));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.canvasborderthickness=1,o.avgScrollPointWidth=75,o}return i(e,t),e.getName=function(){return"ScrollStackedColumn2D"},e.prototype.getName=function(){return"ScrollStackedColumn2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Scrollable Stacked Column Chart",e.isstacked=!0},e.prototype.getDSGroupdef=function(){return r["default"]},e}(n["default"]);e["default"]=l},411:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(407)),r=a(o(346));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.canvasborderthickness=1,o.avgScrollPointWidth=75,o.defaultPlotShadow=1,o.binSize=0,o}return i(e,t),e.getName=function(){return"ScrollLine2D"},e.prototype.getName=function(){return"ScrollLine2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Scrollable Multi-series Line Chart",e.defaultDatasetType="line",e.zeroplanethickness=1,e.zeroplanealpha=40,e.showzeroplaneontop=0,e.enablemousetracking=!0,e.defaultcrosslinethickness=1},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return undefined},e}(n["default"]);e["default"]=l},412:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(413)),r=i(o(421)),a=i(o(423));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.getName=function(){return"Bubble"},e.prototype.getName=function(){return"Bubble"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Bubble Chart",e.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e}(n["default"]);e["default"]=c},413:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(414)),r=a(o(418));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.isXY=!0,o.defaultZeroPlaneHighlighted=!1,o}return i(e,t),e.getName=function(){return"Scatter"},e.prototype.getName=function(){return"Scatter"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Scatter Chart",e.hasLegend=!0,e.allowreversexaxis=!0,e.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){},e}(n["default"]);e["default"]=l},421:function(t,e,o){"use strict";e.__esModule=!0;var n=s(o(418)),r=o(118),a=o(122),i=s(o(419)),l=o(125),c=s(o(422));function s(t){return t&&t.__esModule?t:{"default":t}}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var p=r.hasTouch?r.TOUCH_THRESHOLD_PIXELS:r.CLICK_THRESHOLD_PIXELS,f=r.preDefStr.setRolloverAttrStr,d=r.preDefStr.setRolloutAttrStr,h=Math,g=h.round,b=h.min,y=h.max;(0,l.addDep)({name:"bubbleAnimation",type:"animationRule",extension:c["default"]});var m=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return u(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"bubble"},e.prototype.configureAttributes=function(t){if(!t)return!1;this.trimData(t),this.config.JSONData=t;var e,o,n,i,l,c,s,u,p,f,d,h,g,m,v,C,w,D,_,O,S,P,k,x=this.getFromEnv("chart"),E=x.getFromEnv("dataSource").chart,N=this.config.JSONData,A=this.config,j=N.data||[],T=this.getFromEnv("color-manager"),M=this.index,F=this.getFromEnv("number-formatter"),B=(0,r.pluck)((0,r.parseUnsafeString)(E.tooltipsepchar),", "),I=-Infinity,L=+Infinity,R=I,G=L,V=I,z=L,H=I,W=L;for(A.seriesname=(0,r.parseUnsafeString)(N.seriesname),A.includeinlegend=(0,r.pluckNumber)(N.includeinlegend,A.seriesname?1:0),A.anchorBgColor=(0,a.getFirstColor)((0,r.pluck)(N.color,N.plotfillcolor,E.plotfillcolor,T.getPlotColor(M))),A.showPlotBorder=(0,r.pluckNumber)(N.showplotborder,E.showplotborder,1),A.anchorBorderThickness=A.showPlotBorder?(0,r.pluckNumber)(N.plotborderthickness,E.plotborderthickness,1):0,A.anchorBorderColor=(0,a.getFirstColor)((0,r.pluck)(N.plotbordercolor,E.plotbordercolor,"666666")),A.plotFillAlpha=(0,r.pluck)(N.plotfillalpha,N.bubblefillalpha,E.plotfillalpha,"100"),A.plotBorderAlpha=(0,r.pluck)(N.plotborderalpha,E.plotborderalpha,"95"),A.negativeColor=(0,r.pluck)(E.negativecolor,"FF0000"),A.is3d=0!==(0,r.pluckNumber)(E.use3dlighting,N.is3d,E.is3d),A.bubbleScale=(0,r.pluckNumber)(E.bubblescale,1),A.minBubbleRadius=(0,r.pluckNumber)(E.minbubbleradius),A.clipBubbles=(0,r.pluckNumber)(E.clipbubbles,1),A.enableAnimation=u=(0,r.pluckNumber)(E.animation,E.defaultanimation,1),A.animation=!!u&&{duration:1e3*(0,r.pluckNumber)(E.animationduration,1)},A.showTooltip=(0,r.pluckNumber)(E.showtooltip,1),A.transposeAnimation=(0,r.pluckNumber)(E.transposeanimation,u),A.transposeAnimDuration=1e3*(0,r.pluckNumber)(E.transposeanimduration,.2),A.seriesNameInTooltip=(0,r.pluckNumber)(E.seriesnameintooltip,1),A.rotateValues=(0,r.pluckNumber)(E.rotatevalues)?270:0,A.showHoverEffect=(0,r.pluckNumber)(E.plothovereffect,E.showhovereffect,void 0),A.showValues=A.showvalues=(0,r.pluckNumber)(N.showvalues,E.showvalues,0),i=this.components.data=this.components.data||(this.components.data=[]),e=j.length,A.fillColor=A.is3d?(0,r.toRaphaelColor)((0,a.getPointColor)(A.anchorBgColor,A.plotFillAlpha)):(0,r.toRaphaelColor)({color:A.anchorBgColor,alpha:A.plotFillAlpha}),A.strokeColor=(0,r.toRaphaelColor)({color:A.anchorBorderColor,alpha:A.plotFillAlpha}),o=0;o<e;o++)if(p=j[o],!(n=i[o]=i[o]||(i[o]={})).graphics&&(n.graphics={}),(f=n.config={}).x=F.getCleanValue(p.x),f.y=F.getCleanValue(p.y),f.z=F.getCleanValue(p.z,!0),f.setValue={x:f.x,y:f.y,z:f.z},f._x=f.x,f._y=f.y,f._z=f.z,f.showValue=(0,r.pluckNumber)(p.showvalue,A.showValues),f.anchorProps={},C=f.label=f.x,f.setLink=(0,r.getValidValue)(p.link),A.max=H=y(H,f.z||0),A.min=W=b(W,f.z||0),f.is3d=0!==(0,r.pluckNumber)(p.is3d,A.is3d),R=y(R,f.x),G=b(G,f.x),V=y(V,f.y),z=b(z,f.y),l=f.color=(0,a.getFirstColor)((0,r.pluck)(p.color,p.z<0?A.negativeColor:A.anchorBgColor)),c=f.alpha=(0,r.pluck)(p.alpha,A.plotFillAlpha),f.colorObj=S=f.is3d?(0,a.getPointColor)(l,c):{color:l,alpha:c},f.setDisplayValue=w=(0,r.parseUnsafeString)((0,r.pluck)(p.displayvalue,p.name,p.label)),s=f.formatedVal=null===f.y?f.y:F.dataLabels(f.y),f.displayValue=(0,r.pluck)(w,f.formatedVal),f.setTooltext=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(p.tooltext,N.plottooltext,E.plottooltext))),A.showTooltip?null===s?d=!1:void 0!==f.setTooltext?(v=[4,5,6,7,8,9,10,11,12,13,118],m={yDataValue:s,xDataValue:F.xAxis(C),yaxisName:(0,r.parseUnsafeString)(E.yaxisname),xaxisName:(0,r.parseUnsafeString)(E.xaxisname),zDataValue:F.dataLabels(f.z)},d=(0,r.parseTooltext)(f.setTooltext,v,m,p,E,N)):(A.seriesNameInTooltip&&(g=(0,r.getFirstValue)(N&&N.seriesname)),d=g?g+B:"",d+=C?F.xAxis(C)+B:"",d+=s,d+=p.z?B+F.dataLabels(p.z):""):d=!1,f.toolText=d,h=f.hoverEffects={},0!==A.showHoverEffect){if(P=h.enabled=void 0!==(0,r.pluck)(p.hoveralpha,N.hoveralpha,E.bubblehoveralpha,p.hovercolor,N.hovercolor,N.bubblehovercolor,E.bubblehovercolor,p.borderhovercolor,N.borderhovercolor,E.plotborderhovercolor,p.borderhoveralpha,N.borderhoveralpha,E.plotborderhoveralpha,p.hoverscale,N.bubblehoverscale,E.bubblehoverscale,p.borderhovercolor,N.borderhovercolor,E.plotborderhovercolor,p.borderhoverthickness,N.borderhoverthickness,E.plotborderhoverthickness,p.negativehovercolor,N.negativeColor,E.negativecolor,p.is3donhover,E.plotfillhovercolor,N.is3donhover,E.is3donhover,void 0),h.negativeColor=(0,r.pluck)(p.negativehovercolor,N.negativehovercolor,E.negativehovercolor,A.negativeColor),h.is3d=(0,r.pluckNumber)(p.is3donhover,N.is3donhover,E.is3donhover,f.is3d),h.color=(0,r.pluck)(p.hovercolor,N.hovercolor,N.bubblehovercolor,E.plotfillhovercolor,E.bubblehovercolor,f.is3d?S.FCcolor.color:l),h.color=h.negativeColor&&p.z<0?h.negativeColor:h.color,h.scale=(0,r.pluck)(p.hoverscale,N.hoverscale,N.bubblehoverscale,E.bubblehoverscale,1),h.color=(0,a.getFirstColor)(h.color),h.alpha=(0,r.pluck)(p.hoveralpha,N.hoveralpha,E.plotfillhoveralpha,E.bubblehoveralpha,c),h.borderColor=(0,r.pluck)(p.borderhovercolor,N.borderhovercolor,E.plotborderhovercolor,A.anchorBorderColor),h.borderAlpha=(0,r.pluck)(p.borderhoveralpha,N.borderhoveralpha,E.plotborderhoveralpha,h.alpha,A.plotBorderAlpha),h.borderThickness=(0,r.pluckNumber)(p.borderhoverthickness,N.borderhoverthickness,E.plotborderhoverthickness,A.anchorBorderThickness),h.color=h.is3d?(0,a.getPointColor)(h.color,h.alpha):{FCcolor:{color:h.color,alpha:h.alpha}},1===(P&&A.showHoverEffect?0:A.showHoverEffect)){for(O=(k=(D="string"==typeof h.color)?h.color.split(/\s{0,},\s{0,}/):h.color.FCcolor.color.split(/\s{0,},\s{0,}/)).length,_=0;_<O;_++)k[_]=(0,a.getLightColor)(k[_],70);D?h.color=k.join(","):h.color.FCcolor.color=k.join(",")}!1===P&&(h.enabled=Boolean(A.showHoverEffect))}else h.enabled=!1;A.xMax=R,A.xMin=G,A.yMin=z,A.yMax=V,this.setState("dirty",!0),this.setState("visible",1===(0,r.pluckNumber)(N.visible,!Number(N.initiallyhidden),1)),x.config.showLegend&&this._addLegend(),this.setState("dirty",!0)},e.prototype._getHoveredPlot=function(t,e){var o=this.config.dataTree.getNeighbour({x:t,y:e},!0,"circle");if(o)return{pointIndex:o.index||o.i,hovered:!0,pointObj:o.data}},e.prototype._hoverPlotAnchor=function(t,e,o){var n=this.getFromEnv("animationManager"),r=t.graphics.element,a="DataPlotRollOut"===e?r.data(d):r.data(f);o&&r&&(n.setAnimationState&&n.setAnimationState("DataPlotRollOut"===e?"mouseOut":"mouseOver"),n.setAnimation({el:r,attr:a,component:this}))},e.prototype._addLegend=function(){var t,e,o=this.getFromEnv("chart"),n=this.config,r=o.getChildren("legend")[0];n.includeinlegend?(e={enabled:n.includeInLegend,anchorSide:1,type:this.type,label:n.seriesname},(t=r.getItem(this.config.legendItemId))?t.configure({style:r.config.itemStyle,hiddenStyle:r.config.itemHiddenStyle,datasetVisible:r.config.datasetVisible,hoverStyle:r.config.itemHoverStyle}):(this.config.legendItemId=r.createItem(this),t=r.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){t.itemClickFn()},t)),t.configure(e),t.setStateCosmetics("default",{symbol:{fill:n.fillColor,rawFillColor:n.anchorBgColor,rawStrokeColor:n.anchorBorderColor,stroke:n.strokeColor}}),this.getState("visible")?t.removeLegendState("hidden"):t.setLegendState("hidden")):this.config.legendItemId&&r.disposeItem(this.config.legendItemId)},e.prototype.getBubbleRadius=function(t){var e,o=h.sqrt,n=this.config,r=n.bubbleScale,a=n.minBubbleRadius,i=this.getFromEnv("chartConfig"),l=b(i.canvasHeight,i.canvasWidth)/8,c=o(this.getLinkedParent().getDataLimitRange().zMax),s=o(t);return e=g(s*l/c)*r||0,a&&(e=y(e,a)),e},e.prototype.createCoordinates=function(){var t,e,o,n,r,a,i,l=this.components,c=l.data,s=this.getFromEnv("yAxis"),u=s.getAxisBase(),p=s.getPixel(u),f=this.getFromEnv("xAxis"),d=f.config.isVertical,h=c.length,g=l.data;for(n=0;n<h;n++)e=(t=g[n])&&t.config,void 0!==t&&(o=e._b,r=f.getPixel(e._x),a=s.getPixel(e._y),i=o?s.getPixel(o):p,"bubble"===this.getName()&&(e.r=this.getBubbleRadius(e._z)),d?(e._Px=a,e._Py=r,e._Pby=a,e._Pbx=i):(e._Px=r,e._Py=a,e._Pby=i,e._Pbx=r))},e.prototype.parsePlotAttributes=function(t,e){var o,n,a,i,l,c,s,u,f,d,h,g,b,m=this.config.JSONData,v=this.getFromEnv("chart").config,C=this.config,w=e,D=this.getState("visible"),_=C.anchorBorderThickness;i=t.config,c=(0,r.pluckNumber)(i.x,w),s=i.y,u=i.z,f=i.setLink,d=i.displayValue,l=i.toolText,i.finalTooltext=i.toolText,h=i.hoverEffects,null!==s&&((b=i.eventArgs||(i.eventArgs={})).index=w,b.link=f,b.value=s,b.y=s,b.x=c,b.z=u,b.displayValue=d,b.toolText=l,b.id=this.userID,b.datasetIndex=this.config.index,b.datasetName=m.seriesname,b.visible=D,n=i._Py,a=i._Px,o=i.r,[].push({x:a,y:n,r:o}),g=i.setRolloutAttr={fill:(0,r.toRaphaelColor)(i.colorObj),"stroke-width":C.anchorBorderThickness,stroke:(0,r.toRaphaelColor)({color:C.anchorBorderColor,alpha:C.plotBorderAlpha}),r:o},!1!==h.enabled&&(i.setRolloverAttr={fill:(0,r.toRaphaelColor)(h.color),"stroke-width":h.borderThickness,stroke:(0,r.toRaphaelColor)({color:h.borderColor,alpha:h.borderAlpha}),r:o*h.scale}),i.props={element:{attr:{cx:a,cy:D?n:v.canvasBottom+o,r:o||0,fill:(0,r.toRaphaelColor)(i.colorObj),"stroke-width":C.anchorBorderThickness,visibility:D,stroke:g.stroke}}},i.trackerConfig||(i.trackerConfig={}),i.trackerConfig.trackerRadius=y(o+(_||0),p),t._xPos=a,t._yPos=n)},e.prototype.allocatePosition=function(){var t,e,o,n,r,a,l,c=this.components.data,s=[];for(this.createCoordinates(),e=0,o=c.length;e<o;e+=1)t=c[e],this.parsePlotAttributes(t,e),this.parseLabelAttributes(t,e),t&&(n=(a=t.config)._Px,r=a._Py,l=a.r||0,s.push({x:n,y:r,index:e,data:t,r:l}));this.config.dataTree=(new i["default"]).buildKdTree(s)},e.prototype.getCanvasPadding=function(){var t,e,o,n,r,a,i,l,c,s,u,p,f,d,h,g=this.config||(this.config={}),y=this.components||{},m=this.getFromEnv("chartConfig"),v=m.rotatevalues,C=this.getFromEnv("xAxis"),w=this.getFromEnv("dataLabelStyle"),D=y.data||[],_=D.length,O=g.leftMostData||D[0],S=g.rightMostData||D[D.length-1],P=b(m.canvasHeight,m.canvasWidth)/8,k=1,x=1,E=m.zMax,N=g.bubbleScale,A=C.config.axisRange,j=A.max,T=A.min,M=C.getPixel(j),F=C.getPixel(T),B={},I={},L=this.getFromEnv("smartLabel"),R={paddingLeft:0,paddingRight:0},G=0;for(t=P/Math.sqrt(E),l=0;l<_;l++)e=D[l].config,o=O.config,n=S.config,a=Math.sqrt(e.z),f=Math.round(a*t)*N||0,d=C.getValue(f)-T,c=e.x-d/2,1===k&&(a=Math.sqrt(o.z),f=Math.round(a*t)*N||0,d=C.getValue(f)-T,s=o.x-d/2),1===x&&(a=Math.sqrt(n.z),f=Math.round(a*t)*N||0,d=C.getValue(f)-T,u=n.x-d/2),k=0,x=0,s>c&&(O=D[l],k=1),u<c&&(S=D[l],x=1);return L.useEllipsesOnOverflow(m.useEllipsesWhenOverflow),L.setStyle(w),O&&O.config.showValue&&(p=(r=O.config).displayValue,I=L.getOriSize(p),G=v?I.height:I.width,F>(i=C.getPixel(r.x)-.5*G)&&(R.paddingLeft=F-i)),S&&S.config.showValue&&(p=(r=S.config).displayValue,B=L.getOriSize(p),G=v?B.height:B.width,M<(h=C.getPixel(r.x)+.5*G)&&(R.paddingRight=h-M)),R},e.prototype.drawPlots=function(){var t,e,o,n,r,a,i,l,c,s=this,u=s.getFromEnv("animationManager"),p=s.components.data,h=s.getContainer(),g=s.getState("visible"),b=s.getContainer("labelGroup"),y=function(){!1===g&&(h.plotGroup.hide(),h.commonElemsGroup.hide(),b&&b.hide(),s._containerHidden=!0)},m={};for(r=0,a=p.length;r<a;r+=1)l=(i=(n=p[r]).config).y,t=n.graphics.element,m=i.hoverEffects,o=n.graphics.hotElement,c=n.graphics.label,null!==l?(e=n.graphics.element,t=u.setAnimation({el:e||"circle",attr:i.props.element.attr,label:"circle",callback:y,component:s,container:h.plotGroup}),e||(n.graphics.element=t),t.show(),t.data("hoverEnabled",m.enabled).data(f,i.setRolloverAttr).data(d,i.setRolloutAttr).data("anchorRadius",i.r).data("anchorHoverRadius",i.r),t&&t.data("eventArgs",i&&i.eventArgs)):(t&&t.hide(),o&&o.hide(),c&&c.hide()),t&&(t.isDrawn=!0)},e.prototype.getDataLimits=function(){var t=this.getFromEnv("chart").config,e=this.config,o=e.yMax,n=e.yMin,r=-Infinity,a=+Infinity,i=t.transposeAxis,l=e.xMin,c=e.xMax,s=e.max,u=e.min,p=this.getRegressionPoints();return!1===this.getState("visible")&&i&&(o=r,n=a,l=a,c=r),p&&(o=Math.max(o,p.max),n=Math.min(n,p.min),c=Math.max(c,p.xMax),l=Math.min(l,p.xMin)),{max:o,min:n,xMin:l,xMax:c,zMax:s,zMin:u}},e}(n["default"]);e["default"]=m},422:function(t,e,o){"use strict";e.__esModule=!0,e["default"]={"initial.dataset.bubble":function(){return{"circle.appearing":function(t){return[{initialAttr:{cx:t.attr.cx,cy:t.attr.cy,r:0},slot:"plot"}]},"group.appearing":function(t){return"label-group"===t.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},423:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(131),a=(n=r)&&n.__esModule?n:{"default":n},i=o(118);function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.setState("visible",!0),o}return l(e,t),e.prototype.createContainer=function(){var t=void 0,e=this.getFromEnv("animationManager"),o=void 0,n=this.getLinkedParent().getChildContainer();for(t in n)o=n[t],!this.getChildContainer(t)&&this.addChildContainer(t,e.setAnimation({el:"group",attr:{name:"manager-"+t},component:this,container:o}))},e.prototype.draw=function(){this.createContainer()},e.prototype.getDataLimitRange=function(){var t,e,o,n,r,a=this.getChildren(),i=-Infinity,l=+Infinity,c=-Infinity,s=+Infinity;for(e in a)if(a.hasOwnProperty(e)&&(o=a[e])instanceof Array)for(n=o.length,t=0;t<n;t++)o[t].getState("removed")||(r=o[t].getDataLimits(),c=Math.max(c,r.xMax||-Infinity),s=Math.min(s,r.xMin||+Infinity),i=Math.max(i,r.zMax||-Infinity),l=Math.min(l,r.zMin||+Infinity));return{xMax:c,xMin:s,zMax:i=i===-Infinity?0:i,zMin:l=l===+Infinity?0:l}},e.prototype.childChanged=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},e=this.config,o=this.getLinkedParent(),n=void 0,r=void 0,a={},i=void 0;!1===t.hide&&!1===t.show||(this._mapChildren(function(t){t.setState("dirty",!0)}),i=!0),!1!==t.dataLimitChanged&&((n=this.getDataLimits()).min===e.range.min&&n.max===e.range.max||(e.range.min=n.min,e.range.max=n.max,a.dataLimitChanged=!0,i=!0)),!1!==t.paddingChanged&&((r=this.getAxisValuePadding()).left===e.padding.left&&r.right===e.padding.right||(e.padding.left=r.left,e.padding.right=r.right,a.paddingChanged=!0,i=!0)),i?o.childChanged&&o.childChanged(a):this.asyncDraw()},e.prototype.getAxisValuePadding=function(){var t={},e=-Infinity,o=-Infinity;return this._mapChildren(function(n){n.getState("removed")||!1===n.getState("visible")||(t=n.getAxisValuePadding&&n.getAxisValuePadding()||{},e=Math.max(e,t.left||-Infinity),o=Math.max(o,t.right||-Infinity))}),e===-Infinity&&(e=0),o===-Infinity&&(o=0),this.config.padding||(this.config.padding={},this.config.padding.left=e,this.config.padding.right=o),{left:e,right:o}},e.prototype.getCanvasPadding=function(){var t,e,o={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return this._mapChildren(function(n){if(!n.getState("removed"))for(e in t=n.getCanvasPadding&&n.getCanvasPadding()||{})t.hasOwnProperty(e)&&(o[e]=Math.max(t[e],o[e]))}),o},e.prototype.getDataLimits=function(){var t,e,o,n=this.getFromEnv("chart"),r=-Infinity,a=+Infinity,l=r,c=a,s=a,u=r;return this._mapChildren(function(n){var p;n.getDataLimits&&!n.getState("removed")&&(t=n.getDataLimits(),p=t,e=(0,i.pluck)(p.xMax,r),o=(0,i.pluck)(p.xMin,a),l=Math.max(l,p.max),c=Math.min(c,p.min),u=Math.max(u,e),s=Math.min(s,o))}),l===-Infinity&&(l=0),c===+Infinity&&(c=0),this.config.range||(this.config.range={},this.config.range.min=c,this.config.range.max=l,this.config.range.xMin=s,this.config.range.xMax=u),n.config.yMax=l,n.config.yMin=c,{min:c,max:l,xMin:s,xMax:u}},e.prototype.isVisible=function(){return!this.isNotVisible},e.prototype.getType=function(){return"manager"},e.prototype.getName=function(){return"BubbleGroupManager"},e.prototype.remove=function(){this._mapChildren(function(t){t.getState("removed")||t.remove()}),t.prototype.remove.call(this)},e}(a["default"]);e["default"]=c},426:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(427)),r=i(o(409)),a=o(118);function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.showsum=0,o}return l(e,t),e.getName=function(){return"StackedArea2D"},e.prototype.getName=function(){return"StackedArea2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Stacked Area Chart",e.plotfillalpha=a.HUNDREDSTRING,e.isstacked=1},e.prototype.getDSGroupdef=function(){return r["default"]},e}(n["default"]);e["default"]=c},429:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(430)),r=i(o(409)),a=i(o(366));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.getName=function(){return"StackedBar3D"},e.prototype.getName=function(){return"StackedBar3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="3D Stacked Bar Chart",e.enablemousetracking=!0,e.maxbarheight=50,e.isstacked=!0},e.prototype.getDSdef=function(){return a["default"]},e.prototype.getDSGroupdef=function(){return r["default"]},e}(n["default"]);e["default"]=c},430:function(t,e,o){"use strict";e.__esModule=!0;var n=l(o(431)),r=l(o(402)),a=l(o(366)),i=l(o(432));function l(t){return t&&t.__esModule?t:{"default":t}}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultSeriesType="bar3d",o.defaultPlotShadow=1,o.isBar=!0,o.defaultZeroPlaneHighlighted=!1,o.registerFactory("dataset",i["default"],["vCanvas"]),o}return c(e,t),e.getName=function(){return"MSBar3D"},e.prototype.getName=function(){return"MSBar3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="Multi-series 3D Bar Chart",e.hasLegend=!0,e.defaultDatasetType="bar3d",e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(){return a["default"]},e.prototype.getDSGroupdef=function(){return r["default"]},e}(n["default"]);e["default"]=s},431:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(353)),r=i(o(335)),a=i(o(432));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.registerFactory("canvas",r["default"]),o.registerFactory("dataset",a["default"],["vCanvas"]),o}return l(e,t),e.getName=function(){return"MSBarCartesian3D"},e.prototype.getName=function(){return"MSBarCartesian3D"},e.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e),this.config.drawTrendRegion=0},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.showplotborder=0,e.showzeroplaneontop=0},e}(n["default"]);e["default"]=c},432:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e,o,n,a=t.getFromEnv("dataSource").dataset,l=void 0,c=l=t.getChildren().canvas[0].getChildren("vCanvas")[0],s=t.config.defaultDatasetType||"",u=void 0;a||t.setChartMessage(),(0,r.componentFactory)(l,i["default"],"datasetGroup_"+s),u=l.getChildren("datasetGroup_"+s)[0],e=t.getDSGroupdef(),(0,r.componentFactory)(u,e,"datasetGroup_"+s),(n=u.getChildren("datasetGroup_"+s))&&(c=n[0]),o=t.getDSdef(),(0,r.datasetFactory)(c,o,"dataset",a.length,a)};var n,r=o(118),a=o(340),i=(n=a)&&n.__esModule?n:{"default":n}},433:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(434)),r=a(o(409));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return i(e,t),e.getName=function(){return"StackedBar2D"},e.prototype.getName=function(){return"StackedBar2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Stacked Bar Chart",e.enablemousetracking=!0,e.maxbarheight=50,e.isstacked=!0},e.prototype.getDSGroupdef=function(){return r["default"]},e}(n["default"]);e["default"]=l},434:function(t,e,o){"use strict";e.__esModule=!0;var n=l(o(353)),r=l(o(362)),a=l(o(402)),i=l(o(356));function l(t){return t&&t.__esModule?t:{"default":t}}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.isBar=!0,o.registerFactory("dataset",i["default"],["vCanvas"]),o}return c(e,t),e.getName=function(){return"MSBar2D"},e.prototype.getName=function(){return"MSBar2D"},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Multi-series Bar Chart",e.hasLegend=!0,e.defaultDatasetType="bar2d"},e}(n["default"]);e["default"]=s},435:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(436)),r=i(o(342)),a=i(o(409));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.getName=function(){return"StackedColumn3D"},e.prototype.getName=function(){return"StackedColumn3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="3D Stacked Column Chart",e.maxbarheight=50,e.enablemousetracking=!0,e.isstacked=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e}(n["default"]);e["default"]=c},436:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(437)),r=i(o(342)),a=i(o(402));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o.defaultZeroPlaneHighlighted=!1,o}return l(e,t),e.getName=function(){return"MSColumn3D"},e.prototype.getName=function(){return"MSColumn3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="Multi-series 3D Column Chart",e.defaultDatasetType="column3d",e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e}(n["default"]);e["default"]=c},437:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(354)),r=i(o(335)),a=i(o(432));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.registerFactory("canvas",r["default"]),o.registerFactory("dataset",a["default"],["vCanvas"]),o}return l(e,t),e.getName=function(){return"MSCartesian3D"},e.prototype.getName=function(){return"MSCartesian3D"},e.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e),this.config.drawTrendRegion=0},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.showplotborder=0,e.drawcrosslineontop=0,e.showzeroplaneontop=0},e}(n["default"]);e["default"]=c},438:function(t,e,o){"use strict";e.__esModule=!0;var n=i(o(404)),r=i(o(331)),a=i(o(409));function i(t){return t&&t.__esModule?t:{"default":t}}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.getName=function(){return"StackedColumn2D"},e.prototype.getName=function(){return"StackedColumn2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Stacked Column Chart",e.isstacked=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e}(n["default"]);e["default"]=c},441:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(442)),r=a(o(409));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultSecondaryDataset="line",o.isDual=!0,o}return i(e,t),e.getName=function(){return"StackedColumn3DLineDy"},e.prototype.getName=function(){return"StackedColumn3DLineDy"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.sDefaultDatasetType="line",e.friendlyName="Stacked 3D Column and Line Chart",e.defaultDatasetType="column3d",e.use3dlineshift=1,e.isdual=!0,e.isstacked=!0,e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSGroupdef=function(t){return"column3d"===t?r["default"]:void 0},e}(n["default"]);e["default"]=l},442:function(t,e,o){"use strict";e.__esModule=!0;var n=c(o(443)),r=c(o(342)),a=c(o(346)),i=c(o(402)),l=c(o(444));function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o.isDual=!0,o.registerFactory("dataset",l["default"],["vCanvas"]),o}return s(e,t),e.getName=function(){return"MSColumn3DLineDy"},e.prototype.getName=function(){return"MSColumn3DLineDy"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.sDefaultDatasetType="line",e.friendlyName="Multi-series 3D Column and Line Chart",e.defaultDatasetType="column3d",e.use3dlineshift=1,e.isdual=!0,e.showplotborder=0,e.enablemousetracking=!0,e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha="100",e.anchorimagealpha="100",e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha="70",e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha="100",e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0,e.showzeroplaneontop=0},e.prototype.getDSdef=function(t){return"line"===t?a["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column3d"===t?i["default"]:void 0},e.prototype.getDSType=function(t,e){return t&&"line"===t.toLowerCase()||e?"line":"column3d"},e}(n["default"]);e["default"]=u},443:function(t,e,o){"use strict";e.__esModule=!0;var n=a(o(383)),r=a(o(335));function a(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var l=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.registerFactory("canvas",r["default"]),o}return i(e,t),e.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e),this.config.drawTrendRegion=0},e.getName=function(){return"MSDybaseCartesian3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.is3D=!0},e.prototype.getName=function(){return"MSDybaseCartesian3D"},e}(n["default"]);e["default"]=l},444:function(t,e,o){"use strict";e.__esModule=!0,e["default"]=function(t){var e=t.getFromEnv("dataSource").dataset,o=t.getChildren().canvas[0].getChildren("vCanvas"),n=o[0],r=o[1],u=void 0,p=t.getFromEnv("chartConfig").isdual,f=void 0,d={vCanvasDatasetsDef0:{},vCanvasDatasetsDef1:{}},h=void 0,g=void 0,b=void 0,y=void 0,m=void 0,v=void 0,C=void 0,w=void 0,D={},_={};for(e||t.setChartMessage(),f=0;f<e.length;f++)"s"===(v=(u=e[f]).parentyaxis||"").toLowerCase()&&p?(m=(0,i.pluck)(u.renderas,t.config.sDefaultDatasetType),C=r,w=_,g=d.vCanvasDatasetsDef1):(m=(0,i.pluck)(u.renderas,t.config.defaultDatasetType),C=n,w=D,g=d.vCanvasDatasetsDef0),m=t.getDSType(m,"s"===v.toLowerCase()),(y=t.getDSGroupdef(m,v))&&((0,i.componentFactory)(C,a["default"],s),w[(h=C.getChildren(s)[0]).getName()]=!0,(0,i.componentFactory)(h,y,c),w[y.getName().toLowerCase()]=!0),w[m.toLowerCase()]=!0,g[m]?(g[m].conf.push(u),g[m].indices.push(f)):(g[m]={},g[m].indices=[f],g[m].classDef=t.getDSdef(m),g[m].conf=[u],g[m].pYAxis=v.toLowerCase(),g[m].parent=y?h.getChildren(c)[0]:C);for(var O in d)if(d.hasOwnProperty(O))for(m in g=d[O])g.hasOwnProperty(m)&&("group"===(b=g[m]).parent.getType()&&b.parent.configure(b.conf),(0,i.datasetFactory)(b.parent,b.classDef,"dataset_"+m,b.conf.length,b.conf,b.indices));(0,l.removeComponents)(o[0],Object.keys(D)),(0,l.removeComponents)(o[1],Object.keys(_))};var n,r=o(340),a=(n=r)&&n.__esModule?n:{"default":n},i=o(118),l=o(386);var c="multiseriesColumnManager",s="multiseriesColumnManager3D"},445:function(t,e,o){"use strict";e.__esModule=!0;var n=l(o(446)),r=l(o(342)),a=l(o(346)),i=l(o(409));function l(t){return t&&t.__esModule?t:{"default":t}}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return c(e,t),e.getName=function(){return"StackedColumn3DLine"},e.prototype.getName=function(){return"StackedColumn3DLine"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="Stacked 3D Column and Line Chart",e.use3dlineshift=1,e.isstacked=!0,e.stack100percent=0,e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(t){return"line"===t?a["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column"===t?i["default"]:undefined},e.prototype.getDSType=function(t){return t&&"line"===t.toLowerCase()?"line":"column"},e}(n["default"]);e["default"]=s},446:function(t,e,o){"use strict";e.__esModule=!0;var n=p(o(437)),r=p(o(342)),a=p(o(396)),i=p(o(400)),l=p(o(347)),c=p(o(346)),s=p(o(402)),u=p(o(444));function p(t){return t&&t.__esModule?t:{"default":t}}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var d=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o.registerFactory("dataset",u["default"],["vCanvas"]),o}return f(e,t),e.getName=function(){return"MSCombi3D"},e.prototype.getName=function(){return"MSCombi3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="Multi-series 3D Combination Chart",e.defaultDatasetType="column3d",e.showplotborder=0,e.enablemousetracking=!0,e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha="100",e.anchorimagealpha="100",e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha="70",e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha="100",e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0},e.prototype.getDSdef=function(t){return"splinearea"===t?a["default"]:"spline"===t?i["default"]:"area"===t?l["default"]:"line"===t?c["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column3d"===t?s["default"]:void 0},e.prototype.getDSType=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return"area"===t.toLowerCase()?"area":"line"===t.toLowerCase()?"line":"spline"===t.toLowerCase()?"spline":"splinearea"===t.toLowerCase()?"splinearea":"column3d"},e}(n["default"]);e["default"]=d},447:function(t,e,o){"use strict";e.__esModule=!0;var n=c(o(448)),r=c(o(331)),a=c(o(346)),i=c(o(400)),l=c(o(409));function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return s(e,t),e.getName=function(){return"StackedColumn2DLine"},e.prototype.getName=function(){return"StackedColumn2DLine"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Stacked Column and Line Chart",e.defaultDatasetType="column",e.isstacked=!0,e.stack100percent=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(t){return"spline"===t?i["default"]:"line"===t?a["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column"===t?l["default"]:void 0},e.prototype.getDSType=function(){return"line"===(arguments.length>0&&arguments[0]!==undefined?arguments[0]:"").toLowerCase()?"line":"column"},e}(n["default"]);e["default"]=u},448:function(t,e,o){"use strict";e.__esModule=!0;var n=p(o(428)),r=p(o(331)),a=p(o(347)),i=p(o(346)),l=p(o(396)),c=p(o(400)),s=p(o(402)),u=p(o(385));function p(t){return t&&t.__esModule?t:{"default":t}}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var d=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.registerFactory("dataset",u["default"],["vCanvas"]),o}return f(e,t),e.getName=function(){return"MSCombi2D"},e.prototype.getName=function(){return"MSCombi2D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Multi-series Combination Chart",e.defaultDatasetType="column",e.enablemousetracking=!0,e.showzeroplaneontop=0},e.prototype.getDSdef=function(t){return"splinearea"===t?l["default"]:"spline"===t?c["default"]:"area"===t?a["default"]:"line"===t?i["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column"===t?s["default"]:void 0},e.prototype.getDSType=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return"splinearea"===t.toLowerCase()?"splinearea":"spline"===t.toLowerCase()?"spline":"area"===t.toLowerCase()?"area":"line"===t.toLowerCase()?"line":"column"},e}(n["default"]);e["default"]=d},449:function(t,e,o){"use strict";e.__esModule=!0;var n=l(o(446)),r=l(o(342)),a=l(o(346)),i=l(o(402));function l(t){return t&&t.__esModule?t:{"default":t}}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var s=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.defaultPlotShadow=1,o}return c(e,t),e.getName=function(){return"MSColumnLine3D"},e.prototype.getName=function(){return"MSColumnLine3D"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.is3D=!0,e.friendlyName="Multi-series Column and Line Chart",e.use3dlineshift=1,e.showplotborder=0,e.enablemousetracking=!0},e.prototype.getDSdef=function(t){return"line"===t?a["default"]:r["default"]},e.prototype.getDSGroupdef=function(t){return"column3d"===t?i["default"]:undefined},e.prototype.getDSType=function(t){return t&&"line"===t.toLowerCase()?"line":"column3d"},e}(n["default"]);e["default"]=s},450:function(t,e,o){"use strict";e.__esModule=!0;var n=c(o(354)),r=c(o(451)),a=c(o(453)),i=c(o(356)),l=o(118);function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.isValueAbs=!0,o.distributedColumns=!0,o.stack100percent=!0,o.isStacked=!0,o.showsum=1,o.registerFactory("dataset",function(t){(0,i["default"])(t);var e=t.getChildren().canvas[0].getChildren("vCanvas")[0],o=t.config.defaultDatasetType||"";e.getChildren("datasetGroup_"+o)[0].addToEnv("categories",t.getFromEnv("dataSource").categories)},["vCanvas"]),o}return s(e,t),e.getName=function(){return"Marimekko"},e.prototype._checkInvalidSpecificData=function(){var t=this.getFromEnv("dataSource"),e=t.dataset,o=t.categories;if(!(e&&o&&0!==o.length&&o[0].category&&o[0].category instanceof Array))return!0},e.prototype.getName=function(){return"Marimekko"},e.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e),this.config.showXAxisPercentValues=(0,l.pluckNumber)(e.chart&&e.chart.showxaxispercentvalues,1)},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Marimekko Chart",e.defaultDatasetType="marimekko",e.isstacked=!0,e.showpercentvalues=0,e.usepercentdistribution=1,e.showsum=1,e.enablemousetracking=!0},e.prototype.getDSdef=function(){return r["default"]},e.prototype.getDSGroupdef=function(){return a["default"]},e}(n["default"]);e["default"]=u},451:function(t,e,o){"use strict";e.__esModule=!0;var n=c(o(331)),r=o(118),a=o(122),i=c(o(452)),l=o(125);function c(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var u=r.regex.dropHypeash,p=Math,f=p.round,d=p.abs;(0,l.addDep)({name:"marimekkoAnimation",type:"animationRule",extension:i["default"]});var h=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.config.groupName="column",o}return s(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"marimekko"},e.prototype.configure=function(e){(0,r.fcEach)(e.data,function(t){t&&(t.value=d(t.value))}),t.prototype.configure.call(this,e)},e.prototype._addLegend=function(){var t,e,o,n,i=this.config,l=this.getFromEnv("legend"),c=(0,r.pluckNumber)(this.getFromEnv("chart-attrib").useplotgradientcolor,1),s=i.legendSymbolColor;t=(0,a.getLightColor)(s,60).replace(u,r.HASHSTRING),e=c?{FCcolor:{color:s+","+s+","+(0,a.getLightColor)(s,40)+","+s+","+s,ratio:"0,70,30",angle:270,alpha:"100,100,100,100,100"}}:{FCcolor:{color:s,angle:0,ratio:"0",alpha:"100"}},o={enabled:i.includeInLegend,type:this.type,label:(0,r.getFirstValue)(this.config.JSONData.seriesname)},i.includeinlegend?((n=l.getItem(this.config.legendItemId))||(this.config.legendItemId=l.createItem(this),n=l.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){n.itemClickFn()},n)),n.configure(o),n.setStateCosmetics("default",{symbol:{fill:(0,r.toRaphaelColor)(e),rawFillColor:e.FCcolor.color,stroke:(0,r.toRaphaelColor)(t)}}),this.getState("visible")?n.removeLegendState("hidden"):n.setLegendState("hidden")):this.config.legendItemId&&l.disposeItem(this.config.legendItemId)},e.prototype.searchIndex=function(t,e){for(var o,n,r=this.getFromEnv("xAxis"),a=0,i=e.length-1;a<=i;)if(o=Math.round((a+i)/2)||0,(n=r.getPixel(e[o].x)+e[o].columnWidth/2)<t)a=o+1;else{if(!(n>t))return o;i=o-1}return a},e.prototype.allocatePosition=function(){this.getLinkedParent()._setStackDimensions(),t.prototype.allocatePosition.call(this)},e.prototype._getHoveredPlot=function(t,e){var o,n,r,a,i=this.getLinkedParent(),l=i.getstackConf(),c=this.getFromEnv("chartConfig"),s=i.config,u=c.plotborderthickness,p=c.showplotborder,f=l.length-1;return n=t+(o=(o=(u=p?u:0)/2)%2==0?o+1:Math.round(o)),a=r&&s.datasetIndex||this.searchIndex(n,l),s.datasetIndex||(s.datasetIndex=a),(r=this._checkPointerOverColumn(a,t,e))?delete s.datasetIndex:this.index===f&&delete s.datasetIndex,r},e.prototype.setColumnPosition=function(){return this},e.prototype.fineTunePlotDimension=function(t,e,o,n,r){var a=this.getLinkedParent().getstackConf(),i=this.getFromEnv("chart"),l=i.config.plotborderthickness,c=i.getChildren("canvas")[0].config,s=c.canvasBorderWidth>0,u=c.canvasRight,p=c.canvasTop,d=c.canvasLeft;return a.length?(t-=(n=a[r].columnWidth)/2,parseInt(e)<=p&&(o-=p-e-+s,e=p-+s),l<=1&&(f(t)<=d&&(n+=t,n-=t=d-l/2+ +!!l-+s),f(t+n)>=u&&(n=u-t+l/2-+!!l+ +s)),{xPos:t,yPos:e,width:n,height:o}):{xPos:t,yPos:e,width:n,height:o}},e}(n["default"]);e["default"]=h},452:function(t,e,o){"use strict";e.__esModule=!0;var n=o(118);e["default"]={"initial.dataset.marimekko":function(){var t=this,e=t.getFromEnv("chart"),o=e.config.yDepth||0,r=t.getFromEnv("yAxis");return{"rect.appearing":function(a){var i,l,c,s,u=r.getPixel(r.getAxisBase())+(e.isBar?-o:o),p=a.attr;return i=p.y,l=p.height,s=Math.sign(i+l/2-u),c=i+l,[{initialAttr:function(){var t={};return t.y=c,t.height=0,t},slot:"plot",startEnd:function(){return n.animHelperFN.getTimeByValue({start:0,end:.6},{startPx:u,endPx:1===s?t.config.yAxisMaxPixel:t.config.yAxisMinPixel},{startPx:c,endPx:1===s?p.y+p.height:p.y})},effect:"linear"}]},"group.appearing":null,"group.updating":null,"plotLabel.appearing":[{initialAttr:{opacity:0},slot:"final"}],"*":null}}}},453:function(t,e,o){"use strict";e.__esModule=!0;var n,r=o(409),a=(n=r)&&n.__esModule?n:{"default":n},i=o(118);function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),n=0;n<o.length;n++){var r=o[n],a=Object.getOwnPropertyDescriptor(e,r);a&&a.configurable&&t[r]===undefined&&Object.defineProperty(t,r,a)}}(t,e))}var c=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return l(e,t),e.prototype.getType=function(){return"group"},e.prototype.getName=function(){return"marimekkoStackgroup"},e.prototype.getstackConf=function(){return this.config.stackConf},e.prototype._setStackPosition=function(){t.prototype._setStackPosition.call(this);var e,o,n,r,a,i,l=this.config,c=l.stackConf||(l.stackConf=[]),s=l.stackValues,u=this.getFromEnv("categories")[0].category,p=this.getFromEnv("number-formatter"),f=0,d=0,h=0,g=this.getFromEnv("xAxis"),b=g.getVisibleConfig(),y=b.minValue,m=b.maxValue-y,v=y;for(r=0,a=s.length;r<a;r++)d+=s[r]&&s[r].positive||0;for(l.totalSumValue=d,r=0;r<u.length;r++)(o=u[r]).widthpercent&&(f+=p.getCleanValue(o.widthpercent));for(100===f&&(l.setUserWidth=1),e=this.getStackSumPercent(),r=0,a=s.length;r<a;r++)(n=c[r])||(n=c[r]={}),h+=e[r]/100,i=e[r]/100*m/2+v,v=h*m+y,n.x=i,g.updateTicksValues(r,{x:i})},e.prototype.getStackSumPercent=function(){var t,e=this.config,o=e.stackValues,n=e.totalSumValue,r=this.getFromEnv("number-formatter"),a=this.getFromEnv("categories")[0].category,i=e.setUserWidth,l=[];for(t=0;t<o.length;t++)l[t]=i?r.getCleanValue(a[t].widthpercent):(o[t]&&o[t].positive||0)/n*100;return l},e.prototype.draw=function(){t.prototype.draw.call(this),this.drawLabel()},e.prototype.createContainer=function(){t.prototype.createContainer.call(this);var e=this.getLinkedParent();!this.getContainer("commonLabelContainer")&&this.addContainer("commonLabelContainer",function(t,e,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:t},container:e,component:o,label:"group"})}("manager-commonLabelContainer",e.getChildContainer("vcanvasLabelGroup"),this))},e.prototype.drawLabel=function(){var t,e,o,n,r,a,l,c,s,u,p,f,d,h,g,b=this.config,y=this.getFromEnv("smartLabel"),m=this.getFromEnv("animationManager"),v=this.getStackSumPercent(),C=this.getFromEnv("chart-attrib"),w=this.getChildren("dataset"),D=b.stackConf,_=this.getContainer("commonLabelContainer"),O=this.getFromEnv("number-formatter"),S=0,P=this.getFromEnv("chartConfig"),k=P.canvasBottom,x=this.getFromEnv("xAxis"),E=this.getFromEnv("style"),N=P.dataLabelStyle,A=v.length,j=b.stackValues,T=P.showXAxisPercentValues,M=this.getGraphicalElement("commonLabels")||[],F=M.length;if(y.setStyle(N),T){for(f=(0,i.pluck)(N.backgroundColor,"#ffffff"),p=(0,i.pluck)(N.borderColor===i.BLANKSTRING?"#"+E.inCancolor:N.borderColor,"#000000"),d=(0,i.pluck)(N.borderThickness,1),a=0;a<A-1;a++)j[a]&&(S+=v[a],l=O.percentValue(S),n=x.getPixel(D[a].x)+D[a].columnWidth/2,r=k,u=M[a],j[a].positive!==j[a].negative?(c={text:l,fill:N.color,"text-bound":[f,p,d,N.borderPadding,N.borderRadius,N.borderDash],"line-height":N.lineHeight,visibility:i.visibleStr},r=r-y.getOriSize(l).height/2-d,c.x=n,c.y=r,u&&u.show(),s=m.setAnimation({el:u||"text",container:_,attr:c,label:"text",component:this}),u||this.addGraphicalElement("commonLabels",s,!0)):(l="",u&&u.hide()));for(var B=a;B<F;B++)M[B].hide()}for(h=0;h<w.length;h++)for(o=(e=w[h]).components.data,t=e.config.JSONData,g=0;g<o.length;g++)o[g].config.finalTooltext=(0,i.parseTooltext)(o[g].config.finalTooltext,[111],{xAxisPercentValue:v[g]&&v[g].toPrecision(4)+"%"},o,C,t)},e.prototype._getXpos=function(t){return this.getFromEnv("xAxis").getPixel(this.config.stackConf[t].x)},e.prototype._setStackDimensions=function(){var t,e,o,n,r,a,i=this.config,l=i.stackValues,c=this.getFromEnv("categories")[0].category,s=0,u=this.getFromEnv("number-formatter"),p=this.getStackSumPercent(),f=this.getFromEnv("canvasConfig").canvasWidth,d=i.stackConf||(i.stackConf=[]);for(t=0;t<c.length;t++)(e=c[t]).widthpercent&&(s+=u.getCleanValue(e.widthpercent));for(100===s&&(o=i.setUserWidth=1),t=0,n=l.length;t<n;t++)e=c[t],(r=d[t])||(r=d[t]={}),a=o?u.getCleanValue(e.widthpercent)/100:p[t]/100,r.columnWidth=a*f},e}(a["default"]);e["default"]=c}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.charts.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.gantt.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.gantt.js new file mode 100755 index 0000000000000000000000000000000000000000..5041e7c0647ed742d88b3be4b2b880c38ddbb9fa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.gantt.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[6],{680:function(e,t,a){"use strict";t.__esModule=!0,t.Gantt=undefined;var o,n=a(681),i=(o=n)&&o.__esModule?o:{"default":o};t.Gantt=i["default"],t["default"]={name:"gantt",type:"package",requiresFusionCharts:!0,extension:function(e){return e.addDep(i["default"])}}},681:function(e,t,a){"use strict";t.__esModule=!0;var o=u(a(354)),n=u(a(682)),i=u(a(684)),r=u(a(690)),s=u(a(691)),l=u(a(694)),c=u(a(696)),h=a(118),d=a(122),p=a(125);function u(e){return e&&e.__esModule?e:{"default":e}}function g(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var f,m=Math.max,v=Math.min,b=(0,p.getDep)("redraphael","plugin"),x=(f=[],{get:function(){return f},clear:function(){f.length=0},add:function(e,t){f.push({conf:e,handler:t})}});h.setAttribDefs&&(0,h.setAttribDefs)({showpercentlabel:{type:h.attrTypeBool,pAttr:"showpercentlabel"},fontsize:{type:h.attrTypeNum},alpha:{type:h.attrTypeNum},showborder:{type:h.attrTypeBool},borderthickness:{type:h.attrTypeNum},borderalpha:{type:h.attrTypeNum},showHoverEffect:{type:h.attrTypeNum},hoverFillAlpha:{type:h.attrTypeNum},slackHoverFillColor:{type:h.attrTypeNum},slackHoverFillAlpha:{type:h.attrTypeBool},showlabels:{type:h.attrTypeBool,pAttr:"showtasknames"},slackfillcolor:{pAttr:"slackfillcolor"},showtasklabels:{type:h.attrTypeBool,pAttr:"showtasknames"},showtasknames:{type:h.attrTypeBool,pAttr:"showlabels"},showconnectorhovereffect:{type:h.attrTypeNum,pAttr:"showhovereffect"},connectorextension:{type:h.attrTypeNum},tasklabelspadding:{type:h.attrTypeNum},taskdatepadding:{type:h.attrTypeNum},showstartdate:{type:h.attrTypeNum,pAttr:"showtaskstartdate"},showenddate:{type:h.attrTypeNum,pAttr:"showtaskenddate"},showtaskhovereffect:{type:h.attrTypeNum,pAttr:"showhovereffect"},useverticalscrolling:{type:h.attrTypeNum},taskbarroundradius:{type:h.attrTypeNum},showshadow:{type:h.attrTypeNum},showslackasfill:{type:h.attrTypeNum}});var C=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a._scrollBar=x,a.components={},a.fireGroupEvent=!0,a.hasInteractiveLegend=!1,a.defaultPaletteOptions=(0,h.extend2)((0,h.extend2)({},h.defaultGaugePaletteOptions),{paletteColors:[["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"],["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"],["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"],["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"],["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"]],bgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],bgAngle:[270,270,270,270,270],bgRatio:["100","100","100","100","100"],bgAlpha:["100","100","100","100","100"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["545454","545454","415D6F","845001","68001B"],canvasBorderAlpha:[100,100,100,90,100],gridColor:["DDDDDD","D8DCC5","99C4CD","DEC49C","FEC1D0"],gridResizeBarColor:["999999","545454","415D6F","845001","D55979"],categoryBgColor:["F1F1F1","EEF0E6","F2F8F9","F7F0E6","FFF4F8"],dataTableBgColor:["F1F1F1","EEF0E6","F2F8F9","F7F0E6","FFF4F8"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E","025B6A","A15E01","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],legendBgColor:["ffffff","ffffff","ffffff","ffffff","ffffff"],legendBorderColor:["666666","545454","415D6F","845001","D55979"],plotBorderColor:["999999","8A8A8A","6BA9B6","C1934D","FC819F"],plotFillColor:["EEEEEE","D8DCC5","BCD8DE","E9D8BE","FEDAE3"],scrollBarColor:["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"]}),a.registerFactory("canvas",n["default"]),a.registerFactory("axis",i["default"],["canvas"]),a.registerFactory("dataset",c["default"],["canvas"]),a}return g(t,e),t.getName=function(){return"Gantt"},t.prototype.draw=function(){e.prototype.draw.call(this),this.drawScrollBar()},t.prototype.getName=function(){return"Gantt"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.alignCaptionWithCanvas=0,t.defaultDatasetType="task",t.taskbarroundradius=0,t.taskbarfillmix=" { light-10 }, { dark-20 }, { light-50 }, { light-85 }",t.taskbarfillratio="0,8,84,8",t.showslackasfill=1,t.dateintooltip=1,t.tasklabelsalign="center",t.datepadding=3,t.showtasknames=0,t.showpercentlabel=!1,t.showhovereffect=1,t.slackfillcolor="FF5E5E",t.connectorextension=10,t.tasklabelspadding=2,t.taskdatepadding=3,t.showlabels=void 0,t.showtooltip=1,t.showtaskhovereffect=void 0,t.useverticalscrolling=1,t.ganttpanedurationunit=void 0,t.ganttpaneduration=void 0,t.showtaskstartdate=void 0,t.showtaskenddate=void 0,t.ganttwidthpercent=void 0,t.showshadow=1,t.enablemousetracking=!1},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource"),t=e.processes,a=t&&t.process,o=a&&a.length,n=e.tasks,i=n&&n.task||n,r=i&&i.length,s=e.categories,l=s&&s[0]&&s[0].category,c=l&&l.length;return!o||!r||!c},t.prototype.parseChartAttr=function(t){var a=this.config,o=t&&t.chart||this.getFromEnv("chart-attrib");e.prototype.parseChartAttr.call(this,t),a.showBorder=(0,h.pluckNumber)(o.showborder,0),a.alignLegendWithCanvas=0},t.prototype._feedAxesRawData=function(){var e=this.getFromEnv("color-manager"),t=this.getFromEnv("dataSource"),a=t.chart,o=this.is3d,n=o?h.chartPaletteStr.chart3D:h.chartPaletteStr.chart2D;return{xAxisConf:[{isVertical:!1,isReverse:!1,isOpposit:!0,outCanfontFamily:(0,h.pluck)(a.outcnvbasefont,a.basefont,"Verdana,sans"),outCanfontSize:(0,h.pluckFontSize)(a.outcnvbasefontsize,a.basefontsize,10),outCancolor:(0,h.pluck)(a.outcnvbasefontcolor,a.basefontcolor,e.getColor(n.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisBreaks:a.xaxisbreaks,axisNamePadding:a.xaxisnamepadding,axisValuePadding:a.labelpadding,axisNameFont:a.xaxisnamefont,axisNameFontSize:a.xaxisnamefontsize,axisNameFontColor:a.xaxisnamefontcolor,axisNameFontBold:a.xaxisnamefontbold,axisNameFontItalic:a.xaxisnamefontitalic,axisNameBgColor:a.xaxisnamebgcolor,axisNameBorderColor:a.xaxisnamebordercolor,axisNameAlpha:a.xaxisnamealpha,axisNameFontAlpha:a.xaxisnamefontalpha,axisNameBgAlpha:a.xaxisnamebgalpha,axisNameBorderAlpha:a.xaxisnameborderalpha,axisNameBorderPadding:a.xaxisnameborderpadding,axisNameBorderRadius:a.xaxisnameborderradius,axisNameBorderThickness:a.xaxisnameborderthickness,axisNameBorderDashed:a.xaxisnameborderdashed,axisNameBorderDashLen:a.xaxisnameborderdashlen,axisNameBorderDashGap:a.xaxisnameborderdashgap,useEllipsesWhenOverflow:a.useellipseswhenoverflow,divLineColor:(0,h.pluck)(a.vdivlinecolor,e.getColor(n.divLineColor)),divLineAlpha:(0,h.pluck)(a.vdivlinealpha,o?e.getColor("divLineAlpha3D"):e.getColor("divLineAlpha")),divLineThickness:(0,h.pluckNumber)(a.vdivlinethickness,1),divLineIsDashed:Boolean((0,h.pluckNumber)(a.vdivlinedashed,a.vdivlineisdashed,0)),divLineDashLen:(0,h.pluckNumber)(a.vdivlinedashlen,4),divLineDashGap:(0,h.pluckNumber)(a.vdivlinedashgap,2),showAlternateGridColor:(0,h.pluckNumber)(a.showalternatevgridcolor,0),alternateGridColor:(0,h.pluck)(a.alternatevgridcolor,e.getColor("altVGridColor")),alternateGridAlpha:(0,h.pluck)(a.alternatevgridalpha,e.getColor("altVGridAlpha")),numDivLines:(0,h.pluckNumber)(a.numvdivlines,this.config.numVDivLines),labelFont:a.labelfont,labelFontSize:a.labelfontsize,labelFontColor:a.labelfontcolor,labelFontAlpha:a.labelalpha,labelFontBold:a.labelfontbold,labelFontItalic:a.labelfontitalic,maxLabelHeight:a.maxlabelheight,axisName:a.xaxisname,axisMinValue:a.xaxisminvalue,axisMaxValue:a.xaxismaxvalue,setAdaptiveMin:a.setadaptivexmin,adjustDiv:a.adjustvdiv,labelDisplay:a.labeldisplay,showLabels:a.showlabels,rotateLabels:a.rotatelabels,slantLabel:(0,h.pluckNumber)(a.slantlabels,a.slantlabel),labelStep:(0,h.pluckNumber)(a.labelstep,a.xaxisvaluesstep),showAxisValues:(0,h.pluckNumber)(a.showxaxisvalues,a.showxaxisvalue),showLimits:(0,h.pluckNumber)(a.showvlimits,this.config.showvlimits),showDivLineValues:(0,h.pluckNumber)(a.showvdivlinevalues,a.showvdivlinevalues),zeroPlaneColor:a.vzeroplanecolor,zeroPlaneThickness:a.vzeroplanethickness||2,zeroPlaneAlpha:a.vzeroplanealpha,showZeroPlaneValue:a.showvzeroplanevalue,vTrendLines:t.trendlines,trendlineColor:a.trendlinecolor,trendlineToolText:a.trendlinetooltext,trendlineThickness:a.trendlinethickness,trendlineAlpha:a.trendlinealpha,showTrendlinesOnTop:a.showtrendlinesontop,showAxisLine:(0,h.pluckNumber)(a.showxaxisline,a.showaxislines,a.drawAxisLines,0),axisLineThickness:(0,h.pluckNumber)(a.xaxislinethickness,a.axislinethickness,1),axisLineAlpha:(0,h.pluckNumber)(a.xaxislinealpha,a.axislinealpha,100),axisLineColor:(0,h.pluck)(a.xaxislinecolor,a.axislinecolor,"#000000")}],yAxisConf:[{isVertical:!0,isReverse:!0,isOpposit:!1,outCanfontFamily:(0,h.pluck)(a.outcnvbasefont,a.basefont,"Verdana,sans"),outCanfontSize:(0,h.pluckFontSize)(a.outcnvbasefontsize,a.basefontsize,10),outCancolor:(0,h.pluck)(a.outcnvbasefontcolor,a.basefontcolor,e.getColor(n.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisBreaks:a.yaxisbreaks,axisNamePadding:a.yaxisnamepadding,axisValuePadding:a.yaxisvaluespadding,axisNameFont:a.yaxisnamefont,axisNameFontSize:a.yaxisnamefontsize,axisNameFontColor:a.yaxisnamefontcolor,axisNameFontBold:a.yaxisnamefontbold,axisNameFontItalic:a.yaxisnamefontitalic,axisNameBgColor:a.yaxisnamebgcolor,axisNameBorderColor:a.yaxisnamebordercolor,axisNameAlpha:a.yaxisnamealpha,axisNameFontAlpha:a.yaxisnamefontalpha,axisNameBgAlpha:a.yaxisnamebgalpha,axisNameBorderAlpha:a.yaxisnameborderalpha,axisNameBorderPadding:a.yaxisnameborderpadding,axisNameBorderRadius:a.yaxisnameborderradius,axisNameBorderThickness:a.yaxisnameborderthickness,axisNameBorderDashed:a.yaxisnameborderdashed,axisNameBorderDashLen:a.yaxisnameborderdashlen,axisNameBorderDashGap:a.yaxisnameborderdashgap,axisNameWidth:a.yaxisnamewidth,useEllipsesWhenOverflow:a.useellipseswhenoverflow,rotateAxisName:(0,h.pluckNumber)(a.rotateyaxisname,1),axisName:a.yaxisname,divLineColor:(0,h.pluck)(a.divlinecolor,e.getColor(n.divLineColor)),divLineAlpha:(0,h.pluck)(a.divlinealpha,o?e.getColor("divLineAlpha3D"):e.getColor("divLineAlpha")),divLineThickness:(0,h.pluckNumber)(a.divlinethickness,1),divLineIsDashed:Boolean((0,h.pluckNumber)(a.divlinedashed,a.divlineisdashed,0)),divLineDashLen:(0,h.pluckNumber)(a.divlinedashlen,4),divLineDashGap:(0,h.pluckNumber)(a.divlinedashgap,2),showAlternateGridColor:(0,h.pluckNumber)(a.showalternatehgridcolor,1),alternateGridColor:(0,h.pluck)(a.alternatehgridcolor,e.getColor("altHGridColor")),alternateGridAlpha:(0,h.pluck)(a.alternatehgridalpha,e.getColor("altHGridAlpha")),numDivLines:(0,h.pluckNumber)(a.numdivlines,this.numDivLines),axisMinValue:a.yaxisminvalue,axisMaxValue:a.yaxismaxvalue,setAdaptiveMin:a.setadaptiveymin,adjustDiv:a.adjustdiv,labelStep:a.yaxisvaluesstep,showAxisValues:(0,h.pluckNumber)(a.showyaxisvalues,a.showyaxisvalue),showLimits:(0,h.pluckNumber)(a.showlimits,this.showLimits),showDivLineValues:(0,h.pluckNumber)(a.showdivlinevalues,a.showdivlinevalue),zeroPlaneColor:a.zeroplanecolor,zeroPlaneThickness:a.zeroplanethickness||2,zeroPlaneAlpha:a.zeroplanealpha,showZeroPlaneValue:a.showzeroplanevalue,trendlineColor:a.trendlinecolor,trendlineToolText:a.trendlinetooltext,trendlineThickness:a.trendlinethickness,trendlineAlpha:a.trendlinealpha,showTrendlinesOnTop:a.showtrendlinesontop,showAxisLine:(0,h.pluckNumber)(a.showyaxisline,a.showaxislines,a.drawAxisLines,0),axisLineThickness:(0,h.pluckNumber)(a.yaxislinethickness,a.axislinethickness,1),axisLineAlpha:(0,h.pluckNumber)(a.yaxislinealpha,a.axislinealpha,100),axisLineColor:(0,h.pluck)(a.yaxislinecolor,a.axislinecolor,"#000000")}]}},t.prototype._resetViewPortConfig=function(){this.config.viewPortConfig={scaleX:1,scaleY:1,x:0,y:0}},t.prototype._setCategories=function(){var e=this.getFromEnv("dataSource"),t=this.getChildren("xAxis")[0],a=this.getChildren("yAxis")[0],o=e.categories,n=e.datatable,i=e.processes;a.setAxisPadding(.5,.5),a.setProcess(i),a.setDataTable(n),t.setCategory(o)},t.prototype.getDSdef=function(e){switch(e){case"milestone":return r["default"];case"connector":return l["default"];case"task":default:return s["default"]}},t.prototype._createLegendItems=function(){var e,t,a,o=this.getFromEnv("dataSource"),n=this.getFromEnv("legend"),i=void 0,r=void 0,s=void 0,l=void 0,c=void 0,p=void 0,u=void 0,g=n.getChildren("legendItem"),f=o.legend&&o.legend.item||[];if(!this.config.legendItemIds&&(this.config.legendItemIds=[]),(t=g&&g.length||0)>(a=f.length)){for(i=a;i<t;i++)n.disposeItem(g[i].getId());g&&g.splice(a,t-a)}for(i=0,e=f.length;i<e;i++)c=f[i],n.getItem(this.config.legendItemIds[i])?u=this.config.legendItemIds[i]:(u=n.createItem(),this.config.legendItemIds.push(u)),s=c.color,r=(0,d.getLightColor)(s,60).replace(h.dropHash,"#"),l={FCcolor:{color:s+","+s+","+(0,d.getLightColor)(s,40)+","+s+","+s,ratio:"0,70,30",angle:270,alpha:"100,100,100,100,100"}},p={label:c.label,interactiveLegend:!1},n.getItem(u).configure(p),n.getItem(u).setStateCosmetics("default",{symbol:{fill:(0,h.toRaphaelColor)(l),stroke:(0,h.toRaphaelColor)(r)}})},t.prototype._spaceManager=function(){var e,t,a=void 0,o=this.config,n=this.getChildren("xAxis")[0],i=this.getChildren("yAxis")[0],r=this.getChildren("legend")[0],s=void 0,l=void 0,c=100-(o.ganttwidthpercent||67),d=o.borderWidth,p=void 0,u=0,g=0;this._resetViewPortConfig(),this._allocateSpace({top:d,bottom:d,left:d,right:d}),this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*o.availableHeight)||{}),r&&(s=r.config.legendPos),a=s===h.POSITION_BOTTOM?.6*o.canvasHeight:.6*o.canvasWidth,this._manageChartMenuBar(a),l="right"===s?.3*o.canvasWidth:.3*o.canvasHeight,o.showLegend&&this._manageLegendSpace(l),o.actualCanvasTop=o.canvasTop,o.actualCanvasLeft=o.canvasLeft,e=o.canvasWidth*(c/100),u+=((p=i.placeAxis(e)).left||0)+(p.right||0),i&&this._allocateSpace(p),a=s===h.POSITION_BOTTOM?.6*o.canvasHeight:.6*o.canvasWidth,a=.6*o.canvasHeight,g+=(p=n.placeAxis(a)).top||0,o.totalWidth=u,o.totalHeight=g,n&&this._allocateSpace(p),t=i&&i.setProcessHeight(),i.setAxisConfig({processTotalHeight:t})},t.prototype._postSpaceManagement=function(){var e,t,a,o,n,i=this.config,r=this.linkedItems,s=this.getChildren("xAxis")[0],l=this.getChildren("yAxis")[0],c=l.getAxisConfig("processTotalHeight"),h=i.canvasHeight,d=this.getChildren("legend")[0],p=i.xDepth,u=this.getChildren("canvas")[0].config,g=u.canvasBorderWidth,f=u.canvasPadding,m=r.vScrollBar.config.userConf,v=u.canvasPaddingLeft,b=u.canvasPaddingRight,x=Number(i.ganttpaneduration),C=i.ganttpanedurationunit,k=r.hProcessScrollBar,y=r.hScrollBar,w=y&&y.config.userConf.height||0,F=k&&k.config.userConf.height||0;a=void 0!==x&&void 0!==C,o=l.getAxisConfig("totalWidth")>l.getAxisConfig("totalVisiblelWidth"),c>h-Math.max(o?F:0,a?w:0)&&(t=!0),e=t&&m.width||0,n=i.canvasWidth-(p||0)-Math.max(v,f)-Math.max(b,f)-e,s&&s.setAxisDimention({x:u.canvasLeft+(p||0)+Math.max(v,f),y:u.canvasTop-(i.shift||0),opposite:u.canvasTop+u.canvasHeight+g,axisLength:n}),i.currentCanvasWidth=n,l&&l.setAxisDimention({x:u.canvasLeft-(i.shift||0),y:u.canvasTop,opposite:u.canvasRight+g,axisLength:i.canvasHeight}),this._manageScrollerPosition(),i.showLegend&&d.postSpaceManager()},t.prototype.drawScrollBar=function(){var e,t,a,o,n,i,r,s,l,c,h,d,p,u,g=this,f=g.config,m=g.linkedItems,v=g.getChildren(),x=v.xAxis[0],C=x.config.axisRange,k=f.viewPortConfig,y=f.scrollOptions||(f.scrollOptions={}),w=C.max,F=C.min,L=y.horizontalVxLength,A=m.hScrollBar,P=A.node,T=m.vScrollBar,E=T.node,N=m.hProcessScrollBar,S=N.node,D=f.useverticalscrolling,B=w-F,_=f.canvasRight,V=k.scaleX,O=k.scaleY,H=f.vScrollEnabled,M=v.yAxis[0],I=H?T.config.conf.width:0,R=g.getContainer(),G=g.getChildContainer(),W=g.getFromEnv("animationManager");e=f.canvasLeft,t=f.canvasTop,a=f.canvasHeight,o=f.canvasWidth,n=v.canvas[0].config,y.viewPortMin=F,y.viewPortMax=w,y.scrollRatio=L/B,l=y.windowedCanvasWidth=x.getPixel(L),c=y.fullCanvasWidth=x.getPixel(w-F)-l,s=y.fullCanvasHeight=M.getAxisConfig("processTotalHeight"),r=y.windowedCanvasHeight=a,h=M.getAxisConfig("totalWidth"),d=M.getAxisConfig("totalVisiblelWidth"),i=1/O,(p=R.scrollBarParentGroup)||(p=R.scrollBarParentGroup=W.setAnimation({el:"group",attr:{name:"scrollBarParentGroup"},container:R.parentgroup,component:g})).insertBefore(G.datalabelsGroup),!1!==f.hScrollEnabled?(A.draw(e,t+a,{width:o-I,scrollRatio:1/V,scrollPosition:k.x*V/(o*(V-1)),roundEdges:n.isRoundEdges,fullCanvasWidth:c,windowedCanvasWidth:l,parentLayer:p}),!P&&(b.eve.on("raphael.scroll.start."+A.config.node.id,function(e){u=e,g.fireChartInstanceEvent("scrollstart",{scrollPosition:e})}),b.eve.on("raphael.scroll.end."+A.config.node.id,function(e){g.fireChartInstanceEvent("scrollend",{prevScrollPosition:u,scrollPosition:e})}))):A&&A.config&&A.config.node&&A.config.node.hide(),!1!==H&&D?(T.draw(_-I,t,{height:a,scrollRatio:i,roundEdges:n.isRoundEdges,fullCanvasWidth:s,windowedCanvasWidth:r,parentLayer:p}),!E&&function(){var e;b.eve.on("raphael.scroll.start."+T.config.node.id,function(t){e=t,g.fireChartInstanceEvent("scrollstart",{scrollPosition:t})}),b.eve.on("raphael.scroll.end."+T.config.node.id,function(t){g.fireChartInstanceEvent("scrollend",{prevScrollPosition:e,scrollPosition:t})})}()):T&&T.config&&T.config.node&&T.config.node.hide(),d<h&&d>0?(N.draw(e-d,t+a,{width:d,scrollRatio:d/h,roundEdges:n.isRoundEdges,fullCanvasWidth:c,windowedCanvasWidth:l,parentLayer:p}),!S&&function(){var e;b.eve.on("raphael.scroll.start."+N.config.node.id,function(t){e=t,g.fireChartInstanceEvent("scrollstart",{scrollPosition:t})}),b.eve.on("raphael.scroll.end."+N.config.node.id,function(t){g.fireChartInstanceEvent("scrollend",{prevScrollPosition:e,scrollPosition:t})})}()):N&&N.config&&N.config.node&&N.config.node.hide()},t.prototype._setAxisScale=function(){var e,t,a,o,n,i,r,s=this.getChildren(),l=this.config,c=s.xAxis[0],h=c.getLimit(),d=h.max,p=h.min,u=new Date(p),g=s.yAxis[0],f=this.getFromEnv("number-formatter"),b=Number(l.ganttpaneduration),x=l.scrollOptions||(l.scrollOptions={}),C=l.ganttpanedurationunit,k=d-p,y=l.canvasHeight,w=l.scrolltodate,F=l.canvasWidth,L=l.canvasLeft,A=this.linkedItems.hProcessScrollBar,P=this.linkedItems.hScrollBar,T=P&&P.config&&P.config.userConf.height||0,E=A&&A.config&&A.config.userConf.height||0,N=c.getPixel(d)-L,S=g.getAxisConfig("processTotalHeight");if(void 0===b||void 0===C)l.hScrollEnabled=!1;else{switch(C){case"y":u.setFullYear(u.getFullYear()+b);break;case"m":u.setMonth(u.getMonth()+b);break;case"d":u.setDate(u.getDate()+b);break;case"h":u.setHours(u.getHours()+b);break;case"mn":u.setMinutes(u.getMinutes()+b);break;default:u.setSeconds(u.getSeconds()+b)}u=u.getTime(),r=c.getPixel(u)-L,l.hScrollEnabled=!0,l.viewPortConfig.scaleX=e=N/r,x.horizontalVxLength=k/void 0*b,w&&(t=f.getDateValue(w).ms,a=c.getPixel(t),l.viewPortConfig.x=v(a-L,F*(e-1))/e)}n=g.getAxisConfig("totalWidth"),o=g.getAxisConfig("totalVisiblelWidth"),l.hProcessScrollEnabled=n>o,i=y-m(l.hProcessScrollEnabled?E:0,l.hScrollEnabled?T:0),Math.floor(S)>i?(l.viewPortConfig.scaleY=S/i,l.vScrollEnabled=!0):l.vScrollEnabled=!1},t.prototype._createToolBoxGantt=function(){var e,t,a,o,n,i,r=this.linkedItems=this.linkedItems||{},s=this.getChildren(),l=s.yAxis[0],c=this._scrollBar,h=s.chartMenuBar||{},d=s.actionBar,p=c.get,u=c.add,g=this.getFromEnv("chartInstance").id;h.drawn||d&&d.drawn||(e=s.tb[0],t=this.getFromEnv("toolBoxAPI").Scroller,c.clear(),u({isHorizontal:!0},{scroll:(i=this,function(){i.updateManagerH(arguments[0],!0)})}),u({isHorizontal:!1},{scroll:function(e,t){return function(){e.updateManagerV(arguments[0],!1)}}(this)}),u({isHorizontal:!0},{scroll:function(){l.manageProcessScroll(arguments[0])}}),a=p()[0],n=p()[1],o=p()[2],r.hScrollBar||(r.hScrollBar=new t,r.hScrollBar.configure(a.conf,1,e.pId,g),r.hScrollBar.attachEventHandlers(a.handler)),r.vScrollBar||(r.vScrollBar=new t,r.vScrollBar.configure(n.conf,2,e.pId,g),r.vScrollBar.attachEventHandlers(n.handler)),r.hProcessScrollBar||(r.hProcessScrollBar=new t,r.hProcessScrollBar.configure(o.conf,3,e.pId,g),r.hProcessScrollBar.attachEventHandlers(o.handler)))},t.prototype._manageScrollerPosition=function(){var e,t,a,o=this.config,n=this.linkedItems,i=n.hScrollBar,r=n.vScrollBar,s=n.hProcessScrollBar,l=o.totalWidth||0,c=o.totalHeight||0;this._setAxisScale&&this._setAxisScale(),t=o.vScrollEnabled,e=o.hScrollEnabled,a=i.getLogicalSpace(),o.hScrollHeight=!1===e?0:a.height+r.config.conf.padding,a=r.getLogicalSpace(),o.vScrollWidth=!1!==t?a.width+r.config.conf.padding:0,a=s.getLogicalSpace(),o.hProcessScrollHeight=o.hProcessScrollEnabled?a.height+s.config.conf.padding:0,c+=m(o.hProcessScrollHeight,o.hScrollHeight),this._allocateSpace({bottom:m(o.hProcessScrollHeight,o.hScrollHeight)}),o.totalWidth=l,o.totalHeight=c},t.prototype.updateManagerH=function(e){var t,a=this.config,o=a.lastXpos||(a.lastXpos={x:0,y:0}),n=this.config.viewPortConfig,i=this.getFromEnv("animationManager"),r=n.scaleX,s=this.getChildren().xAxis[0],l=this.getChildContainer(),c=l.plotGroup,h=this.getChildContainer("datalabelsGroup"),d=l.datalabelsGroup,p=l.trackerGroup,u=a.xOffset,g=a.yOffset||0,f=a.currentCanvasWidth,m=s.getContainer("ganttPlotLineContainer");u=a.xOffset=f*(r-1)*e,n.x=u/r,s.translateAxis(-u,undefined),o.x=-u,t="t"+-u+", "+-g,i.setAnimation({el:c,attr:{transform:t},component:this}),i.setAnimation({el:d,attr:{transform:t},component:this}),i.setAnimation({el:p,attr:{transform:t},component:this}),i.setAnimation({el:h,attr:{transform:t},component:this}),i.setAnimation({el:m,attr:{transform:"t"+-u+", 0"},component:this})},t.prototype.updateManagerV=function(e){var t,a=this.config,o=this.getFromEnv("animationManager"),n=a.lastXpos||(a.lastXpos={x:0,y:0}),i=this.config.viewPortConfig,r=this.getChildren().yAxis[0],s=a.yOffset,l=a.canvasHeight,c=i.scaleY,h=this.getChildContainer("datalabelsGroup"),d=r.getContainer("labelContainer"),p=this.getChildContainer("plotGroup"),u=r.getContainer("ganttPlotHoverBandContainer"),g=r.getContainer("ganttPlotLineContainer");s=a.yOffset=l*(c-1)*e,i.y=s/c,t=r.config.lastTranslate||(r.config.lastTranslate={x:0,y:0}),o.setAnimation({el:d,attr:{transform:"t"+t.x+", "+-s},component:this}),o.setAnimation({el:u,attr:{transform:"t0, "+-s},component:this}),o.setAnimation({el:p,attr:{transform:"t"+n.x+", "+-s},component:this}),o.setAnimation({el:h,attr:{transform:"t"+n.x+", "+-s},component:this}),o.setAnimation({el:g,attr:{transform:"t0, "+-s},component:this})},t}(o["default"]);t["default"]=C},682:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t=void 0;(0,r.componentFactory)(e,i["default"],"canvas",1);for(var a=0,o=(t=e.getChildren("canvas")).length;a<o;a++)t[a].configure()};var o,n=a(683),i=(o=n)&&o.__esModule?o:{"default":o},r=a(118)},683:function(e,t,a){"use strict";t.__esModule=!0;var o,n=a(263),i=(o=n)&&o.__esModule?o:{"default":o},r=a(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.createGroup=function(){e.prototype.createGroup.call(this);var t,a=this.getFromEnv("chart"),o=a.config,n=o.style.inCanvasStyle,i=this.getFromEnv("animationManager"),s=a.getChildContainer("plotGroup");!this.getChildContainer("taskGroup")&&this.addChildContainer("taskGroup",i.setAnimation({el:"group",attr:{name:"task"},container:s,component:this})),!this.getChildContainer("connectorGroup")&&this.addChildContainer("connectorGroup",i.setAnimation({el:"group",attr:{name:"connector"},container:s,component:this})),!this.getChildContainer("milestoneGroup")&&this.addChildContainer("milestoneGroup",i.setAnimation({el:"group",attr:{name:"milestone"},container:s,component:this})),t=o.milestoneLabelStyle={fontSize:(0,r.pluckNumber)(o.milestonefontsize,n.fontSize)+"px",fontFamily:(0,r.pluck)(o.milestonefont,n.fontFamily),fontWeight:(0,r.pluckNumber)(o.milestonefontbold,0)?"bold":"normal",fontStyle:(0,r.pluckNumber)(o.milestonefontitalic,0)?"italic":"normal"},(0,r.setLineHeight)(t),this.getChildContainer("milestoneGroup").css(t)},t.prototype.draw=function(){e.prototype.draw.call(this),this.setClipping()},t.prototype.setClipping=function(){var e=this.getFromEnv("chart"),t=e.config,a=this.getChildContainer("taskGroup"),o=this.getChildContainer("connectorGroup"),n=e.getChildContainer(),i=n.plotGroup,r=n.datalabelsGroup,s=n.trackerGroup,l=t.viewPortConfig,c=l.scaleX,h=l.x,d=this.getFromEnv("animationManager"),p=e.getChildren("canvas")[0].config.clip["clip-canvas"].slice(0);d.setAnimation({el:i,attr:{"clip-rect":p},state:e.config.clipSet?"updating":"appearing",component:this}),d.setAnimation({el:r,attr:{"clip-rect":p},state:e.config.clipSet?"updating":"appearing",component:this}),d.setAnimation({el:s,attr:{"clip-rect":p},state:e.config.clipSet?"updating":"appearing",component:this}),t.xOffset=h*c,d.setAnimation({el:i,attr:{transform:"T"+-h*c+",0"},component:this}),d.setAnimation({el:a,attr:{transform:"T"+-h*c+",0"},component:this}),d.setAnimation({el:o,attr:{transform:"T"+-h*c+",0"},component:this}),d.setAnimation({el:r,attr:{transform:"T"+-h*c+",0"},component:this}),d.setAnimation({el:s,attr:{transform:"T"+-h*c+",0"},component:this}),e.config.clipSet=!0},t.prototype.drawCanvas=function(){var e,t=this.getFromEnv("chart"),a=t.getFromEnv("dataSource").chart,o=t.config,n=this.getFromEnv("animationManager"),i=this.config,s=i.clip={},l=this.getGraphicalElement("canvasBorderElement"),c=void 0,h=this.getGraphicalElement("canvasElement"),d=void 0,p=o.actualCanvasLeft,u=o.actualCanvasTop,g=o.canvasWidth,f=o.canvasHeight,m=o.canvasLeft,v=o.canvasTop,b=o.canvasWidth+o.totalWidth,x=o.canvasHeight+o.totalHeight,C=this.getContainer("canvasGroup"),k=i.canvasBorderRadius,y=i.canvasBorderWidth,w=.5*y,F=i.canvasBorderColor,L=i.canBGColor,A=i.shadow,P=void 0,T=i.showCanvasBG=Boolean((0,r.pluckNumber)(a.showcanvasbg,1)),E=i.shadowOnCanvasFill,N=i.showCanvasBorder;e=L,P={x:p-w,y:u-w,width:b+y,height:x+y,r:k,"stroke-width":y,stroke:F,"stroke-linejoin":y>2?"round":"miter"},N?(c=n.setAnimation({el:l||"rect",attr:P,container:C,component:this}),l?c.show():c=this.addGraphicalElement("canvasBorderElement",c),c.shadow(A)):l&&l.hide(),s["clip-canvas"]=[Math.max(0,m),Math.max(0,v),Math.max(1,g),Math.max(1,f)],s["clip-canvas-init"]=[Math.max(0,m),Math.max(0,v),1,Math.max(1,f)],T?(P={x:p,y:u,width:b,height:x,r:k,"stroke-width":0,stroke:"none",fill:(0,r.toRaphaelColor)(e)},d=n.setAnimation({el:h||"rect",attr:P,component:this,container:C}),h?d.show():d=this.addGraphicalElement("canvasElement",d),d.shadow(E)):h&&h.hide()},t}(i["default"]);t["default"]=l},684:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0],a={zoomable:!0,pannable:!0},r=e._feedAxesRawData(),s=void 0,l=void 0;(0,o.componentFactory)(e,i["default"],"xAxis",1,r.xAxisConf),(0,o.componentFactory)(e,n["default"],"yAxis",1,r.yAxisConf),s=e.getChildren("yAxis")[0],l=e.getChildren("xAxis")[0],s.setLinkedItem("canvas",t),l.setLinkedItem("canvas",t),t.attachAxis(l,!1,e.zoomX?a:{}),t.attachAxis(s,!0,e.zoomY?a:{}),e._setCategories()};var o=a(118),n=r(a(685)),i=r(a(689));function r(e){return e&&e.__esModule?e:{"default":e}}},685:function(e,t,a){"use strict";t.__esModule=!0;var o,n=a(686),i=(o=n)&&o.__esModule?o:{"default":o},r=a(118),s=a(122);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getName=function(){return"GanttProcess"},t.prototype.configure=function(t){var a=this.config,o=this.getFromEnv("color-manager"),n=this.getFromEnv("dataSource").chart;e.prototype.configure.call(this,t),a.lineColor=(0,s.convertColor)((0,r.pluck)(n.gridbordercolor,o.getColor("gridColor")),(0,r.pluckNumber)(n.gridborderalpha,100)),a.lineThickness=(0,r.pluckNumber)(n.gridborderthickness,1),a.lineDashStyle=(0,r.pluckNumber)(n.gridborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(n.gridborderdashlen,1),n.gridborderdashgap,a.lineThickness):"none",a.plotLineColor=(0,s.convertColor)((0,r.pluck)(n.ganttlinecolor,o.getColor("gridColor")),(0,r.pluckNumber)(n.ganttlinealpha,100)),a.plotLineThickness=(0,r.pluckNumber)(n.ganttlinethickness,1),a.plotLineDashStyle=(0,r.pluckNumber)(n.ganttlinedashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(n.ganttlinedashlen,1),n.ganttlinedashgap,a.lineThickness):"none",a.gridResizeBarColor=(0,s.convertColor)((0,r.pluck)(n.gridresizebarcolor,o.getColor("gridResizeBarColor")),(0,r.pluckNumber)(n.gridresizebaralpha,100)),a.gridResizeBarThickness=(0,r.pluckNumber)(n.gridresizebarthickness,1),a.forceRowHeight=(0,r.pluckNumber)(n.forcerowheight,0),a.rowHeight=(0,r.pluckNumber)(n.rowheight,0),a.hoverColor=(0,r.pluck)(n.processhoverbandcolor,n.hoverbandcolor,o.getColor("gridColor")),a.hoverAlpha=(0,r.pluckNumber)(n.processhoverbandalpha,n.hoverbandalpha,30),a.useHover=(0,r.pluckNumber)(n.showprocesshoverband,n.showhoverband,n.showhovereffect,1),a.usePlotHover=(0,r.pluckNumber)(n.showganttpanehorizontalhoverband),a.showFullDataTable=(0,r.pluckNumber)(n.showfulldatatable,1),a.forceGanttWidthPercent=(0,r.pluckNumber)(n.forceganttwidthpercent,0),a.useVerticalScrolling=(0,r.pluckNumber)(n.useverticalscrolling,1),a.gridLineHeaderPath="",a.gridLinePath=""},t.prototype.setProcess=function(e){var t,a,o=this.config,i=o.startPad||0,s=o.endPad||0,l=void 0,c=void 0,h=void 0;if(o.processes={},e){for(o.hasProcess=1,a=o.processes.process=(0,r.extend2)({},e),(0,n.extractAttribToEnd)(a,{}),t=a.process.length,h=o.processes.processMap={},o.processes.processHeightMap={},l=0;l<t;l+=1)(c=a.process[l]).id&&(h[c.id.toLowerCase()]={catObj:c,index:l});this.setAxisRange({min:Number((0,r.toPrecision)(-i,10)),max:Number((0,r.toPrecision)(t-1+s,10)),tickInterval:Number((0,r.toPrecision)(1,10))})}else o.hasProcess=0},t.prototype.getProcessPositionByIndex=function(e){var t=this.config.processes.processHeightMap;return!!t[e]&&t[e]},t.prototype.getProcessPositionById=function(e){var t=this.config,a=t.processes&&t.processes.processMap[e],o=t.processes.processHeightMap;return!!a&&o[a.index]},t.prototype.setDataTable=function(e){var t=this.config;t.dataTables={},t.dataTables.dataTable={},e?(t.hasDataTables=1,(0,r.extend2)(t.dataTables.dataTable,e),e=t.dataTables.dataTable,(0,n.extractAttribToEnd)(e,{})):t.hasDataTables=0},t.prototype.setProcessHeight=function(){var e,t,a,o=this.config,n=this.getFromEnv("chart").config.canvasHeight,i=o.processes.process.process,s=o.processes.processHeightMap,l=o.processMaxHeight,c=0,h=o.forceRowHeight,d=o.rowHeight;for((l*i.length<n||0===o.useVerticalScrolling)&&(l=n/i.length),0===h?d&&d>l&&(l=d):l=d||l,a=0,t=i.length;a<t;a++)e=(0,r.pluckNumber)(i[a].height,l),s[a]={top:c,bottom:c+e,height:e},c+=e;return c},t.prototype.adjustWidth=function(){var e,t,a,o,n,i,s,l,c=this.config,h=c.totalWidth,d=h,p=0,u=!1;if(e=c.processVlineArr=[],d-=20*(c.hasDataTables&&c.dataTables&&c.dataTables.dataTable&&c.dataTables.dataTable.datacolumn?c.dataTables.dataTable.datacolumn.length+1:1),a=function(e){var t;return d+=20,t=e.match(/%/g)?(0,r.pluckNumber)(h*Number(e.replace(/%/g,"")/100),0):(0,r.pluckNumber)(e,0),d<20?t=20:t>d&&(t=d),d-=t,t},c.hasProcess&&(i=c.processes.process.process,"right"===c.processes.process.positioningrid&&(u=!0),o=p,p+=a((t=i._attrib).width||""+(t.rightPos-t.leftPos)),t.leftPos=o,t.rightPos=p,u?p=0:e.push({type:"process",ind:0,xPos:t.rightPos,left:t,leftLimit:t.leftPos+20})),c.hasDataTables)for(s in n=c.dataTables.dataTable.datacolumn)n.hasOwnProperty(s)&&"_attrib"!==s&&(o=p,p+=a((t=n[s]._attrib).width||""+(t.rightPos-t.leftPos)),t.leftPos=o,t.rightPos=p,(l=e[e.length-1])&&(l.right=t,l.rightLimit=t.rightPos-20),e.push({type:"dataTable",ind:s,xPos:t.rightPos,left:t,leftLimit:t.leftPos+20}));c.hasProcess&&(u?((t=i._attrib).rightPos=p+(t.rightPos-t.leftPos),t.leftPos=p,p+=t.rightPos-t.leftPos,(l=e[e.length-1])&&(l.right=t,l.rightLimit=t.rightPos-20)):e.pop()),c.totalWidth=p},t.prototype.placeAxis=function(e){var t=this.config,a=this.getFromEnv("chart"),o=a.getFromEnv("smartLabel"),n=t.labels.style,i=0,s=0,l={left:0,right:0},c=0,h=!1,d=0,p=0,u=void 0,g=void 0,f=void 0,m=void 0,v=void 0,b=void 0,x=void 0,C=void 0,k=void 0,y=void 0,w=void 0,F=void 0,L=void 0,A=void 0,P=void 0,T=void 0,E=0;if(o.useEllipsesOnOverflow(a.config.useEllipsesWhenOverflow),o.setStyle({fontSize:n.fontSize,fontFamily:n.fontFamily,lineHeight:n.lineHeight,fontWeight:n.fontWeight}),(t.forceGanttWidthPercent||0===t.showFullDataTable)&&(E=e/((t.hasDataTables&&t.dataTables&&t.dataTables.dataTable&&t.dataTables.dataTable.datacolumn?t.dataTables.dataTable.datacolumn.length:0)+1)),t.hasProcess){for(F=t.processes.process.process,"right"===(x=t.processes.process).positioningrid&&(h=!0),x.headertext&&(x.drawLabel=(0,r.parseUnsafeString)(x.headertext),b=x._attrib,(C={fontFamily:(0,r.pluck)(b.headerfontfamily,n.fontFamily),fontSize:(0,r.pluck)(b.headerfontsize,n.fontSize).replace(/px/i,"")+"px",fontWeight:(0,r.pluck)(1===Number(b.headerisbold)?"bold":"undefined"==typeof b.headerisbold?"bold":void 0,n.fontWeight),fontStyle:(0,r.pluck)(b.headerisitalic?"italic":void 0,n.fontStyle)}).lineHeight=(0,r.setLineHeight)(C),o.setStyle(C),(f=o.getOriSize(x.drawLabel)).width>s&&(i=f,s=f.width)),u=0,m=F.length;u<m;u++)b=(v=F[u])._attrib,v.drawLabel=(0,r.parseUnsafeString)(v.label||v.name),(C={fontFamily:(0,r.pluck)(b.fontfamily,n.fontFamily),fontSize:(0,r.pluck)(b.fontsize,n.fontSize).replace(/px/i,"")+"px",fontWeight:(0,r.pluck)(b.isbold?"bold":void 0,n.fontWeight),fontStyle:(0,r.pluck)(b.isitalic?"italic":void 0,n.fontStyle)}).lineHeight=(0,r.setLineHeight)(C),o.setStyle(C),(f=o.getOriSize(v.drawLabel)).width>s&&(i=f,s=f.width),f.height>p&&(p=f.height);t.processMaxHeight=p+8,F._attrib.leftPos=c,h?d=E||i.width+4:c+=E||i.width+4,F._attrib.rightPos=c}if(t.hasDataTables)for(u in k=t.dataTables.dataTable.datacolumn)if(k.hasOwnProperty(u)&&"_attrib"!==u){for(L in s=0,(y=k[u]).headertext&&(b=y._attrib,y.drawLabel=(0,r.parseUnsafeString)(y.headertext),(P={fontFamily:(0,r.pluck)(b.headerfontfamily,n.fontFamily),fontSize:(0,r.pluck)(b.headerfontsize,n.fontSize).replace(/px/i,"")+"px",fontWeight:(0,r.pluck)(1===Number(b.headerisbold)?"bold":"undefined"==typeof b.headerisbold?"bold":void 0,n.fontWeight),fontStyle:(0,r.pluck)(b.headerisitalic?"italic":void 0,n.fontStyle)}).lineHeight=(0,r.setLineHeight)(P),o.setStyle(P),(f=o.getOriSize(y.drawLabel)).width>s&&(T=f,s=f.width)),w=y.text)w.hasOwnProperty(L)&&"_attrib"!==L&&((g=w[L]).drawLabel=(0,r.parseUnsafeString)(g.label||g.name),A=g._attrib,(P={fontFamily:(0,r.pluck)(A.fontfamily,n.fontFamily),fontSize:(0,r.pluck)(A.fontsize,n.fontSize).replace(/px/i,"")+"px",fontWeight:(0,r.pluck)(A.isbold?"bold":void 0,n.fontWeight),fontStyle:(0,r.pluck)(A.isitalic?"italic":void 0,n.fontStyle)}).lineHeight=(0,r.setLineHeight)(P),o.setStyle(P),(f=o.getOriSize(g.drawLabel)).width>s&&(T=f,s=f.width));k[u]._attrib.leftPos=c,c+=E||T.width+4,k[u]._attrib.rightPos=c}return t.hasProcess&&h&&(F._attrib.leftPos+=c,F._attrib.rightPos+=c+d,c+=d),t.totalWidth=c,this.adjustWidth(),c=t.totalWidth>e?e:t.totalWidth,t.totalVisiblelWidth=c,l.left+=c,l},t.prototype.getProcessLen=function(){return this.config.processes.process.process.length},t.prototype._drawProcessAndDataTable=function(){var e,t,a,o,n,i,r,s,l,c,h,d,p=this.config,u=this.getFromEnv("chart"),g=(p.axisDimention||{}).x,f=p.totalWidth||0,m=p.gridArr||(p.gridArr=[]),v=u.getChildren("canvas")[0],b=u.config,x=u.getFromEnv("animationManager"),C=v.canvasTop||b.canvasTop,k=v.canvasLeft||b.canvasLeft,y=v.canvasHeight||b.canvasHeight,w=v.canvasWidth||b.canvasWidth,F=u.getChildContainer("axisBottomGroup"),L=p.totalVisiblelWidth,A=0,P=0,T=this.getContainer("ganttPlotHoverBandContainer"),E=this.getContainer("ganttPlotLineContainer"),N=this.getContainer("headerContainer"),S=this.getContainer("headerBackContainer"),D=this.getContainer("headerLineContainer"),B=this.getContainer("headerTextContainer"),_=this.getContainer("labelContainer"),V=this.getContainer("labelBackContainer"),O=this.getContainer("labelLineContainer"),H=this.getContainer("labelTextContainer"),M=this.getContainer("hotContainer");if(d=this.getContainer("ganttPlotHoverBandContainerParent")||this.addContainer("ganttPlotHoverBandContainerParent",x.setAnimation({el:"group",attr:{name:"gantt-plot-band-container-parent"},container:F,component:this})),this.addContainer("ganttPlotHoverBandContainer",x.setAnimation({el:T||"group",attr:{name:"gantt-plot-band-container","clip-rect":k+","+C+","+w+","+y},container:d,component:this})),this.addContainer("ganttPlotLineContainer",x.setAnimation({el:E||"group",attr:{name:"gantt-plot-line-container","clip-rect":k+","+C+","+w+","+y},container:F,component:this})),h={name:"gantt-header-container","clip-rect":k-p.totalVisiblelWidth+","+(C-b.categorySpaceUsed)+","+p.totalVisiblelWidth+","+b.categorySpaceUsed},p.isDraged?delete h.transform:h.transform="t0,0",N=this.addContainer("headerContainer",x.setAnimation({el:N||"group",attr:h,container:F,component:this})),S||(S=this.addContainer("headerBackContainer",x.setAnimation({el:"group",attr:{name:"gantt-header-back-container"},container:N,component:this}))),D||(D=this.addContainer("headerLineContainer",x.setAnimation({el:"group",attr:{name:"gantt-header-line-container"},container:N,component:this}))),B||(B=this.addContainer("headerTextContainer",x.setAnimation({el:"group",attr:{name:"gantt-header-text-container"},container:N,component:this}))),c={name:"gantt-label-container","clip-rect":k-p.totalVisiblelWidth+","+C+","+p.totalVisiblelWidth+","+y},p.isDraged?delete c.transform:c.transform="t0,0",_=this.addContainer("labelContainer",x.setAnimation({el:_||"group",attr:c,component:this,container:F})),V||(V=this.addContainer("labelBackContainer",x.setAnimation({el:"group",attr:{name:"gantt-label-back-container"},container:_,component:this}))),O||(O=this.addContainer("labelLineContainer",x.setAnimation({el:"group",attr:{name:"gantt-label-line-container"},container:_,component:this}))),H||(H=this.addContainer("labelTextContainer",x.setAnimation({el:"group",attr:{name:"gantt-label-text-container"},container:_,component:this}))),this.addContainer("hotContainer",x.setAnimation({el:M||"group",attr:{name:"gantt-hot-container","clip-rect":k-p.totalVisiblelWidth+","+(C-b.categorySpaceUsed)+","+p.totalVisiblelWidth+","+(y+b.categorySpaceUsed)},component:this,container:u.getContainer("parentgroup")})),p.gridLinePath="",p.gridLineHeaderPath="",p.hoverElemsArr=[],p.labelHoverEventName={click:"ProcessClick",rollOver:"ProcessRollOver",rollOut:"ProcessRollOut"},p.hasProcess)for(t=p.processes.process.process,r={elem:p.processes.process,elemIndex:A,dimension:{left:g-f+t._attrib.leftPos,right:g-f+t._attrib.rightPos,top:C-b.categorySpaceUsed,bottom:C},type:"header"},this._drawProcessAndDataTableElement(r),A+=1,m=p.gridArr=[],e=0,a=t.length;e<a;e++)s=this.getProcessPositionByIndex(e),r={elem:t[e],elemIndex:A,pos:e,dimension:{left:g-f+t._attrib.leftPos,right:g-f+t._attrib.rightPos,top:C+s.top,bottom:C+s.bottom},type:"process"},this._drawProcessAndDataTableElement(r),A+=1,m.push({y:r.dimension.bottom});if(p.hasDataTables){for(e in o=p.dataTables.dataTable.datacolumn)if(o.hasOwnProperty(e)&&"_attrib"!==e)for(i in P=0,r={elem:o[e],elemIndex:A,pos:e,dimension:{left:g-f+o[e]._attrib.leftPos,right:g-f+o[e]._attrib.rightPos,top:C-b.categorySpaceUsed,bottom:C},type:"header"},this._drawProcessAndDataTableElement(r),A+=1,n=o[e].text){if(P>=a)break;n[i]._attrib&&t[i]&&t[i]._attrib&&(n[i]._attrib.hoverbandcolor=t[i]._attrib.hoverbandcolor,n[i]._attrib.hoverbandalpha=t[i]._attrib.hoverbandalpha,n[i]._attrib.showhoverband=t[i]._attrib.showhoverband),n.hasOwnProperty(i)&&"_attrib"!==i&&(s=this.getProcessPositionByIndex(i),r={elem:n[i],elemIndex:A,pos:i,dimension:{left:g-f+o[e]._attrib.leftPos,right:g-f+o[e]._attrib.rightPos,top:C+s.top,bottom:C+s.bottom},type:"datatable"},P++,this._drawProcessAndDataTableElement(r),A+=1)}p.drawFromProcessVlineDrag?p.drawFromProcessVlineDrag=!1:f>L?(l=f-L,this.resetTransletAxis(),this.translateAxis(l,undefined)):this.resetTransletAxis()}this._drawGridLine(),this._disposeExtraProcessAndDataTableElement(A)},t.prototype._drawVerticalLineAndTracker=function(){var e,t,a,o,n,i,s,l,c,h=this,d=h.config,p=h.getFromEnv("chart"),u=d.canvas,g=p.config,f=(d.axisDimention||{}).x,m=d.totalWidth||0,v=u.canvasTop||g.canvasTop,b=h.components.processVline||(h.components.processVline=[]),x=d.processVlineArr,C=h.getContainer("hotContainer"),k=h.getFromEnv("animationManager"),y=0,w=function(){var e=this.data("drag-options");e.origX=e.lastX||(e.lastX=0),e.vHoverLine.show(),p.trackerClicked=!0,e.draged=!1},F=function(e){var t,a=this.data("drag-options"),o=a.vLineSetting,n="string"==typeof e.data?+e.data.substr(0,e.data.indexOf(",")):e.data[0]||0,i=o.xPos+n,r=o.leftLimit,s=o.rightLimit;i<r&&(n=r-o.xPos),i>s&&(n=s-o.xPos),t={transform:"t"+(a.origX+n)+",0"},this.attr(t),a.vHoverLine.attr(t),a.draged=!0,a.lastX=n},L=function(){var e,t=this.data("drag-options"),a=t.vLineSetting,o=t.vLineIndex;p.trackerClicked=!1,t.vHoverLine.hide(),t.draged&&(d.isDraged=!0,a.left.rightPos+=t.lastX||0,a.right.leftPos+=t.lastX||0,a.xPos+=t.lastX||0,x[o-1]&&(x[o-1].rightLimit+=t.lastX||0),x[o+1]&&(x[o+1].leftLimit+=t.lastX||0),d.drawFromProcessVlineDrag=!0,h._drawProcessAndDataTable(),h._drawVerticalLineAndTracker(),e={transform:"t0,0"},this.attr(e),t.vHoverLine.attr(e))};for(i={stroke:d.gridResizeBarColor,"stroke-width":d.gridResizeBarThickness},s={stroke:r.TRACKER_FILL,"stroke-width":30},n=v-g.categorySpaceUsed,e=0,t=x.length;e<t;e+=1)a=["M",l=f-m+("process"===x[e].type?d.processes.process.process:d.dataTables.dataTable.datacolumn[x[e].ind])._attrib.rightPos,n,"L",l,v+d.processTotalHeight],b[y]?((c=b[y].graphics.vHoverLine).attr({path:a}).attr(i),(o=b[y].graphics.hotElement).attr({path:a}).attr(s)):(i.path=a,c=k.setAnimation({el:"path",container:C,component:h,attr:i}),s.path=a,o=k.setAnimation({el:"path",container:C,component:h,attr:s}),b[y]={},b[y].graphics={},b[y].config={},b[y].graphics.vHoverLine=c,b[y].graphics.hotElement=o),o.show(),c.hide(),o.css("cursor",r.hasSVG?"ew-resize":"e-resize").drag(F,w,L).data("drag-options",{vHoverLine:b[y].graphics.vHoverLine,vLineSetting:x[e],vLineIndex:e}),y+=1;for(e=y,t=b.length;e<t;e+=1)b[e].graphics.vHoverLine.attr({path:["M",0,0]}),b[e].graphics.hotElement.attr({path:["M",0,0]})},t.prototype._drawComponents=function(){var e=this.config;e.isDraged=!1,this._drawProcessAndDataTable(),e.drawPlotlines&&this._drawPlotLine(),this._drawVerticalLineAndTracker(),this._drawGridLine()},t}(i["default"]);t["default"]=c},686:function(e,t,a){"use strict";t.__esModule=!0,t.extractAttribToEnd=undefined;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=a(687),i=h(n),r=a(118),s=a(122),l=a(125),c=h(a(688));function h(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var p=void 0,u=void 0,g=void 0,f=function(e,t){var a=void 0;for(a=0;a<e.length;a++)if(e[a].id===t)return e[a];return!1},m=function(e){var t,a={};for(t in e)e.hasOwnProperty(t)&&"string"==typeof e[t]&&e[t]&&(a[t]=e[t]);return a};(0,l.addDep)({name:"ganttCommonAnimation",type:"animationRule",extension:c["default"]});var v=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.components={},a}return d(t,e),t.prototype.getName=function(){return"GanttCommon"},t.prototype._drawPlotLine=function(){var e,t,a,o,n=this.config,i=this.getFromEnv("chart"),r=i.getChildren("canvas")[0],s=i.config,l=this.getContainer("ganttPlotLineContainer"),c=r.canvasBottom||s.canvasBottom,h=r.canvasLeft||s.canvasLeft,d=r.canvasRight||s.canvasRight,u=r.canvasTop||s.canvasTop,g=this.getFromEnv("animationManager"),f=n.gridArr,m=this.getGraphicalElement("plotLine"),v=[];for(a=0,o=f.length;a<o;a+=1)f[a].x!==p?v.push("M",f[a].x,u,"L",f[a].x,c):v.push("M",h,f[a].y,"L",d,f[a].y);e={"stroke-dasharray":n.plotLineDashStyle,"stroke-width":n.plotLineThickness,stroke:n.plotLineColor,path:v},t=g.setAnimation({el:m&&m[0]||"path",attr:e,container:l,label:"path",component:this}),m&&m[0]||this.addGraphicalElement("plotLine",t,!0)},t.prototype._drawTrendLine=function(){var e,t,a,o,i,r,s,l,c,h,d,u,g,m,v,b,x,C,k,y,w=this.getComponentInfo("trend"),F=this.getFromEnv("toolTipController"),L=this.config,A=L.isOpposit,P=L.labelPadding,T=this.getFromEnv("chart"),E=T.getFromEnv("animationManager"),N=T.config,S=T.getChildren("canvas")[0],D=S.config.canvasTop+S.config.canvasHeight,B=S.config.canvasLeft||N.canvasLeft,_=S.config.canvasRight||N.canvasRight,V=S.config.canvasTop||N.canvasTop,O=L.drawTrendLabels,H=this.getGraphicalElement("trendlabels")||[],M=L.axisTrendContainerTop,I=L.axisTrendContainerBottom,R=L.axisDimention||{},G=this._isZoomed(),W=this.getVisibleConfig(),z=-1*N.xOffset,j=this.getGraphicalElement("trendElems"),X=this.getGraphicalElement("trendlabels"),U=L.trendLines,Y=L.vTrendLines;for(!j&&(j=[]),!X&&(X=[]),e=0;e<j.length;e++)(k=f(j,e))&&k.remove();if(Y?d=A?(R.opposite||D)-(L.trendBottomPadding||0):(R.y||D)+(L.trendBottomPadding||0):(d=A?(R.opposite||B)+(P||0):(R.x||B)-(P||0),u=A?(R.x||_)+(P||0):(R.opposite||_)+(P||0)),G&&(v=Math.max(this.getPixel(W.minValue,{wrtVisible:!0}),this.getPixel(W.maxValue,{wrtVisible:!0})),b=Math.min(this.getPixel(W.minValue,{wrtVisible:!0}),this.getPixel(W.maxValue,{wrtVisible:!0}))),U||Y)for(e=0;e<w.length;e++)t=w[e].marker,a=w[e].label,o={fill:t.fill||"",stroke:t.stroke||"","stroke-width":t.strokeWidth,"stroke-dasharray":t.strokeDashArray,"shape-rendering":t.shapeRendering},i={fill:a.fill||"",text:a.text,"text-anchor":a.textAnchor,"text-bound":a.textBound},s=t.isZone,c=t.startValue,h=t.endValue,Y?(r=this.getPixel(L.hasBreakPoints?this._getRelativeBreakValue(c):c,{wrtVisible:!0}),l=h?this.getPixel(L.hasBreakPoints?this._getRelativeBreakValue(h):h,{wrtVisible:!0}):0,r+=z,l+=z,i.y=d,i["vertical-align"]="top",h!==undefined&&""!==h&&h!==c&&s?(o.path=["M",r,V,"L",r,D,"L",l,D,"L",l,V,"Z"],i.x=r+(l-r)/2):(g=h?(0,n.getCrispPath)(["M",r,V,"L",l,D],t.strokeWidth):(0,n.getCrispPath)(["M",r,V,"L",r,D],t.strokeWidth),o.path=g.path,i.x=h?l:r),G&&(!O||i.x>v||i.x<b)?(i.text="",i.visibility="hidden"):i.visibility="visible"):U&&(r=this.getPixel(c,{wrtVisible:!0}),l=h?this.getPixel(h,{wrtVisible:!0}):0,C=a.valueOnRight,h!==p&&""!==h&&h!==c&&s?(o.path=["M",B,r,"L",_,r,"L",_,l,"L",B,l,"Z"],i.x=C?u:d,i.y=r+(l-r)/2):(g=h?(0,n.getCrispPath)(["M",B,r,"L",_,l,"Z"],t.strokeWidth):(0,n.getCrispPath)(["M",B,r,"L",_,r,"Z"],t.strokeWidth),o.path=g.path,i.x=C?u:d,i.y=h&&C?l:r),G&&(!O||i.y>v||i.y<b)?(i.text="",i.visibility="hidden"):i.visibility="visible"),x=w[e].showOnTop,m=T.config.is3D||1!==x&&1!==L.showTrendlinesOnTop?I:M,k=f(j,e),k=E.setAnimation({el:k||"path",attr:o,container:m,label:"path",component:this}).show(),(y=X[e])&&E.setAnimation({el:y,attr:i,label:"text",component:this}),!f(j,e)&&this.addGraphicalElement("trendElems",k,!0),k.id=e,""!==a.toolText?F.enableToolTip(k,a.toolText):F.disableToolTip(k);else for(e=0;e<j.length;e++)(k=f(j,e))&&(k.remove(),H[e]&&H[e].remove())},t.prototype._drawProcessAndDataTableStyleParser=function(e){var t,a,o,n=this.config,i=this.getFromEnv("chart"),l=this.getFromEnv("smartLabel"),c=this.getFromEnv("color-manager"),h=n.labels.style,d=e.elem||{},u=e.dimension,g=d._attrib||{},f=u.left,m=u.right,v=u.top,b=u.bottom,x=void 0,C=void 0,k=void 0,y=void 0,w=void 0,F=void 0,L=void 0,A=void 0,P=void 0,T=void 0,E=void 0,N=void 0,S=void 0,D=void 0,B=void 0,_=void 0,V=void 0,O=void 0;switch(e.type){case"category":case"datatable":case"process":x=(0,r.pluck)(g.font,h.fontFamily),C=(0,r.pluck)(g.fontsize,h.fontSize).replace(/px/i,"")+"px",y=(0,r.pluck)(Number(g.isitalic)?"italic":p,h.fontStyle),w=(0,s.convertColor)((0,r.pluck)(g.bgcolor?(0,s.getFirstColor)(g.bgcolor):p,c.getColor("categoryBgColor")),(0,r.pluckNumber)(g.bgalpha,100)),N=(0,r.pluck)(g.fontcolor?(0,s.getFirstColor)(g.fontcolor):p,h.color),S=(0,r.pluckNumber)(g.isunderline,0)?"underline":"none",T=(0,r.pluck)(g.valign,"center").toLowerCase(),E=(0,r.pluck)(g.align,"middle").toLowerCase(),A=d.drawLabel||"",k=(0,r.pluck)(Number(g.isbold)?"bold":p,h.fontWeight),V=d.link;break;case"header":x=(0,r.pluck)(g.headerfont,h.fontFamily),C=(0,r.pluck)(g.headerfontsize,h.fontSize).replace(/px/i,"")+"px",k=(0,r.pluck)(1===Number(g.headerisbold)?"bold":g.headerisbold===p?"bold":p,h.fontWeight),N=(0,r.pluck)(g.headerfontcolor?(0,s.getFirstColor)(g.headerfontcolor):p,h.color),S=(0,r.pluckNumber)(g.headerisunderline,0)?"underline":"none",y=(0,r.pluck)(g.headerisitalic?"italic":p,h.fontStyle),w=(0,s.convertColor)((0,r.pluck)(g.headerbgcolor?(0,s.getFirstColor)(g.headerbgcolor):p,c.getColor("categoryBgColor")),(0,r.pluckNumber)(g.headerbgalpha,100)),T=(0,r.pluck)(g.headervalign,"center").toLowerCase(),E=(0,r.pluck)(g.headeralign,"middle").toLowerCase(),A=d.drawLabel||"",V=d.headerlink}switch(e.type){case"category":n.gridLinePath+="M"+f+","+v+"L"+f+","+b+"L"+m+","+b,k=(0,r.pluck)(1===Number(g.isbold)?"bold":g.isbold===p?"bold":p,h.fontWeight);break;case"datatable":case"process":n.gridLinePath+="M"+f+","+b+"L"+m+","+b+"L"+m+","+v;break;case"header":n.gridLineHeaderPath+="M"+f+","+b+"L"+m+","+b+"L"+m+","+v}return a=(0,r.pluck)(d._attrib.hoverbandcolor,n.hoverColor),o=(0,r.pluckNumber)(d._attrib.hoverbandalpha,n.hoverAlpha),"left"===E?(F=f+2,E="start"):"right"===E?(F=f+(m-f)-2,E="end"):(E="middle",F=f+(m-f)/2),"top"===T?L=v-2:"bottom"===T?L=v+(b-v)-2:(T="middle",L=v+(b-v)/2),h={fontFamily:x,fontSize:C,fontWeight:k,fontStyle:y,textDecoration:S},O=(0,r.setLineHeight)(h),O=b-v>(O=Number(O.replace(/px/i,"")))?b-v:O,l.useEllipsesOnOverflow(i.config.useEllipsesWhenOverflow),l.setStyle(h),P={textAttr:{x:F,y:L,text:(t=l.getSmartText(A,m-f,O)).text,fill:N,"text-anchor":E,"vertical-align":T,cursor:V?"pointer":i.getFromEnv("paper").canvas.style.cursor},css:h,rectAttr:{x:f,y:v,width:f<m?m-f:0,height:v<b?b-v:0,fill:w,"stroke-width":0,cursor:V?"pointer":i.getFromEnv("paper").canvas.style.cursor},eventArgs:{isHeader:"header"===e.type,label:A,vAlign:T,align:E,link:V,id:d.id},tooltext:t.oriText},"datatable"===e.type||"process"===e.type||"category"===e.type?(_=(0,s.convertColor)(a,o),D=(0,r.pluckNumber)(d._attrib.showhoverband,n.useHover),B=(0,r.pluckNumber)(d._attrib.showganttpanehoverband,n.usePlotHover,D),P.dataArgs={rollOverColor:_,useHover:D,usePlotHover:B,dimension:u,hoverEle:d,type:e.type,pos:e.pos,axis:this,groupId:e.elemIndex}):P.dataArgs={rollOverColor:p,useHover:0,usePlotHover:0,dimension:u,hoverEle:d,type:e.type,pos:e.pos,axis:this,groupId:e.elemIndex},P},t.prototype._drawProcessAndDataTableElement=function(e){var t,a,o,n,i,r=this,s=r.config,l=r.getFromEnv("chart"),c=r.components.categoryElement||[],h=s.hoverElemsArr||(s.hoverElemsArr=[]),d=r.getFromEnv("animationManager"),p=e.elemIndex,f=s.labelHoverEventName,m=r.getFromEnv("toolTipController"),v=l.config.showtooltip,b=function(e){l.plotEventHandler(this,e,f.click)},x=function(e){g=clearTimeout(g),u&&!u.removed||(u=null),u&&r._gridOutHandler.call(u),r._gridHoverHandler.call(this),l.plotEventHandler(this,e,f.rollOver)},C=function(e){u=this,g=clearTimeout(g),g=setTimeout(function(){return r._gridOutHandler.call(u)},500),l.plotEventHandler(u,e,f.rollOut)};"header"===e.type?(a=r.getContainer("headerBackContainer"),o=r.getContainer("headerTextContainer")):(a=r.getContainer("labelBackContainer"),o=r.getContainer("labelTextContainer")),t=r._drawProcessAndDataTableStyleParser(e),n=d.setAnimation({el:c[p]&&c[p].graphics.rect||"rect",attr:t.rectAttr,container:a,label:"rect",component:r}),i=d.setAnimation({el:c[p]&&c[p].graphics.label||"text",attr:t.textAttr,container:o,label:"text",component:r}),c[p]?(i.removeCSS(),a.appendChild(n),o.appendChild(i)):(r.addGraphicalElement("rectElement",n,!0),r.addGraphicalElement("textElement",i,!0),c[p]={},c[p].graphics={},c[p].config={},c[p].graphics.label=i,c[p].graphics.rect=n,n.hover(x,C).on("fc-click",b),i.hover(x,C).on("fc-click",b)),i.css(t.css),"header"!==e.type&&(h[e.pos]||(h[e.pos]=[]),h[e.pos].push({bgElem:n,bgColor:t.rectAttr.fill})),n.data("dataObj",e.elem).data("eventArgs",t.eventArgs).data("data",t.dataArgs),i.data("dataObj",e.elem).data("eventArgs",t.eventArgs).data("data",t.dataArgs),v?m.enableToolTip(i,t.tooltext):m.disableToolTip(i),r.components.categoryElement=c},t.prototype._drawGridLine=function(){var e=this.config,t=this.getFromEnv("animationManager"),a=this.getGraphicalElement("gridLine")||[],o=void 0,n=void 0,i=0,r=0,s=2,l=void 0,c=void 0;for(o={"stroke-dasharray":e.lineDashStyle,"stroke-width":e.lineThickness,stroke:e.lineColor};r<s;r+=1){if(0===r)l=e.gridLinePath,c=this.getContainer("labelLineContainer");else if(l=e.gridLineHeaderPath,c=this.getContainer("headerLineContainer"),!l)continue;o.path=l,n=t.setAnimation({el:a&&a[i]||"path",attr:o,container:c,label:"path",component:this}),(!a||!a[i])&&this.addGraphicalElement("gridLine",n,!0),i+=1}for(r=i,s=this.getGraphicalElement("gridLine").length;r<s;r+=1)this.getGraphicalElement("gridLine")[r].attr({path:"M0,0"})},t.prototype._gridHoverHandler=function(){var e,t,a,o=this.data("data"),n=o.type,i=o.dimension,r=o.axis,s=r.getFromEnv("chart").config,l=r.getFromEnv("animationManager"),c=r.config.hoverElemsArr||[],h=r.getContainer("ganttPlotHoverBandContainer"),d=r.getGraphicalElement("plotHoverElement"),p=d?1:0;if(e="category"===n?{x:i.left,y:s.canvasTop,width:i.left<i.right?i.right-i.left:0,height:s.height,fill:o.rollOverColor,"stroke-width":0}:{y:i.top,x:s.canvasLeft,height:i.top<i.bottom?i.bottom-i.top:0,width:s.width,fill:o.rollOverColor,"stroke-width":0},o.usePlotHover&&(d=l.setAnimation({el:d||"rect",attr:e,component:r,label:"rect",container:h}),p?d.show():r.addGraphicalElement("plotHoverElement",d)),o.useHover&&c[o.pos])for(t=0,a=c[o.pos].length;t<a;t+=1)l.setAnimation({el:c[o.pos][t].bgElem||"rect",attr:{fill:o.rollOverColor},label:"rect"})},t.prototype._gridOutHandler=function(){var e,t,a,o=this.data("data"),n=o.axis,i=n.config.hoverElemsArr||[],r=n.getFromEnv("animationManager"),s=n.getGraphicalElement("plotHoverElement");if(o.usePlotHover&&s&&s.hide(),o.useHover&&i[o.pos])for(e=0,t=i[o.pos].length;e<t;e+=1)a=i[o.pos][e],r.setAnimation({el:a.bgElem||"rect",attr:{fill:a.bgColor},label:"rect"})},t.prototype._disposeExtraProcessAndDataTableElement=function(e){var t,a,o=this.components.categoryElement||[];for(t=e,a=o.length;t<a;t+=1)o[t].graphics.label.attr({text:""}),o[t].graphics.rect.attr({x:0,y:0,width:0,heigth:0})},t}(i["default"]);t["default"]=v,t.extractAttribToEnd=function b(e,t){var a;for(a in e._attrib=(0,r.extend2)({},t),e._attrib=(0,r.extend2)(e._attrib,m(e)),e)e.hasOwnProperty(a)&&e[a]&&"object"===o(e[a])&&"_attrib"!==a&&b(e[a],e._attrib)}},687:function(e,t,a){"use strict";t.__esModule=!0,t.getCrispPath=t._drawScrollBar=undefined;var o,n=a(131),i=(o=n)&&o.__esModule?o:{"default":o},r=a(118),s=a(122);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var c,h=(0,a(125).getDep)("redraphael","plugin"),d=function(e,t){return parseInt(e,t||10)},p=function(e,t,a){return a.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,state:"appearing",component:a,label:"group"})},u=function(e){var t,a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;return 0===a?e:0===(t=Math.abs(e)%a)?e:e<0?-(Math.abs(e)-t):e+a-t},g=function(e,t){return e<t?t:e};function f(e){var t="";return"trend"!==e&&"trends"!==e||(t="trend"),"catVLine"!==e&&"catVLines"!==e||(t="catVLine"),"label"!==e&&"labels"!==e||(t="labels"),"line"!==e&&"lines"!==e||(t="lines"),"band"!==e&&"bands"!==e||(t="bands"),"catBand"!==e&&"catBands"!==e||(t="catBand"),t}function m(){var e,t,a,o,n,i,s,l,c,d,u,g,f,m,v,b,x,C,k=this,y=k.getFromEnv("chart"),w=y.config,F=y.graphics,L=k.config,A=L.axisRange,P=w.scrollOptions||(w.scrollOptions={}),T=A.max,E=A.min,N=P.vxLength,S=k.getLinkedItem("scrollBar"),D=S&&S.config.node,B=y.getChildren("canvas")[0].config;S&&(e=B.canvasLeft,t=B.canvasTop,a=B.canvasHeight,o=B.canvasWidth,n=B.canvasBorderWidth,i=L.showAxisLine&&L.axisLineThickness||0,s=(0,r.pluckNumber)(n,L.lineStartExtension),l=(0,r.pluckNumber)(n,L.lineEndExtension),P.viewPortMin=E,P.viewPortMax=T,c=(v=(f=k.getVisibleConfig()).maxValue-(m=f.minValue))/(b=A.max-A.min),x=(m-A.min)/(b-v),d=P.windowedCanvasWidth=k.getPixel(N),u=P.fullCanvasWidth=k.getPixel(T-E)-d,(g=F.scrollBarParentGroup)||(g=F.scrollBarParentGroup=p("scrollBarParentGroup",F.parentGroup).insertBefore(y.getChildContainer().datalabelsGroup)),!1!==L.scrollEnabled?(L.isVertical?S.draw(e,t,{height:a,scrollRatio:c,roundEdges:B.isRoundEdges,fullCanvasWidth:u,windowedCanvasWidth:d,scrollPosition:x,parentLayer:g}):S.draw(e-s,t+a+n+i-2,{width:o+s+l,scrollRatio:c,roundEdges:B.isRoundEdges,fullCanvasWidth:u,windowedCanvasWidth:d,scrollPosition:x,parentLayer:g}),!D&&(h.eve.on("raphael.scroll.start."+S.config.node.id,function(e){k.setState("scrolling",!0),C=e,y.fireChartInstanceEvent("scrollstart",{scrollPosition:e})}),h.eve.on("raphael.scroll.end."+S.config.node.id,function(e){k.setState("scrolling",!1),y.fireChartInstanceEvent("scrollend",{prevScrollPosition:C,scrollPosition:e})}))):S&&S.node&&S.node.hide(),L.scrollBarDrawn=!0)}var v=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a._drawScrollBar=m,a}return l(t,e),t.prototype.getType=function(){return"axis"},t.prototype.getName=function(){return"cartesian"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.setAdaptiveMin=0,t.adjustDiv=1,t.axisNameWidth=c,t.rotateAxisName=0,t.useEllipsesWhenOverflow=1,t.divLineColor=c,t.divLineAlpha=c,t.divLineThickness=c,t.divLineIsDashed=c,t.divLineDashLen=c,t.divLineDashGap=c,t.showAlternateGridColor=c,t.alternateGridColor=c,t.alternateGridAlpha=c,t.showZeroPlane=1,t.zeroPlaneAlpha=80,t.showZeroPlaneValue=1,t.showZeroPlaneOnTop=1,t.showAxisLine=c,t.axisLineThickness=c,t.axisLineAlpha=c,t.tickLength=c,t.trendlineToolText=c,t.trendlineColor="333333",t.trendlineThickness=1,t.trendlineAlpha=c,t.showTrendlinesOnTop=0,t.trendlinesAreDashed=0,t.trendlinesDashLen=5,t.trendlinesDashGap=2,t.isTrendZone=c,t.showTrendlines=1,t.showTrendlineLabels=1,t.showLabels=1,t.maxLabelHeight=c,t.rotateLabels=c,t.slantLabel=0,t.showAxisValues=1,t.showTooltip=1,t.isActive=!0,t.drawLabels=!0,t.drawOnlyCategoryLine=!1,t.drawLabelsOpposit=!1,t.drawPlotlines=!0,t.drawAxisLine=!0,t.drawPlotBands=!0,t.drawAxisName=!0,t.drawAxisNameOpposit=!1,t.axisNameAlignCanvas=!1,t.drawAxisNameFromBottom=!1,t.drawTrendLines=!0,t.drawTrendLabels=!0,t.drawTick=!0,t.drawTickMinor=!0,t.animateAxis=!0,t.drawAxisLineWRTCanvas=!0,t.isRelativeAxisInverse=!1,t.axisIndex=0,t.uniqueClassName=0,t.viewPortRatio={},t.canvas={},t.axisRange={},t.isConfigured=!0,t.axisDimention={},t.extremeLabels={firstLabel:{},lastLabel:{}},t._setRangeAgain=!1,t._defaultForceDecimal=c,t._defaultDecimalPrecision=c,t.rangeChanged=!1,t.dimensionChanged=!1,t.apparentScrollPos=0,this.addToEnv("componentInfo",{catVLine:[],trend:[],labels:[],lines:[],bands:[],catBand:[]})},t.prototype.configure=function(e){var t,a,o,n,i,l,h,p,u=this.config,f=this.getFromEnv("chart"),m=f.getFromEnv("dataSource"),v=this.getFromEnv("chart").config.is3D,b=m.chart,x=this.getFromEnv("number-formatter"),C=this.getFromEnv("tempAxis");if(t=u.rawAttr=e,e.vtrendlines)for(i=0;i<e.vtrendlines.length;++i)for(l=0;l<e.vtrendlines[i].line.length;++l)h=t.vtrendlines[i].line[l],p=e.vtrendlines[i].line[l],h.startvalue=(0,r.pluckNumber)(p.startvalue,c),h.endvalue=(0,r.pluckNumber)(p.endvalue,p.startvalue),h.color=(0,r.pluck)(p.color,"FFFFFF"),h.istrendzone=(0,r.pluckNumber)(p.istrendzone,1),h.thickness=(0,r.pluckNumber)(p.thickness,1),h.trendTextAlpha=(0,r.pluckNumber)(p.alpha,u.trendlineAlpha,99),h.alpha=(0,r.pluckNumber)(p.alpha,40),h.tooltext=(0,r.pluck)(p.tooltext,"");if(e.trendlines)for(i=0;i<e.trendlines.length;++i)for(l=0;l<e.trendlines[i].line.length;++l)h=t.trendlines[i].line[l],p=e.trendlines[i].line[l],h.startvalue=(0,r.pluckNumber)(p.startvalue,c),h.endvalue=(0,r.pluckNumber)(p.endvalue,p.startvalue),h.color=(0,r.pluck)(p.color,"FFFFFF"),h.istrendzone=(0,r.pluckNumber)(p.istrendzone,1),h.thickness=(0,r.pluckNumber)(p.thickness,1),h.trendTextAlpha=(0,r.pluckNumber)(p.alpha,u.trendlineAlpha,99),h.alpha=(0,r.pluckNumber)(p.alpha,40),h.showOnTop=(0,r.pluckNumber)(p.showOnTop,1),h.valueOnRight=(0,r.pluckNumber)(p.valueOnRight,0);u.trendLines=t.trendlines,u.vTrendLines=t.vtrendlines,(0,r.parseConfiguration)(t,u),u.axisName=(0,r.parseUnsafeString)(t.axisName),u.axisValuePadding=u.axisNamePadding||(0,r.pluckNumber)(t.axisValuePadding,4),u.axisNamePadding=u.axisNamePadding||(0,r.pluckNumber)(t.axisNamePadding,5),u.maxLabelWidthPercent=(0,r.pluckNumber)(t.maxLabelWidthPercent),u.maxLabelWidthPercent=Math.abs(u.maxLabelWidthPercent),u.minLabelWidthPercent=Math.abs((0,r.pluckNumber)(t.minLabelWidthPercent)),u.numDivLines=(0,r.pluckNumber)(t.numDivLines,4),u.numDivLines=g(u.numDivLines,0),u.categoryNumDivLines=(0,r.pluckNumber)(t.numDivLines,0),u.axisValuePadding=g(u.axisValuePadding,0),u.isReverse=Number(t.isReverse,0),u.isOpposit=Number(t.isOpposit,0),u.isVertical=Number(t.isVertical,0),u.categoryDivLinesFromZero=1,u.axisMinValue=x.getCleanValue(t.axisMinValue),u.axisMaxValue=x.getCleanValue(t.axisMaxValue),u.zeroPlaneColor=(0,r.pluck)(t.zeroPlaneColor,t.divLineColor),u.zeroPlaneThickness=(0,r.pluck)(t.zeroPlaneThickness,t.divLineThickness),u.axisLineColor=(0,s.convertColor)(t.axisLineColor,t.axisLineAlpha),u.tickAlpha=(0,r.pluckNumber)(t.tickAlpha,u.axisLineAlpha),u.tickColor=(0,s.convertColor)((0,r.pluck)(t.tickColor,t.axisLineColor),u.tickAlpha),u.tickWidth=(0,r.pluckNumber)(t.tickWidth,u.axisLineThickness),u.maxZoomLimit=(0,r.pluckNumber)(b.maxzoomlimit,f.maxzoomlimit,1e3),u.showVLines=(0,r.pluckNumber)(b.showvlines,1),u.showVLinesOnTop=(0,r.pluckNumber)(b.showvlinesontop,0),u.showVLineLabels=(0,r.pluckNumber)(b.showvlinelabels,this.showVLineLabels,1),u.showVLineLabelBorder=(0,r.pluckNumber)(b.showvlinelabelborder,1),u.rotateVLineLabels=(0,r.pluckNumber)(b.rotatevlinelabels,0),u.vLineColor=(0,r.pluck)(b.vlinecolor,"333333"),u.vLineLabelColor=(0,r.pluck)(b.vlinelabelcolor),u.vLineThickness=(0,r.pluck)(b.vlinethickness,1),u.vLineAlpha=(0,r.pluckNumber)(b.vlinealpha,80),u.vLineLabelBgColor=(0,r.pluck)(b.vlinelabelbgcolor,"ffffff"),u.vLineLabelBgAlpha=(0,r.pluckNumber)(b.vlinelabelbgalpha,v?50:100),u.staggerLines=Math.max((0,r.pluckNumber)(b.staggerlines,2),2),u.staggerLines=g(u.staggerLines,1),u.trendlineValuesOnOpp=(0,r.pluck)(t.trendlineValuesOnOpp,t.trendlineValuesOnOpp,0),u.labelDisplay=(0,r.pluck)(t.labelDisplay,"auto").toLowerCase(),u.labelStep=(0,r.pluckNumber)(t.labelStep,0),u.labelStep=Math.round(u.labelStep),u.labelStep=g(u.labelStep,0),u.startPad=0,u.endPad=0,u._oriLabelStep=u.labelStep,u.showLimits=(0,r.pluckNumber)(t.showLimits,u.showAxisValues),u.showUpperLimit=t.showLimits,u.showDivLineValues=(0,r.pluckNumber)(t.showDivLineValues,u.showAxisValues),u.showCanvasBorder=f.getChildren("canvas")[0].config.showCanvasBorder?1:0,u.axisBreak=t.axisBreaks,u.isBreak=!!u.axisBreak,u.isBreak&&this._processAxisBreak(),a=(a=(0,r.getFirstValue)(t.axisNameBorderColor,r.BLANKSTRING))?(0,s.convertColor)(a,(0,r.pluckNumber)(t.axisNameBorderAlpha,t.axisNameAlpha,100)):r.BLANKSTRING,u.name=u.name||{},u.name.style={fontFamily:(0,r.pluck)(t.axisNameFont,t.outCanfontFamily),fontSize:(0,r.pluck)(t.axisNameFontSize,d(t.outCanfontSize))+"px",color:(0,s.convertColor)((0,r.pluck)(t.axisNameFontColor,t.outCancolor),(0,r.pluckNumber)(t.axisNameFontAlpha,t.axisNameAlpha,100)),fontWeight:(0,r.pluckNumber)(t.axisNameFontBold,1)?"bold":"normal",fontStyle:(0,r.pluckNumber)(t.axisNameFontItalic)?"italic":"normal",border:a||t.axisNameBgColor?(0,r.pluckNumber)(t.axisNameBorderThickness,1)+"px solid":c,borderColor:a,borderThickness:(0,r.pluckNumber)(t.axisNameBorderThickness,1),borderPadding:(0,r.pluckNumber)(t.axisNameBorderPadding,2),borderRadius:(0,r.pluckNumber)(t.axisNameBorderRadius,0),backgroundColor:t.axisNameBgColor?(0,s.convertColor)(t.axisNameBgColor,(0,r.pluckNumber)(t.axisNameBgAlpha,t.axisNameAlpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(t.axisNameBorderDashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(t.axisNameBorderDashLen,4),(0,r.pluckNumber)(t.axisNameBorderDashGap,2)):"none"},u.name.style.lineHeight=(0,r.setLineHeight)(u.name.style),o=(o=(0,r.getFirstValue)(b.trendvaluebordercolor,r.BLANKSTRING))?(0,s.convertColor)(o,(0,r.pluckNumber)(b.trendvalueborderalpha,b.trendvaluealpha,100)):r.BLANKSTRING,u.trend=u.trend||{},u.trend.trendStyle={fontFamily:(0,r.pluck)(b.trendvaluefont,t.outCanfontFamily),color:(0,r.pluck)(b.trendvaluefontcolor,t.trendlineColor,t.outCancolor,"333333"),fontSize:(0,r.pluckFontSize)(b.trendvaluefontsize,d(t.outCanfontSize))+"px",fontWeight:(0,r.pluckNumber)(b.trendvaluefontbold)?"bold":"normal",fontStyle:(0,r.pluckNumber)(b.trendvaluefontitalic)?"italic":"normal",border:o||b.trendvaluebgcolor?(0,r.pluckNumber)(b.trendvalueborderthickness,1)+"px solid":"",borderColor:o,borderThickness:(0,r.pluckNumber)(b.trendvalueborderthickness,1),borderPadding:(0,r.pluckNumber)(b.trendvalueborderpadding,2),borderRadius:(0,r.pluckNumber)(b.trendvalueborderradius,0),backgroundColor:b.trendvaluebgcolor?(0,s.convertColor)(b.trendvaluebgcolor,(0,r.pluckNumber)(b.trendvaluebgalpha,b.trendvaluealpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(b.trendvalueborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(b.trendvalueborderdashlen,4),(0,r.pluckNumber)(b.trendvalueborderdashgap,2)):"none"},u.trend.trendStyle.lineHeight=(0,r.setLineHeight)(u.trend.trendStyle),u.labels=u.labels||{},u.lines=u.lines||{},u.band=u.band||{},n=(n=(0,r.getFirstValue)(b.labelbordercolor,r.BLANKSTRING))?(0,s.convertColor)(n,(0,r.pluckNumber)(b.labelborderalpha,b.labelalpha,100)):r.BLANKSTRING,u.labels.style={fontFamily:(0,r.pluck)(t.labelFont,t.outCanfontFamily),fontSize:(0,r.pluckNumber)(t.labelFontSize,d(t.outCanfontSize))+"px",fontWeight:(0,r.pluckNumber)(t.labelFontBold)?"bold":"normal",fontStyle:(0,r.pluckNumber)(t.labelFontItalic)?"italic":"normal",color:(0,s.convertColor)((0,r.pluck)(t.labelFontColor,t.outCancolor),(0,r.pluckNumber)(t.labelFontAlpha,100)),labelLink:b.labellink,border:n||b.labelbgcolor?(0,r.pluckNumber)(b.labelborderthickness,1)+"px solid":"",borderColor:n,borderThickness:(0,r.pluckNumber)(b.labelborderthickness,1),borderPadding:(0,r.pluckNumber)(b.labelborderpadding,2),borderRadius:(0,r.pluckNumber)(b.labelborderradius,0),backgroundColor:b.labelbgcolor?(0,s.convertColor)(b.labelbgcolor,(0,r.pluckNumber)(b.labelbgalpha,b.labelalpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(b.labelborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(b.labelborderdashlen,4),(0,r.pluckNumber)(b.labelborderdashgap,2)):"none"},u.labels.style.lineHeight=(0,r.setLineHeight)(u.labels.style),u.numberFormatterFn=(0,r.pluck)(t.numberFormatterFn),u.apparentScrollPos=t.apparentScrollPos||u.apparentScrollPos,u.axisEndLabelDisplaySpace={left:0,right:0,top:0,bottom:0},u.isConfigured=!0,u._defaultForceDecimal=c,u._defaultDecimalPrecision=c,this.setScrollType("smart"),this.addToEnv("savedAxis",C&&(0,r.extend2)({},C))},t.prototype.setScrollType=function(e){var t=this.getVisibleConfig();"none"!==e&&"smart"!==e&&"always"!==e||(this.config.scrollType=e),this.setVisibleConfig(t.minValue,t.maxValue)},t.prototype.getScrollType=function(){return this.config.scrollType},t.prototype._processAxisBreak=function(){var e,t,a,o,n=this.config;for(n.breakPoints=[],a=0,o=(e=n.axisBreak.split("|")).length,t=0;a<o;a+=1)e[a]=e[a].split(","),isNaN(e[a][0])||isNaN(e[a][1])||(n.breakPoints[t]={start:(0,r.pluckNumber)(e[a][0]),end:(0,r.pluckNumber)(e[a][1]),length:(0,r.pluckNumber)(e[a][2],0)},t+=1);n.breakPoints.sort(function(e,t){return e.start-t.start}),n.hasBreakPoints=!0,this._validateBreakPoints()},t.prototype._validateBreakPoints=function(){var e,t=this.config,a=t.breakPoints,o=0,n=a.length;for(e=0;e<n;e+=1)o+=a[e].end-a[e].start;t.totalBreakAmount=o},t.prototype._getRelativeBreakValue=function(e){var t,a=this.config.breakPoints,o=a.length,n=0;for(t=0;t<o;t+=1){if(e>=a[t].start&&e<=a[t].end)return a[t].start-n;if(e<a[t].start)break;n+=a[t].end-a[t].start}return e-n},t.prototype._getRealBreakValue=function(e){var t,a=this.config.breakPoints,o=a.length;for(t=0;t<o;t+=1)if(e>=a[t].start)e+=a[t].end-a[t].start;else if(e<a[t].start)return e;return e},t.prototype._adjustNumberFormatter=function(e){var t,a,o=this.config,n=o.axisIndex,i=o.isVertical,r=this.getFromEnv("chart").getFromEnv("number-formatter"),s=o._defaultDecimalPrecision,l=o._defaultForceDecimal,h=0;a=i||"yAxis"===o.numberFormatterFn?(r.Y[n]||r.Y[0]).yAxisLabelConf:r.paramX,s!==c?a.decimalprecision=s:o._defaultDecimalPrecision=a.decimalprecision,l!==c?a.forcedecimals=l:o._defaultForceDecimal=a.forcedecimals,parseInt(e,10)>0||(t=e.toString().split(".")[1])&&((h=t.match(/^[0]*/)[0].length)+1>a.decimalprecision&&(a.forcedecimals=1),a.decimalprecision=Math.max(h+1,a.decimalprecision))},t.prototype._isZoomed=function(){var e=this.config,t=this.getFromEnv("chart").config.viewPortConfig;return e.isVertical?1!==t.scaleY:1!==t.scaleX},t.prototype._getIntervalArr=function(e){var t,a,o,n,i,s,l,c=this.config,h=c.labels,d=c.axisRange,p=this.getFromEnv("chart"),g=d.tickInterval*(e&&e.step||1),f=[];if(t=this.getVisibleConfig(),"polar"===p.config.axisType?(a=t.minValue,o=t.maxValue):(a=t.minValue-(e&&e.minPad||0),o=t.maxValue+(e&&e.maxPad||0)),(n=u(a,g))===(i=u(o-o%g,g)))return[n];if(h.drawNormalVal)for(s=(0,r.toPrecision)(n+g,10);s<i;s=(0,r.toPrecision)(s+g,10))l=c.hasBreakPoints?(0,r.toPrecision)(this._getRealBreakValue(s),10):(0,r.toPrecision)(s,10),f.push(l);return h.drawLimitVal&&f.push(i,n),-1!==f.indexOf(0)&&f.splice(f.indexOf(0),1),c.showZeroPlane&&n<=0&&i>=0&&f.push(0),f.sort(function(e,t){return e-t})},t.prototype._disposeScrollBar=function(){var e=this.config,t=this.getLinkedItem("scrollBar");e.scrollBarDrawn&&(t.hide(),e.scrollBarDrawn=!1)},t.prototype.addComponentInfo=function(e,t){this.getFromEnv("componentInfo")[f(e)].push(t)},t.prototype.getComponentInfo=function(e){return this.getFromEnv("componentInfo")[f(e)]},t.prototype.clearComponentInfo=function(){var e,t=this.getFromEnv("componentInfo");for(e in t)t.hasOwnProperty(e)&&(t[e]=[])},t.prototype.draw=function(){var e,t,a,o,n,i,r,s,l,c,h,d,u,g,f=this.config,m=f.canvas,v=this.getFromEnv("chart"),b=v.config,x=f.isVertical,C=b.viewPortConfig,k=this.getChildren().limitUpdater,y=f.viewPortRatio||{},w=m.canvasLeft||b.canvasLeft,F=m.canvasTop||b.canvasTop,L=m.canvasWidth||b.canvasWidth,A=m.canvasHeight||b.canvasHeight,P=f.axisContainer,T=f.axisLabelContainerTop,E=f.axisPlotLineContainer,N=f.axisPlotLineContainerTop,S=f.vlineLabelContainer,D=f.axisBandContainer,B=f.axisNameContainer,_=f.axisTrendContainerTop,V=f.axisTrendContainerBottom,O=f.axisTrendLabelContainer,H=f.axisAxisLineContainer,M=f.axisAxisLineContainerBottom,I=f.divLineThickness||0,R=v.getChildContainer(),G=R.axisBottomGroup,W=R.axisTopGroup,z=[];this.clearComponentInfo(),d=C.y*C.scaleY,u=C.x*C.scaleX,g=x?w+","+(F-I)+","+L+","+(A+2*I):w-I+","+F+","+(L+2*I)+","+A,e=this.getContainer("axisBandGroup")||this.addContainer("axisBandGroup",p("dataset-Band-group",G,this)),t=this.getContainer("axisPlotLineGroup")||this.addContainer("axisPlotLineGroup",p("dataset-Line-group",G,this)),a=this.getContainer("axisPlotLineGroupTop")||this.addContainer("axisPlotLineGroupTop",p("dataset-Line-group-top",W,this)),n=this.getContainer("axisNameGroup")||this.addContainer("axisNameGroup",p("dataset-Name-group",G,this)),o=this.getContainer("axisLineGroup")||this.addContainer("axisLineGroup",p("axis-Line-group",W,this)),s=this.getContainer("axisTrendGroupTop")||this.addContainer("axisTrendGroupTop",p("dataset-Trend-group-top",W,this)),i=this.getContainer("axisLabelGroup")||this.addContainer("axisLabelGroup",p("dataset-Label-group",G,this)),r=this.getContainer("axisLabelGroupTop")||this.addContainer("axisLabelGroupTop",p("dataset-Label-group",W,this)),l=this.getContainer("axisTrendGroupBottom")||this.addContainer("axisTrendGroupBottom",p("dataset-Trend-group-bottom",G,this)),V?V.attr({"clip-rect":w+","+F+","+L+","+A}):(f.axisTrendContainerBottom=V=p("dataset-axis-trend-bottom",l,this),V.attr({"clip-rect":w+","+F+","+L+","+A})),P||(f.axisContainer=P=p("dataset-axis",i,this)),T||(f.axisLabelContainerTop=T=p("dataset-top-label",r,this)),H||(f.axisAxisLineContainer=H=p("axis-line-tick",o,this)),S||(f.vlineLabelContainer=S=p("axis-vline-label",o,this)),D?z.push({el:D,attrs:{"clip-rect":w+","+F+","+L+","+A},animType:"linear",animConfig:[{syncWith:"initial",start:0,initial:1}]}):(f.axisBandContainer=D=p("dataset-axis-bands",e,this),D.attr({"clip-rect":w+","+F+","+L+","+A})),E?z.push({el:E,attrs:{"clip-rect":g},animType:"linear",animConfig:[{syncWith:"initial",start:0,initial:1}]}):(f.axisPlotLineContainer=E=p("dataset-axis-lines",t,this),E.attr({"clip-rect":g})),N?z.push({el:N,attrs:{"clip-rect":g},animType:"linear",animConfig:[{syncWith:"initial",start:0,initial:1}]}):(f.axisPlotLineContainerTop=N=p("dataset-axis-lines-top",a,this),N.attr({"clip-rect":g})),_?z.push({el:_,attrs:{"clip-rect":w+","+F+","+L+","+A},animType:"linear",animConfig:[{syncWith:"initial",start:0,initial:1}]}):(f.axisTrendContainerTop=_=p("dataset-axis-trend-top",s,this),_.attr({"clip-rect":w+","+F+","+L+","+A})),O||(f.axisTrendLabelContainer=O=p("dataset-axis-trend-label",s,this)),B||(f.axisNameContainer=B=p("dataset-axis-name",n,this)),M||(f.axisAxisLineContainerBottom=M=p("axis-line-tick-bottom",G,this)),y.scaleX&&y.scaleY&&(y.scaleX!==C.scaleX||y.scaleY!==C.scaleY)?(y.scaleX=C.scaleX,y.scaleY=C.scaleY,this._drawComponents()):(x?(h=d-C.y*C.scaleY,S.transform("t0,"+h),P.transform("t0,"+h),T.transform("t0,"+h),E.transform("t0,"+h),N.transform("t0,"+h),D.transform("t0,"+h),_.transform("t0,"+h),V.transform("t0,"+h)):(c=u-C.x*C.scaleX,S.transform("t"+c+",0"),P.transform("t"+c+",0"),T.transform("t"+c+",0"),E.transform("t"+c+",0"),N.transform("t"+c+",0"),D.transform("t"+c+",0"),_.transform("t"+c+",0"),V.transform("t"+c+",0")),this._drawComponents()),this.addExtEventListener("animationcomplete",function(){k&&k.forEach(function(e){e.draw()})},this.getFromEnv("animationmanager")),this.addToEnv("tempAxis",{canvasHeight:this.config.canvas.canvasHeight,canvasWidth:this.config.canvas.canvasWidth,canvasLeft:this.config.canvas.canvasLeft,canvasRight:this.config.canvas.canvasRight,canvasBottom:this.config.canvas.canvasBottom,canvasTop:this.config.canvas.canvasTop,visibleRange:this.getVisibleConfig(),visibleLength:this.getVisibleLength(),axisLength:this.config.axisDimention.axisLength,axisOpposite:this.config.axisDimention.opposite,axisY:this.config.axisDimention.y,axisX:this.config.axisDimention.x,axisRangeMin:this.config.axisRange.min,axisRangeMax:this.config.axisRange.max,axisTickInterval:this.config.axisRange.tickInterval,axisIsReverse:this.config.isReverse,axisIsVertical:this.config.isVertical,axisHasBreakPoints:this.config.hasBreakPoints,viewPortScaleY:this.getFromEnv("chart").config.viewPortConfig.scaleY,viewPortY:this.getFromEnv("chart").config.viewPortConfig.y,viewPortScaleX:this.getFromEnv("chart").config.viewPortConfig.scaleX,viewPortX:this.getFromEnv("chart").config.viewPortConfig.x,chartHeight:this.getFromEnv("chart").config.canvasHeight,chartWidth:this.getFromEnv("chart").config.canvasWidth,chartLeft:this.getFromEnv("chart").config.canvasLeft,chartRight:this.getFromEnv("chart").config.canvasRight,chartBottom:this.getFromEnv("chart").config.canvasBottom,chartTop:this.getFromEnv("chart").config.canvasTop,pvr:this.config.pvr,refVal:this.config.refVal,refVisibleVal:this.config.refVisibleVal})},t.prototype.getBreakPoints=function(){var e=this.config;return!!e.hasBreakPoints&&e.breakPoints},t.prototype.getValue=function(e,t){var a=this.config,o=t&&t.wrtVisible?a.refVisibleVal:a.refVal,n=this.config.pvr;return o+(e-a.refPx)/n},t.prototype.getVisibleLength=function(){var e=this.getVisibleConfig();return Math.abs(e.maxValue-e.minValue)},t.prototype.setAxisPadding=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0,a=this.config;e=a.startPad=Math.max(a.startPad,e),t=a.endPad=Math.max(a.endPad,t),0===a.oriCatLen&&(0===e&&(e=.5),0===t&&(t=.5)),a.hasCategory?a.oriCatLen>=0&&this.setAxisRange({max:a.oriCatLen+t,min:-e}):a.originalMax&&a.originalMin&&this.setDataLimit(a.originalMax,a.originalMin)},t.prototype.setAxisConfig=function(e){var t,a=this.config;for(t in e)e.hasOwnProperty(t)&&(a[t]=e[t])},t.prototype.getAxisConfig=function(e){var t=this.config;return e?t[e]:t},t.prototype.setAxisRange=function(e){var t,a,o,n=this.config,i=n.axisRange;for(o in e)e.hasOwnProperty(o)&&(i[o]=e[o]);n.isReverse?n.refVal=i.max:n.refVal=i.min,this.setVisibleConfig(i.min,i.max),this.getFromEnv("tempAxis")&&((a={max:(t=this.getFromEnv("tempAxis")).axisRangeMax,min:t.axisRangeMin,tickInterval:t.axisTickInterval}).max!==i.max||a.min!==i.min||a.tickInterval!==i.tickInterval?n.rangeChanged=!0:n.rangeChanged=!1)},t.prototype.setAxisDimention=function(e){var t,a=this.config,o=this.getFromEnv("chart").config,n=a.axisDimention||(a.axisDimention={});n.opposite=(0,r.pluckNumber)(e.opposite,n.opposite),n.x=(0,r.pluckNumber)(e.x,o.canvasLeft,n.x),n.y=(0,r.pluckNumber)(e.y,o.canvasTop,n.y),n.axisLength=(0,r.pluckNumber)(e.axisLength,n.axisLength),a.isVertical?a.refPx=n.y:a.refPx=n.x,this.getPVR(),this.getFromEnv("tempAxis")&&((t=this.getFromEnv("tempAxis")).axisLength!==n.axisLength||t.axisOpposite!==n.opposite||t.axisY!==n.y||t.axisX!==n.x?a.dimensionChanged=!0:a.dimensionChanged=!1)},t.prototype.setDataLimit=function(e,t){var a,o,n,i,s,l=this.config,c=l.axisRange,h=l.isPercent?100:l.axisMaxValue,d=l.isPercent?0:l.axisMinValue,p=l.numDivLines,u=l.setAdaptiveMin,g=l.adjustDiv,f=l.startPad||0,m=l.endPad||0,v=l.trendLines||l.vTrendLines,b=v&&v[0]&&v[0].line;i=(0,r.safeMin)(b,function(e){return e.startvalue}),s=(0,r.safeMax)(b,function(e){return e.endvalue}),t=(0,r.safeMin)([i,t]),e=(0,r.safeMax)([s,e]),l.originalMax=e,l.originalMin=t,e=l.isPercent?100:e+m,t=l.isPercent?0:t-f,a=o=!u,l.hasBreakPoints&&(e-=l.totalBreakAmount),n=(0,r.getAxisLimits)((0,r.pluckNumber)(e,h),(0,r.pluckNumber)(t,d),h,d,o,a,p,g),this.setAxisRange({max:Number((0,r.toPrecision)(n.Max,10)),min:Number((0,r.toPrecision)(n.Min,10)),tickInterval:Number((0,r.toPrecision)(n.divGap,10))}),this._adjustNumberFormatter(c.tickInterval),0===c.tickInterval&&(c.tickInterval=1)},t.prototype.setVisibleConfig=function(e,t){var a,o,n,i=this.config,r=i.axisRange,s=this.getScrollType(),l=i.maxZoomLimit;return!(e>t)&&(n=(r.max-r.min)/(t-e),!(l&&n>l)&&(i.minVisibleValue=e,i.maxVisibleValue=t,i.isReverse?i.refVisibleVal=t:i.refVisibleVal=e,"always"===s?this.setScrollEnabled(!0):"smart"===s?this._isZoomed()?this.setScrollEnabled(!0):this.setScrollEnabled(!1):"none"===s&&this.isScrollEnabled()&&this.setScrollEnabled(!1),this.getPVR(),this.fireEvent("visiblerangeset",{minValue:i.minVisibleValue,maxValue:i.maxVisibleValue}),this.getFromEnv("tempAxis")&&(this.asyncDraw(),a=-this.getTranslation(),o=i.isVertical?["T",0,",",a].join(""):["T",a,",",0].join(""),i.axisContainer.attr({transform:o}),i.axisBandContainer.attr({transform:o}),i.axisPlotLineContainer.attr({transform:o}),i.axisTrendContainerTop.attr({transform:o})),!0))},t.prototype.getVisibleConfig=function(){var e=this.config;return{minValue:e.minVisibleValue,maxValue:e.maxVisibleValue}},t.prototype.getPVR=function(){var e=this.config,t=e.isReverse,a=e.axisDimention||{},o=this.getVisibleConfig(),n=o.maxValue-o.minValue,i=a.axisLength/n;return i&&(e.pvr=t?-i:i),e.pvr},t.prototype.getPixel=function(e,t){var a=this.config,o=t&&t.preValue,n=t&&t.wrtVisible,i=n?a.refVisibleVal:a.refVal,s=this.getFromEnv("chartConfig").viewPortConfig,l=this.getFromEnv("tempAxis"),c=a.pvr*s.scaleX;return o&&l&&(i=n?l.refVisibleVal:l.refVal,c=this.getOldPVR()),c?(a.hasBreakPoints&&(e=this._getRelativeBreakValue(e)),(0,r.toPrecision)(a.refPx+(e-i)*c,2)):0},t.prototype.getLimit=function(){var e=this.config.axisRange,t=e.max;return{min:e.min,max:t,tickInterval:e.tickInterval}},t.prototype.getOldPVR=function(){var e=this.getFromEnv("tempAxis");return e?e.pvr:this.config.pvr},t.prototype.hide=function(){var e=this.config;e.axisContainer&&(e.axisLabelContainerTop.hide(),e.axisContainer.hide(),e.axisPlotLineContainer.hide(),e.axisPlotLineContainerTop.hide(),e.axisBandContainer.hide(),e.axisNameContainer.hide(),e.axisTrendContainerTop.hide(),e.axisTrendContainerBottom.hide(),e.axisTrendLabelContainer.hide(),e.axisAxisLineContainer.hide(),e.axisAxisLineContainerBottom.hide())},t.prototype.show=function(){var e=this.config;e.axisContainer&&(e.axisLabelContainerTop.show(),e.axisContainer.show(),e.axisPlotLineContainer.show(),e.axisPlotLineContainerTop.show(),e.axisBandContainer.show(),e.axisNameContainer.show(),e.axisTrendContainerTop.show(),e.axisTrendContainerBottom.show(),e.axisTrendLabelContainer.show(),e.axisAxisLineContainer.show(),e.axisAxisLineContainerBottom.show())},t.prototype.getTranslation=function(){var e=this.config;return this.getPixel(e.refVisibleVal)-e.refPx},t.prototype.setScrollEnabled=function(e){var t=this.getFromEnv("chart");this.config.scrollEnabled=e,e?(t._createToolBoxGantt(),this.getFromEnv("tempAxis")&&this.asyncDraw()):this._disposeScrollBar()},t.prototype.isScrollEnabled=function(){return this.config.scrollEnabled},t.prototype.manageProcessScroll=function(e){var t,a=this.config,o=a.totalWidth||0,n=a.totalVisiblelWidth;o>n&&(t=(o-n)*(1-e),this.translateAxis(t,undefined))},t.prototype.translateAxis=function(e,t){var a,o,n=this.config,i=this.getContainer("ganttPlotLineContainer"),r=this.getContainer("ganttPlotHoverBandContainer"),s=n.isVertical,l=n.lastTranslate||(n.lastTranslate={x:0,y:0}),c=this.getContainer("labelContainer"),h=this.getContainer("headerContainer"),d=this.getContainer("hotContainer");a=e!==undefined?e-l.x:0,o=t!==undefined?t-l.y:0,l.x=e!==undefined?e:l.x,l.y=t!==undefined?t:l.y,c&&c.translate(a,o),h&&h.translate(a,o),n.labelContainer&&n.labelContainer.translate(a,o),d&&d.translate(a,o),n.headerContainer&&n.headerContainer.translate(a,0),s?(i&&i.translate(0,o),r&&r.translate(0,o)):(i&&i.translate(a,0),r&&r.translate(a,0),this.setAxisConfig({animateAxis:!1}),n.drawTrendLines&&this._drawTrendLine(),this.setAxisConfig({animateAxis:!0}))},t.prototype.resetTransletAxis=function(){var e,t=this.config,a=this.getContainer("labelContainer"),o=this.getContainer("headerContainer"),n=this.getContainer("hotContainer");e={transform:"t0,0"},t.lastTranslate={x:0,y:0},a&&a.attr(e),o&&o.attr(e),t.labelContainer&&t.labelContainer.attr(e),t.headerContainer&&t.headerContainer.attr(e),t.ganttPlotLineContainer&&t.ganttPlotLineContainer.attr(e),t.ganttPlotHoverBandContainer&&t.ganttPlotHoverBandContainer.attr(e),n&&n.attr(e)},t}(i["default"]);t["default"]=v,t._drawScrollBar=m,t.getCrispPath=function(e,t){var a,o,n=!1,i=t%2;return e[1]===e[4]&&(a=e[1],o=Math.round(a),e[1]=e[4]=i?o>a?o-.5:o+.5:o,n=!0),e[2]===e[5]&&(a=e[2],o=Math.round(a),e[2]=e[5]=i?o>a?o-.5:o+.5:o,n=!0),{path:e,isCrisped:n}}},688:function(e,t,a){"use strict";t.__esModule=!0;var o=function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"axis",startEnd:{start:0,end:.3}}]};t["default"]={"initial.axis.GanttProcess":function(){return{"path.appearing":o,"rect.appearing":o,"text.appearing":o}},"initial.axis.GanttTime":function(){return{"path.appearing":o,"rect.appearing":o,"text.appearing":o}}}},689:function(e,t,a){"use strict";t.__esModule=!0;var o,n=a(686),i=(o=n)&&o.__esModule?o:{"default":o},r=a(118),s=a(122);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var c=void 0,h="none",d=r.preDefStr.POSITION_START,p=r.preDefStr.POSITION_TOP,u=r.preDefStr.POSITION_END;var g=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getName=function(){return"GanttTimeCategory"},t.prototype.configure=function(t){var a,o=this.config,n=this.getFromEnv("chart"),i=this.getFromEnv("dataSource"),l=n.getFromEnv("color-manager"),c=i.chart;e.prototype.configure.call(this,t),a=o.rawAttr,o.plotLineColor=o.lineColor=(0,s.convertColor)((0,r.pluck)(c.ganttlinecolor,l.getColor("gridColor")),(0,r.pluckNumber)(c.ganttlinealpha,100)),o.plotLineThickness=o.lineThickness=(0,r.pluckNumber)(c.ganttlinethickness,1),o.plotLineDashStyle=o.lineDashStyle=(0,r.pluckNumber)(c.ganttlinedashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(c.ganttlinedashlen,1),c.ganttlinedashgap,o.lineThickness):"none",o.hoverColor=(0,r.pluck)(c.categoryhoverbandcolor,c.hoverbandcolor,l.getColor("gridColor")),o.hoverAlpha=(0,r.pluckNumber)(c.categoryhoverbandalpha,c.hoverbandalpha,30),o.useHover=(0,r.pluckNumber)(c.showcategoryhoverband,c.showhoverband,c.showhovereffect,1),o.usePlotHover=(0,r.pluckNumber)(c.showganttpaneverticalhoverband),o.trendlinesDashLen=(0,r.pluckNumber)(a.trendlinesDashLen,3),o.trendlinesDashGap=(0,r.pluckNumber)(a.trendlinesDashGap,3),o.gridLineHeaderPath="",o.gridLinePath=""},t.prototype.setCategory=function(e){var t=this.getFromEnv("number-formatter"),a=this.config,o=a.startPad||0,i=a.endPad||0,s=void 0,l=void 0,h=void 0,d=void 0,p=void 0,u=Infinity,g=-Infinity,f=void 0,m=void 0;if(a.categories={},e){for(f in a.hasCategory=1,l=a.categories.category=(0,r.extend2)({},e),(0,n.extractAttribToEnd)(l,{}),l)if(l.hasOwnProperty(f)&&"_attrib"!==f)for(m=0,s=l[f].category.length;m<s;m+=1)h=l[f].category[m],d=t.getDateValue(h.start).ms,p=t.getDateValue(h.end).ms,isNaN(d)&&(d=c),d>g&&(g=d),d<=u&&(u=d),isNaN(p)&&(p=c),p>g&&(g=p),p<=u&&(u=p);this.setAxisRange({min:Number((0,r.toPrecision)(u-o,10)),max:Number((0,r.toPrecision)(g+i,10)),tickInterval:Number((0,r.toPrecision)(1,10))})}else a.hasCategory=0},t.prototype.placeAxis=function(e){var t,a,o,n,i,s,l,h,d,p,u,g,f,m,v=this.config,b=this.getFromEnv("chart"),x=b.config,C=this.getFromEnv("number-formatter"),k=this.getFromEnv("smartLabel"),y=v.labels.style,w=0,F={top:0,bottom:0},L=0,A=v.trend.trendStyle,P=v.vTrendLines,T=v.useEllipsesWhenOverflow,E=0,N=0;if(k.useEllipsesOnOverflow(x.useEllipsesWhenOverflow),k.setStyle({fontSize:y.fontSize,fontFamily:y.fontFamily,lineHeight:y.lineHeight,fontWeight:y.fontWeight}),v.maxTopSpaceAvailable=x.canvasTop,v.hasCategory)for(o in t=v.categories.category)if(t.hasOwnProperty(o)&&"_attrib"!==o){for(s in w=0,a=t[o].category)a.hasOwnProperty(s)&&"_attrib"!==s&&((n=a[s]).drawLabel=(0,r.parseUnsafeString)(n.label||n.name),l=n._attrib,h={fontFamily:(0,r.pluck)(l.fontfamily,y.fontFamily).replace(/px/i,"")+"px",fontSize:(0,r.pluck)(l.fontsize,y.fontSize),fontWeight:(0,r.pluck)(1===Number(l.isbold)?"bold":l.isbold===c?"bold":c,y.fontWeight),fontStyle:(0,r.pluck)(l.isitalic?"italic":c,y.fontStyle)},(0,r.setLineHeight)(h),k.setStyle(h),(i=k.getOriSize(n.drawLabel)).height>w&&(u=i,w=i.height));t[o]._attrib.topPos=L,L+=u.height+8,t[o]._attrib.bottomPos=L}if(m=e-L,v.drawTrendLines&&v.drawTrendLabels&&P&&v.isActive)for(k.setStyle({fontSize:A.fontSize,fontFamily:A.fontFamily,lineHeight:A.lineHeight,fontWeight:A.fontWeight}),v.trendBottomPadding=-1,s=0,d=P.length;s<d;s+=1)for(o=0,p=P[s].line.length;o<p;o+=1)n=(g=P[s].line[o]).origText||g.displayvalue||g.endvalue||g.startvalue||"",n=(0,r.parseUnsafeString)(n),g.startvalue=g.start&&C.getDateValue(g.start).ms,g.endvalue=g.end&&C.getDateValue(g.end).ms,g.origText=n,m-((f=k.getSmartText(n,b.canvasWidth,A.lineHeight,T)).height+2)<0?g.displayvalue="":(g.displayvalue=f.text,E=E<f.height?f.height:E),f.tooltext?g.valueToolText=f.tooltext:delete g.valueToolText;return v.totalHeight=L,E>0&&(N+=E+Math.abs(v.trendBottomPadding||0)),L=L>e?e:L,F.top+=L,F.bottom+=N,x.categorySpaceUsed=L,F},t.prototype._drawCategories=function(){var e,t,a,o,n,i,r,s,l,h=this.config,d=(h.axisDimention||{}).y,p=h.totalHeight||0,u=this.getFromEnv("chart"),g=u.config,f=u.getFromEnv("animationManager"),m=u.getFromEnv("number-formatter"),v=h.canvas,b=h.gridArr||(h.gridArr=[]),x=v.canvasLeft||g.canvasLeft,C=v.canvasTop||g.canvasTop,k=v.canvasHeight||g.canvasHeight,y=v.canvasWidth||g.canvasWidth,w=u.getChildContainer("axisBottomGroup"),F=0,L=this.getContainer("ganttPlotHoverBandContainerParent"),A=this.getContainer("ganttPlotHoverBandContainer"),P=this.getContainer("ganttPlotLineContainer"),T=this.getContainer("labelContainer"),E=this.getContainer("labelBackContainer"),N=this.getContainer("labelLineContainer"),S=this.getContainer("labelTextContainer");if(r=(r=Math.min(p,C-(h.maxTopSpaceAvailable||0)))>0?r:0,L||(L=this.addContainer("ganttPlotHoverBandContainerParent",f.setAnimation({el:"group",attr:{name:"gantt-plot-band-container-parent"},container:w,component:this}))),this.addContainer("ganttPlotHoverBandContainer",f.setAnimation({el:A||"group",attr:{name:"gantt-plot-band-container","clip-rect":x+","+C+","+y+","+k},container:L,component:this})),this.addContainer("ganttPlotLineContainer",f.setAnimation({el:P||"group",attr:{name:"gantt-plot-line-container","clip-rect":x+","+C+","+y+","+k,transform:"t0,0"},container:w,component:this})),T=this.addContainer("labelContainer",f.setAnimation({el:T||"group",attr:{name:"gantt-label-container","clip-rect":x+","+(C-r)+","+y+","+r,transform:"t0,0"},container:w,component:this})),E||(E=this.addContainer("labelBackContainer",f.setAnimation({el:"group",attr:{name:"gantt-label-back-container"},container:T,component:this}))),N||(N=this.addContainer("labelLineContainer",f.setAnimation({el:"group",attr:{name:"gantt-label-line-container"},component:this,container:T}))),S||(S=this.addContainer("labelTextContainer",f.setAnimation({el:"group",attr:{name:"gantt-label-text-container"},container:T,component:this}))),h.gridLinePath="",h.gridLineHeaderPath="",h.hoverElemsArr=[],h.labelHoverEventName={click:"CategoryClick",rollOver:"CategoryRollOver",rollOut:"CategoryRollOut"},h.hasCategory)for(e in t=h.categories.category)if(t.hasOwnProperty(e)&&"_attrib"!==e)for(o in a=t[e].category,i=c,b=h.gridArr=[],a)s=m.getDateValue(a[o].start).ms,l=m.getDateValue(a[o].end).ms,!a.hasOwnProperty(o)||"_attrib"===o||isNaN(s)||isNaN(l)||(i=(n={elem:a[o],elemIndex:F,pos:F,dimension:{left:i||this.getPixel(s),right:this.getPixel(l),top:d-p+t[e]._attrib.topPos,bottom:d-p+t[e]._attrib.bottomPos},type:"category",isHeader:!1}).dimension.right,this._drawProcessAndDataTableElement(n),F+=1,b.push({x:n.dimension.left}));this._drawGridLine(),this._disposeExtraProcessAndDataTableElement(F)},t.prototype._drawComponents=function(){var e=this.config,t=this.getFromEnv("chartConfig");this._drawCategories(),t.scrolltodate&&this.translateAxis(-t.viewPortConfig.x*t.viewPortConfig.scaleX,0),e.drawPlotlines&&this._drawPlotLine(),function(e){var t,a,o,n,i,l,g,f,m,v,b,x,C,k,y,w,F,L,A,P,T,E,N,S,D=e.config,B=D.isVertical,_=D.isOpposit,V=e.getFromEnv("animationManager"),O=D.axisIndex,H=e.getFromEnv("number-formatter"),M=D.axisRange,I=M.max,R=M.min,G=D.trend.trendStyle,W=D.labelPadding,z=D.axisTrendLabelContainer,j={fontFamily:G.fontFamily,fontSize:G.fontSize,lineHeight:G.lineHeight,fontWeight:G.fontWeight,fontStyle:G.fontStyle},X=D.vTrendLines,U=D.trendLines,Y=D.drawTrendLabels,Z=D.axisDimention||{},K=e.getFromEnv("chartConfig"),J=e.getFromEnv("chart").getChildren("canvas")[0],q=J.config.canvasBottom||K.canvasBottom,$=J.config.canvasLeft||K.canvasLeft,Q=J.config.canvasRight||K.canvasRight,ee=[],te=e.getVisibleConfig(),ae=e.getGraphicalElement("trendlabels")||[];for(n=0;n<ae.length;n++)ae[n].remove();if(D.hasBreakPoints&&(te.minValue=e._getRealBreakValue(te.minValue),te.maxValue=e._getRealBreakValue(te.maxValue)),(o=e._isZoomed())?(t=Math.max(e.getPixel(te.minValue,{wrtVisible:!0}),e.getPixel(te.maxValue,{wrtVisible:!0})),a=Math.min(e.getPixel(te.minValue,{wrtVisible:!0}),e.getPixel(te.maxValue,{wrtVisible:!0}))):(te.minValue=R,te.maxValue=I),X?E=_?(Z.opposite||q)-(D.trendBottomPadding||0):(Z.y||q)+(D.trendBottomPadding||0):(E=_?(Z.opposite||$)+(W||0):(Z.x||$)-(W||0),N=_?(Z.x||Q)+(W||0):(Z.opposite||Q)+(W||0)),v=U||X)for(l=0,g=v.length;l<g;l+=1)for(n=0,i=v[l].line&&v[l].line.length;n<i;n+=1)k=v[l].line[n],S=B?"yAxis":"xAxis",F=k.startvalue||k.value||0,F=H.getCleanValue((0,r.pluck)(k.startvalue,k.value,0)),L=Number(k.endvalue)||c,f=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(v[l].line[n].tooltext,v[0].tooltext,D.trendlineToolText))),f=(0,r.parseTooltext)(f,[7,15,16,17,18,19],{startValue:F,startDataValue:H[S](F,O),endValue:L||F,endDataValue:H[S](L||F,O),axisName:D.axisName},k),F>I||F<R||L>I||L<R||(X?(y=(0,r.pluck)((0,r.parseUnsafeString)(k.displayvalue),k.start,""),A=e.getPixel(D.hasBreakPoints?e._getRelativeBreakValue(F):F,{wrtVisible:!0}),b=(0,r.pluckNumber)(k.istrendzone,D.isTrendZone,1),P=L?e.getPixel(D.hasBreakPoints?e._getRelativeBreakValue(L):L,{wrtVisible:!0}):0,L!==c&&""!==L&&L!==F&&b?(x={fill:(0,s.convertColor)((0,r.pluck)(k.color,D.trendlineColor),(0,r.pluck)(k.alpha,D.trendlineAlpha,40)),"stroke-width":0},C={fill:(0,s.convertColor)((0,r.pluck)(k.color,G.color),(0,r.pluck)(k.alpha,D.trendlineAlpha,99)),"vertical-align":p,text:y,x:A+(P-A)/2,y:E}):(T=(0,r.pluckNumber)(k.thickness,D.trendlineThickness,1),x={stroke:(0,s.convertColor)((0,r.pluck)(k.color,D.trendlineColor),(0,r.pluck)(k.alpha,D.trendlineAlpha,99)),"stroke-width":T,"stroke-dasharray":(0,r.pluck)(k.dashed,D.trendlinesAreDashed)===r.ONESTRING?(0,r.getDashStyle)((0,r.pluckNumber)(k.dashlen,D.trendlinesDashLen),(0,r.pluckNumber)(k.dashgap,D.trendlinesDashGap)):h},C={fill:(0,s.convertColor)((0,r.pluck)(k.color,G.color),(0,r.pluck)(k.alpha,D.trendlineAlpha,99)),"vertical-align":p,text:y,x:L?P:A,y:E})):U&&(y=(0,r.pluck)((0,r.parseUnsafeString)(k.displayvalue),k.start,""),w=(0,r.pluckNumber)(k.valueonright,0),b=(0,r.pluckNumber)(k.istrendzone,D.isTrendZone,0),A=e.getPixel(F,{wrtVisible:!0}),P=L?e.getPixel(L,{wrtVisible:!0}):0,L!==c&&""!==L&&L!==F&&b?(x={fill:(0,s.convertColor)((0,r.pluck)(k.color,D.trendlineColor),(0,r.pluck)(k.alpha,D.trendlineAlpha,40)),"stroke-width":0},C={"text-anchor":w?d:u,fill:(0,s.convertColor)((0,r.pluck)(k.color,G.color),(0,r.pluck)(k.alpha,D.trendlineAlpha,99)),text:y,x:w?N:E,y:A+(P-A)/2}):(T=(0,r.pluckNumber)(k.thickness,D.trendlineThickness,1),x={stroke:(0,s.convertColor)((0,r.pluck)(k.color,D.trendlineColor),(0,r.pluck)(k.alpha,D.trendlineAlpha,99)),"stroke-width":T,"stroke-dasharray":(0,r.pluck)(k.dashed,D.trendlinesAreDashed)===r.ONESTRING?(0,r.getDashStyle)((0,r.pluckNumber)(k.dashlen,D.trendlinesDashLen),(0,r.pluckNumber)(k.dashgap,D.trendlinesDashGap)):h},C={"text-anchor":w?d:u,fill:(0,s.convertColor)((0,r.pluck)(k.color,G.color),(0,r.pluck)(k.alpha,D.trendlineAlpha,99)),text:y,x:w?N:E,y:L&&w?P:A}),o&&(!Y||C.y>t||C.y<a)&&(C.text="")),C["text-bound"]=C.text?[G.backgroundColor,G.borderColor,G.borderThickness,G.borderPadding,G.borderRadius,G.borderDash]:[],m=V.setAnimation({el:"text",attr:C,css:j,container:z,component:e}).show(),D.showTooltip&&f||(f=""),e.addComponentInfo("trend",{marker:{isZone:b,startValue:F,endValue:L,fill:x.fill,stroke:x.stroke,strokeWidth:x["stroke-width"],strokeDashArray:x["stroke-dasharray"],shapeRendering:x["shape-rendering"]},label:{fill:C.fill,text:y,textAnchor:C["text-anchor"],textBound:C["text-bound"],valueOnRight:(0,r.pluckNumber)(k.valueonright,0),toolText:f},showOnTop:(0,r.pluckNumber)(k.showontop)}),ee.push(m));ee.length&&e.addGraphicalElement("trendlabels",ee)}(this),e.drawTrendLines&&this._drawTrendLine()},t}(i["default"]);t["default"]=g},690:function(e,t,a){"use strict";t.__esModule=!0;var o=a(691),n=h(o),i=a(118),r=a(122),s=h(a(693)),l=a(125),c=a(129);function h(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var p=function(e){return function(t){e.plotEventHandler(this,t,"MilestoneClick")}},u=function(e){return function(t){var a=this.data("dataObj"),o=a.config;e.plotEventHandler(this,t,"MilestoneRollOver"),o.showHoverEffect&&a.graphics.element.attr({fill:o.hoverFillColor,stroke:o.hoverBorderColor,"fill-opacity":o.hoverFillAlpha,"stroke-opacity":o.hoverBorderAlpha})}},g=function(e){return function(t){var a=this.data("dataObj"),o=a.config;e.plotEventHandler(this,t,"MilestoneRollOut"),o.showHoverEffect&&a.graphics.element.attr({fill:o.fillColor,stroke:o.borderColor,"fill-opacity":o.fillAlpha,"stroke-opacity":o.borderAlpha})}};(0,l.addDep)({name:"milestoneAnimation",type:"animationRule",extension:s["default"]});var f=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return d(t,e),t.prototype.getName=function(){return"milestone"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.showpercentlabel=0,t.showstartdate=0,t.showenddate=0,t.showlabels=void 0,t.showborder=1,t.borderthickness=1,t.showHoverEffect=1,t.slackFillColor="FF5E5E",t.font="",t.fontcolor="",t.fontsize="",t.color="",t.alpha="100",t.bordercolor="",t.borderalpha="100",t.hoverFillColor="",t.hoverFillAlpha="100",t.slackHoverFillColor=10,t.slackHoverFillAlpha="100"},t.prototype.configureAttributes=function(){var e=this.config,t=this.getFromEnv("dataSource"),a=(0,i.extend2)({},t.milestones&&t.milestones.length?t.milestones[0]:t.milestones||{});(0,i.parseConfiguration)(a,e,{milestones:!0}),this.components||(this.components={}),this._setConfigure(),this.setState("dirty",!0)},t.prototype._setConfigure=function(e){var t=this.getFromEnv("chart"),a=t.getChildren("yAxis")[0].config,n=this.getFromEnv("dataSource"),s=n.milestones&&n.milestones.length?n.milestones[0]:n.milestones||{},l=e||s.length?s:s.milestone,c=l&&l.length,h=this.getFromEnv("color-manager"),d=t.config,p=this.getFromEnv("number-formatter"),u=this.components.data,g=t.config.style,f=g.inCanvasStyle,m=t.components.tasksMap,v=void 0,b=void 0,x=void 0,C=void 0,k=a.processes.processMap,y=a.processes.process.process,w=void 0,F=void 0,L=void 0,A=void 0,P=void 0,T=void 0,E=void 0,N=void 0,S=t.config.milestoneLabelStyle,D=void 0,B=void 0;for(u||(u=this.components.data=[]),C=0;C<c;C+=1)F=l[C],(v=u[C])||(v=u[C]={config:{}}),x=v.config,N=(0,i.getFirstValue)(F.taskid,"").toLowerCase(),P=(0,i.pluck)(F.shape,"polygon").toLowerCase(),L=(0,i.pluckNumber)(F.numsides,5),T=0,"star"===P?T=.4:(P=(0,r.mapSymbolName)(L),P=(0,r.mapSymbolName)(L).split("-")[0]),A=(0,i.pluck)(F.color,h.getColor("legendBorderColor")),E=(0,i.getValidValue)((0,i.parseUnsafeString)((0,i.pluck)(F.tooltext,F.hovertext,d.milestonetooltext))),D=p.getDateValue(F.date).ms,B=p.getFormattedDate(D),void 0!==E&&m[N]?(b=m[N].config,w=k[N]?k[N].catObj.label||k[N].catObj.name:y[C]&&(y[C].label||y[C].name),E=(0,i.parseTooltext)(E,[28,32,33,34,35,36],{date:B,taskStartDate:b._startDate,taskEndDate:b._endDate,taskLabel:b.label,taskPercentComplete:-1!==b.percentComplete?p.percentValue(b.percentComplete):"",processName:w},F)):E=B,g=x.style=(0,o.extractLabelStyle)({fontSize:F.fontsize,fontFamily:F.font,fontWeight:F.fontbold,fontStyle:F.fontitalic}),x.textColor=(0,r.getFirstColor)((0,i.pluck)(F.fontcolor,d.milestonefontcolor,f.color)),(0,i.setLineHeight)(g),x.lineHeight=(0,i.pluck)(g&&g.lineHeight,S&&S.lineHeight),x.numSides=L,x.startAngle=(0,i.pluckNumber)(F.startangle,90),x.radius=F.radius,x.origDate=F.date,x.date=p.getDateValue(F.date),x.fillColor=(0,r.getFirstColor)(A),x.fillAlpha=.01*(0,i.pluckNumber)(F.fillalpha,F.alpha,100),x.borderColor=(0,r.getFirstColor)((0,i.pluck)(F.bordercolor,A)),x.borderAlpha=.01*(0,i.pluckNumber)(F.borderalpha,F.alpha,100),x.displayValue=(0,i.parseUnsafeString)(F.label),x.style=g,x.hoverFillColor=(0,r.getFirstColor)((0,i.pluck)(F.hoverfillcolor,d.milestonehoverfillcolor,(0,r.getDarkColor)(A,80))),x.hoverFillAlpha=.01*(0,i.pluckNumber)(F.hoverfillalpha,d.milestonehoverfillalpha,F.fillalpha,F.alpha,100),x.hoverBorderColor=(0,r.getFirstColor)((0,i.pluck)(F.hoverbordercolor,d.milestonehoverbordercolor,(0,r.getDarkColor)((0,i.pluck)(F.bordercolor,A),80))),x.hoverBorderAlpha=.01*(0,i.pluckNumber)(F.hoverborderalpha,d.milestonehoverborderalpha,F.borderalpha,F.alpha,100),x.showHoverEffect=(0,i.pluckNumber)(F.showhovereffect,d.showmilestonehovereffect,d.showhovereffect,1),x.depth=T,x.taskId=N,x.borderThickness=(0,i.pluckNumber)(F.borderthickness,1),x.link=F.link,x.toolText=E;(0,i.pluckNumber)(s.visible,1)?this.setState("visible",!0):this.setState("visible",!1)},t.prototype.drawLabel=function(){var e,t=this.getFromEnv("chart"),a=this.getFromEnv("animationManager"),n=t.components.tasksMap,i=void 0,r=this.getFromEnv("toolTipController"),s=this.getContainer("milestoneLabelContainer"),l=void 0,c=void 0,h=void 0,d=void 0,f=void 0,m=void 0,v=void 0,b=void 0,x=this.components.data,C=void 0;for(h=0,e=x.length;h<e;h++)b=n[(i=(c=x[h]).config).taskId],d=(m=c.graphics).labelElement,l=i.eventArgs,v=i._labelAttrs,C=i.style,""!==i.displayValue&&void 0!==i.displayValue&&b?(f=m.labelElement=a.setAnimation({el:d||"text",attr:v,container:s,component:this}),d?(f.removeCSS(),f.show()):f.on("fc-click",p(t)).hover(u(t),g(t)),f.css(C),r.enableToolTip(f,i.toolText),f.data("eventArgs",l).data("dataObj",c)):d&&a.setAnimation({el:d,component:this,callback:o.hideFn,doNotRemove:!0})},t.prototype.draw=function(){var e,t=this.getFromEnv("chart"),a=t.components,n=this.components,r=this.getFromEnv("toolTipController"),s=t.getChildren("xAxis")[0],l=n.data,h=a.tasksMap,d=t.config,f=t.getChildren("canvas")[0],m=this.getContainer("milestoneContainer"),v=f.getChildContainer("milestoneGroup"),b=this.getContainer("milestoneLabelContainer"),x=this.getState("visible"),C=this.getFromEnv("animationManager"),k=this.components.removeDataArr||[],y=k.length,w=void 0,F=void 0,L=void 0,A=void 0,P=void 0,T=void 0,E=void 0,N=void 0,S=void 0,D=void 0,B=void 0,_=void 0,V=void 0,O=void 0,H=d.showtooltip;for(m||(m=this.addContainer("milestoneContainer",C.setAnimation({el:"group",attr:{name:"milestone"},container:v,component:this}))),x?m.show():m.hide(),b||(b=this.addContainer("milestoneLabelContainer",C.setAnimation({el:"group",attr:{name:"labels"},container:v,component:this}))),x?b.show():b.hide(),e=l&&l.length,V=0;V<e;V+=1)if(w=l[V])if(A=w.config,L=w.graphics,F=h[A.taskId],!w.graphics&&(w.graphics={}),E=L.element,F){if(T=F.config,P=A.eventArgs={sides:A.sides,date:A.origDate,radius:A.radius,taskId:A.taskId,toolText:A.toolText,link:A.link,numSides:A.numSides},S=s.getPixel(A.date.ms),D=T.yPos+.5*T.height,_=(0,i.pluckNumber)(A.radius,.6*T.height),!1===(0,o.checkInvalidValue)(S,D,_))continue;B=[A.numSides,S,D,_,A.startAngle,A.depth],(N=L.element=C.setAnimation({el:E||"polypath",label:"polypath",attr:{polypath:B,fill:A.fillColor,"fill-opacity":A.fillAlpha,stroke:A.borderColor,"stroke-opacity":A.borderAlpha,groupId:"gId"+V,cursor:A.link?"pointer":"","stroke-width":A.borderThickness},component:this,container:m})).on("fc-click",p(t)).hover(u(t),g(t)),N.show().data("eventArgs",P).data("dataObj",w),H?r.enableToolTip(N,A.toolText):r.disableToolTip(N),(O=A._labelAttrs||(A._labelAttrs={})).x=S,O.y=D,O.text=A.displayValue,O.groupId="gId"+V,O.cursor=A.link?"pointer":"",O.direction=d.textDirection,O["text-anchor"]="middle",O.fill=A.textColor}else E&&C.setAnimation({el:E,component:this,callback:o.hideFn,doNotRemove:!0});for(this.drawn?this.drawLabel():this.addJob("drawMilestoneLabels",this.drawLabel.bind(this),c.priorityList.label),this.drawn=!0,V=0;V<y;V++)this._removeDataVisuals(k.shift())},t}(n["default"]);t["default"]=f},691:function(e,t,a){"use strict";t.__esModule=!0,t.hideFn=t.extractLabelStyle=t.checkInvalidValue=undefined;var o=c(a(331)),n=a(118),i=a(122),r=a(125),s=c(a(692)),l=a(129);function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var d={left:"start",right:"end",center:"middle"},p={left:0,right:1,center:.5,undefined:.5},u={left:5,right:-5,center:0,undefined:0},g={fontWeight:["normal","bold"],fontStyle:["normal","italic"]},f=function(){this.hide()},m=function(e){return void 0!==e&&null!==e},v=function(e){var t=void 0,a=void 0;for(a in e)if(void 0!==e[a])switch(t=t||{},a){case"fontWeight":case"fontStyle":t[a]=g[a][e[a]];break;default:t[a]=e[a]}return t},b=function(e){return/%/g.test(e)},x=function(){var e=0,t=arguments.length,a=!1,o=void 0;for(e=0;e<t;e++){if(o=arguments[e],isNaN(o))return!1;a=!0}return a};(0,r.addDep)({name:"taskAnimation",type:"animationRule",extension:s["default"]});var C=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.components={},a}return h(t,e),t.prototype.getName=function(){return"task"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.showpercentlabel=void 0,t.showlabels=void 0,t.showborder=1,t.borderthickness=1,t.font="",t.fontcolor="",t.fontsize="",t.color="",t.alpha="100",t.angle=270,t.slackfillcolor=void 0,t.borderalpha="100",t.hoverfillcolor="",t.hoverfillalpha="100",t.slackhoverfillalpha="100",t.showstartdate=void 0,t.showenddate=void 0},t.prototype.configureAttributes=function(){var e=this.getFromEnv("dataSource"),t=(0,n.extend2)({},e.tasks&&e.tasks.length?e.tasks[0]:e.tasks||{});(0,n.parseConfiguration)(t,this.config,this.getFromEnv("chart").config,{task:!0}),this.components||(this.components={}),this._setConfigure(),this.setState("dirty",!0)},t.prototype._setConfigure=function(e){var t,a=this.config,o=this.getFromEnv("chart"),r=o.getChildren("yAxis")[0].config,s=this.getFromEnv("dataSource"),l=s.chart,c=s.tasks&&s.tasks.length?s.tasks[0]:s.tasks||{},h=e||c.length?c:c.task,d=h&&h.length,p=this.getFromEnv("color-manager"),u=o.config,g=this.getFromEnv("number-formatter"),f=u.taskbarfillmix,m=u.taskbarfillratio,b=u.showslackasfill,x=this.components.data,C=void 0,k=void 0,y=void 0,w=void 0,F=r.processes.processMap,L=r.processes.process.process,A=void 0,P=void 0,T=void 0,E=void 0,N=void 0,S=u.dateintooltip,D=void 0,B={right:"right",left:"left",undefined:"center",center:"center"},_=void 0,V=void 0,O=void 0,H=void 0,M=void 0,I=void 0,R=void 0,G=void 0,W=o.components.tasksMap={},z=u.style.inCanvasStyle,j=void 0,X=void 0,U=void 0,Y=void 0,Z=void 0,K=void 0,J=void 0,q=void 0,$=(0,n.pluckNumber)(l.showtooltip,1),Q=u.dataLabelStyle,ee=void 0;if(x||(x=this.components.data=[]),a.showlabels=(0,n.pluck)(c.showlabels,c.showlabels,c.showname,l.showtasklabels,l.showtasknames,0),t=a.labelStyle=v({fontSize:a.fontSize,fontFamily:a.font}),(0,n.setLineHeight)(a.labelStyle),d)for(w=0;w<d;w+=1)D=h[w],(_=(0,n.pluck)(D.processid))&&"string"==typeof _&&(_=_.toLowerCase()),J=D.id,C=D.percentcomplete,V=(0,n.pluckNumber)(D.alpha,a.alpha),I=(0,n.pluck)(D.color,a.color,p.getColor("plotFillColor")),O=(0,n.pluckNumber)(D.borderalpha,a.borderalpha,"100"),H=(0,n.pluck)(D.bordercolor,a.bordercolor,p.getColor("plotBorderColor")),M=(0,n.getFirstValue)((0,n.pluck)(D.label,D.name),""),P=p.parseColorMix(I,f),T=p.parseAlphaList(V.toString(),P.length),E=p.parseRatioList(m,P.length),R=(0,n.pluckNumber)(D.angle,a.angle),(q=(x[w]||(x[w]={config:{}})).config).index=w,q.link=D.link,q.processId="PROCESS_"+w,q.textColor=(0,i.getFirstColor)((0,n.pluck)(D.fontcolor,a.fontcolor,z.color)),q.style=v({fontSize:D.fontsize,fontFamily:D.font}),(0,n.setLineHeight)(q.style),ee=q.style,q.lineHeight=(0,n.pluck)(ee&&ee.lineHeight,t&&t.lineHeight,Q&&Q.lineHeight),q.startMs=g.getDateValue(D.start).ms,q.endMs=g.getDateValue(D.end).ms,y=g.getFormattedDate(q.startMs),k=g.getFormattedDate(q.endMs),q.tAlpha=V,q.tBorderColor=H,q.tBorderAlpha=O,N="",q.percentComplete=C=Math.min((0,n.pluckNumber)(D.percentcomplete,-1),100),q.labelAlign=B[[(0,n.pluck)(D.labelalign,u.tasklabelsalign).toLowerCase()]],q.showAsGroup=(0,n.pluckNumber)(D.showasgroup,0),G=q.showPercentLabel=(0,n.pluckNumber)(D.showpercentlabel,a.showpercentlabel),(0,n.pluckNumber)(D.showlabel,D.showname,a.showlabels)&&(N=M),G&&-1!==C&&(N+=" "+C+"%"),q.percentComplete=C,Y={FCcolor:{color:P.join(),alpha:T,ratio:E,angle:R}},U=p.parseColorMix((0,n.pluck)(D.slackfillcolor,a.slackfillcolor,u.slackfillcolor),f),U=b?{FCcolor:{color:U.join(),alpha:T,ratio:E,angle:R}}:n.TRACKER_FILL,Z={FCcolor:{color:p.parseColorMix((0,n.pluck)(D.hoverfillcolor,a.hoverfillcolor,u.taskhoverfillcolor,(0,i.getDarkColor)(I,80)),f).join(),alpha:p.parseAlphaList((0,n.pluck)(D.hoverfillalpha,a.hoverfillalpha).toString(),P.length),ratio:E,angle:R}},K=(0,i.convertColor)((0,n.pluck)(D.hoverbordercolor,a.hoverbordercolor,(0,i.getDarkColor)(H,80)),(0,n.pluck)(D.hoverborderalpha,a.hoverborderalpha,O)),X=b?{FCcolor:{color:p.parseColorMix((0,i.getDarkColor)((0,n.pluck)(D.slackhoverfillcolor,a.slackhoverfillcolor,u.slackfillcolor),80),f).join(),alpha:p.parseAlphaList((0,n.pluck)(D.slackhoverfillalpha,a.slackhoverfillalpha,"100").toString(),P.length),ratio:E,angle:R}}:n.TRACKER_FILL,q.color=(0,n.toRaphaelColor)(Y),q.slackColor=(0,n.toRaphaelColor)(U),q.hoverFillColor=(0,n.toRaphaelColor)(Z),q.hoverBorderColor=K,q.slackHoverColor=(0,n.toRaphaelColor)(X),q.showHoverEffect=(0,n.pluckNumber)(D.showhovereffect,a.showhovereffect,l.showhovereffect,1),q.taskHeight=(0,n.pluck)(D.height,"35%"),q.topPadding=(0,n.pluck)(D.toppadding,"35%"),q.showPercentLabel=G,q.endDate=(0,n.pluckNumber)(D.showenddate,a.showenddate)?k:void 0,q._endDate=k,q.startDate=(0,n.pluckNumber)(D.showstartdate,a.showstartdate)?y:void 0,q._startDate=y,q.shadow={opacity:Math.max(V,O)/100,inverted:!0},q.id=_,q.taskId=J,q.borderColor=(0,i.convertColor)(H,O),q.borderThickness=(0,n.pluckNumber)(D.showborder,a.showborder)?(0,n.pluckNumber)(D.borderthickness,a.borderthickness):0,j=(0,n.getValidValue)((0,n.parseUnsafeString)((0,n.pluck)(D.tooltext,a.hovertext,a.plottooltext,l.plottooltext))),$&&(void 0!==j?(A=F[_]?F[_].catObj.label||F[_].catObj.name:L[w]&&(L[w].label||L[w].name),j=(0,n.parseTooltext)(j,[3,28,29,30,31],{end:k,start:y,label:M,percentComplete:-1!==C?g.percentValue(C):"",processName:A},a)):j=(""!==M?M+(S?", ":""):"")+(S?y+" - "+k:"")),q.label=N,q.toolText=j,"string"==typeof J&&(J=J.toLowerCase()),void 0!==J&&(W[J]=x[w]);(0,n.pluckNumber)(c.visible,1)?this.setState("visible",!0):this.setState("visible",!1)},t.prototype.slackElemHandlers=function(e,t){var a=this;e&&e.on("fc-click",function(e){t.plotEventHandler(this,e)}).hover(function(e){var o=this.data("dataObj");t.plotEventHandler(this,e,"DataPlotRollOver"),o.config.showHoverEffect&&a.taskHoverHandler.call(this,t)},function(e){var o=this.data("dataObj");t.plotEventHandler(this,e,"DataPlotRollOut"),o.config.showHoverEffect&&a.taskHoverOutHandler.call(this,t)})},t.prototype.trimData=function(e){if(this.config.JSONData){var t=this.config,a=t&&t.context,o=a&&a.prevCatlen,n=this.getFromEnv("xAxis").getProcessLen(),i=o-n,r=t.JSONData,s=r.task&&r.task.length,l=e.task&&e.task.length||0,c=s-l,h=void 0,d=void 0;i>c?(h=i,d=n):(h=c,d=l),h>0&&this.removeData(d,h,!1)}},t.prototype.getAxisValuePadding=function(){return this.config.defaultPadding},t.prototype.drawLabel=function(){var e,t,a,o,n,i,r,s,l,c,h,d,p,u,g=this.getFromEnv("chart"),v=this.getFromEnv("animationManager"),b=this.components.data,x=this.getContainer("dataLabelContainer"),C=b.length;for(u=0;u<C;u++)r=(l=b[u]).config,s=l.graphics,c=r.eventArgs,e=s.valElem,m(r.label)&&""!==r.label?(h=r._labelTextAttr,o=s.valElem=v.setAnimation({el:e||"text",attr:h,container:x,component:this}),e?(o.removeCSS(),o.show()):(o.data("dataset",this),this.slackElemHandlers(o,g)),o.css(r.style),o.data("dataObj",l).data("dataObj",l).data("eventArgs",c)):e&&v.setAnimation({el:e,component:this,callback:f,doNotRemove:!0}),t=s.startValElem,m(r.startDate)&&""!==r.startDate?(d=r._startLabelTextAttr,n=s.startValElem=v.setAnimation({el:t||"text",attr:d,container:x,component:this}),t?(n.removeCSS(),n.show()):(n.data("dataset",this),this.slackElemHandlers(n,g)),n.css(r.style),n.data("dataObj",l).data("chart",g).data("eventArgs",c)):t&&v.setAnimation({el:t,component:this,callback:f,doNotRemove:!0}),a=s.endValElem,m(r.endDate)&&""!==r.endDate?(p=r._endLabelTextAttr,i=s.endValElem=v.setAnimation({el:a||"text",attr:p,container:x,component:this}),a?(i.removeCSS(),i.show().css(r.style)):(i.data("dataset",this),this.slackElemHandlers(i,g)),i.data("dataObj",l).data("chart",g).data("eventArgs",c)):a&&v.setAnimation({el:a,component:this,callback:f,doNotRemove:!0})},t.prototype.taskHoverHandler=function(){var e=this.data("dataObj")||{},t=this.data("dataset").components.data,a=e.config||{},o=a.index,n=t[o]&&t[o].graphics,i={fill:a.hoverFillColor,stroke:a.hoverBorderColor};-1===a.percentComplete||a.showAsGroup||(n.slackElem.attr({fill:a.slackHoverColor}),n.taskFill.attr({fill:a.hoverFillColor}),delete i.fill),n.element.attr(i)},t.prototype.taskHoverOutHandler=function(){var e=this.data("dataObj")||{},t=(this.data("dataset")||{}).components.data,a=e.config||{},o=a.index,n=t[o]&&t[o].graphics,i={fill:a.color,stroke:a.borderColor,"stroke-width":a.borderThickness,"stroke-dasharray":a.dashedStyle};-1===a.percentComplete||a.showAsGroup||(n.slackElem.attr({fill:a.slackColor}),n.taskFill.attr({fill:a.color}),delete i.fill),n.element.attr(i)},t.prototype.parsePlotAttributes=function(e,t){var a,o,i,r,s,l,c,h,g,f,m,v,C,k=this.getFromEnv("chart"),y=k.getFromEnv("dataSource"),w=k.config,F=w.canvasTop,L=k.getChildren("xAxis")[0],A=k.getChildren("yAxis")[0],P=void 0,T=void 0,E=void 0,N=void 0,S=void 0,D=void 0,B=void 0,_=void 0,V=t,O=w.datepadding,H=w.viewPortConfig,M=H.x,I=void 0,R=void 0,G=void 0,W=y.processes.process&&y.processes.process.length,z=H.scaleX,j=w.taskbarroundradius,X=void 0;P=e&&e.config,!e.graphics&&(e.graphics={}),o=P&&P.startMs,i=P&&P.endMs,void 0!==e&&void 0!==o&&null!==i&&(v=P.taskHeight,r=P.link,c=P.borderThickness,s=P.id,_=P.color,C=P.lineHeight,V>W-1&&(V=0),X="undefined"!=typeof P.id?A.getProcessPositionById(s):A.getProcessPositionByIndex(V),V++,m=(l=X.height)*(b(P.topPadding)&&.01*parseFloat(P.topPadding,10))||(0,n.pluckNumber)(P.topPadding,l),T=P.height=l*(b(v)&&.01*parseFloat(v,10))||(0,n.pluckNumber)(v,l),S=P.xPos=L.getPixel(P.startMs)+M*z,a=L.getPixel(P.endMs)+M*z,E=P.width=Math.abs(N=a-S),D=X.bottom+F-l,D=P.yPos=D+Math.min(m,l-T),g=.5*T,S=(h=(0,n.crispBound)(S,D,E,T,c)).x,D=h.y,E=h.width,T=h.height,!1!==x(S,D,E,T)?(P.props={element:{},perComElem:{},slackElem:{}},B=P.showAsGroup?{path:["M",S,D,"V",D+T,"L",S+g,D+g,"H",S+E-g,"L",S+E,D+T,"V",D,"H",S]}:{x:h.x,y:h.y,width:h.width||1,height:T},Object.assign(B,{fill:_,stroke:P.borderColor,cursor:r?"pointer":"",r:j,"stroke-width":c,width:h.width||1}),P.eventArgs={processId:P.processId,taskId:P.taskId,start:P._startDate,end:P._endDate,showAsGroup:P.showAsGroup,link:P.link,sourceType:"task",percentComplete:-1!==P.percentComplete},-1===P.percentComplete||P.showAsGroup||(N=E*P.percentComplete*.01,_=n.TRACKER_FILL,P.props.perComElem={attr:{x:S,y:D,height:T,width:N,fill:P.color,cursor:r?"pointer":"","stroke-width":0}},P.props.slackElem={attr:{x:S+N||1,y:D,width:E-N,height:T,fill:P.slackColor,cursor:r?"pointer":"","stroke-width":0}},B.fill=_),f=P.labelAlign,I=P._labelTextAttr||(P._labelTextAttr={}),P.props.element.attr=B,I.x=S+E*p[f]+u[f],I.y=D-.5*parseInt(C,10)-w.tasklabelspadding,I.text=P.label,I.direction=w.textDirection,I["text-anchor"]=d[f],I.cursor=void 0,I.fill=P.textColor,I["line-height"]=C,(G=P._startLabelTextAttr||(P._startLabelTextAttr={})).x=S-2-O,G.y=D+.5*T,G.text=P.startDate,G["text-anchor"]="end",G.cursor=void 0,G.direction=w.textDirection,G.fill=P.textColor,G["line-height"]=C,(R=P._endLabelTextAttr||(P._endLabelTextAttr={})).x=S+E+2+O,R.y=D+.5*T,R.text=P.endDate,R.cursor=void 0,R.direction=w.textDirection,R["text-anchor"]="start",R.fill=P.textColor,R["line-height"]=C,P.cursor=void 0):P.inValidValue=!0)},t.prototype.allocatePosition=function(){var e=this.components.data||[],t=e.length,a=void 0,o=void 0;for(a=0;a<t;a++)o=e[a],this.parsePlotAttributes(o,a)},t.prototype._removeDataVisuals=function(e){var t,a=this.getFromEnv("animationManager"),o=void 0,n=void 0;if(e)for(o in t=e.graphics)(n=t[o])&&a.setAnimation({el:n,component:this})},t.prototype.draw=function(){var e,t=void 0,a=this.getState("visible"),o=this.getFromEnv("chart"),n=this.getFromEnv("toolTipController"),i=o.config,r=o.getChildren("canvas")[0],s=this.getFromEnv("animationManager"),c=r.getChildContainer("taskGroup"),h=this.components,d=h.data,p=void 0,u=void 0,g=void 0,m=h.removeDataArr,v=m&&m.length,b=o.getChildContainer("datalabelsGroup"),x=r.getContainer("labelsGroup"),C=this.getContainer("dataLabelContainer"),k=this._contextChanged(),y=this.getContainer("taskColumnContainer"),w=this.getContainer("taskColumnShadowContainer"),F=void 0,L=void 0,A=void 0,P=void 0,T=void 0,E=void 0,N=void 0,S=void 0,D=void 0,B=void 0,_=void 0,V=i.showshadow,O=this.config;if(this.getState("removed")||this.getState("dirty")||k&&a){for(y||(y=this.addContainer("taskColumnContainer",s.setAnimation({el:"group",attr:{name:"columns"},container:c,component:this}))),a?y.show():y.hide(),x||(x=r.addContainer("labelsGroup",s.setAnimation({el:"group",attr:{name:"task-plot-labels"},container:b,component:r}))),C?C.removeCSS():C=this.addContainer("dataLabelContainer",s.setAnimation({el:"group",attr:{name:"labels"},container:x,component:this})),a?C.show():C.hide(),x=s.setAnimation({el:x,attr:{transform:"T"+-o.config.xOffset+",0"},component:r}),C.css(O.labelStyle),w||(w=this.addContainer("taskColumnShadowContainer",s.setAnimation({el:"group",attr:{name:"shadow"},container:c,component:this}).toBack()),a||w.hide()),e=d.length,t=0;t<e;t++)u=(p=d[t])&&p.config,!p.graphics&&(p.graphics={}),g=p.graphics,F=u&&u.startMs,L=u&&u.endMs,void 0!==p&&void 0!==F&&null!==L&&(A=u.toolText,u.inValidValue||(P=g.element,D=u.showAsGroup?"path":"rect",P&&P.type!==D&&(P.remove(),P=g.element=null),B=u.props.element.attr,g.element=s.setAnimation({el:P||D,label:D,attr:B,container:y,component:this}),P||((P=g.element).data("dataset",this),this.slackElemHandlers(P,o)),_=u.eventArgs,-1===u.percentComplete||u.showAsGroup?(g.taskFill&&s.setAnimation({el:g.taskFill,component:this,callback:f,doNotRemove:!0}),g.slackElem&&s.setAnimation({el:g.slackElem,component:this,callback:f,doNotRemove:!0})):(E=g.taskFill,S=g.slackElem,T=g.taskFill=s.setAnimation({el:E||"rect",attr:u.props.perComElem.attr,container:y,component:this}),E||this.slackElemHandlers(T,o),N=g.slackElem=s.setAnimation({el:S||"rect",attr:u.props.slackElem.attr,container:y,component:this}),S||this.slackElemHandlers(N,o),T.show(),T.data("chart",o).data("dataObj",p).data("dataset",this),n.enableToolTip(T,A),N.show(),T&&T.data("eventArgs",_),N&&N.data("eventArgs",_).data("dataObj",p).data("dataset",this).data("chart",o)),P.show().shadow({opacity:V},w).data("dataObj",p).data("chart",o).data("dataset",this).data("eventArgs",_),n.enableToolTip(P,A)));for(this.drawn?this.drawLabel():this.addJob("drawLabel",this.drawLabel.bind(this),l.priorityList.label),this.drawn=!0,t=0;t<v;t++)this._removeDataVisuals(m.shift())}},t}(o["default"]);t.checkInvalidValue=x,t.extractLabelStyle=v,t.hideFn=f,t["default"]=C},692:function(e,t,a){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.task":function(){return{"rect.appearing":function(e){return[{initialAttr:{width:0},finalAttr:{width:e.attr.width},slot:"middle"}]},"path.appearing":function(e){var t=e.attr.path;return[{initialAttr:{path:t.slice(0,3)},finalAttr:{path:t},slot:"middle"}]}}}}},693:function(e,t,a){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.milestone":function(){return{"polypath.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"middle",startEnd:{start:.9,end:1}}]}}}}},694:function(e,t,a){"use strict";t.__esModule=!0;var o=a(691),n=l(o),i=a(118),r=a(122),s=l(a(695));function l(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var n=a[o],i=Object.getOwnPropertyDescriptor(t,n);i&&i.configurable&&e[n]===undefined&&Object.defineProperty(e,n,i)}}(e,t))}var h=function(e){return function(t){e.plotEventHandler(this,t,"ConnectorClick")}},d=function(e){return function(t){var a=this.data("dataObj"),o=a.config,n=e.components.tasksMap,i=n[o.fromTaskId],r=n[o.toTaskId],s={stroke:o.hoverColor,"stroke-dasharray":o.dashedStyle,"stroke-width":o.hoverThickness},l=a.graphics.connector;e.plotEventHandler(this,t,"ConnectorRollOver"),o.showHoverEffect&&([i,r].forEach(function(e){var t={fill:e.config.hoverFillColor,stroke:e.config.hoverBorderColor},a=e.config.percentComplete,o=e.graphics.slackElem,n=e.graphics.element,i=e.graphics.taskFill;a&&!e.config.showAsGroup&&(o&&o.attr({fill:e.config.slackHoverColor}),i&&i.attr({fill:e.config.hoverFillColor,stroke:e.config.hoverBorderColor}),delete t.fill),n&&n.attr(t)}),l&&l.attr(s))}},p=function(e){return function(t){var a=this.data("dataObj"),o=a.config,n=e.components.tasksMap,i=n[o.fromTaskId],r=n[o.toTaskId],s={stroke:o.color,"stroke-width":o.thickness,"stroke-dasharray":o.dashedStyle},l=a.graphics.connector;e.plotEventHandler(this,t,"ConnectorRollOut"),o.showHoverEffect&&([i,r].forEach(function(e){var t={fill:e.config.color,stroke:e.config.borderColor,"stroke-width":e.config.borderThickness,"stroke-dasharray":e.config.dashedStyle},a=e.config.percentComplete,o=e.graphics.slackElem,n=e.graphics.element,i=e.graphics.taskFill;a&&!e.config.showAsGroup&&(o&&o.attr({fill:e.config.slackColor}),i&&i.attr({fill:e.config.color}),delete t.fill),n&&n.attr(t)}),l&&l.attr(s))}};(0,a(125).addDep)({name:"connectorAnimation",type:"animationRule",extension:s["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getName=function(){return"connector"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.isdashed=1,t.thickness=1},t.prototype.configureAttributes=function(){var e=this.getFromEnv("dataSource"),t=(0,i.extend2)({},e.connectors&&e.connectors.length?e.connectors[0]:e.connectors||{});(0,i.parseConfiguration)(t,this.config,this.getFromEnv("chart").config,{connector:!0}),this.components||(this.components={}),this._setConfigure(),this.setState("dirty",!0)},t.prototype._setConfigure=function(e){var t=this.config,a=this.getFromEnv("chart"),o=this.getFromEnv("dataSource"),n=o.connectors&&o.connectors.length?o.connectors[0]:o.connectors||{},s=e||n.length?n:n.connector,l=s&&s.length||0,c=a.getFromEnv("color-manager"),h=a.config,d=this.components.data,p=void 0,u=void 0,g=void 0,f=void 0,m=void 0,v=void 0,b=void 0,x=void 0;for(d||(d=this.components.data=[]),p=0;p<l;p+=1)g=s[p],(u=d[p])||(u=d[p]={config:{}}),!u.config&&(u.config={}),f=u.config,m=(0,i.pluck)(g.color,t.color,c.getColor("plotBorderColor")),v=(0,i.pluckNumber)(g.alpha,t.alpha,100),b=(0,i.pluckNumber)(g.thickness,t.thickness,1),x=(0,i.pluckNumber)(g.isdashed,t.isdashed,1),f.fromTaskId=(0,i.getFirstValue)(g.fromtaskid,"").toLowerCase(),f.toTaskId=(0,i.getFirstValue)(g.totaskid,"").toLowerCase(),f.fromTaskConnectStart=(0,i.pluckNumber)(g.fromtaskconnectstart,0),f.toTaskConnectStart=(0,i.pluckNumber)(g.totaskconnectstart,1),f.color=(0,r.convertColor)(m),f.alpha=.01*v,f.link=g.link,f.showHoverEffect=(0,i.pluckNumber)(g.showhovereffect,t.showhovereffect,h.showconnectorhovereffect,1),f.hoverColor=(0,r.convertColor)((0,i.pluck)(g.hovercolor,t.hovercolor,h.connectorhovercolor,(0,r.getDarkColor)(m,80)),(0,i.pluckNumber)(g.hoveralpha,t.hoveralpha,h.connectorhoveralpha,v)),f.hoverThickness=(0,i.pluckNumber)(g.hoverthickness,t.hoverthickness,h.connectorhoverthickness,b),f.thickness=b,f.dashedStyle=x?(0,i.getDashStyle)((0,i.pluckNumber)(g.dashlen,t.dashlen,5),(0,i.pluckNumber)(g.dashgap,t.dashgap,b),b):"none";(0,i.pluckNumber)(n.visible,1)?this.setState("visible",!0):this.setState("visible",!1)},t.prototype.draw=function(){var e=this.getFromEnv("chart"),t=e.components,a=this.components.data,n=this.getFromEnv("animationManager"),r=e.config,s=a.length,l=t.tasksMap,c=r.connectorextension,u=e.getChildren("canvas")[0].getChildContainer("connectorGroup"),g=this.getContainer("connectorContainer"),f=this.getState("visible"),m=this._contextChanged(),v=this.components.removeDataArr||[],b=v.length,x=void 0,C=void 0,k=void 0,y=void 0,w=void 0,F=void 0,L=void 0,A=void 0,P=void 0,T=void 0,E=void 0,N=void 0,S=void 0,D=void 0,B=void 0,_=void 0,V=void 0,O=void 0,H=void 0,M=void 0,I=void 0,R=void 0,G=void 0,W=void 0,z=void 0;if(this.getState("removed")||this.getState("dirty")||m&&f){for(g||(g=this.addContainer("connectorContainer",n.setAnimation({el:"group",attr:{name:"connectors"},container:u,component:this})),f?g.show():g.hide()),z=0;z<=s;z+=1)if(w=a[z])if(B=w.config,!w.graphics&&(w.graphics={}),M=w.graphics,x=B.fromTaskId&&B.fromTaskId.toLowerCase(),C=B.toTaskId&&B.toTaskId.toLowerCase(),k=l[x],y=l[C],I=M.connector,k&&y){if(_=k.config,V=y.config,F=(L=_.yPos+.5*_.height)==(A=V.yPos+.5*V.height),P=_.xPos,T=_.xPos+_.width,E=V.xPos,N=V.xPos+V.width,!1===(0,o.checkInvalidValue)(P,T,E,N))continue;if(S=0,D=0,0===B.fromTaskConnectStart&&1===B.toTaskConnectStart&&(D=1),0===B.fromTaskConnectStart&&0===B.toTaskConnectStart&&(D=2),1===B.fromTaskConnectStart&&1===B.toTaskConnectStart&&(D=3),1===B.fromTaskConnectStart&&0===B.toTaskConnectStart&&(D=4),F)switch(H=_.height,D){case 1:O=["M",T,L,T+(S=(E-T)/10),L,"L",T+S,L,T+S,L-H,"L",T+S,L-H,E-S,L-H,"L",E-S,L-H,E-S,L,"L",E-S,L,E,A];break;case 2:O=["M",T,L,T+c,L,"L",T+c,L,T+c,L-H,"L",T+c,L-H,N+c,L-H,"L",N+c,A-H,N+c,A,N,A];break;case 3:O=["M",P,L,P-c,L,"L",P-c,L,P-c,L-H,"L",P-c,L-H,E-c,L-H,"L",E-c,L-H,E-c,L,"L",E-c,L,E,L];break;case 4:O=["M",P,L,P-c,L,"L",P-c,L,P-c,L-H,"L",P-c,L-H,N+c,L-H,"L",N+c,L-H,N+c,L,"L",N+c,L,N,L]}else switch(D){case 1:O=["M",T,L,T+(E-T)/2,L,"L",T+(E-T)/2,L,T+(E-T)/2,A,"L",T+(E-T)/2,A,E,A],O=T<=E?["M",T,L,T+(E-T)/2,L,"L",T+(E-T)/2,L,T+(E-T)/2,A,"L",T+(E-T)/2,A,E,A]:["M",T,L,T+c,L,"L",T+c,L,T+c,L+(A-L)/2,"L",T+c,L+(A-L)/2,E-c,L+(A-L)/2,"L",E-c,L+(A-L)/2,E-c,A,"L",E-c,A,E,A];break;case 2:O=["M",T,L,T+c+(S=N-T<0?0:N-T),L,"L",T+c+S,L,T+c+S,A,"L",T+c+S,A,N,A];break;case 3:O=["M",P,L,P-c-(S=P-E<0?0:P-E),L,"L",P-c-S,L,P-c-S,A,"L",P-c-S,A,E,A];break;case 4:O=P>N?["M",P,L,P-(P-N)/2,L,"L",P-(P-N)/2,L,P-(P-N)/2,A,"L",P-(P-N)/2,A,N,A]:["M",P,L,P-c,L,"L",P-c,L,P-c,L+(A-L)/2,"L",P-c,L+(A-L)/2,N+c,L+(A-L)/2,"L",N+c,L+(A-L)/2,N+c,A,"L",N+c,A,N,A]}(M.connector=n.setAnimation({el:I||"path",label:"path",attr:{path:O,stroke:B.color,"stroke-opacity":B.alpha,"stroke-width":B.thickness,"stroke-dasharray":B.dashedStyle},container:g,component:this})).show(),R={fromTaskId:B.fromTaskId,toTaskId:B.toTaskId,fromTaskConnectStart:B.fromTaskConnectStart,toTaskConnectStart:B.toTaskConnectStart,link:B.link,sourceType:"connector"},G=M.trackerElement,W=M.trackerElement=n.setAnimation({el:G||"path",attr:{path:O,stroke:i.TRACKER_FILL,"stroke-width":Math.max(B.thickness,10),cursor:B.link?"pointer":""},container:g,component:this}),G||W.on("fc-click",h(e)).hover(d(e),p(e)),W.data("dataObj",w).data("eventArgs",R)}else I&&n.setAnimation({el:I,component:this,callback:o.hideFn,doNotRemove:!0}),M.trackerElement&&n.setAnimation({el:M.trackerElement,component:this,callback:o.hideFn,doNotRemove:!0});for(z=0;z<b;z++)this._removeDataVisuals(v.shift())}},t}(n["default"]);t["default"]=u},695:function(e,t,a){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.connector":function(){return{"path.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]}}}}},696:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t,a,i,r=e.getFromEnv("dataSource");n(r)?e.setChartMessage():(t=r.tasks,a=r.connectors,i=r.milestones,t&&(0,o.datasetFactory)(e,e.getDSdef("task"),"task",1,t.length?t:[t]),a&&(0,o.datasetFactory)(e,e.getDSdef("connector"),"connector",1,a.length?a:[a]),i&&(0,o.datasetFactory)(e,e.getDSdef("milestone"),"milestone",1,i.length?i:[i]),e.getDatasets().forEach(function(t){t.addToEnv("yAxis",e.getChildren("xAxis")[0]),t.addToEnv("xAxis",e.getChildren("yAxis")[0])}),e.config.showLegend&&e._createLegendItems())};var o=a(118),n=function(e){return function(e){var t=e.tasks,a=!0;return void 0!==t&&(a=t.length?!(t.length>0):t.task&&!(t.task.length>0)),a}(e)&&function(e){var t=e.connectors,a=!0;return void 0!==t&&(a=t.length?!(t.length>0):t.task&&!(t.task.length>0)),a}(e)&&function(e){var t=e.milestones,a=!0;return void 0!==t&&(a=t.length?!(t.length>0):t.milestone&&!(t.milestone.length>0)),a}(e)}}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.gantt.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.js new file mode 100755 index 0000000000000000000000000000000000000000..de5c832195a5e3c1dae4184ed7138a016b0f51e4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.js @@ -0,0 +1,38 @@ +/**! +* @license FusionCharts JavaScript Library +* Copyright FusionCharts Technologies LLP +* License Information at <http://www.fusioncharts.com/license> +* +* @version 3.13.2-sr.1 +* +* @attributions (infers respective third-party copyrights) +* Raphael 2.1.0 (modified as 'Red Raphael') <http://raphaeljs.com/license.html> +* JSON v2 <http://www.JSON.org/js.html> +* Firebug Lite 1.3.0 <http://getfirebug.com/firebuglite> +*/ +"function"!=typeof Object.assign&&(Object.assign=function(e){"use strict";var t,n,r,o;if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(t=Object(e),n=1;n<arguments.length;n++)if(null!=(r=arguments[n]))for(o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o]);return t}),Function.prototype.bind||(Function.prototype.bind=function(e){"use strict";var t,n,r,o;if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");return t=Array.prototype.slice.call(arguments,1),n=this,r=function(){},o=function(){return n.apply(this instanceof r?this:e,t.concat(Array.prototype.slice.call(arguments)))},this.prototype&&(r.prototype=this.prototype),o.prototype=new r,o}),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FusionCharts=t():e.FusionCharts=t()}(window,function(){return function(e){function t(t){for(var n,o,a=t[0],i=t[1],s=0,c=[];s<a.length;s++)o=a[s],r[o]&&c.push(r[o][0]),r[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);c.length;)c.shift()()}var n={},r={0:0};function o(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(function(t,o){n=r[e]=[t,o]});t.push(n[2]=a);var i,s=document.getElementsByTagName("head")[0],l=document.createElement("script");l.charset="utf-8",l.timeout=120,o.nc&&l.setAttribute("nonce",o.nc),l.src=function(e){return o.p+""+({1:"fusioncharts.charts",2:"fusioncharts.common",3:"fusioncharts.powercharts",4:"fusioncharts.widgets",5:"fusioncharts.zoomline",6:"fusioncharts.gantt",7:"fusioncharts.treemap",8:"fusioncharts.zoomscatter",9:"fusioncharts.msstackedcolumn2dsplinedy",10:"fusioncharts.overlappedbar2d",11:"fusioncharts.overlappedcolumn2d",12:"fusioncharts.maps",13:"fusioncharts.vml"}[e]||e)+".js"}(e),i=function(t){l.onerror=l.onload=null,clearTimeout(c);var n=r[e];if(0!==n){if(n){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src,i=new Error("Loading chunk "+e+" failed.\n("+o+": "+a+")");i.type=o,i.request=a,n[1](i)}r[e]=undefined}};var c=setTimeout(function(){i({type:"timeout",target:l})},12e4);l.onerror=l.onload=i,s.appendChild(l)}return Promise.all(t)},o.m=e,o.c=n,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o.oe=function(e){throw console.error(e),e};var a=window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[],i=a.push.bind(a);a.push=t,a=a.slice();for(var s=0;s<a.length;s++)t(a[s]);var l=i;return o(o.s=0)}([function(e,t,n){n(1),n(74),n(109),e.exports=n(114)},function(e,t,n){"use strict";n(2),n(38),n(42),n(44),n(50),n(53),n(56),n(63),n(65),n(67),n(70),n(72),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var n=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this}),Event.prototype.stopPropagation||(Event.prototype.stopPropagation=function(){this.cancelBubble=!0})},function(e,t,n){n(3);var r=n(7).Object;e.exports=function(e){return r.getOwnPropertyNames(e)}},function(e,t,n){n(4)("getOwnPropertyNames",function(){return n(23).f})},function(e,t,n){var r=n(5),o=n(7),a=n(14);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],i={};i[e]=t(n),r(r.S+r.F*a(function(){n(1)}),"Object",i)}},function(e,t,n){var r=n(6),o=n(7),a=n(8),i=n(18),s=n(21),l=function(e,t,n){var c,u,d,f,h=e&l.F,p=e&l.G,g=e&l.S,m=e&l.P,v=e&l.B,y=p?r:g?r[t]||(r[t]={}):(r[t]||{}).prototype,b=p?o:o[t]||(o[t]={}),x=b.prototype||(b.prototype={});for(c in p&&(n=t),n)d=((u=!h&&y&&y[c]!==undefined)?y:n)[c],f=v&&u?s(d,r):m&&"function"==typeof d?s(Function.call,d):d,y&&i(y,c,d,e&l.U),b[c]!=d&&a(b,c,f),m&&x[c]!=d&&(x[c]=d)};r.core=o,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=e.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(9),o=n(17);e.exports=n(13)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(10),o=n(12),a=n(16),i=Object.defineProperty;t.f=n(13)?Object.defineProperty:function(e,t,n){if(r(e),t=a(t,!0),r(n),o)try{return i(e,t,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(11);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(13)&&!n(14)(function(){return 7!=Object.defineProperty(n(15)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){e.exports=!n(14)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){var r=n(11),o=n(6).document,a=r(o)&&r(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},function(e,t,n){var r=n(11);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(6),o=n(8),a=n(19),i=n(20)("src"),s=Function.toString,l=(""+s).split("toString");n(7).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var c="function"==typeof n;c&&(a(n,"name")||o(n,"name",t)),e[t]!==n&&(c&&(a(n,i)||o(n,i,e[t]?""+e[t]:l.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[i]||s.call(this)})},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(e===undefined?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(22);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(24),o=n(28).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?function(e){try{return o(e)}catch(t){return i.slice()}}(e):o(r(e))}},function(e,t,n){var r=n(25),o=n(27);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(26);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(29),o=n(37).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){var r=n(19),o=n(24),a=n(30)(!1),i=n(34)("IE_PROTO");e.exports=function(e,t){var n,s=o(e),l=0,c=[];for(n in s)n!=i&&r(s,n)&&c.push(n);for(;t.length>l;)r(s,n=t[l++])&&(~a(c,n)||c.push(n));return c}},function(e,t,n){var r=n(24),o=n(31),a=n(33);e.exports=function(e){return function(t,n,i){var s,l=r(t),c=o(l.length),u=a(i,c);if(e&&n!=n){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(32),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(32),o=Math.max,a=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):a(e,t)}},function(e,t,n){var r=n(35)("keys"),o=n(20);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(7),o=n(6),a=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return a[e]||(a[e]=t!==undefined?t:{})})("versions",[]).push({version:r.version,mode:n(36)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports=!1},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){n(39);var r=n(7).Object;e.exports=function(e,t){return r.getOwnPropertyDescriptor(e,t)}},function(e,t,n){var r=n(24),o=n(40).f;n(4)("getOwnPropertyDescriptor",function(){return function(e,t){return o(r(e),t)}})},function(e,t,n){var r=n(41),o=n(17),a=n(24),i=n(16),s=n(19),l=n(12),c=Object.getOwnPropertyDescriptor;t.f=n(13)?c:function(e,t){if(e=a(e),t=i(t,!0),l)try{return c(e,t)}catch(n){}if(s(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){n(43);var r=n(7).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(5);r(r.S+r.F*!n(13),"Object",{defineProperty:n(9).f})},function(e,t,n){n(45);var r=n(7).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(5);r(r.S,"Object",{create:n(46)})},function(e,t,n){var r=n(10),o=n(47),a=n(37),i=n(34)("IE_PROTO"),s=function(){},l=function(){var e,t=n(15)("iframe"),r=a.length;for(t.style.display="none",n(49).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;r--;)delete l.prototype[a[r]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[i]=e):n=l(),t===undefined?n:o(n,t)}},function(e,t,n){var r=n(9),o=n(10),a=n(48);e.exports=n(13)?Object.defineProperties:function(e,t){o(e);for(var n,i=a(t),s=i.length,l=0;s>l;)r.f(e,n=i[l++],t[n]);return e}},function(e,t,n){var r=n(29),o=n(37);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){var r=n(6).document;e.exports=r&&r.documentElement},function(e,t,n){n(51),e.exports=n(7).Object.keys},function(e,t,n){var r=n(52),o=n(48);n(4)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(27);e.exports=function(e){return Object(r(e))}},function(e,t,n){n(54),e.exports=n(7).Array.indexOf},function(e,t,n){"use strict";var r=n(5),o=n(30)(!1),a=[].indexOf,i=!!a&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(i||!n(55)(a)),"Array",{indexOf:function(e){return i?a.apply(this,arguments)||0:o(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t,n){n(57),e.exports=n(7).Array.forEach},function(e,t,n){"use strict";var r=n(5),o=n(58)(0),a=n(55)([].forEach,!0);r(r.P+r.F*!a,"Array",{forEach:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(21),o=n(25),a=n(52),i=n(31),s=n(59);e.exports=function(e,t){var n=1==e,l=2==e,c=3==e,u=4==e,d=6==e,f=5==e||d,h=t||s;return function(t,s,p){for(var g,m,v=a(t),y=o(v),b=r(s,p,3),x=i(y.length),w=0,C=n?h(t,x):l?h(t,0):undefined;x>w;w++)if((f||w in y)&&(m=b(g=y[w],w,v),e))if(n)C[w]=m;else if(m)switch(e){case 3:return!0;case 5:return g;case 6:return w;case 2:C.push(g)}else if(u)return!1;return d?-1:c||u?u:C}}},function(e,t,n){var r=n(60);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(11),o=n(61),a=n(62)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=undefined),r(t)&&null===(t=t[a])&&(t=undefined)),t===undefined?Array:t}},function(e,t,n){var r=n(26);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(35)("wks"),o=n(20),a=n(6).Symbol,i="function"==typeof a;(e.exports=function(e){return r[e]||(r[e]=i&&a[e]||(i?a:o)("Symbol."+e))}).store=r},function(e,t,n){n(64),e.exports=n(7).Array.map},function(e,t,n){"use strict";var r=n(5),o=n(58)(1);r(r.P+r.F*!n(55)([].map,!0),"Array",{map:function(e){return o(this,e,arguments[1])}})},function(e,t,n){n(66),e.exports=n(7).Array.filter},function(e,t,n){"use strict";var r=n(5),o=n(58)(2);r(r.P+r.F*!n(55)([].filter,!0),"Array",{filter:function(e){return o(this,e,arguments[1])}})},function(e,t,n){n(68),e.exports=n(7).Array.reduce},function(e,t,n){"use strict";var r=n(5),o=n(69);r(r.P+r.F*!n(55)([].reduce,!0),"Array",{reduce:function(e){return o(this,e,arguments.length,arguments[1],!1)}})},function(e,t,n){var r=n(22),o=n(52),a=n(25),i=n(31);e.exports=function(e,t,n,s,l){r(t);var c=o(e),u=a(c),d=i(c.length),f=l?d-1:0,h=l?-1:1;if(n<2)for(;;){if(f in u){s=u[f],f+=h;break}if(f+=h,l?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;l?f>=0:d>f;f+=h)f in u&&(s=t(s,u[f],f,c));return s}},function(e,t,n){n(71),e.exports=n(7).Array.isArray},function(e,t,n){var r=n(5);r(r.S,"Array",{isArray:n(61)})},function(e,t,n){n(73),e.exports=n(7).Array.some},function(e,t,n){"use strict";var r=n(5),o=n(58)(3);r(r.P+r.F*!n(55)([].some,!0),"Array",{some:function(e){return o(this,e,arguments[1])}})},function(e,t,n){"use strict";n(75),n(78),n(81),n(83),n(98),n(101),n(103),n(105),n(107),Element.prototype.remove||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)})},function(e,t,n){n(76),e.exports=n(7).Math.sign},function(e,t,n){var r=n(5);r(r.S,"Math",{sign:n(77)})},function(e,t){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){n(79),e.exports=n(7).Array.findIndex},function(e,t,n){"use strict";var r=n(5),o=n(58)(6),a="findIndex",i=!0;a in[]&&Array(1)[a](function(){i=!1}),r(r.P+r.F*i,"Array",{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),n(80)(a)},function(e,t,n){var r=n(62)("unscopables"),o=Array.prototype;o[r]==undefined&&n(8)(o,r,{}),e.exports=function(e){o[r][e]=!0}},function(e,t,n){n(82),e.exports=n(7).Array.find},function(e,t,n){"use strict";var r=n(5),o=n(58)(5),a=!0;"find"in[]&&Array(1).find(function(){a=!1}),r(r.P+r.F*a,"Array",{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),n(80)("find")},function(e,t,n){n(84),n(91),e.exports=n(7).Array.from},function(e,t,n){"use strict";var r=n(85)(!0);n(86)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:undefined,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(32),o=n(27);e.exports=function(e){return function(t,n){var a,i,s=String(o(t)),l=r(n),c=s.length;return l<0||l>=c?e?"":undefined:(a=s.charCodeAt(l))<55296||a>56319||l+1===c||(i=s.charCodeAt(l+1))<56320||i>57343?e?s.charAt(l):a:e?s.slice(l,l+2):i-56320+(a-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(36),o=n(5),a=n(18),i=n(8),s=n(87),l=n(88),c=n(89),u=n(90),d=n(62)("iterator"),f=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,p,g,m,v){l(n,t,p);var y,b,x,w=function(e){if(!f&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",_="values"==g,E=!1,k=e.prototype,S=k[d]||k["@@iterator"]||g&&k[g],A=S||w(g),T=g?_?w("entries"):A:undefined,M="Array"==t&&k.entries||S;if(M&&(x=u(M.call(new e)))!==Object.prototype&&x.next&&(c(x,C,!0),r||"function"==typeof x[d]||i(x,d,h)),_&&S&&"values"!==S.name&&(E=!0,A=function(){return S.call(this)}),r&&!v||!f&&!E&&k[d]||i(k,d,A),s[t]=A,s[C]=h,g)if(y={values:_?A:w("values"),keys:m?A:w("keys"),entries:T},v)for(b in y)b in k||a(k,b,y[b]);else o(o.P+o.F*(f||E),t,y);return y}},function(e,t){e.exports={}},function(e,t,n){"use strict";var r=n(46),o=n(17),a=n(89),i={};n(8)(i,n(62)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(i,{next:o(1,n)}),a(e,t+" Iterator")}},function(e,t,n){var r=n(9).f,o=n(19),a=n(62)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},function(e,t,n){var r=n(19),o=n(52),a=n(34)("IE_PROTO"),i=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},function(e,t,n){"use strict";var r=n(21),o=n(5),a=n(52),i=n(92),s=n(93),l=n(31),c=n(94),u=n(95);o(o.S+o.F*!n(97)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,d,f=a(e),h="function"==typeof this?this:Array,p=arguments.length,g=p>1?arguments[1]:undefined,m=g!==undefined,v=0,y=u(f);if(m&&(g=r(g,p>2?arguments[2]:undefined,2)),y==undefined||h==Array&&s(y))for(n=new h(t=l(f.length));t>v;v++)c(n,v,m?g(f[v],v):f[v]);else for(d=y.call(f),n=new h;!(o=d.next()).done;v++)c(n,v,m?i(d,g,[o.value,v],!0):o.value);return n.length=v,n}})},function(e,t,n){var r=n(10);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(i){var a=e["return"];throw a!==undefined&&r(a.call(e)),i}}},function(e,t,n){var r=n(87),o=n(62)("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(r.Array===e||a[o]===e)}},function(e,t,n){"use strict";var r=n(9),o=n(17);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t,n){var r=n(96),o=n(62)("iterator"),a=n(87);e.exports=n(7).getIteratorMethod=function(e){if(e!=undefined)return e[o]||e["@@iterator"]||a[r(e)]}},function(e,t,n){var r=n(26),o=n(62)("toStringTag"),a="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,i;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),o))?n:a?r(t):"Object"==(i=r(t))&&"function"==typeof t.callee?"Arguments":i}},function(e,t,n){var r=n(62)("iterator"),o=!1;try{var a=[7][r]();a["return"]=function(){o=!0},Array.from(a,function(){throw 2})}catch(i){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var a=[7],s=a[r]();s.next=function(){return{done:n=!0}},a[r]=function(){return s},e(a)}catch(i){}return n}},function(e,t,n){n(99),e.exports=n(7).Array.fill},function(e,t,n){var r=n(5);r(r.P,"Array",{fill:n(100)}),n(80)("fill")},function(e,t,n){"use strict";var r=n(52),o=n(33),a=n(31);e.exports=function(e){for(var t=r(this),n=a(t.length),i=arguments.length,s=o(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,c=l===undefined?n:o(l,n);c>s;)t[s++]=e;return t}},function(e,t,n){n(102),e.exports=n(7).Array.includes},function(e,t,n){"use strict";var r=n(5),o=n(30)(!0);r(r.P,"Array",{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),n(80)("includes")},function(e,t,n){n(104),e.exports=Math.pow(2,-52)},function(e,t,n){var r=n(5);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(e,t,n){n(106),e.exports=-9007199254740991},function(e,t,n){var r=n(5);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){n(108),e.exports=9007199254740991},function(e,t,n){var r=n(5);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){(function(e,t){!function(){"use strict";function n(){}function r(e){if(!(this instanceof r))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(e,this)}function o(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,r._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var r;try{r=n(e._value)}catch(l){return void i(t.promise,l)}a(t.promise,r)}else(1===e._state?a:i)(t.promise,e._value)})):e._deferreds.push(t)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof r)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void l(function(e,t){return function(){e.apply(t,arguments)}}(n,t),e)}e._state=1,e._value=t,s(e)}catch(c){i(e,c)}}function i(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&r._immediateFn(function(){e._handled||r._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;n>t;t++)o(e,e._deferreds[t]);e._deferreds=null}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,i(t,e))})}catch(s){if(n)return;n=!0,i(t,s)}}var c=setTimeout;r.prototype["catch"]=function(e){return this.then(null,e)},r.prototype.then=function(e,t){var r=new this.constructor(n);return o(this,new function(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}(e,t,r)),r},r.prototype["finally"]=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){return t.reject(n)})})},r.all=function(e){return new r(function(t,n){function r(e,i){try{if(i&&("object"==typeof i||"function"==typeof i)){var s=i.then;if("function"==typeof s)return void s.call(i,function(t){r(e,t)},n)}o[e]=i,0==--a&&t(o)}catch(u){n(u)}}if(!e||"undefined"==typeof e.length)throw new TypeError("Promise.all accepts an array");var o=Array.prototype.slice.call(e);if(0===o.length)return t([]);for(var a=o.length,i=0;o.length>i;i++)r(i,o[i])})},r.resolve=function(e){return e&&"object"==typeof e&&e.constructor===r?e:new r(function(t){t(e)})},r.reject=function(e){return new r(function(t,n){n(e)})},r.race=function(e){return new r(function(t,n){for(var r=0,o=e.length;o>r;r++)e[r].then(t,n)})},r._immediateFn="function"==typeof e&&function(t){e(t)}||function(e){c(e,0)},r._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};var u=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==t)return t;throw Error("unable to locate global object")}();u.Promise||(u.Promise=r)}()}).call(this,n(110).setImmediate,n(111))},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function a(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new a(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new a(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(112),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(111))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,o,a,i,s,l=1,c={},u=!1,d=e.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(e);f=f&&f.setTimeout?f:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},r=function(e){a.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(o=d.documentElement,r=function(e){var t=d.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(p,0,e)}:(i="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(i)&&p(+t.data.slice(i.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(i+t,"*")}),f.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var o={callback:e,args:t};return c[l]=o,r(l),l++},f.clearImmediate=h}function h(e){delete c[e]}function p(e){if(u)setTimeout(p,0,e);else{var t=c[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{h(e),u=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(111),n(113))},function(e,t){var n,r,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var l,c=[],u=!1,d=-1;function f(){u&&l&&(u=!1,l.length?c=l.concat(c):d=-1,c.length&&h())}function h(){if(!u){var e=s(f);u=!0;for(var t=c.length;t;){for(l=c,c=[];++d<t;)l&&l[d].run();d=-1,t=c.length}l=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function g(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new p(e,t)),1!==c.length||u||s(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=g,o.addListener=g,o.once=g,o.off=g,o.removeListener=g,o.removeAllListeners=g,o.emit=g,o.prependListener=g,o.prependOnceListener=g,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(115)),o=i(n(253)),a=i(n(254));function i(e){return e&&e.__esModule?e:{"default":e}}var s,l=(s={},function(e){return e=e&&e.replace(/(^\s*)|(\s*$)/g,"")||"",s[e]||(s[e]={key:e,subject:e.replace(/[^\/]*?$/gi,""),predicate:e.replace(/^.*\//gi,"")})});function c(e){var t,n=r["default"].options;return e=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return""===e?e:e.replace(/^[\s\S]*\//gi,"").replace(/\?/g,"%3F").replace(/\#/g,"%23").replace(/\:/g,"%3A")}((t=l(e)).predicate),t.subject+n.html5ScriptNamePrefix+e+n.html5ScriptNameSuffix}r["default"].addEventListener("resourceRequested",function(e){var t=e.sender,i=t.chartType(),s=t.options.chartTypeSourcePath||"";r["default"].getDep(i,"chartapi")||r["default"].getDep(i,"maps")||r["default"].addDep({name:i,type:"dependency",extension:function(e){switch(o["default"][e]){case"charts":return Promise.all([n.e(2),n.e(1)]).then(n.t.bind(null,256,7));case"powercharts":return Promise.all([n.e(2),n.e(3)]).then(n.t.bind(null,460,7));case"widgets":return Promise.all([n.e(2),n.e(4)]).then(n.t.bind(null,598,7));case"zoomline":return Promise.all([n.e(2),n.e(5)]).then(n.t.bind(null,671,7));case"gantt":return Promise.all([n.e(2),n.e(6)]).then(n.t.bind(null,680,7));case"treemap":return Promise.all([n.e(2),n.e(7)]).then(n.t.bind(null,697,7));case"zoomscatter":return Promise.all([n.e(2),n.e(8)]).then(n.t.bind(null,702,7));case"msstackedcolumn2dsplinedy":return Promise.all([n.e(2),n.e(9)]).then(n.t.bind(null,705,7));case"overlappedbar2d":return Promise.all([n.e(2),n.e(10)]).then(n.t.bind(null,708,7));case"overlappedcolumn2d":return Promise.all([n.e(2),n.e(11)]).then(n.t.bind(null,712,7));default:return(0,a["default"])(""+r["default"].getScriptBaseURI()+c(e))}}(s+i)})}),window&&n(255)&&(window.FusionCharts=r["default"]),t["default"]=r["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(116),i=(r=a)&&r.__esModule?r:{"default":r},s=n(124);var l=["type","id","width","height","debugMode","registerWithJS","backgroundColor","scaleMode","lang","detectFlashVersion","autoInstallRedirect"],c=function(e,t){var n,r;for(n=0,r=l.length;n<r;n++)"object"===o(t[n])?Object.assign(e,t[n]):e[l[n]]=t[n];return e};function u(e){return this instanceof u?(1===arguments.length&&"object"===(void 0===e?"undefined":o(e))||(e=c({},arguments)),new(Function.prototype.bind.apply(i["default"],[null].concat(e)))):1===arguments.length&&e instanceof Array&&"private"===e[0]?i["default"].register("module",e):1===arguments.length&&"string"==typeof e?i["default"].getChartFromId(e):void(0,s.raiseError)(u,"25081840","run","",new SyntaxError('Use the "new" keyword while creating a new FusionCharts object'))}for(var d in u.prototype=i["default"].prototype,i["default"])i["default"].hasOwnProperty(d)&&(u[d]=i["default"][d]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(117)),o=a(n(156));function a(e){return e&&e.__esModule?e:{"default":e}}r["default"].addDep(o["default"]),t["default"]=r["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(118),a=n(122),i=n(124),s=n(125),l=n(126),c=_(n(127)),u=n(128),d=_(u),f=_(n(132)),h=n(129),p=_(n(135)),g=_(n(136)),m=_(n(137)),v=_(n(138)),y=_(n(141)),b=_(n(143)),x=_(n(144)),w=_(n(151)),C=_(n(155));function _(e){return e&&e.__esModule?e:{"default":e}}var E,k,S,A,T="json",M="3.13.2-sr.1",O=/(^|[\/\\])(fusioncharts\.js)([\?#].*)?$/gi,L=/^(FusionCharts|FusionWidgets|FusionMaps)/,I=/[^\%\d]*$/gi,F=/url$/i,N=!0,D=function(e){return e.toString().toLowerCase()},P=(k={},S=function(){return{state:2}},A=function de(){var e,t,n,r,o,a=0,i=parseInt(ue.options.visibilityTrackingInterval,10)||300;for(e in k)a+=1,t=k[e].chart,n=k[e].container,r=k[e].insertMode,o=k[e].callback,t.disposed||!R(n)?(delete k[e],a-=1,delete t.containerHidden,!t.disposed&&(t.renderOpts={containerElement:n,insertMode:r,callback:o}),t._addChartDependency("chartContainer",{scopeOf:t,opts:{containerElement:n,insertMode:r,callback:o},resolve:le}),t._setState()):k[e]&&k[e].chart&&(k[e].chart.containerHidden=!0,k[e].chart._addChartDependency("chartContainer",{resolve:S}),k[e].chart._setState());E=a?setTimeout(de,i):clearTimeout(E)},function(e,t,n,r){k[e.id]={chart:e,container:t,insertMode:n,callback:r},E||(E=setTimeout(A,parseInt(ue.options.visibilityTrackingInterval,10)||300))}),R=function fe(e){var t=e.parentNode;return!!t&&9!==t.nodeType&&("none"===function(e,t){return window.getComputedStyle?t=window.getComputedStyle(e).getPropertyValue(t):e.currentStyle&&(t=e.currentStyle[t]),t}(e,"display")||!!t&&fe(t))},j=void 0,V=void 0,B=void 0,G=0,H=!1,z=["disposed","error","waiting","ready","initialized"],$={},X="https://www.fusioncharts.com/dev/migration/deprecated-functionalities?version=3.13.0",U='You are using incompatible files or deprecated "register" API of FusionCharts, please go through the docs to know more at '+X,W=function(){setTimeout(function(){j=!0,(0,i.triggerEvent)("ready",ue,{version:ue.version,now:!0})},1)};function Y(){return this.state}function q(){return this.msg}function K(){return this.msgStyle}function J(){return"chartobject-"+(J.lastId+=1)}function Z(e){var t={},n=void 0;for(n in e)t[n.toLowerCase()]=e[n];return t}function Q(e){var t=[],n=void 0;for(n in e)t.push(n+"_"+e[n]);return t.sort(),t.join(",")}function ee(e){var t,n,r=e.options,o=e.args,a=e.options.showChartLoadingMessage;return t={imageHAlign:o.loadMessageImageHAlign||r.baseChartMessageImageHAlign,imageVAlign:o.loadMessageImageVAlign||r.baseChartMessageImageVAlign,imageAlpha:o.loadMessageImageAlpha||r.baseChartMessageImageAlpha,imageScale:o.loadMessageImageScale||r.baseChartMessageImageScale},n={color:o.loadMessageColor||r.baseChartMessageColor,fontFamily:o.loadMessageFont||r.baseChartMessageFont,fontSize:o.loadMessageFontSize||r.baseChartMessageFontSize},{msg:a?r.PBarLoadingText||r.loadMessage:"",msgStyle:{message:n,image:t}}}function te(e){var t,n,r=e.args,o=e.options;return t={imageHAlign:r.typeNotSupportedMessageImageHAlign||o.baseChartMessageImageHAlign,imageVAlign:r.typeNotSupportedMessageImageVAlign||o.baseChartMessageImageVAlign,imageAlpha:r.typeNotSupportedMessageImageAlpha||o.baseChartMessageImageAlpha,imageScale:r.typeNotSupportedMessageImageScale||o.baseChartMessageImageScale},n={color:r.typeNotSupportedMessageColor||o.baseChartMessageColor,fontFamily:r.typeNotSupportedMessageFont||o.baseChartMessageFont,fontSize:r.typeNotSupportedMessageFontSize||o.baseChartMessageFontSize},H&&(o.messageURL=X),{msg:H?U:o.typeNotSupportedMessage,msgStyle:{image:t,message:n}}}function ne(){H=!0}function re(e){var t,n,r=this.opts,a=r.data,c=r.sanitisedFormat,u=r.silent,d=(0,s.getDepsByType)("transcoder"),f=d[c]&&d[c](),h=e.options,p=void 0,g=function(e){var t,n,r=e.options,a=e.args;return t={imageHAlign:(0,o.pluck)(a.dataInvalidMessageImageHAlign,r.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:(0,o.pluck)(a.dataInvalidMessageImageVAlign,r.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:(0,o.pluckNumber)(a.dataInvalidMessageImageAlpha,r.baseChartMessageImageAlpha),imageScale:(0,o.pluckNumber)(a.dataInvalidMessageImageScale,r.baseChartMessageImageScale)},n={fontFamily:a.dataInvalidMessageFont||r.baseChartMessageFont,fontSize:a.dataInvalidMessageFontSize||r.baseChartMessageFontSize,color:a.dataInvalidMessageColor||r.baseChartMessageColor},{msg:r.dataInvalidMessage,msgStyle:{image:t,message:n}}}(e),m=g.msg,v=g.msgStyle,y=void 0;return e.__state.newDataArrived=!0,f&&f.toJSON?y=(p=f.toJSON(a,e)).error?{state:1,msg:m,msgStyle:v}:{state:3}:(p={error:new Error("Unable to convert data.")},y={state:1,msg:m,msgStyle:v}),t=p.error?p:p.data,h.dataErroneous=h.error=p.error,h.dataSource=t,h.dataFormat=c,n=function(e,t,n,r){var o={};return o.native=n===T,o.dataFormat=n,o.format=T,o.data=t,o.dataSource=e,o.silent=!!r,o}(a,t,c,u),h.dataErroneous||(0,i.triggerEvent)("beforeDataUpdate",e,n,void 0,l.onDataUpdateSuccess,l.onDataUpdateCancel),y}function oe(e){var t,n,r,a,l,c=this.opts,u=c.url,d=u===undefined?"":u,f=c.format,h=c.config,p=c.callback,g=c.silent,m=(0,s.getDepsByType)("transcoder"),v=void 0,y=(a=(t=e).options,l=t.args,n={imageHAlign:(0,o.pluck)(l.dataLoadStartMessageImageHAlign,a.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:(0,o.pluck)(l.dataLoadStartMessageImageVAlign,a.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:(0,o.pluckNumber)(l.dataLoadStartMessageImageAlpha,a.baseChartMessageImageAlpha),imageScale:(0,o.pluckNumber)(l.dataLoadStartMessageImageScale,a.baseChartMessageImageScale)},r={fontFamily:l.dataLoadStartMessageFont||a.baseChartMessageFont,fontSize:l.dataLoadStartMessageFontSize||a.baseChartMessageFontSize,color:l.dataLoadStartMessageColor||a.baseChartMessageColor},{msg:a.dataLoadStartMessage,msgStyle:{image:n,message:r}}),b=y.msg,x=y.msgStyle,w=void 0;return void 0!==f&&null!==f&&"function"==typeof f.toString||(f=e.options.dataFormat,(0,i.raiseWarning)(e,"03091609","param","FusionCharts#setChartDataUrl","Invalid Data Format. Reverting to current data format - "+f)),v=D(f),F.test(v)||(v+="url"),w=m[v]&&m[v](),e.jsVars.stallLoad=!0,w&&w.toJSON?(w.toJSON(d,h,p,g,e),{state:2,msg:b,msgStyle:x}):{state:1,error:new Error("Unable to fetch data.")}}function ae(e){var t=e.__state,n=e.chartType(),r=void 0,o=void 0,a=(0,s.getDep)(t.lastRenderedType,"chartapi")||(0,s.getDep)(t.lastRenderedType,"maps");if(a&&t.lastRenderedType!==n&&((0,i.triggerEvent)("chartTypeChanged",e,{previousType:t.lastRenderedType,newType:n}),r=a))for(o in r)delete e[o];t.lastRenderedType=n}function ie(e){var t=ee(e),r=t.msgStyle,o=t.msg;return Promise.all([n.e(2),n.e(12)]).then(n.t.bind(null,715,7)).then(function(t){ue.addDep(t["default"]),ae(e),e._addChartDependency("mapModuleLoad",{resolve:function(){return{state:3}}}),(0,i.triggerEvent)("loaded",e,{type:e.chartType(),renderer:"javascript"},[e.id]),e._setState()})["catch"](function(){var t=te(e),n=t.msgStyle,r=t.msg;e._addChartDependency("mapModuleLoad",{resolve:function(){return{state:1,msgStyle:n,msg:r}}}),(0,i.raiseError)(ue,"12052314141","run","JavaScriptRenderer~Maps",new Error("FusionCharts' maps file is required to render the visualization.")),e._setState(),(0,i.triggerEvent)("charttypeinvalid",e,{},[e.id])}),{state:2,msgStyle:r,msg:o}}function se(e){var t=this.opts.value,n=ue.getDep(t,"dependency")||ue.getDep(t,"chartapi")||ue.getDep(t,"maps");if(H=!1,n){if(n.then){ue.addEventListener("register",ne),n.then(function(n){if(!e.disposed){if(n.__esModule){var r=(0,s.getDep)(t,"maps");ue.addDep(n["default"]),(!r||!N)&&ae(e),e._addChartDependency("chartModuleLoad",{resolve:function(){return r&&N?e._addChartDependency("mapModuleLoad",{scopeOf:e,resolve:ie}):(0,i.triggerEvent)("loaded",e,{type:t,renderer:"javascript"},[e.id]),{state:3}}})}else e._addChartDependency("chartModuleLoad",{resolve:function(){return(0,s.getDep)(t,"maps")&&N?e._addChartDependency("mapModuleLoad",{scopeOf:e,resolve:ie}):(ae(e),(0,i.triggerEvent)("loaded",e,{type:t,renderer:"javascript"},[e.id])),{state:3}}});e._setState()}})["catch"](function(){if(!e.disposed){var t=te(e),n=t.msgStyle,r=t.msg;e._addChartDependency("chartModuleLoad",{resolve:function(){return{state:1,msgStyle:n,msg:r}}}),e._setState(),(0,i.triggerEvent)("charttypeinvalid",e,{},[e.id])}});var r=ee(e);return{state:2,msgStyle:r.msgStyle,msg:r.msg}}return(0,s.getDep)(t,"maps")&&N?(e._addChartDependency("mapModuleLoad",{scopeOf:e,resolve:ie}),e._setState()):(ae(e),(0,i.triggerEvent)("loaded",e,{type:t,renderer:"javascript"},[e.id])),{state:3}}var o=te(e),a=o.msgStyle,l=o.msg;return(0,i.triggerEvent)("charttypeinvalid",this,{},[this.id]),{state:1,msgStyle:a,msg:l}}function le(e){var t,n=this.opts,r=n.containerElement,a=n.insertMode,s=n.callback,l=void 0,c=void 0,u=void 0;if(s?"function"!=typeof s&&(s=void 0):"function"==typeof a?(s=a,a=void 0):a||"function"!=typeof r||(s=r,r=void 0),a=(a||e.options.insertMode).toLowerCase()||o.domInsertModes.REPLACE,void 0===r&&(r=e.options.containerElementId||e.options.containerElement),"string"==typeof r&&(r=document.getElementById(r)),void 0===r||null===r)return(0,i.raiseError)(e,"03091456","run",".render()",new Error("Unable to find the container DOM element.")),(0,i.triggerEvent)("containernotfound",e,{},[e.id]),{state:1};if(function(e,t){var n,r,o,a=document.getElementById(e),i=t.id||t.getAttribute("id");if(null===a)return!1;if(e===i)return!0;for(r=0,o=(n=t.getElementsByTagName("*")).length;r<o;r++)if(n[r]===a)return!1;return!0}(e.id,r))return(0,i.raiseError)(e,"05102109","run",".render()",new Error("A duplicate object already exists with the specific Id: "+e.id)),{state:1};if(R(r))return e.containerHidden=!0,P(e,r,a,s),{state:2};if(delete e.containerHidden,((c=window[e.id])&&c.FusionCharts&&c.FusionCharts===e||(c=e.ref)&&c.FusionCharts&&c.FusionCharts===e)&&(e._dispose(),c===window[e.id]&&(window[e.id]=void 0)),"undefined"!=typeof window[e.id])return(0,i.raiseError)(e,"25081843","comp",".render",new Error("#25081843:IECompatibility() Chart Id is same as a JavaScript variable name. Variable naming error. Please use unique name for chart JS variable, chart-id and container id.")),{state:1};if((l=document.createElement(e.options.containerElementType||"span")).setAttribute("id",e.id),"append"!==a&&"prepend"!==a)for(;r.hasChildNodes();)r.removeChild(r.firstChild);return"prepend"===a&&r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),e.options.containerElement=r,e.options.containerElementId=r.id,(u=l.style)&&(u.position="relative",u.textAlign="left",u.lineHeight="normal",u.display="inline-block",u.zoom="1",u["vertical-align"]="middle",u.fontWeight="normal",u.fontVariant="normal",u.fontStyle="normal",u.textDecoration="none",u["*DISPLAY"]="inline",u.padding="0",u.margin="0",u.border="none",u.direction="ltr"),e.options.containerClassName&&(l.className=e.options.containerClassName),t=(0,o.normalizeCSSDimension)(e.width,e.height,l),e.__state.renderedWidth=t.pixelWidth,e.__state.renderedHeight=t.pixelHeight,e.__state.rendering=!0,e.renderOpts={containerElement:l,insertMode:a,callback:s},{state:3}}J.lastId=0;var ce,ue=function(){function e(){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var a,s={};(this.__state={},this.id="",this._deps={},this.__state._unresolvedDeps={},this.__state.state=4,1===arguments.length&&"object"===r(arguments.length<=0?undefined:arguments[0])&&(s=arguments.length<=0?undefined:arguments[0]),arguments.length>1&&"object"===r((t=arguments.length-1,arguments.length<=t?undefined:arguments[t])))&&(0,o.extend2)(s,(a=arguments.length-1,arguments.length<=a?undefined:arguments[a]),!1,!0);this.id="undefined"==typeof s.id?J():s.id,this.args=s,this._parsePolicies(g["default"]),this._attachDefaultEventListeners(),this.jsVars.fcObj=this,(0,i.triggerEvent)("beforeInitialize",this,s),e.items[this.id]instanceof e&&(0,i.raiseWarning)(this,"06091847","param","",new Error('A FusionCharts object with the specified id "'+this.id+'" already exists.Renaming it to '+(this.id=J()))),this.attributes.id=this.id,n.p=e.getScriptBaseURI(),this.chartType&&this.chartType(s.type||s.swfUrl||""),this.setChartData(this.args.dataSource,this.args.dataFormat,void 0,void 0,!0),e.items[this.id]=this,e.defaultOptions=e.options,(0,i.triggerEvent)("initialized",this,s),this._setState()}return e.getObjectReference=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return e.items[t]&&e.items[t].ref},e.register=function(){(0,i.triggerEvent)("register",e,arguments,undefined,function(){(0,i.raiseError)(this,"0604111219","run",".register()",new Error(U))})},e.render=function(t,n){return t instanceof e?(t.render(n),t):new e(t).render(n)},e.addDep=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return s.addDep.call.apply(s.addDep,[this].concat(t))},e.getDep=function(e,t){return s.getDep.call(this,e,t)},e.addEventListener=function(e,t){return(0,i.addListener)(e,t)},e.on=function(t,n){return e.addEventListener(t,n)},e.removeEventListener=function(e,t){return(0,i.removeListener)(e,t)},e.ready=function(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:e,r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:e,o=function(){t.call(r,n)};"function"==typeof t&&(j?setTimeout(o,0):e.addEventListener("ready",o))},e.formatNumber=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=arguments[2],r=Q(t=Z(t)),o=void 0;return $[r]?o=$[r]:$[r]=o=new m["default"](t,{useScaleRecursively:!0}),o.configure(t),o.dataLabels(e,n)},e.transcodeData=function(e,t,n,r){var o=(0,s.getDepsByType)("transcoder"),a=D(n),l=D(t),c=void 0,u=void 0,d=void 0,f=void 0;if(l&&"function"==typeof l.toString&&a&&"function"==typeof a.toString&&"undefined"!=typeof o[a]&&"undefined"!=typeof o[l])return d=o[l](),f=o[a](),d.toJSON&&(c=d.toJSON(e,this),u=f.fromJSON(c.data,this)),c.error instanceof Error||(u.error=c.error),r?u:u.data;(0,i.raiseError)(this,"14090217","param",".transcodeData()","Unrecognized data-format specified during transcoding.")},e.setAnimation=function(t){!e.options._globalAnimationRule&&(e.options._globalAnimationRule=[]),e.options._globalAnimationRule.push(t)},e.setEasingEffect=function(t,n){e.getDep("redraphael","plugin").easing_formulas[t]=n},e.getScriptBaseURI=function(){return e.options.scriptBaseUri},e.setScriptBaseURI=function(t){e.options.scriptBaseUri=t,n.p=t},e.getChartFromId=function(t){return e.items[t]},e.prototype._attachDefaultEventListeners=function(){var e=this.options.events,t=void 0,n=void 0;if(e)for(t in e)"function"==typeof e[t]&&this.addEventListener(t,e[t]);for(n in this.options.renderer="javascript",c["default"])this.addEventListener(n,c["default"][n])},e.prototype._setState=function(){var e=this._deps,t=void 0,n=void 0,r=this.__state.state,o=4;for(var a in e)e.hasOwnProperty(a)&&(o>(n=(t=e[a]).getState())&&(o=n,this.__state.currChartMsg=t.getMsg(),this.__state.currChartMsgStyle=t.getMsgStyle()),3===n&&this._removeChartDependency(a));if(this.__state.prevState=r,this.__state.state=o,r!==o&&(0,i.triggerEvent)("stateChanged",this,{prevState:z[r],state:z[o]},[this.id]),!this.containerHidden)if(3===o&&this.__state.renderInvoked){var s=this.renderOpts,l=s.containerElement,c=s.callback;this._renderChart(l,void 0,c),this._clearPrevContext(),delete this.renderOpts.callback}else if((2===o||1===o)&&this.__state.renderInvoked&&this._contextChanged()&&(!this.__state.renderComplete||2!==o)){var u=this.renderOpts,d=u.containerElement,f=u.callback;this._renderChart(d,"base",1===o&&f,this.__state.currChartMsg,this.__state.currChartMsgStyle),1===o&&delete this.renderOpts.callback}},e.prototype._clearPrevContext=function(){this.__state.prevChartMsg="",this.__state.prevChartMsgStyle={}},e.prototype._contextChanged=function(){if(this.__state.currChartMsg!==this.__state.prevChartMsg)return this.__state.prevChartMsg=this.__state.currChartMsg,this.__state.prevChartMsgStyle=this.__state.currChartMsgStyle,!0;var e=this.__state.prevChartMsgStyle&&this.__state.prevChartMsgStyle.image,t=this.__state.currChartMsgStyle&&this.__state.currChartMsgStyle.image,n=this.__state.prevChartMsgStyle&&this.__state.prevChartMsgStyle.message,r=this.__state.currChartMsgStyle&&this.__state.currChartMsgStyle.message;return!(!e||e.imageHAlign===t.imageHAlign&&e.imageVAlign===t.imageVAlign&&e.imageAlpha===t.imageAlpha&&e.imageScale===t.imageScale&&n.color===r.color&&n.fontFamily===r.fontFamily&&n.fontSize===r.fontSize)&&(this.__state.prevChartMsg=this.__state.currChartMsg,this.__state.prevChartMsgStyle=this.__state.currChartMsgStyle,!0)},e.prototype._sudoSetState=function(e){this.__state.prevState=this.__state.state,this.__state.state=e,(0,i.triggerEvent)("stateChanged",this,{prevState:z[this.__state.prevState],state:z[this.__state.state]},[this.id])},e.prototype._getState=function(){return z[this.__state.state]},e.prototype._addChartDependency=function(e,t){this._deps[e]&&this._removeChartDependency(e),this._deps[e]=t,t.getState=Y,t.getMsg=q,t.getMsgStyle=K,Object.assign(t,t.resolve(t.scopeOf))},e.prototype._removeChartDependency=function(e){this._deps[e]&&(this._deps[e].removed=!0,delete this._deps[e])},e.prototype._parsePolicies=function(e){var t=this.args,n=void 0,o=void 0,a=void 0;for(n in e)if(g["default"][n]instanceof Array)o=t[e[n][0]],this[n]=void 0===o?e[n][1]:o;else for(a in"object"!==r(this[n])&&(this[n]={}),e[n])o=t[e[n][a][0]],this[n][a]=void 0===o?e[n][a][1]:o},e.prototype.hasRendered=function(){return!(!this.jsVars.hcObj||!this.jsVars.hcObj.hasRendered)},e.prototype.setTransparent=function(e){var t;(t=this.jsVars)&&("boolean"!=typeof e&&null!==e&&(e=!0),t.transparent=null!==e&&!0===e)},e.prototype.addEventListener=function(e,t){return(0,i.addListener)(e,t,this)},e.prototype.on=function(e,t){return this.addEventListener(e,t)},e.prototype.removeEventListener=function(e,t){return(0,i.removeListener)(e,t,this)},e.prototype.formatNumber=function(e,t,n,r){var a,i=this.apiInstance||{},s=i.numberFormatter,l=void 0,c=void 0,u=void 0,d=void 0;switch(a=Q(n),n=n&&Z(n)||{},""===a?s?u=s:(c=Q(l=this.options.dataSource.chart||{}),$[c]?u=$[c]:$[c]=u=new m["default"](i,l)):(l=this.options.dataSource.chart||{},c=Q(l=(0,o.extend2)((0,o.extend2)({},l),n)),$[c]?u=$[c]:$[c]=u=new m["default"](i,l)),(t&&t.toLowerCase?t:"").toLowerCase()){case"yaxisvalues":d=u.yAxis(e,r);break;case"xaxisvalues":d=u.xAxis(e);break;case"scale":d=u.scale(e);break;default:d=u.dataLabels(e,r)}return d},e.prototype.clone=function(t,n){var a=void 0===t?"undefined":r(t),i={},s=(0,o.extend2)({},this.args,!1,!0);switch(function(e,t,n){var r,o;for(r in e)if(e[r]instanceof Array)t[e[r][0]]=n[r];else for(o in e[r])t[e[r][o][0]]=n[r][o]}(g["default"],s,this),delete s.id,delete s.animate,delete s.stallLoad,i.link=s.link,(s=(0,o.extend2)({},s,!1,!0)).link=i.link,a){case"object":(0,o.extend2)(s,t,!1,!0);break;case"boolean":n=t}return n?s:new e(s)},e.prototype.isActive=function(){if(!this.ref||window.document.getElementById(this.id)!==this.ref)return!1;try{return L.test("FusionCharts")}catch(e){return!1}},e.prototype.chartType=function(t,n){var o=this.options,a=void 0;if("string"==typeof t&&""!==t){if(n="object"===(void 0===n?"undefined":r(n))?n:{},a=t.replace(/[\?\#][\s\S]*$/g,""),o.chartType=a.replace(/^[\s\S]*\//gi,""),o.chartTypeSourcePath=-1===a.indexOf("/")?n.chartTypeSourcePath||e.options.chartTypeSourcePath||"":a.replace(/[^\/]*?$/gi,""),"zoomscatter"===o.chartType&&!document.createElement("canvas").getContext){var s=te(this),l=s.msgStyle,c=s.msg;return this._addChartDependency("chartModuleLoad",{scopeOf:this,opts:{value:o.chartType},resolve:function(){return{state:1,msgStyle:l,msg:c}}}),void this._setState()}(0,i.triggerEvent)("resourceRequested",this),this._addChartDependency("chartModuleLoad",{scopeOf:this,opts:{value:o.chartType},resolve:se}),"undefined"!=typeof n.dataSource&&null!==n.dataSource&&this.setChartData(n.dataSource,n.dataFormat,n.dataConfiguration),this._setState()}else if(t!==undefined){var u=te(this),d=u.msgStyle,f=u.msg;return this._addChartDependency("chartModuleLoad",{resolve:function(){return{state:1,msgStyle:d,msg:f}}}),this._setState(),void(0,i.triggerEvent)("charttypeinvalid",this,{},[this.id])}return(o.chartType||"").toLowerCase()},e.prototype.setChartDataUrl=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",t=arguments[1],n=arguments[2],r=arguments[3],o=arguments[4];this._addChartDependency("data",{scopeOf:this,opts:{url:e,format:t,config:n,callback:r,silent:o},resolve:oe}),this._setState()},e.prototype.setChartData=function(e,t,n,o){var a,i=!(arguments.length>4&&arguments[4]!==undefined)||arguments[4],s=this.options;if(void 0!==e&&null!==e){if("string"!=typeof t)switch(void 0===e?"undefined":r(e)){case"function":e=e.call(this,s.dataConfiguration),t=this.args.dataFormat="JSON";break;case"string":t=this.args.dataFormat=/^\s*?\{[\s\S]*\}\s*?$/g.test(t)?"JSON":"XML";break;case"object":t=this.args.dataFormat="JSON"}}else t=T;a=D(t),F.test(a)?this.setChartDataUrl(e,a,n,o,i):(this._addChartDependency("data",{opts:{data:e,sanitisedFormat:a,config:n,callback:o,silent:i},scopeOf:this,resolve:re}),!this.disposed&&this._setState())},e.prototype.getChartData=function(){var e,t,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:T,r=arguments[1],o=arguments[2],a=(0,s.getDepsByType)("transcoder")[D(n)](),i=this.options,l=this.apiInstance,c=!o&&(e=l&&l.getCollatedData&&l.getCollatedData(i.dataSource))?e:i.dataSource;return!(t=a?a.fromJSON?a.fromJSON(c,this):{error:new Error("Unable to convert data.")}:{error:new Error("Data format not recognized.")}).error&&i.error&&(t.error=i.error),r?t:t.data},e.prototype.dataReady=function(e){return e?this.__state.dataAvailable:this.__state.dataReady},e.prototype.setChartAttribute=function(e,t){var n,o,a,s;if("string"==typeof e)(e={})[arguments[0]]=t;else if(null===e||"object"!==(void 0===e?"undefined":r(e)))return;if(s=0,a=(n=this.getChartData(T))&&(n.chart||n.graph||n.map)){for(o in e)s+=1,null!==e[o]?a[o.toLowerCase()]=e[o]:delete a[o.toLowerCase()];s>0&&("undefined"==typeof a.animation&&(a.animation="0"),this.setChartData(n,T))}else(0,i.raiseError)(this,"2105141421","run","#setChartAttribute()","Could not retrieve attribute list. Is data ready?")},e.prototype.getChartAttribute=function(e){var t,n,r=this.getChartData(T),o=r&&(r.chart||r.graph||r.map);if(0===arguments.length||void 0===e||void 0===o)return o;if("string"==typeof e)t=o[e.toString().toLowerCase()];else if(e instanceof Array)for(t={},n=0;n<e.length;n+=1)t[e[n]]=o[e[n].toString().toLowerCase()];else(0,i.raiseError)(this,"25081429","param","~getChartAttribute()",'Unexpected value of "attribute"');return t},e.prototype.render=function(e,t,n){return this.disposed||(this.__state.beforeRenderFired=!1,this._addChartDependency("chartContainer",{scopeOf:this,opts:{containerElement:e,insertMode:t,callback:n},resolve:le}),this.__state.renderInvoked=!0),this._setState(),this},e.prototype._renderChart=function(e,t,n,r,o){var a=arguments.length>5&&arguments[5]!==undefined&&arguments[5];if(!this.disposed){var s,l=this,c=function(){!0!==l.disposed&&l._render(e,t,n&&function(){if(n)try{n.call(l,l.options.containerElement)}catch(e){setTimeout(function(){throw e})}},r,o)};return a||this.__state.beforeRenderFired?c():(this.__state.beforeRenderFired=!0,(0,i.triggerEvent)("beforeRender",this,s={container:l.options.containerElement,width:this.width,height:this.height,renderer:this.options.renderer},void 0,c,function(){(0,i.triggerEvent)("renderCancelled",l,s),this.__state.renderInvoked=!1})),this}},e.prototype._render=function(t,n,r,o,a){var s=this;s.apiInstance&&s.apiInstance.removeJob("resizeScheduled"),s.__state.beforedrawFired?((0,d["default"])(e,s,t,n,r,o,a),s.__state.beforedrawFired=!0):(0,i.triggerEvent)("beforedraw",s,{},void 0,function(){(0,d["default"])(e,s,t,n,r,o,a)},function(){(0,i.triggerEvent)("drawCancelled",s)})},e.prototype.resizeTo=function(e,t,n){var o=this,a=o.width,s=o.height,l=o.__state;return(o.apiInstance&&o.apiInstance.config||{}).resize=!0,"object"===(void 0===e?"undefined":r(e))&&(n=t,t=e.h,e=e.w),e=null===e||void 0===e?a:e.toString().replace(I,""),t=null===t||void 0===t?s:t.toString().replace(I,""),!0!==n&&(0,i.triggerEvent)("beforeresize",o,{currentWidth:a,currentHeight:s,newWidth:e,newHeight:t},void 0,function(){o.width=e,o.height=t,o.scheduleResize({width:e,height:t}),o.apiInstance&&o.apiInstance.addJob("resized"+G++,function(){(0,i.triggerEvent)("resized",o,{id:o.id,width:o.width,height:o.height,prevWidth:a,prevHeight:s,pixelWidth:o.ref&&o.ref.offsetWidth||0,pixelHeight:o.ref&&o.ref.offsetHeight||0,originalWidth:l.renderedWidth,originalHeight:l.renderedHeight})},h.priorityList.postRender)},function(){(0,i.triggerEvent)("resizecancelled",o,{currentWidth:a,currentHeight:s,cancelledTargetWidth:e,cancelledTargetHeight:t})}),this},e.prototype.dispose=function(){var t=this,n={};(0,i.triggerEvent)("beforeDispose",t,n,void 0,function(){t._addChartDependency("dispose",{scopeOf:t,resolve:function(t){for(var r in t._dispose(),t._addChartDependency("dispose",{resolve:function(){return{state:0}}}),t._setState(),(0,i.triggerEvent)("disposed",t,n),(0,i.disposeEvents)(t),delete e.items[t.id],t)t.hasOwnProperty(r)&&delete t[r];return t.disposed=!0,{state:0}}})},function(){(0,i.triggerEvent)("disposeCancelled",t,n)})},e.prototype._dispose=function(){var e,t=this.jsVars;this.apiInstance&&(this.apiInstance.removeJob("resizeScheduled"),this.apiInstance.remove({instant:!0}),delete this.apiInstance,delete t.instanceAPI),(e=window[this.id])&&(!function n(e){var t,r,o,a=e.attributes;if(a)for(t=a.length-1;t>=0;t-=1)"function"==typeof e[o=a[t].name]&&(e[o]=null);if(a=e.childNodes)for(r=a.length,t=0;t<r;t+=1)n(e.childNodes[t])}(e),e.parentNode&&e.parentNode.removeChild(e)),t.container=null},e.prototype._config=function(e,t){var n,r,o=this.jsVars,a=o.msgStore,i=o.cfgStore,s=this.options;for(n in r={LoadingText:"loadMessage",ChartNotSupported:"typeNotSupportedMessage",RenderChartErrorText:"renderErrorMessage",XMLLoadingText:"dataLoadStartMessage",ChartNoDataText:"dataEmptyMessage",LoadDataErrorText:"dataLoadErrorMessage",InvalidXMLText:"dataInvalidMessage"},"string"==typeof e&&arguments.length>1&&(n=e,(e={})[n]=t),e)"undefined"!=typeof a[n]?a[n]=e[n]:i[n.toLowerCase()]=e[n],r[n]?s[r[n]]=e[n]:s[n]=e[n]},e.prototype.configure=function(e,t){var n;e&&("string"==typeof e?(n={})[e]=t:n=e,this._config(n))},e.prototype.print=function(e){var t=this.apiInstance,n=(0,o.extend2)({},e);if(t.config.isPrinting||!t.config.hasRendered)return!1;(0,i.triggerEvent)("BeforePrint",this,n,void 0,function(){var e,r,a,s,l,c=t.getFromEnv("chart-container"),u=[],d=c.parentNode,f=document.body||document.getElementsByTagName("body")[0],h=f.childNodes;if(t.config.isPrinting=!0,(0,o.fcEach)(h,function(e,t){1===e.nodeType&&(u[t]=e.style.display,e.style.display="NONE")}),!1!==n.hideButtons&&(l=t.getChildren("chartMenuBar"))){for(s=0,e=(r=l.config.componentGroups[0].config.symbolList).length;s<e;s++)if((a=r[s])instanceof t.getFromEnv("toolBoxAPI").SymbolWithContext){a=a.getListRefernce().getFirstContainer();break}a.config.container.style.display="NONE"}f.appendChild(c),window.print(),setTimeout(function(){a&&(a.config.container.style.display="visible"),d.appendChild(c),(0,o.fcEach)(h,function(e,t){1===e.nodeType&&(e.style.display=u[t])}),!1!==n.hideButtons&&a&&(a.config.container.style.display="visible"),t.config.isPrinting=!1,(0,i.triggerEvent)("PrintComplete",t.getFromEnv("chartInstance"),n)},1e3)},function(){(0,i.triggerEvent)("PrintCancelled",t.getFromEnv("chartInstance"),n)})},e.prototype.getSVGString=function(e,t){var n,r=this.apiInstance,o=r&&r.getFromEnv("paper");if(t&&t.keepImages&&(n=!0),"function"!=typeof e)return o&&o.toSVG?o.toSVG(n):"<svg></svg>";r.addJob("getSVG",function(){e(o&&o.toSVG&&o.toSVG(n))},h.priorityList.postRender)},e.prototype.lockResize=function(e){return"boolean"!=typeof e?!!this.jsVars.resizeLocked:this.jsVars.resizeLocked=e},e.prototype.showChartMessage=function(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},o=this,a=o.apiInstance,i=function(){o._showChartMessage(e,t,n,r)};return a&&("base"===a.getName()?o.addEventListener("renderComplete",i):i()),e},e.prototype._showChartMessage=function(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},i=this,s=i.jsVars,l=i.apiInstance,c=i.options,u=void 0;l._hideChartMessage(),void 0!==e?(u={fontFamily:(0,o.pluck)(r.font,c.baseChartMessageFont,"Verdana,sans"),fontSize:(0,o.pluck)(r.fontSize,c.baseChartMessageFontSize,10),color:(0,o.pluck)(r.color&&(0,a.convertColor)(r.color,r.alpha),c.baseChartMessageColor)},s.msgStore[e]&&(e=s.msgStore[e]),l.addJob("showMsg",function(){t&&l&&l.config.hasRendered?(l._show&&l._show(),i.showMessage(e,u,n)):(l._hide&&l._hide(),l.setChartMessage(e,{_chartMessageStyle:u}),l.drawChartMessage())},h.priorityList.postRender)):i.hideChartMessage()},e.prototype._resize=function(){var e=this.jsVars,t=this.apiInstance,n=e.container;this.__state.resize=!0,t?(t.config.elScroll=!1,t.getFromEnv("animationManager").setAnimationState("resize"),t.addToEnv("chartWidth",n.offsetWidth),t.addToEnv("chartHeight",n.offsetHeight),this._addChartDependency("resize",{resolve:function(){return{state:3}}})):this._addChartDependency("resize",{resolve:function(){return{state:1}}}),this._setState(),this.__state.resize=!1},e.prototype.hideChartMessage=function(){var e=this.apiInstance;e._hideChartMessage(),e._show&&e._show()},e.prototype.showMessage=function(){var e,t,n,r=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",a=arguments[1],i=arguments[2],s=this.apiInstance,l=s.config,c=s.getFromEnv("paper"),u=s.getFromEnv("smartLabel"),d=s.getFromEnv("animationManager"),f=s.getGraphicalElement("messageText"),h=s.getGraphicalElement("messageVeil"),p=c.width,g=c.height;t=s.getChildContainer("messageGroup"),d.setAnimationState("showmessage"),(e=d.setAnimation({el:t||"group",attr:{name:"messageGroup"},component:s,label:"group"})).show().toFront(),t||s.addChildContainer("messageGroup",e),(h=d.setAnimation({el:h||"rect",attr:{x:0,y:0,width:p,height:g,fill:"rgba(0,0,0,0.2)",stroke:"none"},container:e,component:s,label:"rect"})).off("fc-click",e.hide),h.show().toFront().attr("cursor",i?o.POINTER:"default"),i&&h.on("fc-click",s._hideChartMessage,s),s.addGraphicalElement("messageVeil",h),u.setStyle(a),n=u.getSmartText(r,p-(l.marginRight||0)-(l.marginLeft||0),g-(l.marginTop||0)-(l.marginBotton||0)),(f=d.setAnimation({el:f||"text",attr:{"font-size":a.fontSize,"font-family":a.fontFamily,fill:a.color,text:n.text,"line-height":14,x:p/2,y:g/2},container:e,component:s,label:"text"})).attr("cursor",i?o.POINTER:"default")[i?"click":"unclick"](s._hideChartMessage,s).show().toFront(),s.addGraphicalElement("messageText",f)},e.prototype.scheduleResize=function(e){var t,n=this,r=n.ref,a=n.apiInstance;r&&(n._addChartDependency("resize",{resolve:function(){return{state:2}}}),a.addJob("resizeScheduled",function(){t=(0,o.normalizeCSSDimension)(e.width,e.height,r),"undefined"!=typeof e.width&&(r.style.width=t.width),"undefined"!==e.height&&(r.style.height=t.height),n._resize()},h.priorityList.instant))},e}();ue.id="FusionCharts",ue.options={html5ScriptNameSuffix:".js",html5ScriptNamePrefix:"fusioncharts.","export":{useCanvas:!1},scriptBaseUri:(ce=function(e){var t,n,r=window.document.getElementsByTagName("script"),o=r.length;for(n=0;n<o;n+=1)if(void 0!==(t=r[n].getAttribute("src"))&&null!==t&&null!==t.match(e))return t.replace(e,"$1")}(O),void 0===ce?((0,i.raiseError)(ue,"1603111624","run",">GenericRuntime~scriptBaseUri","Unable to locate FusionCharts script source location (URL)."),""):ce)},n.p=ue.getScriptBaseURI(),ue.version=M.split(/[\.\-]/g),ue.items={},(0,i.setRootSender)(ue),j=!1,o.hasSVG||ue.addDep({name:"vml",type:"dependency",extension:n.e(13).then(n.t.bind(null,722,7))}),(V=ue.getDep("vml","dependency"))?V.then?V.then(function(e){ue.addDep(e["default"]),W()})["catch"](function(){(0,i.raiseError)(ue,"162162788","run",">RendererError~VMLRendererLoad","Unable to load FusionCharts VML renderer.")}):(ue.addDep(V),W()):W(),ue.addEventListener("dependencyAdded",function(e,t){if("maps"===t.type){var n={};n[t.name]=["fusioncharts.maps.js"],ue.getDep("dependency")||ue.addDep({name:"dependency",extension:n})}}),ue.addEventListener("initialized",function he(){ue.removeEventListener("initialized",he),B=new f["default"](document.body||document.getElementsByTagName("body")[0]),u.globalStore.addToEnv("smartLabel",B)}),ue.addDep(p["default"]),ue.addDep(v["default"]),ue.addDep(C["default"]),ue.addDep(y["default"]),ue.addDep(b["default"]),ue.addDep(x["default"]),ue.addDep(w["default"]),t["default"]=ue},function(e,t,n){"use strict";t.__esModule=!0,t._manageInteractiveSpace=t.domInsertModes=t.normalizeCSSDimension=t.isXSSSafe=t.getSuggestiveRotation=t.extent=t.normalizeAngle=t.safeMin=t.safeMax=t.LINE_HEIGHT_FACTOR=t.PROJECT_VERSION=t.trimString=t.datasetFactory=t.componentFactory=t.dropHash=t.BGRATIOSTRING=t.VISIBLE=t.touchEnabled=t.MOUSEMOVE=t.MOUSEOUT=t.FIT=t.FILL=t.TILE=t.COMMA=t.animationObjStr=t.configStr=t.ROUND=t.BLANK=t.POINTER=t.HAND=t.BOLD=t.NORMAL=t.mathRound=t.mathAbs=t.animHelperFN=t.xssEncode=t.MathExt=t.defaultGaugePaletteOptions=t.crispBound=t.hasAttribDefs=t.setAttribDefs=t.parseConfiguration=t.attribDefs=t.canvasBorderColorStr=t.defined=t.pInt=t.attrTypeBool=t.canvasBGAlphaStr=t.attrTypeNum=t.DASH_DEF=t.chartPaletteStr=t.TRACKER_FILL=t.capitalizeString=t.getContainerBackgroundColor=t.appliedCSS=t.validhexcolor=t.pseudoEval=t.executeJS=t.componentDispose=t.createDialog=t.chartAPI=t.getDashStyle=t.getAxisLimits=undefined,t.supportedStyle=t.parsexAxisStyles=t.setLineHeight=t.setImageDisplayMode=t.getLinkAction=t.lineHeightFactor=t.isEdge=t.isIE9=t.isIE11=t.isIE=t.CREDIT_REGEX=t.hasSVG=t.stableSort=t.stubFN=t.preDefStr=t.getCripValues=t.getCrispValue=t.isArray=t.getImageURL=t.regReplaceEscape=t.regescape=t.CREDIT_STRING=t.CREDIT_HREF=t.creditLabel=t.hasTouch=t.toPrecision=t.parseTooltext=t.parseUnsafeString=t.parsePointValue=t.fastTrim=t.gradientify=t.rgbaToHex=t.toRaphaelColor=t.clampNumber=t.getColorCodeString=t.getFirstValue=t.getDefinedColor=t.fcEach=t.bindSelectionEvent=t.getViewPortDimension=t.getPosition=t.getValidValue=t.pluckFontSize=t.getComparatorFN=t.dehashify=t.hashify=t.polyPathToPath=t.createElement=t.getFirstDefinedValue=t.pluckNumber=t.pluck=t.imprint=t.extend2=t.getTouchEvent=t.getMouseCoordinate=t.getEventCoordinate=t.regex=t.CLICK_THRESHOLD_PIXELS=t.TOUCH_THRESHOLD_PIXELS=t.cleanColorCode=t.startsRGBA=t.visibleStr=t.hiddenStr=t.TEXTANCHOR=t.COMMASPACE=t.PXSTRING=t.HUNDREDSTRING=t.SHAPE_RECT=t.FC_CONFIG_STRING=t.POSITION_END=t.POSITION_START=t.POSITION_MIDDLE=t.POSITION_CENTER=t.POSITION_LEFT=t.POSITION_BOTTOM=t.POSITION_RIGHT=t.POSITION_TOP=t.STRINGUNDEFINED=t.DECIMALSTRING=t.ONESTRING=t.TESTSTR=t.SAMPLESTRING=t.ZEROSTRING=t.COMMASTRING=t.OBJECTSTRING=t.STRINGSTRING=t.BREAKSTRING=t.HASHSTRING=t.COLOR_TRANSPARENT=t.COLOR_WHITE=t.COLOR_GLASS=t.COLOR_BLACK=t.BLANKSTRING=t.UNDERSCORE=t.UNDEF=t.isFirefox=t.BLANKSTRINGPLACEHOLDER=t.getEmptyConstractor=t.addInterActiveEvtName=t.isInterActiveEvt=undefined;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(119),a=c(n(120)),i=c(n(121)),s=n(122),l=n(123);function c(e){return e&&e.__esModule?e:{"default":e}}var u,d,f,h,p,g,m,v,y,b,x,w,C,_,E,k=1.2,S=window,A="none",T=(E=S.navigator.userAgent.toLowerCase(),!(!(_=-1!=E.indexOf("msie")&&S.parseInt(E.split("msie")[1]))||9!==_)),M=/Firefox/i.test(S.navigator.userAgent),O=S.document,L=S.navigator,I=Boolean(S.SVGAngle||O.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),F=/trident/i.test(L.userAgent)&&/rv:11/i.test(L.userAgent)&&!window.opera,N=/msie/i.test(L.userAgent)&&!S.opera,D=/Edge/.test(L.userAgent),P=/[\\\"<>;&]/,R=/^[^\S]*?(sf|f|ht)(tp|tps):\/\//i,j="rgba(192,192,192,"+(N?.002:1e-6)+")",V="<br />",B="",G=B,H=",",z="r",$="px",X="http://www.fusioncharts.com?BS=FCHSEvalMark&utm_source=FCS_trial&pver="+escape("3.13.2-sr.1"),U=parseFloat,W=/fusioncharts\.com|fusioncharts\.github\.io$/i,Y=/\{br\}\s*/gi,q=/^#?/,K=/^rgba/i,J=/[#\s]/gi,Z=Math.abs,Q=Math.pow,ee=Math.round,te=Q(2,-24),ne="ontouchstart"in O,re=ne&&!(L.maxTouchPoints||L.msMaxTouchPoints),oe=!W.test(S.location.hostname),ae=Math,ie=ae.max,se=ae.min,le={pageX:0,pageY:0},ce=["8BBA00","F6BD0F","FF654F","AFD8F8","FDB398","CDC309","B1D0D2","FAD1B9","B8A79E","D7CEA5","C4B3CE","E9D3BE","EFE9AD","CEA7A2","B2D9BA"],ue={paletteColors:[ce,ce,ce,ce,ce],bgColor:["CBCBCB,E9E9E9","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["50,50","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendDarkColor:["333333","60634E","025B6A","A15E01","68001B"],trendLightColor:["f1f1f1","F3F5DD","EDFBFE","FFF5E8","FFD1DD"],pointerBorderColor:["545454","60634E","415D6F","845001","68001B"],pointerBgColor:["545454","60634E","415D6F","845001","68001B"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["545454","545454","415D6F","845001","68001B"],canvasBorderAlpha:[100,100,100,90,100],altHGridColor:["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"],altHGridAlpha:[50,35,10,20,15],altVGridColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],altVGridAlpha:[10,20,10,15,10],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],legendBgColor:["ffffff","ffffff","ffffff","ffffff","ffffff"],legendBorderColor:["545454","545454","415D6F","845001","D55979"],plotFillColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],plotBorderColor:["999999","8A8A8A","6BA9B6","C1934D","FC819F"],msgLogColor:["717170","7B7D6D","92CDD6","965B01","68001B"],TrendLightShadeOffset:30},de={numDecimals:function(e){e=Xe(e,10);var t=Xe((e=Math.abs(e))-Math.floor(e),10),n=String(t).length-2;return n=n<0?0:n,n},toRadians:function(e){return e/180*Math.PI},toDegrees:function(e){return e/Math.PI*180},flashToStandardAngle:function(e){return-1*e},standardToFlashAngle:function(e){return-1*e},flash180ToStandardAngle:function(e){var t=360-((e%=360)<0?e+360:e);return 360==t?0:t},getAngularPoint:function(e,t,n,r){return r*=Math.PI/180,{x:e+n*Math.cos(r),y:t-n*Math.sin(r)}},remainderOf:function(e,t){return Math.ceil(e%t)},boundAngle:function(e){return e>=0?de.prototype.remainderOf(e,360):360-de.prototype.remainderOf(Math.abs(e),360)},toNearestTwip:function(e){var t=e,n=t<0?-1:1,r=Math.abs(t),o=Math.round(100*r),a=Math.floor(o/5);return n*((Number(String(o-5*a))>2?5*a+5:5*a)/100)},roundUp:function(e,t){t=t||2;var n=Math.pow(10,t);return e*=n,e=Math.round(Number(String(e))),e/=n}},fe=2*ae.PI,he={chart2D:{bgColor:"bgColor",bgAlpha:"bgAlpha",bgAngle:"bgAngle",bgRatio:"bgRatio",canvasBgColor:"canvasBgColor",canvasBaseColor:"canvasBaseColor",divLineColor:"divLineColor",legendBgColor:"legendBgColor",legendBorderColor:"legendBorderColor",toolTipbgColor:"toolTipbgColor",toolTipBorderColor:"toolTipBorderColor",baseFontColor:"baseFontColor",anchorBgColor:"anchorBgColor"},chart3D:{bgColor:"bgColor3D",bgAlpha:"bgAlpha3D",bgAngle:"bgAngle3D",bgRatio:"bgRatio3D",canvasBgColor:"canvasBgColor3D",canvasBaseColor:"canvasBaseColor3D",divLineColor:"divLineColor3D",divLineAlpha:"divLineAlpha3D",legendBgColor:"legendBgColor3D",legendBorderColor:"legendBorderColor3D",toolTipbgColor:"toolTipbgColor3D",toolTipBorderColor:"toolTipBorderColor3D",baseFontColor:"baseFontColor3D",anchorBgColor:"anchorBgColor3D"}},pe=I?0:.5,ge=function(){if(Array.isArray)return Array.isArray;var e=Object.prototype.toString,t=e.call([]);return function(n){return e.call(n)===t}}(),me=function(e){return e.pageX===u&&(e.pageX=e.clientX+O.body.scrollLeft+O.documentElement.scrollLeft,e.pageY=e.clientY+O.body.scrollTop+O.documentElement.scrollTop),e},ve=(b="innerWidth",x="innerHeight",w=O.documentElement||O.body,C=w,"innerWidth"in S?C=S:(b="clientWidth",x="clientHeight"),function(){return{width:C[b],height:C[x],scrollTop:w.scrollTop,scrollLeft:w.scrollLeft}}),ye=(y=/^@window_/g,function(e,t,n){var r,o,a,i,s=e.replace(/\[[\'\"]/g,".").replace(/[\'\"]\]/g,B).replace(/\[/g,".@window_").replace(/\]/g,B).split("."),l=S,c=B;for(a=s.length,i=0;i<a;i+=1){if(r=l,(o=s[i]).match(y))l=l[S[o.replace(y,B)]];else{if(l===u||null===l)throw(c||o).replace(y,B)+" is not defined";l=l[o]}c=o}if(!l||"function"!=typeof l.call&&l!==S.alert){if("void"===c)return;setTimeout(function(){throw o.replace(y,B)+"() is not a function"},0)}else l===S.alert?l(t):n?l.apply(r,t.split("__FC_ARG_SEP__")):l.call(r,t)}),be=(v={},function(e){var t,n,r,o,a,i=(e=e||this)&&e.FCcolor||e,l=i.color,c=i.ratio,d=i.angle,f=i.alpha,h=i.r,p=i.cx,g=i.cy,m=i.fx,y=i.fy,b=i.gradientUnits,x=i.x1,w=i.y1,C=i.x2,_=i.y2,E=i.radialGradient,k=1;if("string"==typeof e)return v[a="~"+e]||(v[a]=e.replace(/^#?([a-f0-9]{3,6})/gi,"#$1"));if(!(l=l||B))return t;if(a=[l,f,c,d,h,p,g,b,m,y,x,C,w,_,E].join("_").replace(/[\(\)\s,\xb0#]/g,"_"),v[a])return v[a];if(c=c&&(c+B).split(H)||[],f=(f||0===f)&&(f+B).split(H)||[],l=l.split(H))if(t=B,1===l.length)o=l[0].replace(/^#?([a-f0-9]{3,6})/gi,"$1"),t=f.length?"rgba("+(0,s.HEXtoRGB)(o).join(H)+","+.01*U(f[0])+")":o.replace(/^#?([a-f0-9]{3,6})/gi,"#$1");else{for(n=0,r=l.length;n<r;n++)o=l[n].replace(/^#?([a-f0-9]{3,6})/gi,"$1"),isNaN(c[n])||(c[n]=U(c[n]),o+=":"+c[n],isNaN(c[n+1])||(c[n+1]=U(c[n+1])+c[n])),isNaN(f[n])||f[n]===B||(k=.01*f[n]),l[n]="rgba("+(0,s.HEXtoRGB)(o).join(H)+","+k+")",isNaN(c[n])||(c[n]===c[n-1]&&(c[n]+=.001),l[n]=l[n]+":"+c[n]);t+=l.join("-"),h!==u||m!==u||p!==u||i.radialGradient?t="xr("+[m,y,h,p,g,b].join(",")+")"+t:(t="-"+t,x===u&&w===u&&C===u&&_===u||(t="("+[x,w,C,_,b].join(",")+")"+t),d===u&&(d=0),t=360-U(d)%360+t)}return v[a]=t}),xe=function(){return""},we=function(){var e,t=[{regex:/((^|[^\\])((\\)\\)*\$cleanvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cleanvalue))/gi,argIndex:2,argKey:"cleanvalue"},{regex:/((^|[^\\])((\\)\\)*\$datavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$datavalue))/gi,argIndex:2,argKey:"formattedValue"},{regex:/((^|[^\\])((\\)\\)*\$value)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$value))/gi,argIndex:3,argKey:"value"},{regex:/((^|[^\\])((\\)\\)*\$label)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$label))/gi,argIndex:2,argKey:"label"},{regex:/((^|[^\\])((\\)\\)*\$seriesname)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$seriesname))/gi,argIndex:5,argKey:"seriesname"},{regex:/((^|[^\\])((\\)\\)*\$yaxisname)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$yaxisname))/gi,argIndex:2,argKey:"yaxisName"},{regex:/((^|[^\\])((\\)\\)*\$xaxisname)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xaxisname))/gi,argIndex:2,argKey:"xaxisName"},{regex:/((^|[^\\])((\\)\\)*\$displayvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$displayvalue))/gi,argIndex:3,argKey:"displayvalue"},{regex:/((^|[^\\])((\\)\\)*\$xdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xdatavalue))/gi,argIndex:2,argKey:"xDataValue"},{regex:/((^|[^\\])((\\)\\)*\$ydatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$ydatavalue))/gi,argIndex:2,argKey:"yDataValue"},{regex:/((^|[^\\])((\\)\\)*\$xvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xvalue))/gi,argIndex:3,argKey:"x"},{regex:/((^|[^\\])((\\)\\)*\$yvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$yvalue))/gi,argIndex:3,argKey:"y"},{regex:/((^|[^\\])((\\)\\)*\$zvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$zvalue))/gi,argIndex:3,argKey:"z"},{regex:/((^|[^\\])((\\)\\)*\$name)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$name))/gi,argIndex:3,argKey:"name"},{regex:/((^|[^\\])((\\)\\)*\$percentValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentValue))/gi,argIndex:2,argKey:"percentValue"},{regex:/((^|[^\\])((\\)\\)*\$startValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$startValue))/gi,argIndex:2,argKey:"startValue"},{regex:/((^|[^\\])((\\)\\)*\$startDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$startDataValue))/gi,argIndex:2,argKey:"startDataValue"},{regex:/((^|[^\\])((\\)\\)*\$endValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$endValue))/gi,argIndex:2,argKey:"endValue"},{regex:/((^|[^\\])((\\)\\)*\$endDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$endDataValue))/gi,argIndex:2,argKey:"endDataValue"},{regex:/((^|[^\\])((\\)\\)*\$axisName)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$axisName))/gi,argIndex:2,argKey:"axisName"},{regex:/((^|[^\\])((\\)\\)*\$cumulativevalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativevalue))/gi,argIndex:2,argKey:"cumulativeValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativedatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativedatavalue))/gi,argIndex:2,argKey:"cumulativeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativePercentValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativePercentValue))/gi,argIndex:2,argKey:"cumulativePercentValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativepercentdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativepercentdatavalue))/gi,argIndex:2,argKey:"cumulativePercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$sum)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$sum))/gi,argIndex:2,argKey:"sum"},{regex:/((^|[^\\])((\\)\\)*\$unformattedsum)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedsum))/gi,argIndex:2,argKey:"unformattedSum"},{regex:/((^|[^\\])((\\)\\)*\$targetvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$targetvalue))/gi,argIndex:2,argKey:"targetValue"},{regex:/((^|[^\\])((\\)\\)*\$targetdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$targetdatavalue))/gi,argIndex:2,argKey:"targetDataValue"},{regex:/((^|[^\\])((\\)\\)*\$processname)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$processname))/gi,argIndex:2,argKey:"processName"},{regex:/((^|[^\\])((\\)\\)*\$start)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$start))/gi,argIndex:2,argKey:"start"},{regex:/((^|[^\\])((\\)\\)*\$end)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$end))/gi,argIndex:2,argKey:"end"},{regex:/((^|[^\\])((\\)\\)*\$percentcomplete)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentcomplete))/gi,argIndex:2,argKey:"percentComplete"},{regex:/((^|[^\\])((\\)\\)*\$taskpercentcomplete)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskpercentcomplete))/gi,argIndex:2,argKey:"taskPercentComplete"},{regex:/((^|[^\\])((\\)\\)*\$taskstartdate)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskstartdate))/gi,argIndex:2,argKey:"taskStartDate"},{regex:/((^|[^\\])((\\)\\)*\$taskenddate)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskenddate))/gi,argIndex:2,argKey:"taskEndDate"},{regex:/((^|[^\\])((\\)\\)*\$tasklabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tasklabel))/gi,argIndex:2,argKey:"taskLabel"},{regex:/((^|[^\\])((\\)\\)*\$date)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$date))/gi,argIndex:2,argKey:"date"},{regex:/((^|[^\\])((\\)\\)*\$percentofprevvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentofprevvalue))/gi,argIndex:2,argKey:"percentOfPrevValue"},{regex:/((^|[^\\])((\\)\\)*\$sname)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$sname))/gi,argIndex:2,argKey:"sName"},{regex:/((^|[^\\])((\\)\\)*\$lname)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lname))/gi,argIndex:2,argKey:"lName"},{regex:/((^|[^\\])((\\)\\)*\$fromid)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromid))/gi,argIndex:2,argKey:"fromId"},{regex:/((^|[^\\])((\\)\\)*\$fromlabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromlabel))/gi,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toid)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toid))/gi,argIndex:2,argKey:"toId"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/gi,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$fromxvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromxvalue))/gi,argIndex:2,argKey:"fromXValue"},{regex:/((^|[^\\])((\\)\\)*\$fromyvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromyvalue))/gi,argIndex:2,argKey:"fromYValue"},{regex:/((^|[^\\])((\\)\\)*\$fromxdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromxdatavalue))/gi,argIndex:2,argKey:"fromXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromydatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromydatavalue))/gi,argIndex:2,argKey:"fromYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromlabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromlabel))/gi,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toxvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toxvalue))/gi,argIndex:2,argKey:"toXValue"},{regex:/((^|[^\\])((\\)\\)*\$toyvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toyvalue))/gi,argIndex:2,argKey:"toYValue"},{regex:/((^|[^\\])((\\)\\)*\$toxdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toxdatavalue))/gi,argIndex:2,argKey:"toXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$toydatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toydatavalue))/gi,argIndex:2,argKey:"toYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/gi,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$openvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$openvalue))/gi,argIndex:2,argKey:"openValue"},{regex:/((^|[^\\])((\\)\\)*\$closevalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$closevalue))/gi,argIndex:2,argKey:"closeValue"},{regex:/((^|[^\\])((\\)\\)*\$highvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$highvalue))/gi,argIndex:2,argKey:"highValue"},{regex:/((^|[^\\])((\\)\\)*\$lowvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lowvalue))/gi,argIndex:2,argKey:"lowValue"},{regex:/((^|[^\\])((\\)\\)*\$opendatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$opendatavalue))/gi,argIndex:2,argKey:"openDataValue"},{regex:/((^|[^\\])((\\)\\)*\$closedatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$closedatavalue))/gi,argIndex:2,argKey:"closeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$highdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$highdatavalue))/gi,argIndex:2,argKey:"highDataValue"},{regex:/((^|[^\\])((\\)\\)*\$lowdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lowdatavalue))/gi,argIndex:2,argKey:"lowDataValue"},{regex:/((^|[^\\])((\\)\\)*\$maxvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$maxvalue))/gi,argIndex:2,argKey:"maxValue"},{regex:/((^|[^\\])((\\)\\)*\$maxdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$maxdatavalue))/gi,argIndex:2,argKey:"maxDataValue"},{regex:/((^|[^\\])((\\)\\)*\$minvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$minvalue))/gi,argIndex:2,argKey:"minValue"},{regex:/((^|[^\\])((\\)\\)*\$mindatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$mindatavalue))/gi,argIndex:2,argKey:"minDataValue"},{regex:/((^|[^\\])((\\)\\)*\$q1)/gi,argIndex:2,argKey:"Q1"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQ1)/gi,argIndex:2,argKey:"unformattedQ1"},{regex:/((^|[^\\])((\\)\\)*\$q3)/gi,argIndex:2,argKey:"Q3"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQ3)/gi,argIndex:2,argKey:"unformattedQ3"},{regex:/((^|[^\\])((\\)\\)*\$median)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$median))/gi,argIndex:2,argKey:"median"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMedian)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMedian))/gi,argIndex:2,argKey:"unformattedMedian"},{regex:/((^|[^\\])((\\)\\)*\$SD)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$SD))/gi,argIndex:2,argKey:"SD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedsd)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedsd))/gi,argIndex:2,argKey:"unformattedsd"},{regex:/((^|[^\\])((\\)\\)*\$QD)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$QD))/gi,argIndex:2,argKey:"QD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQD)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedQD))/gi,argIndex:2,argKey:"unformattedQD"},{regex:/((^|[^\\])((\\)\\)*\$MD)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$MD))/gi,argIndex:2,argKey:"MD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMD)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMD))/gi,argIndex:2,argKey:"unformattedMD"},{regex:/((^|[^\\])((\\)\\)*\$mean)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$mean))/gi,argIndex:2,argKey:"mean"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMean)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMean))/gi,argIndex:2,argKey:"unformattedMean"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMean)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMean))/gi,argIndex:2,argKey:"unformattedMean"},{regex:/((^|[^\\])((\\)\\)*\$volumeValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$volumeValue))/gi,argIndex:2,argKey:"volumeValue"},{regex:/((^|[^\\])((\\)\\)*\$volumeDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$volumeDataValue))/gi,argIndex:2,argKey:"volumeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromXValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromXValue))/gi,argIndex:2,argKey:"fromXValue"},{regex:/((^|[^\\])((\\)\\)*\$fromYValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromYValue))/gi,argIndex:2,argKey:"fromYValue"},{regex:/((^|[^\\])((\\)\\)*\$fromXDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromXDataValue))/gi,argIndex:2,argKey:"fromXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromYDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromYDataValue))/gi,argIndex:2,argKey:"fromYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromLabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromLabel))/gi,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toXValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toXValue))/gi,argIndex:2,argKey:"toXValue"},{regex:/((^|[^\\])((\\)\\)*\$toYValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toYValue))/gi,argIndex:2,argKey:"toYValue"},{regex:/((^|[^\\])((\\)\\)*\$toXDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toXDataValue))/gi,argIndex:2,argKey:"toXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$toYDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toYDataValue))/gi,argIndex:2,argKey:"toYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/gi,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$tlLabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tlLabel))/gi,argIndex:5,argKey:"tlLabel"},{regex:/((^|[^\\])((\\)\\)*\$trlabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$trlabel))/gi,argIndex:5,argKey:"trLabel"},{regex:/((^|[^\\])((\\)\\)*\$bllabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$bllabel))/gi,argIndex:5,argKey:"blLabel"},{regex:/((^|[^\\])((\\)\\)*\$brlabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$brlabel))/gi,argIndex:5,argKey:"brLabel"},{regex:/((^|[^\\])((\\)\\)*\$rowlabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$rowlabel))/gi,argIndex:5,argKey:"rowLabel"},{regex:/((^|[^\\])((\\)\\)*\$columnlabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$columnlabel))/gi,argIndex:5,argKey:"columnLabel"},{regex:/((^|[^\\])((\\)\\)*\$errorvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorvalue))/gi,argIndex:2,argKey:"errorValue"},{regex:/((^|[^\\])((\\)\\)*\$errordatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errordatavalue))/gi,argIndex:2,argKey:"errorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$errorpercentvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorpercentvalue))/gi,argIndex:2,argKey:"errorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$errorpercentdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorpercentdatavalue))/gi,argIndex:2,argKey:"errorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorValue))/gi,argIndex:2,argKey:"horizontalErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorDataValue))/gi,argIndex:2,argKey:"horizontalErrorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorValue))/gi,argIndex:2,argKey:"verticalErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorDataValue))/gi,argIndex:2,argKey:"verticalErrorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorPercent)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorPercentValue))/gi,argIndex:2,argKey:"horizontalErrorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorPercentDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorPercentDataValue))/gi,argIndex:2,argKey:"horizontalErrorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorPercent)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorPercentValue))/gi,argIndex:2,argKey:"verticalErrorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorPercentDataValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorPercentDataValue))/gi,argIndex:2,argKey:"verticalErrorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$xaxispercentvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xaxispercentvalue))/gi,argIndex:2,argKey:"xAxisPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$percentdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentdatavalue))/gi,argIndex:2,argKey:"percentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$trType)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$trType))/gi,argIndex:4,argKey:"trtype"},{regex:/((^|[^\\])((\\)\\)*\$tlType)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tlType))/gi,argIndex:4,argKey:"tltype"},{regex:/((^|[^\\])((\\)\\)*\$brType)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$brType))/gi,argIndex:4,argKey:"brtype"},{regex:/((^|[^\\])((\\)\\)*\$blType)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$blType))/gi,argIndex:4,argKey:"bltype"},{regex:/((^|[^\\])((\\)\\)*\$colorRangeLabel)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$colorRangeLabel))/gi,argIndex:5,argKey:"colorRangeLabel"},{regex:/((^|[^\\])((\\)\\)*\$zdatavalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$zdatavalue))/gi,argIndex:2,argKey:"zDataValue"},{regex:/((^|[^\\])((\\)\\)*\$svalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$svalue))/gi,argIndex:3,argKey:"svalue"},{regex:/((^|[^\\])((\\)\\)*\$positiveErrorValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$positiveErrorValue))/gi,argIndex:2,argKey:"positiveErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$negativeErrorValue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$negativeErrorValue))/gi,argIndex:2,argKey:"negativeErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$datasvalue)/gi,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$datasvalue))/gi,argIndex:2,argKey:"formattedsValue"}],n=[],r=t.length;for(e=0;e<r;e+=1)n.push(e);return function(){var e,r,o,a,i,s=arguments[0],l=arguments[1];if(ge(l)||(l=n),s)for(i=l.length,a=0;a<i;a+=1)(o=t[l[a]])&&(e=Re(je((r=arguments[o.argIndex])&&r[o.argKey],B)+B),s=(s=s.replace(o.regex,"$2$4"+(o.parsingMethod?o.parsingMethod(e):e))).replace(o.escapeRegex,"$2$4$5"));return s}}(),Ce=(p=function(e,t,n,r,o){var a,i=Math.abs(t-e),s=i/(n+1);return m(i,n,r)||(o&&(a=r>1?2:.5,Number(s)/Number(r)<a&&(r/=10)),i=(s=(Math.floor(s/r)+1)*r)*(n+1)),i},g=function(e){e=Math.abs(e);var t=String(e),n=0,r=t.indexOf(".");return-1!=r&&(n=t.length-r-1),n},m=function(e,t,n){return!(g(e/(t+1))>g(n))},function(e,t,n,r,o,a,i,s){var l,c,d,f,h,g,v,y,b,x,w,C,_,E,k,S,A,T,M,O,L,I,F,N,D,P,R,j=0;if((e=!0===isNaN(e)||e===u?.1:e)===(t=!0===isNaN(t)||t===u?0:t)&&0===e&&(e=.1),o=void 0===o||o,a=void 0===a||a,v=Math.floor(Math.log(Math.abs(e))/Math.LN10),y=Math.floor(Math.log(Math.abs(t))/Math.LN10),b=Math.max(y,v),x=Math.pow(10,b),Math.abs(e)/x<2&&Math.abs(t)/x<2&&(b--,x=Math.pow(10,b)),w=Math.floor(Math.log(e-t)/Math.LN10),C=Math.pow(10,w),e-t>0&&x/C>=10&&(x=C,b=w),_=(Math.floor(e/x)+1)*x,E=t<0?(Math.floor(Math.abs(t/x))+1)*x*-1:a?0:(E=Math.floor(Math.abs(t/x)-1)*x)<0?0:E,o&&e<=0&&(_=0),l=!(!n&&0!==n),c=!(!r&&0!==r),d=!1===l||!0===l&&Number(n)<e&&e-Number(n)>te?_:Number(n),f=!1===c||!0===c&&Number(r)>t&&Number(r)-t>te?E:Number(r),h=Math.abs(d-f),g=x,!1===c&&!1===l&&s)if(d>0&&f<0){for(S=!1,T=p(f,d,i,A=g>10?g/10:g,!1)-(i+1)*A;!1===S;)if(m(T+=(i+1)*A,i,A))if(k=T-h,M=T/(i+1),O=(L=Math.min(Math.abs(f),d))==Math.abs(f)?-1:1,0===i)S=!0;else for(F=1;F<=Math.floor((i+1)/2);F++)(I=M*F)-L>k||I>L&&(P=T-I)/M==Math.floor(P/M)&&I/M==Math.floor(I/M)&&(h=T,d=-1==O?P:I,f=-1==O?-I:-P,S=!0)}else k=(N=p(f,d,i,g,!0))-h,h=N,d>0?d+=k:f-=k;else s&&(R=function(e,t,n){for(var r,o=0,a=1;!m(t,r=0===(r=e+o*a)?1:r,n);){if((o=-1==a||o>e?++o:o)>25){r=0;break}a=o<=e?-1*a:1}return r},i>0&&(0===(D=R(i,h,g))&&(D=R(i,h+1,g),j=1),i=D));return{Max:d,Min:f,Range:h,interval:g,divGap:(d-f+j)/(i+1)}}),_e=((h=function(e,t,n){var r,o=n.jsVars&&n.jsVars.smartLabel,a=e.offsetWidth,i=e.offsetHeight,s=this.chart,l=this.title,c=n._chartMessageImageStyle,d=$e(t);l.y=i/2,l.x=a/2,s.bgSWF=l.text=u,t=d.string,d.image?(s.bgSWF=t,s.bgImageHAlign=c.imageHAlign,s.bgImageVAlign=c.imageVAlign,s.bgImageScale=c.imageScale,s.bgSWFAlpha=c.imageAlpha):t!==u&&(o?(We(l.style),o.setStyle(l.style),r=o.getSmartText(Be(t),a,i),l.text=r.text):l.text=Be(t),l.verticalAlign="middle"),l.style=n._chartMessageStyle,delete n._chartMessageImageStyle,delete n._chartMessageStyle}).prototype={chart:{events:{},margin:[0,0,0,0],backgroundColor:{FCcolor:{alpha:0}}},credits:{href:X,text:"FusionCharts XT Trial",enabled:oe},legend:{enabled:!1},title:{text:"",style:{fontFamily:"Verdana,sans",fontSize:"10px",color:"#666666"}},plotOptions:{series:{}},series:[{}],exporting:{enabled:!1},nativeMessage:!0}).constructor=h,Ee={click:!0,dragstart:!0,dragmove:!0,dragend:!0,dblclick:!0,mousedown:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,"fc-click":!0,"fc-dragstart":!0,"fc-dragmove":!0,"fc-dragend":!0,"fc-dbclick":!0,"fc-mousedown":!0,"fc-mousemove":!0,"fc-mouseout":!0,"fc-mouseover":!0,"fc-mouseup":!0,"fc-pinchstart":ne||re,"fc-pinchmove":ne||re,"fc-pinchend":ne||re,touchstart:ne||re,touchmove:ne||re,touchend:ne||re,touchcancel:ne||re},ke={stripWhitespace:/\s+/g,dropHash:q,startsRGBA:K,cleanColorCode:J,breakPlaceholder:Y,hexcode:/^#?[0-9a-f]{6}/i},Se={colors:{B90000:"B90000",FFFFFF:"FFFFFF",AAAAAA:"AAAAAA",c000000:"000000"},BLANK:"",DATASET:"dataset",NORMALSTRING:"normal",PX:"px",INPUT:"input",LABEL:"label",BLANKSPACE:" ",COMMA:",",OBJECTBOUNDINGBOX:"objectBoundingBox",GROUPID:"groupId",EVENTARGS:"eventArgs",CIRCLE:"circle",POLYGON:"polygon",SPOKE:"spoke",RECTANGLE:"rectangle",ROLLOUT:"rollout",ROLLOVER:"rollover",DATAPLOTCLICK:"dataplotclick",defaultFontStr:"Verdana,sans",line:"line",bar:"bar",column:"column",volume:"volume",HUNDREDSTRING:"100",SEVENTYSTRING:"70",NINETYSTRING:"90",AUTOSTRING:"auto",configStr:"config",animationObjStr:"animationObj",showHoverEffectStr:"showHoverEffect",hiddenStr:"hidden",visibleStr:"visible",columnStr:"columns",barStr:"bars",barHotStr:"bar-hot",colHotStr:"col-hot",shadowStr:"shadow",dataLabelStr:"datalabel",errorBarStr:"errorBar",errorHotStr:"error-hot",errorShadowStr:"error-shadow",negativeValueStr:"negative-values",positiveValueStr:"positive-values",zeroPlaneStr:"zero-plane",categoryPlotsStr:"categoryplots",noneStr:"none",setRolloverAttrStr:"setRolloverAttr",setRolloutAttrStr:"setRolloutAttr",elementStr:"element",hotElementStr:"hotElement",strokeWidthStr:"stroke-width",strokeDashStr:"stroke-dasharray",strokeLineJoinStr:"stroke-linejoin",miterStr:"miter",visiblilityStr:"visibility",ROUND:"round",PERCENTAGESTRING:"%",pStr:"p",sStr:"s",divLineAlpha3DStr:"divLineAlpha3D",divLineAlphaStr:"divLineAlpha",altVGridColorStr:"altVGridColor",altVGridAlphaStr:"altVGridAlpha",altHGridColorStr:"altHGridColor",altHGridAlphaStr:"altHGridAlpha",PLOTFILLCOLOR_STR:"plotFillColor",UNDERSCORE:"_",gaugeFillColorStr:"gaugeFillColor",gaugeBorderColorStr:"gaugeBorderColor",NORMAL:"normal",BOLD:"bold",POINTER:"pointer",DEFAULT:"default",POSITION_MIDDLE:"middle",POSITION_START:"start",POSITION_TOP:"top",POSITION_BOTTOM:"bottom",POSITION_END:"end"},Ae=function(){var e,t,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],r=arguments[1],o=n.length,a=-1;if("function"==typeof r){for(;++a<o;)if(null!=(e=r(n[a],a,n))&&e>=e)for(t=e;++a<o;)null!=(e=r(n[a],a,n))&&e>t&&(t=e)}else for(;++a<o;)if(null!=(e=n[a])&&e>=e)for(t=e;++a<o;)null!=(e=n[a])&&e>t&&(t=e);return t},Te=function(){var e,t,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],r=arguments[1],o=n.length,a=-1;if("function"==typeof r){for(;++a<o;)if(null!=(e=r(n[a],a,n))&&e<=e)for(t=e;++a<o;)null!=(e=r(n[a],a,n))&&e<t&&(t=e)}else for(;++a<o;)if(null!=(e=n[a])&&e<=e)for(t=e;++a<o;)null!=(e=n[a])&&e<t&&(t=e);return t};function Me(e){return void 0!==e&&null!==e}function Oe(e){e.data&&(e.data.elScroll=!1)}function Le(e,t){var n,r,o,i,s,l={top:0,left:0},c=t&&t.config,u=t&&(t.eventListeners||(t.eventListeners=[])),d=t&&(c.isEvntAdded||(c.isEvntAdded=!1));if(e){for(l.top=e.offsetTop,l.left=e.offsetLeft,n=e;(n=n.parentNode)&&"BODY"!==n.tagName;)o=r=0,(i=S.getComputedStyle(n).getPropertyValue("transform"))&&"none"!==(s=i.replace(/\)/,"").split(/\,/))[0]&&(N||F||T?(r=-s[s.length-4],o=-s[s.length-3]):(r=-s[s.length-2],o=-s[s.length-1])),/fixed/.test(void 0)&&t&&(c.itemFixed=!0),l.top-=n.scrollTop||o||0,l.left-=n.scrollLeft||r||0,t&&!d&&u.push(a["default"].listen(n,"scroll",Oe,c)),t&&!d&&u.push(a["default"].listen(n,"transitionend",Oe,c));for(;n;)l.top-=n.scrollTop||0,l.left-=n.scrollLeft||0,n=n.parentNode;for(e=e.offsetParent;e;)l.top+=e.offsetTop,l.left+=e.offsetLeft,e=e.offsetParent;l.top+=Ie(F?O.documentElement.scrollTop:D?O.body.scrollTop:S.pageYOffset,S.scrollY,O.documentElement.scrollTop),l.left+=Ie(F?O.documentElement.scrollLeft:D?O.body.scrollLeft:S.pageXOffset,S.scrollX,O.documentElement.scrollLeft),t&&!d&&u.push(a["default"].listen(S,"resize",Oe,c)),t&&!d&&u.push(a["default"].listen(S,"scroll",Oe,c)),t&&!d&&(c.isEvntAdded=!0)}return l}function Ie(){var e,t,n;for(t=0,n=arguments.length;t<n;t+=1)if(((e=arguments[t])||!1===e||0===e)&&!isNaN(e=Number(e)))return e;return u}function Fe(e){var t=e&&(e.sourceEvent||e.originalEvent||e);return ne&&t&&t.touches&&t.touches[0]||t||le}function Ne(e){var t,n,r,o=e.data,a=o.chart,i=a.getFromEnv("animationManager"),s=e.state,l=me(Fe(e.originalEvent)),c=a.getChildren("canvas")[0],u=t=c.getGraphicalElement("resizeBox"),d=o.layerX=l.pageX-o.chartPosLeft,f=o.layerY=l.pageY-o.chartPosTop,h=d-o.ox,p=f-o.oy,g=o.bBox,m=o.ox,v=o.oy,y=o.zoomX,b=o.zoomY,x=o.canvasY,w=o.canvasX,C=o.canvasW,_=o.canvasH,E=o.canvasX2,k=o.canvasY2,S=o.strokeWidth,A=o.attr;switch(s){case"start":n=Le(this),o.chartPosLeft=n.left,o.chartPosTop=n.top,d=l.pageX-o.chartPosLeft,f=l.pageY-o.chartPosTop,o.oy=f,o.ox=d,o.allowMove=!1,A.x=0,A.y=0,A.height=0,A.width=0,u=c.addGraphicalElement("resizeBox",i.setAnimation({el:t||"rect",attr:A,container:a.getChildContainer("trackerGroup")})).show(),t||c.addGraphicalElement("resizeBox",u),d>w&&d<E&&f>x&&f<k&&(o.allowMove=!0),e.target._isTrackerElem&&(o.allowMove=!1);break;case"end":r={chart:a,selectionLeft:(g=u.getBBox()).x,selectionTop:g.y,selectionHeight:g.height,selectionWidth:g.width,originalEvent:e.originalEvent},o.isDragged&&(o.selectionEnd&&o.selectionEnd(r),o.isDragged=0),u.hide(),delete o.oy,delete o.ox;break;default:if(!o.allowMove)return;h=d-o.ox,p=f-o.oy,g=o.bBox,m=o.ox,v=o.oy,o.isDragged||(r={chart:a,selectionLeft:(y?se(m,m+h):w)+.5*S,selectionTop:(b?se(v,v+p):x)+.5*S,selectionHeight:0,selectionWidth:0,originalEvent:e.originalEvent},o.selectionStart&&o.selectionStart(r),o.isDragged=1),h=-(m-se(m-(m-ie(m+h,w)),E)),p=-(v-se(v-(v-ie(v+p,x)),k)),i.setAnimation({el:u,attr:{x:(y?se(m,m+h):w)+.5*S,y:(b?se(v,v+p):x)+.5*S,width:y?Z(h):C,height:b?Z(p):_}})}}function De(e){var t=e.data,n=e.originalEvent,r=n.target||n.originalTarget||n.srcElement||n.relatedTarget||n.fromElement,o=n.type,a=n.layerX,i=n.layerY;a===u&&(a=n.pageX-t.chartPosLeft,i=n.pageY-t.chartPosTop),"mousedown"===o&&(r.ishot=a>t.canvasX&&a<t.canvasX2&&i>t.canvasY&&i<t.canvasY2),"mouseup"===o&&setTimeout(function(){r.ishot=!1},1)}function Pe(){var e,t,n;for(t=0,n=arguments.length;t<n;t+=1)if((e=arguments[t])||!1===e||0===e)return e;return B}function Re(e){return e&&e.replace(/\$/g,"$$$$")}function je(e,t){return e||!1===e||0===e?e:t}function Ve(){var e,t,n;for(t=0,n=arguments.length;t<n;t+=1)if((e=arguments[t])||!1===e||0===e)return e;return u}function Be(e){return"string"==typeof e?e.replace(Y,V):B}function Ge(e,t,n){var r=n%2/2,o=ee(e+r)-r;return{position:o,distance:ee(e+t+r)-r-o}}function He(e,t){ye(e.substr(0,e.indexOf("__FC_ARG_SEP__")).replace(/\s/g,B),e.substr(e.indexOf("__FC_ARG_SEP__")).replace(/__FC_ARG_SEP__/,""),t)}function ze(e){/^j\s*\-/.test(e)?He(e.replace(/^j\s*\-/,B).replace(/\-/,"__FC_ARG_SEP__")):He(e.replace(/^javascript\s*\:/i,B).replace(/[\'\"]?\s*\,\s*[\'\"]?/g,"__FC_ARG_SEP__").replace(/\(\s*[\'\"]?(.*)\)\;?/,"__FC_ARG_SEP__$1").replace(/[\'\"]?$/,""),!0)}function $e(e){var t={image:!1};return e!==u&&(e=e.replace(/^\s+/,B).replace(/\s+$/,B),/^i\s*[\-]\s*/i.test(e)?(t.image=!0,t.string=e.replace(/^i\s*[\-]\s*/i,B)):t.string=e.replace(/^\\/,B)),t}function Xe(e,t){var n=Q(10,t);return ee(e*n)/n}function Ue(e,t,n){return n||n===u?[e,t]:A}function We(e,t){return"object"!==(void 0===e?"undefined":r(e))?B:((e.fontSize||e["font-size"])&&(!e.fontSize&&e["font-size"]&&(e.fontSize=e["font-size"],delete e["font-size"]),e.lineHeight=(parseFloat(e.fontSize)||t||10)*k+"px",delete e["line-height"]),!e.lineHeight&&e["line-height"]&&(e.lineHeight=e["line-height"],delete e["line-height"]),e.lineHeight)}function Ye(e,t){return e-t}function qe(e,t){return t-e}t.isInterActiveEvt=function(e){return!!Ee[e]},t.addInterActiveEvtName=function(e){e&&e.toLowerCase&&(Ee[e.toLowerCase()]=!0)},t.getEmptyConstractor=function(){return function(){}},t.BLANKSTRINGPLACEHOLDER="#BLANK#",t.isFirefox=M,t.UNDEF=u,t.UNDERSCORE="_",t.BLANKSTRING=G,t.COLOR_BLACK="000000",t.COLOR_GLASS="rgba(255, 255, 255, 0.3)",t.COLOR_WHITE="FFFFFF",t.COLOR_TRANSPARENT="rgba(0,0,0,0)",t.HASHSTRING="#",t.BREAKSTRING=V,t.STRINGSTRING="string",t.OBJECTSTRING="object",t.COMMASTRING=",",t.ZEROSTRING="0",t.SAMPLESTRING="Ay0",t.TESTSTR="Ag",t.ONESTRING="1",t.DECIMALSTRING=".",t.STRINGUNDEFINED="undefined",t.POSITION_TOP="top",t.POSITION_RIGHT="right",t.POSITION_BOTTOM="bottom",t.POSITION_LEFT="left",t.POSITION_CENTER="center",t.POSITION_MIDDLE="middle",t.POSITION_START="start",t.POSITION_END="end",t.FC_CONFIG_STRING="_FCconf",t.SHAPE_RECT="rect",t.HUNDREDSTRING="100",t.PXSTRING=$,t.COMMASPACE=", ",t.TEXTANCHOR="text-anchor",t.hiddenStr="hidden",t.visibleStr="visible",t.startsRGBA=K,t.cleanColorCode=J,t.TOUCH_THRESHOLD_PIXELS=15,t.CLICK_THRESHOLD_PIXELS=5,t.regex=ke,t.getEventCoordinate=me,t.getMouseCoordinate=function(e,t,n){var r,o=O.webkitIsFullScreen||O.mozFullScreen||O.msFullscreenElement||O.fullscreenElement!==undefined,a=me(Fe(t)),i=o?a.clientX:a.pageX,s=o?a.clientY:a.pageY,l=n&&n.config,c=t.type,u=l&&l.itemFixed,h=u?S.pageYOffset||S.scrollY||O.documentElement.scrollTop:0,p=u?S.pageXOffset||S.scrollX||O.documentElement.scrollLeft:0;return l&&l.elScroll&&l.posOb?r=l.posOb:(l&&(l.elScroll=!0),r=Le(e,n),l&&(l.posOb=r)),"touchend"===c?(i=d,s=f):"touchmove"!==c&&"touchstart"!==c||(d=i,f=s),{chartX:i-r.left-p,chartY:s-r.top-h,pageX:i,pageY:s}},t.getTouchEvent=Fe,t.extend2=i["default"],t.imprint=function(e,t,n){var o;if("object"!==(void 0===e?"undefined":r(e))||null===e)return e=t,t;if("object"!==(void 0===t?"undefined":r(t))||null===t)return e;for(o in t)(e[o]===u||!n&&null===e[o])&&(e[o]=t[o]);return e},t.pluck=Ve,t.pluckNumber=Ie,t.getFirstDefinedValue=function(){var e,t,n;for(t=0,n=arguments.length;t<n;t+=1)if((e=arguments[t])||!1===e||0===e||e==B)return e;return u},t.createElement=function(e,t,n){var r,o=O.createElement(e);for(r in t)o.setAttribute(r,t[r]);return n&&n.appendChild&&n.appendChild(o),o},t.polyPathToPath=function(e){var t,n,r,o,a,i=e[0],s=e[1],l=e[2],c=e[3],u=e[4],d=e[5];if(t=[],i=S.parseInt(i,10)||0,s=U(s)||0,l=U(l)||0,c=U(c)||0,u=null===u||isNaN(u)?.5*Math.PI:u%360*(Math.PI/180),d=null===d||isNaN(d)?0:U(d),o=u,i>2)switch(n=2*Math.PI/i,d){case 0:for(r=0;r<i;r++)t.push("L",s+c*Math.cos(-o),l+c*Math.sin(-o)),o+=n;t[0]="M",t.push("Z");break;case 1:for(r=0;r<i;r++)t.push("M",s,l,"L",s+c*Math.cos(-o),l+c*Math.sin(-o)),o+=n;break;default:for(n*=.5,a=c*Math.cos(n)*(1-d),r=0;r<i;r++)t.push("L",s+c*Math.cos(-o),l+c*Math.sin(-o)),o+=n,t.push("L",s+a*Math.cos(-o),l+a*Math.sin(-o)),o+=n;t[0]="M",t.push("Z")}else 0===c?t.push("M",s,l,"L",s,l,"Z"):t.push("M",s-c,l,"A",c,c,0,0,0,s+c,l,"A",c,c,0,0,0,s-c,l,"Z");return t},t.hashify=function(e){return e&&e.replace(/^#?([a-f0-9]+)/gi,"#$1")||"none"},t.dehashify=function(e){return e&&e.replace(/^#?([a-f0-9]+)/gi,"$1")||"none"},t.getComparatorFN=function(e,t){return e?t?function(e,n){return e[t]-n[t]}:Ye:t?function(e,n){return n[t]-e[t]}:qe},t.pluckFontSize=function(){var e,t,n;for(t=0,n=arguments.length;t<n;t+=1)if(((e=arguments[t])||!1===e||0===e)&&!isNaN(e=Number(e)))return e<1?1:e;return 1},t.getValidValue=je,t.getPosition=Le,t.getViewPortDimension=ve,t.bindSelectionEvent=function(e,t){t=t||{};var n=e.config,r=e.getFromEnv("chart-container"),o=n.zoomType,s=(0,i["default"])({},t.attr||{}),l=s["stroke-width"]=Ie(s.strokeWidth,s["stroke-width"],1),c=e.eventListeners||(e.eventListeners=[]),u=Le(r,e);t=(0,i["default"])({chart:e,zoomX:/x/.test(o),zoomY:/y/.test(o),canvasY:n.canvasTop,canvasX:n.canvasLeft,canvasW:n.canvasWidth,canvasH:n.canvasHeight,canvasX2:n.canvasLeft+n.canvasWidth,canvasY2:n.canvasTop+n.canvasHeight,strokeWidth:l,chartPosLeft:u.left,chartPosTop:u.top,attr:s},t),s.stroke=Pe(s.stroke,"rgba(51,153,255,0.8)"),s.fill=Pe(s.fill,"rgba(185,213,241,0.3)"),r&&(a["default"].unlisten(r,"pointerdrag",Ne),c.push(a["default"].listen(r,"pointerdrag",Ne,t))),n.link&&(a["default"].unlisten(e.getFromEnv("chart-container"),"mouseup mousedown",De),c.push(a["default"].listen(e.getFromEnv("chart-container"),"mouseup mousedown",De,t)))},t.fcEach=function(e,t,n,r){var o;if(n||(n=e),r||(r={}),ge(e)){for(o=0;o<e.length;o+=1)if(!1===t.call(n,e[o],o,e,r))return o}else if(null!==e&&e!==u)for(o in e)if(!1===t.call(n,e[o],o,e,r))return o},t.getDefinedColor=function(e,t){return e||0===e||e===B?e:t},t.getFirstValue=Pe,t.getColorCodeString=function(e,t){var n,r,o="",a=0,i=t.split(H);for(r=i.length;a<r;a+=1)2===(n=i[a].split("-")).length?"-1"!==n[0].indexOf("dark")?o+=(0,s.getLightColor)(e,100-parseInt(n[1],10))+H:o+=(0,s.getDarkColor)(e,100-parseInt(n[1],10))+H:o+=i[a]+H;return o.substring(0,o.length-1)},t.clampNumber=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-Infinity,n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:Infinity;return e<=t?t:e>=n?n:e},t.toRaphaelColor=be,t.rgbaToHex=function(e){return"#"+("000000"+((e=e.replace("rgba(",G).split(","))[0]<<16|e[1]<<8|e[2]).toString(16)).slice(-6)},t.gradientify=xe,t.fastTrim=function(e){for(var t=/\s/,n=(e=e.replace(/^\s\s*/,"")).length;t.test(e.charAt(n-=1)););return e.slice(0,n+1)},t.parsePointValue=function(e,t){return e=e||!1===e||0===e?Number(e):NaN,isNaN(e)?null:t?Z(e):e},t.parseUnsafeString=Be,t.parseTooltext=we,t.toPrecision=Xe,t.hasTouch=re,t.creditLabel=oe,t.CREDIT_HREF=X,t.CREDIT_STRING="FusionCharts XT Trial",t.regescape=function(e){return e&&e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},t.regReplaceEscape=Re,t.getImageURL=$e,t.isArray=ge,t.getCrispValue=Ge,t.getCripValues=Ge,t.preDefStr=Se,t.stubFN=function(){},t.stableSort=function(e,t){var n,r=e.length;for(n=0;n<r;n++)e[n].ssI=n;for(e.sort(function(e,n){var r=t(e,n);return 0===r?e.ssI-n.ssI:r}),n=0;n<r;n++)delete e[n].ssI},t.hasSVG=I,t.CREDIT_REGEX=W,t.isIE=N,t.isIE11=F,t.isIE9=T,t.isEdge=D,t.lineHeightFactor=1.2,t.getLinkAction=function(e,t){var n=function(e){return e};return function(r){if(!r||!t.config.clickURLOverridesPlotLinks){var o,a,i,s,l,c,d,f,h,p,g=Ie((e.chart||e.map||{}).unescapelinks,1),m=this.entity||u,v=this.entityBox||u,y=this.link,b=y;if(y!==u){switch(g&&(y=S.decodeURIComponent?S.decodeURIComponent(y):S.unescape(y)),-1!==(y=y.replace(/^\s+/,B).replace(/\s+$/,B)).search(/^[a-z]*\s*[\-\:]\s*/i)&&(p=(l=y.split(/\s*[\-\:]\s*/)[0].toLowerCase()).length),r&&(t.config.hotElemClicked=!0),l){case"j":case"javascript":ze(y);break;case"n":y.replace(/^n\s*\-/i,"n-"),S.open(n(y.slice(2)));break;case"f":-1!==(o=(y=y.replace(/^f\s*\-/i,"f-")).indexOf("-",2))?(a=y.substr(2,o-2))&&S.frames[a]?S.frames[a].location=n(y.slice(o+1)):S.open(n(y.slice(o+1)),a):S.open(n(y.slice(2)));break;case"p":o=(y=y.replace(/p\s*\-/i,"p-")).indexOf("-",2),i=y.indexOf(H,2),-1===o&&(o=1),s=n(y.slice(o+1)),(h=S.open(s,y.substr(2,i-2),y.substr(i+1,o-i-1)))&&h.focus();break;case"newchart":case"newmap":switch(":"===y.charAt(p)&&(o=y.indexOf("-",p+1),f=y.substring(p+1,o),p=o),o=y.indexOf("-",p+1),c=y.substring(p+1,o).toLowerCase()){case"xmlurl":case"jsonurl":d=y.substring(o+1,y.length);break;case"xml":case"json":d=function(e,t){var n,r={chart:{}},o=t;if(e=e.toLowerCase(),o.linkeddata)for(n=0;n<o.linkeddata.length;n+=1)o.linkeddata[n].id.toLowerCase()===e&&(r=o.linkeddata[n].linkedchart||o.linkeddata[n].linkedmap);return r}(y.substring(o+1,y.length),e),c="json"}t.fireChartInstanceEvent("linkedChartInvoked",{alias:f,linkType:c.toUpperCase(),data:d,clickedEntity:m,clickedEntityBox:v});break;default:S.location.href=n(y)}t.fireChartInstanceEvent("linkClicked",{linkProvided:b,linkInvoked:y,linkAction:l&&l.toLowerCase()})}}}},t.setImageDisplayMode=function(e,t,n,r,o,a,i,s){var c=s.width*(r/100),u=s.height*(r/100),d=a-2*o,f=i-2*o;return(0,l.getAlignImage)(t,n,e,c,u,a,i,o,d,f)},t.setLineHeight=We,t.parsexAxisStyles=function(e,t,n,r,o){var a,i=Pe(e.labelbordercolor,t.bordercolor,n.labelbordercolor,B),l=Ve(e.labelbgcolor,t.bgcolor,n.labelbgcolor),c=Ie(e.labelborderthickness,t.borderthickness,n.labelborderthickness,1),u=Ie(n.usedataplotcolorforlabels,0)&&o||r.color;return i=i?(0,s.convertColor)(i,Ie(e.labelborderalpha,t.borderalpha,n.labelborderalpha,e.labelalpha,t.alpha,n.labelalpha,100)):B,(a={fontFamily:Ve(e.labelfont,t.font,n.labelfont,r.fontFamily),fontSize:Ve(e.labelfontsize,t.fontsize,n.labelfontsize,parseInt(r.fontSize,10))+$,color:(0,s.convertColor)(Ve(e.labelfontcolor,t.fontcolor,n.labelfontcolor,u),Ie(e.labelfontalpha,t.fontalpha,n.labelfontalpha,e.labelalpha,t.alpha,n.labelalpha,100)),fontWeight:Ie(e.labelfontbold,t.fontbold,n.labelfontbold)?"bold":"normal",fontStyle:Ie(e.labelfontitalic,t.fontitalic,n.labelfontitalic)?"italic":"normal",border:i||l?c+"px solid":B,borderColor:i,borderThickness:c,borderPadding:Ie(e.labelborderpadding,t.borderpadding,n.labelborderpadding,2),borderRadius:Ie(e.labelborderradius,t.borderradius,n.labelborderradius,0),backgroundColor:l?(0,s.convertColor)(l,Ie(e.labelbgalpha,t.bgalpha,n.labelbgalpha,e.labelalpha,t.alpha,n.labelalpha,100)):B,borderDash:Ie(e.labelborderdashed,t.borderdashed,n.labelborderdashed,0)?Ue(Ie(e.labelborderdashlen,t.borderdashlen,n.labelborderdashlen,4),Ie(e.labelborderdashgap,t.borderdashgap,n.labelborderdashgap,2)):A}).lineHeight=We(a),a},t.supportedStyle={font:"font",fontFamily:"font-family","font-family":"font-family",fontWeight:"font-weight","font-weight":"font-weight",fontSize:"font-size","font-size":"font-size",lineHeight:"line-height","line-height":"line-height",textDecoration:"text-decoration","text-decoration":"text-decoration",color:"color",whiteSpace:"white-space","white-space":"white-space",padding:"padding",margin:"margin",background:"background",backgroundColor:"background-color","background-color":"background-color",backgroundImage:"background-image","background-image":"background-image",backgroundPosition:"background-position","background-position":"background-position",backgroundPositionLeft:"background-position-left","background-position-left":"background-position-left",backgroundPositionTop:"background-position-top","background-position-top":"background-position-top",backgroundRepeat:"background-repeat","background-repeat":"background-repeat",border:"border",borderColor:"border-color","border-color":"border-color",borderStyle:"border-style","border-style":"border-style",borderThickness:"border-thickness","border-thickness":"border-thickness",borderTop:"border-top","border-top":"border-top",borderTopColor:"border-top-color","border-top-color":"border-top-color",borderTopStyle:"border-top-style","border-top-style":"border-top-style",borderTopThickness:"border-top-thickness","border-top-thickness":"border-top-thickness",borderRight:"border-right","border-right":"border-right",borderRightColor:"border-right-color","border-right-color":"border-right-color",borderRightStyle:"border-right-style","border-right-style":"border-right-style",borderRightThickness:"border-right-thickness","border-right-thickness":"border-right-thickness",borderBottom:"border-bottom","border-bottom":"border-bottom",borderBottomColor:"border-bottom-color","border-bottom-color":"border-bottom-color",borderBottomStyle:"border-bottom-style","border-bottom-style":"border-bottom-style",borderBottomThickness:"border-bottom-thickness","border-bottom-thickness":"border-bottom-thickness",borderLeft:"border-left","border-left":"border-left",borderLeftColor:"border-left-color","border-left-color":"border-left-color",borderLeftStyle:"border-left-style","border-left-Style":"border-left-style",borderLeftThickness:"border-left-thickness","border-left-thickness":"border-left-thickness"},t.getAxisLimits=Ce,t.getDashStyle=Ue,t.chartAPI=void 0,t.createDialog=_e,t.componentDispose=function Ke(){var e,t,n,r,o,a,i,s,l,c,u,d;if(this&&this!==S){if(this.disposing=!0,e=this.components)for(n in e)if((t=e[n])instanceof Array)for(r=t.length,o=0;o<r;o++)(d=t[o])&&!this.disposing&&(d.dispose?d.dispose():Ke.call(d));else t&&!t.disposing&&(t.dispose?t.dispose():Ke.call(t));for(s in a=this.graphics)if(i=a[s])if(i.hide)i.hide(),i.followers&&i.followers[0]&&(u=i.followers[0].el)&&u.hide&&u.hide();else for(l in i)(c=i[l]).hide&&c.hide();for(n in this)delete this[n]}},t.executeJS=He,t.pseudoEval=ze,t.validhexcolor=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,t.appliedCSS=["fontFamily","fontSize","fontWeight","fontStyle"],t.getContainerBackgroundColor=function(e){var t=e.options,n=t.containerBackgroundColor,r=t.containerBackgroundOpacity;return Me(e.jsVars.transparent)?r=e.jsVars.transparent?0:1:(r=parseFloat(r))<0?r=0:r>1&&(r=1),n||(n="#ffffff"),N&&!I?r?n:"transparent":(n=n.replace(/^#?([a-f0-9]+)/gi,"$1"),(n=(0,s.HEXtoRGB)(n))[3]=r.toString(),"rgba("+n.join(",")+")")},t.capitalizeString=function(e,t){return e?e.replace(t?/(^|\s)([a-z])/g:/(^|\s)([a-z])/,function(e,t,n){return t+n.toUpperCase()}):e},t.TRACKER_FILL=j,t.chartPaletteStr=he,t.DASH_DEF=A,t.attrTypeNum=1,t.canvasBGAlphaStr="canvasBgAlpha",t.attrTypeBool=2,t.pInt=function(e,t){return parseInt(e,t||10)},t.defined=Me,t.canvasBorderColorStr="canvasBorderColor",t.attribDefs=o.attribDefs,t.parseConfiguration=o.parseConfiguration,t.setAttribDefs=o.setAttribDefs,t.hasAttribDefs=o.hasAttribDefs,t.crispBound=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0,n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0,r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0,o=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0,a=arguments.length>5&&arguments[5]!==undefined?arguments[5]:{},i=arguments[6];if(r<1||n<1)return{x:e,y:t,width:n,height:r,"stroke-width":o};(o>=n||o>=r)&&(o=Math.floor(Math.min(n,r)/2)||o);var s=e,l=t,c=e+n,u=o/2,d=o%2,f=t+r;return l=a.top?Math.round(l)+u-pe:d?Math.floor(l)+.5-pe:Math.round(l)-pe,f=a.bottom?Math.round(f)-u-pe:i&&a.top?Math.round(f)+u-pe:d?Math.floor(f)+.5-pe:Math.round(f)-pe,s=a.left?Math.round(s)+u-pe:i&&a.right?Math.round(s)-u-pe:d?Math.floor(s)+.5-pe:Math.round(s)-pe,c=a.right?Math.round(c)-u-pe:d?Math.floor(c)+.5-pe:Math.round(c)-pe,{x:s,y:l,width:Math.abs(c-s),height:Math.abs(f-l),"stroke-width":o}},t.defaultGaugePaletteOptions=ue,t.MathExt=de,t.xssEncode=function(e){return null===e||void 0===e||"function"!=typeof e.toString?"":e=e.toString().replace(/&/g,"&").replace(/\'/g,"'").replace(/\"/g,""").replace(/</g,"<").replace(/>/g,">")},t.animHelperFN={getTimeByValue:function(e,t,n){var r=(e.end-e.start)/(t.endPx-t.startPx);return{start:e.start+r*(n.startPx-t.startPx),end:e.start+r*(n.endPx-t.startPx)}},animByWeight:function(e,t,n,r,o){return{start:e/--t*n*(r=r||1)+(o=o||0),end:e/t*n*r+n+o}}},t.mathAbs=Z,t.mathRound=ee,t.NORMAL="normal",t.BOLD="bold",t.HAND="pointer",t.POINTER="pointer",t.BLANK=B,t.ROUND="round",t.configStr="config",t.animationObjStr="animationObj",t.COMMA=H,t.TILE="tile",t.FILL="fill",t.FIT="fit",t.MOUSEOUT="fc-mouseout",t.MOUSEMOVE="fc-mousemove",t.touchEnabled=ne,t.VISIBLE="visible",t.BGRATIOSTRING=void 0,t.dropHash=q,t.componentFactory=function(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1,o=arguments[4];if(e&&t&&n){var a,i=e.getChildren(n)||[],s=void 0,l=void 0;for(s=0;s<r;s+=1)i&&i[s]&&!i[s].getState("removed")?l=i[s]:(l=new t,e.attachChild(l,n)),o&&o.length>s&&l.configure&&l.configure(o[s]);if(s<(a=i&&i.length))for(;s<a;s+=1)i[s]&&i[s].remove&&i[s].remove()}},t.datasetFactory=function(e,t,n){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1,o=arguments[4],a=arguments.length>5&&arguments[5]!==undefined?arguments[5]:[];if(e&&t&&n){var i,s=e.getChildren(n)||[],l=void 0,c=void 0;for(l=0;l<r;l+=1)s&&s[l]&&!s[l].getState("removed")?c=s[l]:(c=new t,e.attachChild(c,n)),c.config._childIndex=l,c.setState("_total",r),c.setJSONIndex&&c.setJSONIndex(a[l]||l),o&&o.length>l&&c.configure&&c.configure(o[l]);if(l<(i=s&&s.length))for(;l<i;l+=1)s[l]&&s[l].remove&&s[l].remove()}},t.trimString=function(e){for(var t=/\s/,n=(e=e.replace(/^\s\s*/,"")).length;t.test(e.charAt(n-=1)););return e.slice(0,n+1)},t.PROJECT_VERSION="3.13.2-sr.1",t.LINE_HEIGHT_FACTOR=k,t.safeMax=Ae,t.safeMin=Te,t.normalizeAngle=function(e,t){var n=t?360:fe;return(e=(e||0)%n)<0?n+e:e},t.extent=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],t=arguments[1],n=Ae(e,t);return[Te(e,t),n]},t.getSuggestiveRotation=function(){var e,t,n,r;return e=arguments[0],1===arguments.length?(t=e.angle,n=e.x,r=e.y):(t=e,n=arguments[1],r=arguments[2]),z+(t=t||0)+H+n+H+r},t.isXSSSafe=function(e,t){return(!t||null===R.exec(e))&&null===P.exec(e)},t.normalizeCSSDimension=function(e,t,n){var r=void 0===e?n.offsetWidth||parseFloat(n.style.width):e,o=void 0===t?n.offsetHeight||parseFloat(n.style.height):t,a={},i=n.style,s=void 0;if(i.width=r=r.toString?r.toString():"0",i.height=o=o.toString?o.toString():"0",(a.widthIsRelative=r.match(/^\s*\d*\.?\d*\%\s*$/)&&!r.match(/^\s*0\%\s*$/))&&0===n.offsetWidth)for(s=n;s=s.offsetParent;)if(s.offsetWidth>0){r=(s.offsetWidth*parseFloat(r.match(/\d*/)[0])/100).toString();break}if((a.heightIsRelative=o.match(/^\s*\d*\.?\d*\%\s*$/)&&!o.match(/^\s*0\%\s*$/))&&n.offsetHeight<=20)for(s=n;s=s.offsetParent;)if(s.offsetHeight>0){o=(s.offsetHeight*parseFloat(o.match(/\d*/)[0])/100).toString();break}return a.width=r.replace?r.replace(/^\s*(\d*\.?\d*)\s*$/gi,"$1px"):r,a.height=o.replace?o.replace(/^\s*(\d*\.?\d*)\s*$/gi,"$1px"):o,i.width=a.width,i.height=a.height,a.pixelWidth=a.widthIsRelative?n.offsetWidth:parseInt(a.width,10)||0,a.pixelHeight=a.heightIsRelative?n.offsetHeight:parseInt(a.height,10)||0,a},t.domInsertModes={REPLACE:"replace",APPEND:"append",PREPEND:"prepend"},t._manageInteractiveSpace=function(){var e,t,n,r,o,a,i,s=this.config,l=this.getChildren(),c=l.xAxis[0],u=l.yAxis[0],d=l.canvas&&l.canvas[0],f=d.config,h=f.canvasBorderWidth,p=f.canvasPaddingTop,g=f.canvasPaddingBottom,m=f.canvasPadding||0,v=f.canvasPaddingLeft,y=f.canvasPaddingRight,b=s.xAxisSpaceAllocation,x=s.yAxisSpaceAllocation[0].spaceTaken;r=s.availableHeight,t=s.xAxisSpaceAllocation=c.placeAxis(r+b.bottom),o=s.availableWidth,n=s.yAxisSpaceAllocation[0].spaceTaken=u.placeAxis(o+x.left),e=t.bottom-b.bottom,i=n.left-x.left,e&&this._allocateSpace({bottom:e}),i&&this._allocateSpace({left:i}),c&&c.setAxisDimention({x:s.canvasLeft+Math.max(v,m),y:s.canvasBottom+h,opposite:s.canvasTop-h,axisLength:s.canvasWidth-Math.max(v,m)-Math.max(y,m)}),a=s.canvasLeft-h,u&&u.setAxisDimention({x:a,y:s.canvasTop+p,axisLength:s.canvasHeight-p-g}),(e||i)&&d.asyncDraw()}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=1,a=2,i=void 0,s={},l=Math.max;t.attribDefs=r={setBorderWidth:{type:o,pAttr:"plotborderthickness"},plotborderthickness:{type:o,pAttr:"plotborderthickness"},showBorderEffect:{parser:function(){var e=arguments[1];return 1==+e.showplotborder&&.1===e.plotborderthickness?1:0}},alphaanimation:{type:o},showplotborder:{type:o,pAttr:"showplotborder"},zeroplanethickness:{type:o},showzeroplaneontop:{type:o},stickytracking:{type:o},usemessagelog:{type:o},showtooltip:{type:o,pAttr:"showtooltip"},seriesnameintooltip:{type:o},plothovereffect:{type:o,attr:"anchorhovereffect"},anchorhovereffect:{type:o,attr:"showhovereffect"},showhovereffect:{type:o},linethickness:{type:o,pAttr:"linethickness"},dashed:{type:o,pAttr:"linedashed"},linedashed:{type:o,attr:"plotborderdashed"},plotborderdashed:{type:o,pAttr:"plotborderdashed"},linedashlen:{type:o,pAttr:"linedashlen"},linedashgap:{type:o,pAttr:"linedashgap"},anchoralpha:{pAttr:"anchoralpha"},anchorsides:{type:o,pAttr:"anchorsides"},anchorradius:{type:o,pAttr:"anchorradius"},anchorbgalpha:{pAttr:"anchorbgalpha"},anchorbgcolor:{pAttr:"anchorbgcolor"},anchorbordercolor:{pAttr:"anchorbordercolor"},anchorstartangle:{type:o,pAttr:"anchorstartangle"},anchorimageurl:{pAttr:"anchorimageurl"},anchorimagescale:{type:o,pAttr:"anchorimagescale"},anchorimagealpha:{pAttr:"anchorimagealpha"},anchorimagepadding:{type:o,pAttr:"anchorimagepadding"},anchorborderthickness:{type:o,pAttr:"anchorborderthickness"},anchorshadow:{type:o,pAttr:"anchorshadow"},valuepadding:{type:o,pAttr:"valuepadding"},valueposition:{pAttr:"valueposition"},plotfillangle:{type:o,pAttr:"plotfillangle"},useplotgradientcolor:{type:o},rotatevalues:{type:o,pAttr:"rotatevalues"},includeinlegend:{type:o},connectnulldata:{type:o},plotfillalpha:{pAttr:"plotfillalpha"},alpha:{pAttr:"linealpha"},linealpha:{pAttr:"plotfillalpha"},showvalues:{type:o,pAttr:"showvalues"},showpercentvalues:{type:o,parser:function(e){return e.isstacked&&e.stack100percent?1:0}},showpercentintooltip:{type:o,parser:function(e){return e.isstacked&&e.stack100percent?1:0}},stack100percent:{type:o,attr:"usepercentdistribution"},drawfullareaborder:{type:o},use3dlineshift:{type:o},parentyaxis:{type:o},radarborderthickness:{type:o},radarborderradius:{type:o},gaugeoriginx:{type:o},hasgaugeoriginx:{attr:"gaugeoriginx"},gaugeoriginy:{type:o},hasgaugeoriginy:{attr:"gaugeoriginy"},gaugeradius:{type:o},hasgaugeradius:{attr:"gaugeradius"},showgaugeborder:{type:o},setAdaptiveMin:{type:o},adjustDiv:{type:o},axisNameWidth:{type:o},rotateAxisName:{type:o},useEllipsesWhenOverflow:{type:o},showZeroPlane:{type:o},zeroPlaneAlpha:{type:o},showZeroPlaneValue:{type:o},zeroPlaneOnTop:{type:o},trendlineThickness:{type:o},showTrendlinesOnTop:{type:o},trendlinesAreDashed:{type:o},trendlinesDashLen:{type:o},trendlinesDashGap:{type:o},showTrendlines:{type:o},showTrendlineLabels:{type:o},showLabels:{type:o},rotateLabels:{type:o},slantLabel:{type:o},showAxisValues:{type:o},showTooltip:{type:o},maxLabelHeight:{type:o},useroundedges:{type:o,pAttr:"useroundedges"},placevaluesinside:{type:o},plotpaddingpercent:{type:o},use3dlighting:{type:o,pAttr:"use3dlighting"},usedataplotcolorforlabels:{type:o},plotspacepercent:{type:o,parser:function(e){return l(e.plotspacepercent%100,0)}},ratio:{pAttr:"plotfillratio"},base:{type:o},showMinorDivLineValues:{type:o},numMinorDivLines:{type:o},majorTMNumber:{type:o},majorTMHeight:{type:o},showTickMarks:{type:o},majorTMThickness:{type:o},adjustTM:{type:a},minorTMNumber:{type:o},minorTMThickness:{type:o},tickMarkDistance:{type:o},placeTicksInside:{type:o},placeValuesInside:{type:o},axisValuePadding:{type:o},gridLineWidth:{type:o},showRadarBorder:{type:o},radarBorderThickness:{type:o},maxcolwidth:{type:o,parser:function(e){return Math.abs(e.maxcolwidth)}},maxbarheight:{type:o,parser:function(e){return Math.abs(e.maxbarheight)}},plotborderalpha:{parser:function(e,t){return t.plotborderalpha||e.plotfillalpha}},autoscale:{type:o},plotborderdashlen:{type:o,pAttr:"plotborderdashlen"},plotborderdashgap:{type:o,pAttr:"plotborderdashgap"},plotfillratio:{pAttr:"plotfillratio"},drawverticaljoins:{type:o,pAttr:"drawverticaljoins"},useforwardsteps:{type:o,pAttr:"useforwardsteps"},minimizetendency:{type:o},usepercentdistribution:{type:o},stepatmiddle:{type:o}},t.attribDefs=r,t.parseConfiguration=function(e,n,l,c,u,d){var f,h,p,g=1;for(f in t.attribDefs=r=r||s,c=c||s,d=d||s,u=u||{},e)if(!c[f]&&((h=e[f])||!1===h||0===h))switch((p=d[f]||r[f])&&p.type){case o:h=Number(h),isNaN(h)||(n[f]=h);break;case a:h=Number(h),isNaN(h)||(n[f]=!!h);break;default:n[f]=h}if(l)for(f in n)n[f]===i&&(p=d[f]||r[f])&&p.pAttr&&(n[f]=l[p.pAttr]);for(;g;)for(f in g=0,n)n[f]===i&&(p=d[f]||r[f])&&(p.attr?(h=n[p.attr])!==i&&(n[f]=h,g+=1):p.parser&&(h=p.parser(n,l,u))!==i&&(n[f]=h,g+=1))},t.setAttribDefs=function(e,n){var o,a;for(a in t.attribDefs=r=r||{},"string"==typeof e?(o={})[e]=n:o=e,o)r[a]||(r[a]=o[a])},t.hasAttribDefs=function(e){return!!r[e]}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(121),a=(r=o)&&r.__esModule?r:{"default":r};var i,s,l,c=" ",u=window,d=u.document,f="ontouchstart"in u,h="click",p="touchstart",g="touchend",m="touchmove",v="mouseout",y="mouseover",b="keydown",x=((l={}).pointerdrag={start:["mousedown"],end:["mouseup"],onStart:["mousemove"],postHandlers:{},preHandlers:{}},l.pointerhover={start:[y],end:[v]},l.click={start:[h]},l.escape={start:[b],preHandlers:{start:function(e){return!(!(e=e||u.event).keyCode||27!==e.keyCode)}}},f&&((s=l.pointerdrag).start.push(p),s.end.push(g),s.onStart.push(m),s.postHandlers.onStart=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}),l);i=(0,a["default"])({},x),t["default"]=new function(){var e={},t={},n=d.addEventListener?function(e,t,n){e.addEventListener(t,n,!1)}:function(e,t,n){e.attachEvent("on"+t,n)},r=d.removeEventListener?function(e,t,n){e.removeEventListener(t,n,!1)}:function(e,t,n){e.detachEvent("on"+t,n)},o=function(e,t,o,a){return n(e,t,o[a=a||"closure"]),function(){r(e,t,o[a])}},s=function(e,t,n){var r,a,s,l,c=[];if(l=i[t],n.start=function(t){var r=l.onStart,a=l.end,i=[],s=[],c=r&&r.length||0;for(t=t||u.event;c--;)i.push(o(e,r[c],n,"onStart"));for(c=a&&a.length||0;c--;)s.push(o(e,a[c],n,"end"));n.startUn=n.startUn?n.startUn.concat(i):i,n.endUn=n.endUn?n.endUn.concat(s):s,n.state="start",n.closure(t)},n.onStart=function(e){e=e||u.event,n.state="on",n.gDef&&n.gDef.preHandlers&&"function"==typeof n.gDef.preHandlers.onStart&&n.gDef.preHandlers.onStart(e),n.closure(e),n.gDef&&n.gDef.postHandlers&&"function"==typeof n.gDef.postHandlers.onStart&&n.gDef.postHandlers.onStart(e)},n.end=function(e){var t=n.startUn,r=n.endUn,o=t&&t.length||0;for(e=e||u.event;o--;)t[o]();for(delete n.startUn,n.startUn=[],o=r&&r.length||0;o--;)r[o]();delete n.endUn,n.endUn=[],n.state="end",n.closure(e)},l)for(s=(r=l.start).length;s--;)(a=r[s])&&c.push(o(e,a,n,"start"));return c},l=function(e,t,n){var o,a,s,l;if(l=i[t])for(s=(o=l.start).length;s--;)(a=o[s])&&r(e,a,n.start)},f=function(e){return function(t){var n,r=e.context||e.elem;t=t.originalEvent||t,n={data:e.data,type:e.type,state:e.state,isGesture:e.isGesture,target:t.target||t.srcElement,originalEvent:t},t=t||u.event,e.handler.call(r,n)}};return{listen:function(n,r,a,l,u){var h,p,g,m,v,y=this,b="string"==typeof r?r.split(c):r,x=b.length,w=[],C=function(e,t,n){w.push(function(){y.unlisten(e,t,n)})};if(n.ownerDocument&&n.ownerDocument===d)for(;x--;)p=b[x],m=Boolean(i[p]),(g={handler:v="function"==typeof a?a:a[x],elem:n,type:p,isGesture:m,gDef:m?i[p]:null,data:l,context:u,start:[],end:[],links:{prev:null,next:null}}).closure=f(g),m?((h=t[p])||(h=t[p]=[]),h.push(g),s(n,p,g)):((h=e[p])||(h=e[p]=[]),h.push(g),o(n,p,g)),C(n,p,v);else for(;x--;)p=b[x],(g={handler:v="function"==typeof a?a:a[x],elem:n,type:p,isGesture:m,data:l,context:u,start:[],end:[],links:{prev:null,next:null}}).closure=f(g),(h=e[p])||(h=e[p]=[]),h.push(g),o(n,p,g),C(n,p,v);return{unlisten:function(){for(var e=w.length;e--;)w[e]();w.length=0,w=null}}},unlisten:function(n,o,a){var s,c,u,d=!1;if(Boolean(i[o]))for(c=(s=t[o])&&s.length||0;c--;)(u=s[c]).handler===a&&u.elem===n&&(l(n,o,u),s.splice(c,1),d=!0);else for(c=(s=e[o])&&s.length||0;c--;)(u=s[c]).handler===a&&u.elem===n&&(r(n,o,u.closure),s.splice(c,1),d=!0);return d},fire:function(t,n,r,o){var i,s,l,c;if(t.ownerDocument&&t.ownerDocument===d)d.createEvent?((c=d.createEvent("HTMLEvents")).initEvent(n,!0,!0),r&&r.originalEvent&&(r.originalEvent=c),"function"==typeof t[n]&&t[n](),t.dispatchEvent(c),o&&!c.returnValue&&o(c)):((c=d.createEventObject()).eventType=n,r&&(r.originalEvent?r.originalEvent=c:(0,a["default"])(c,r)),"function"==typeof t[n]&&t[n](),t.fireEvent("on"+n,c),o&&!c.returnValue&&o(c));else for(s=(i=e[n])&&i.length||0;s--;)(l=i[s]).elem===t&&l.closure(r)}}}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e,t,n,o){var a;if((void 0===e?"undefined":r(e))!==s&&(void 0===t?"undefined":r(t))!==s)return null;if((void 0===t?"undefined":r(t))!==s||null===t)return e;if(void 0===e&&(e=t instanceof Array?[]:{}),o)for(a in t)e[a]=t[a];else u(e,t,n);return e};var o="__blank",a="␀",i="",s="object",l=function(e,t){for(var n=t.length,r=-1;n--;)if(e===t[n])return r=n;return r},c=function(e){var t,n,r;for(t=0,n=e.length,r=new Array(n);t<n;t++)r[t]=e[t];return r},u=function d(e,t,n,o,a){var i,c,u,f,h;if(a?(o.push(e),a.push(t)):(o=[e],a=[t]),t instanceof Array)for(i=0;i<t.length;i+=1){try{c=e[i],u=t[i]}catch(p){continue}(void 0===u?"undefined":r(u))!==s?n&&void 0===u||(e[i]=u):(null!==c&&(void 0===c?"undefined":r(c))===s||(c=e[i]=u instanceof Array?[]:{}),-1!==(h=l(u,a))?c=e[i]=o[h]:d(c,u,n,o,a))}else for(i in t){try{c=e[i],u=t[i]}catch(p){continue}null!==u&&(void 0===u?"undefined":r(u))===s?"[object Object]"===(f=Object.prototype.toString.call(u))?(null!==c&&(void 0===c?"undefined":r(c))===s||(c=e[i]={}),-1!==(h=l(u,a))?c=e[i]=o[h]:d(c,u,n,o,a)):"[object Array]"===f?(null!==c&&c instanceof Array||(c=e[i]=[]),-1!==(h=l(u,a))?c=e[i]=o[h]:d(c,u,n,o,a)):e[i]=u:e[i]=u}return e};t.merge=u,t.getArrayCopy=c,t.dashedAttr2CSSMap={"font-family":"fontFamily","font-size":"fontSize","text-anchor":"textAnchor","font-weight":"fontWeight","letter-spacing":"letterSpacing","font-style":"fontStyle"},t.loadRefImage=function(e,t){var n=t.src,r=e._.RefImg;r||(r=e._.RefImg=new Image),t.src!==undefined&&(r.src=n,e._.RefImg=r)},t.showRecursively=function(e){for(var t={},n=e,r=t;n;)n.node&&n.node.style&&"none"===n.node.style.display&&(n.show(),r._doHide=!0),n=n.parent,r.parent={},r=r.parent;return function(){for(var n=e,r=t;n;)r._doHide&&n.hide(),n=n.parent,r=r.parent}},t.cacher=function(e,t,n,r,s,l,u){var d=l||{},f=0;return d.__start===undefined&&(d.__start=null),d.__end===undefined&&(d.__end=null),s=s||1e3,r=r||"item",function(l){var h,p,g,m=u?l:c(arguments).join(a);return(h=d[m=m===i?o:m])?h.__prev&&(d[h.__prev].__next=h.__next,h.__next?h.__next.__prev=h.__prev:d.__end=h.__prev):(h=d[m]={},e&&(d[m][r]=n?n(e.apply(t,arguments)):e.apply(t,arguments)),null===d.__end&&(d.__end=m),++f>s&&d.__end&&(p=d[d.__end],d[p.__prev].__next=null,delete d[d.__end],d.__end=p.__prev,f--)),(g=d.__start)!==h&&(h.__prev=null,h.__next=g,g&&(g.__prev=m),d.__start=h),d[m][r]}}},function(e,t,n){"use strict";t.__esModule=!0;var r,o,a={circle:"circle",triangle:"triangle",square:"square",diamond:"diamond",poly:"poly_",spoke:"spoke_"},i="000000",s="FFFFFF",l=Math.abs,c=/\s+/g,u=/^#?/,d=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,f=",",h=/^rgba/i,p=/[#\s]/gi,g="",m="#";function v(e,t){return e=e||!1===e||0===e?Number(e):NaN,isNaN(e)?null:t?l(e):e}function y(e,t){return(e=(e=e.split(f)[t||0]).replace(c,g))==g&&(e=i),e.replace(u,m)}function b(e){return e=parseInt(e,10),(isNaN(e)||e>100||e<0)&&(e=100),e}function x(e,t){return e=Number(e),e=isNaN(e)?100:e,t!==r&&(e=e*t/100),e%101}function w(e,t){t=t<0||t>100?100:t,t/=100,e=e.replace(p,g);var n=parseInt(e,16),r=Math.floor(n/65536),o=Math.floor((n-65536*r)/256);return(i+(r*t<<16|o*t<<8|(n-65536*r-256*o)*t).toString(16)).slice(-6)}function C(e,t){t=t<0||t>100?100:t,t/=100,e=e.replace(p,g);var n=parseInt(e,16),r=Math.floor(n/65536),o=Math.floor((n-65536*r)/256);return(i+(256-(256-r)*t<<16|256-(256-o)*t<<8|256-(256-(n-65536*r-256*o))*t).toString(16)).slice(-6)}function _(e){return e.replace(p,g).replace(u,m)}t.convertColor=function(e,t,n){var r,o,a=0,i=0,l=0;if(n&&n.match(h)&&(a=(o=n.split(f))[0].slice(o[0].indexOf("(")+1),i=o[1],l=o[2],t||0===t||(t=parseInt(100*o[3].slice(0,o[3].indexOf(")")),10))),e)if(e.match(h))a=(o=e.split(f))[0].slice(o[0].indexOf("(")+1),i=o[1],l=o[2];else{switch((r=e.replace(p,g).split(f)[0]).length){case 3:r=r.charAt(0)+r.charAt(0)+r.charAt(1)+r.charAt(1)+r.charAt(2)+r.charAt(2);break;case 6:break;default:r=(r+s).slice(0,6)}a=parseInt(r.slice(0,2),16),i=parseInt(r.slice(2,4),16),l=parseInt(r.slice(4,6),16)}return t||0===t||(t=100),"string"==typeof t&&(t=t.split(f)[0]),t=parseInt(t,10)/100,"rgba("+a+f+i+f+l+f+t+")"},t.getDarkColor=w,t.getLightColor=C,t.mapSymbolName=function(e,t){var n=a.circle;return(e=v(e))>=3&&(n=(t?a.spoke:a.poly)+e),n},t.getColumnColor=function(e,t,n,o,a,i,s,l,c){var u,d,h,p,m,v,y;return d=e.split(f),h=t.split(f),p=i.split(f),y=s.split(f),e=e.replace(/\s/g,g).replace(/\,$/,g),c?u={FCcolor:{color:d[0],alpha:h[0]}}:a?(m=d[0],v=h[0],u={FCcolor:{color:w(m,75)+f+C(m,10)+f+w(m,90)+f+C(m,55)+f+w(m,80),alpha:v+f+v+f+v+f+v+f+v,ratio:"0,11,14,57,18",angle:l?"90":"0"}},p=[w(m,70)]):u={FCcolor:{color:e,alpha:t=function(e,t,n){var o,a=e.split(f);for(n!==r&&(n=Number(n.split(f)[0])),n=isNaN(n)?r:n,a[0]=x(a[0],n),o=1;o<t;o+=1)a[o]=a[0]*x(a[o],n)/100;return a.join(f)}(t,d.length),ratio:n,angle:l?-o:o}},[u,{FCcolor:{color:p[0],alpha:y[0]}}]},t.getPointColor=function(e,t){var n,r;return e=y(e),t=b(t),n=C(e,70),r=w(e,50),{FCcolor:{gradientUnits:"objectBoundingBox",cx:.4,cy:.4,r:"100%",color:n+f+r,alpha:t+f+t,ratio:o,radialGradient:!0}}},t.getAngle=function(e,t,n){var r=180*Math.atan(t/e)/Math.PI;return 2==n?r=180-r:3==n?r+=180:4==n&&(r=360-r),r},t.parseColor=_,t.getValidColor=function(e){return d.test(_(e))&&e},t.RGBtoHex=function(e){return(i+(e[0]<<16|e[1]<<8|e[2]).toString(16)).slice(-6)},t.rawRGBtoHEX=function(e){var t;return t=e.match(/[\d+]+/g).splice(0,3),(i+(t[0]<<16|t[1]<<8|t[2]).toString(16)).slice(-6)},t.HEXtoRGB=function(e){var t=parseInt(e,16),n=Math.floor(t/65536),r=Math.floor((t-65536*n)/256);return[n,r,Math.floor(t-65536*n-256*r)]},t.parsePointValue=v,t.getFirstColor=y,t.getFirstAlpha=b},function(e,t,n){"use strict";function r(e,t,n,r,o,a,i){var s={};switch(t){case"top":s.y=e;break;case"bottom":s.y=i-o-e;break;case"middle":s.y=(i-o)/2}switch(n){case"left":s.x=e;break;case"right":s.x=a-r-e;break;case"middle":s.x=(a-r)/2}return s}t.__esModule=!0,t.getAlignImage=function(e,t,n,o,a,i,s,l,c,u){var d,f,h,p,g={};switch(n){case"center":g.width=o,g.height=a,g.y=s/2-a/2,g.x=i/2-o/2;break;case"stretch":g.width=i-2*l,g.height=s-2*l,g.y=l,g.x=l;break;case"tile":g.width=o,g.height=a,g.tileInfo={},g.tileInfo.xCount=f=Math.ceil(c/o),g.tileInfo.yCount=h=Math.ceil(u/a),p=r(l,e,t,o*f,a*h,i,s),g.y=p.y,g.x=p.x;break;case"fit":d=o/a>c/u?c/o:u/a,g.width=o*d,g.height=a*d,p=r(l,e,t,g.width,g.height,i,s),g.y=p.y,g.x=p.x;break;case"fill":d=o/a>c/u?u/a:c/o,g.width=o*d,g.height=a*d,p=r(l,e,t,g.width,g.height,i,s),g.y=p.y,g.x=p.x;break;default:p=r(l,e,t,o,a,i,s),g.width=o,g.height=a,g.y=p.y,g.x=p.x}return g}},function(e,t,n){"use strict";t.__esModule=!0;var r={},o={},a=function(e,t,n,r){try{e[0].call(t,n,r||{})}catch(o){setTimeout(function(){throw o},0)}},i=function(e,t,n){var r,i=0;if(e instanceof Array&&!t.cancelled)for(;i<e.length;i+=1)if(!0!==e[i].removed){if(e[i][1]!==t.sender&&void 0!==e[i][1]||(r=e[i][1]===t.sender?t.sender:o,a(e[i],r,t,n),!0===t.detached&&(e.splice(i,1),i-=1,t.detached=!1)),!0===t.cancelled)break}else e.splice(i,1),i-=1},s=function(){this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()},l=function(){this.cancelled=!0,this.originalEvent&&this.originalEvent.stopImmediatePropagation&&this.originalEvent.stopImmediatePropagation.call?this.originalEvent.stopImmediatePropagation():this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()},c=function(){return!1==(this.detached=!0)},u=function(){this.defaultPrevented=!0,this.originalEvent&&this.originalEvent.preventDefault&&this.originalEvent.preventDefault.call&&this.originalEvent.preventDefault()},d={},f=0,h=function(e,t,n,r,o,a){var h,g,m,v,y;if(!t||!t.disposed)return e=e.toLowerCase(),g=p(e,t),m=p("*",t),v=d[e],y=d["*"],(g&&g.length||m&&m.length||v&&v.length||y&&y.length)&&(h={type:e,eventType:e,eventId:f+=1,sender:t||new Error("Orphan Event"),stopPropagation:s,stopImmediatePropagation:l,cancelled:!1,preventDefault:u,defaultPrevented:!1,originalEvent:r,detached:!1,data:n,detachHandler:c},i(y,h,n),i(v,h,n),t&&(i(p("*",t),h,n),i(p(e,t),h,n))),h&&h.defaultPrevented?a&&"function"==typeof a&&a.call(t,h,n||{}):o&&"function"==typeof o&&o.call(t,h,n||{}),!0},p=function(e,t){if("string"==typeof e)return e=e.toLowerCase(),t?t._evtListeners&&t._evtListeners[e]:d[e];v(t,"03091559","param","::removeListener",new Error("Unspecified Event Type"))},g={type:"TypeException",range:"ValueRangeException",impl:"NotImplementedException",param:"ParameterException",run:"RuntimeException",comp:"DesignTimeError",undefined:"UnspecifiedException"},m=function(e,t,n,r,o,a){var i="#"+t+" "+(e?e.id:"unknown-source")+r+" "+a+" >> ";o instanceof Error?(o.name=g[n],o.module="FusionCharts"+r,o.level=a,o.message=i+o.message,i=o.message,setTimeout(function(){throw o},0)):i+=o,h(a,e,{id:t,nature:g[n],source:"FusionCharts"+r,message:i})},v=function(e,t,n,r,o){m(e,t,n,r,o,"Error")};t.addListener=function y(e,t,n,r){var o,a,i;if(e instanceof Array){for(o=[],a=0;a<e.length;a+=1)o.push(y(e[a],t,n));return o}if("string"==typeof e){if("function"==typeof t)return e=e.toLowerCase(),n?(n._evtListeners||(n._evtListeners={}),n._evtListeners[e]instanceof Array||(n._evtListeners[e]=[]),i=n._evtListeners[e]):(d[e]instanceof Array||(d[e]=[]),i=d[e]),!function(e,t,n){var r=void 0,o=e.length;for(r=0;r<o;r+=1)if(e[r][0]===t&&e[r][1]===n&&!e[r].removed)return!0}(i,t,n)&&(r&&r.priority?i.unshift([t,n]):i.push([t,n]),t);v(n,"03091550","param","::addListener",new Error("Invalid Event Listener"))}else v(n,"03091549","param","::addListener",new Error("Unspecified Event Type"))},t.removeListener=function b(e,t,n){var r,o;if("function"==typeof t){if(e instanceof Array)for(o=0;o<e.length;o+=1)b(e[o],t,n);else if((r=p(e,n))instanceof Array&&r.length)for(o=r.length-1;o>=0;o-=1)r[o][0]===t&&r[o][1]===n&&(r[o].removed=!0)}else v(n,"03091560","param","::removeListener",new Error("Invalid Event Listener"))},t.triggerEvent=h,t.getListeners=p,t.disposeEvents=function(e){var t,n=e?e._evtListeners:d;for(t in n)n[t].length&&(n[t].length=0)},t.raiseWarning=function(e,t,n,r,o){m(e,t,n,r,o,"Warning")},t.raiseError=v,t.raiseEventGroup=function(e,t,n,o,a,i,s){var l=o.id,c=e+l;r[c]?(clearTimeout(r[c]),delete r[c]):l&&c?r[c]=setTimeout(function(){h(t,o,n,a,i,s),delete r[c]},0):h(t,o,n,a,i,s)},t.setRootSender=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};o=e}},function(e,t,n){"use strict";t.__esModule=!0,t.getDepsByType=t.getDep=t.addDep=undefined;var r=n(124),o={},a={};t.addDep=function(){for(var e=this,t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];n.length?n.forEach(function(t){var n,i,s,l,c=void 0,u=void 0;t?(c=t.extension?t.extension:t,n=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.getName&&e.getName()||e.name;return void 0===t&&(0,r.raiseError)({id:"Extension"},"90211","extension","Name",new Error("A FusionCharts extension must have a getName API or a name property.")),t&&t.toLowerCase()}(t),i=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.getType&&e.getType()||e.type;return t&&t.toLowerCase()}(t),s=t.requiresFusionCharts,i?(!o[i]&&"string"==typeof(l=i)&&(o[l]={}),(u=o[i][n]!==c)&&(o[i][n]=c)):n&&(u=a[n]!==c)&&(a[n]=c),u&&(0,r.triggerEvent)("dependencyadded",e,{name:n,type:i}),u&&s&&c(e)):(0,r.raiseError)({id:"Extension"},"90211","dependency","Extension",new Error("A FusionCharts extension must have a valid extension property."))}):(0,r.raiseError)({id:"Extension"},"90211","dependency","Extension",new Error("A FusionCharts extension must have a valid extension property."))},t.getDep=function(e,t){var n=void 0;if(e=e&&e.toLowerCase(),t&&o[t])return o[t][e];if(!t)for(var r in o)if(o.hasOwnProperty(r)&&(n=o[r][e]))return n;return a[e]},t.getDepsByType=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return""===e?o:o[e.toLowerCase()]}},function(e,t,n){"use strict";t.__esModule=!0,t.onDataUpdateCancel=t.onDataUpdateSuccess=undefined;var r=n(124);t.onDataUpdateSuccess=function(e,t){var n=e.sender,o=n.__state;o.dataReady=void 0,o.dataAvailable=!0,!0!==t.silent?!0!==n.options.safeMode||!0!==o.rendering||n.isActive()?delete o.args:(o.updatePending=t,(0,r.raiseWarning)(n,"23091255","run","::DataHandler~update","Renderer update was postponed due to async loading.")):n.options.dataSource=t.data,(0,r.triggerEvent)("dataUpdated",n,t,void 0,t.successcallback)},t.onDataUpdateCancel=function(e,t){(0,r.triggerEvent)("dataUpdateCancelled",e.sender,t,void 0,t.failurecallback)}},function(e,t,n){"use strict";function r(e){delete e.sender.jsVars._reflowData,e.sender.jsVars._reflowData={},delete e.sender.jsVars._reflowClean}t.__esModule=!0,t["default"]={beforeInitialize:function(e){var t,n=e.sender,r=n.jsVars;r.fcObj=n,r.msgStore=r.msgStore||{LoadDataErrorText:"Error in loading data.",XMLLoadingText:"Retrieving data. Please wait",InvalidXMLText:"Invalid data.",ChartNoDataText:"No data to display.",ReadingDataText:"Reading data. Please wait",ChartNotSupported:"Chart type not supported.",PBarLoadingText:"",LoadingText:"Loading chart. Please wait",RenderChartErrorText:"Unable to render chart."},r.cfgStore=r.cfgStore||{},r.previousDrawCount=-1,r.drawCount=0,r._reflowData={},n.addEventListener("beforeRender",function(e){return e.detachHandler()}),r.userModules instanceof Array||(t=r.userModules,r.userModules=[],"string"==typeof t&&(r.userModules=r.userModules.concat(t.split(","))))},beforeDataUpdate:r,beforeDispose:function(e){var t=e.sender.jsVars;t.smartLabel&&!t.smartLabel.disposed&&t.smartLabel.dispose(),r.apply(undefined,arguments)},beforeRender:function(e){delete e.sender.jsVars.drLoadAttempted,r.apply(undefined,arguments)},dataLoadRequested:function(e){var t=e.sender,n=t.jsVars;delete n.loadError,t.ref&&t.options.showDataLoadingMessage?n.hcObj&&!n.hasNativeMessage&&n.hcObj.showLoading?n.hcObj.showMessage(n.msgStore.XMLLoadingText):t.ref.showChartMessage?t.ref.showChartMessage("XMLLoadingText"):n.stallLoad=!0:n.stallLoad=!0},dataLoadRequestCompleted:function(e){delete e.sender.jsVars.stallLoad}}},function(e,t,n){"use strict";t.__esModule=!0,t.globalStore=undefined;var r,o=n(118),a=n(124),i=n(125),s=n(129),l=n(130);var c,u,d,f,h=/\%/,p=new((r=l)&&r.__esModule?r:{"default":r})["default"],g=(d={},f=function b(){var e,t,n,r,o,a,i,s,l=0,f=parseInt(u.options.resizeTrackingInterval,10)||300,p={},g=function(){p.itemVar._containerOffsetW=p.parentEle.offsetWidth,p.itemVar._containerOffsetH=p.parentEle.offsetHeight};for(e in d)l+=1,n=(t=d[e]).jsVars,o=t.ref,!t.disposed&&(r=o&&o.parentNode)&&(a=o.style)&&(h.test(a.width)||h.test(a.height))?(i=r.offsetWidth,s=r.offsetHeight,!n.resizeLocked&&(i&&n._containerOffsetW!==i||s&&n._containerOffsetH!==s)&&(t.resizeTo&&t.resizeTo(),p.itemVar=n,p.parentEle=r,setTimeout(g,1))):(delete d[e],l-=1);c=l?setTimeout(b,f):clearTimeout(c)},function(e,t,n){var r=e.jsVars,o=t||e.ref&&e.ref.parentNode||{};u=n,r._containerOffsetW=o.parentNode.offsetWidth,r._containerOffsetH=o.parentNode.offsetHeight,d[e.id]=e,c||(c=setTimeout(f,parseInt(n.options.resizeTrackingInterval,10)||300))});function m(e,t){var n=arguments.length>2&&arguments[2]!==undefined&&arguments[2],r=this.apiInstance,o=(this.jsVars&&this.jsVars.themeObject&&this.jsVars.themeObject.getThemedJSONData()||this.getChartData((0,i.getDepsByType)("transcoder").JSON,!0,!0)).data;n||(0,a.triggerEvent)("dataloaded",this,{},[this.id]),this.__state&&(this.__state.newDataArrived=!1),r.addToEnv("dataSource",o),r.addToEnv("chart-attrib",o.chart),r._checkInvalidData()||r._checkInvalidSpecificData()?(r.getContainer("parentgroup")&&r.getContainer("parentgroup").hide(),r.createBaseComponent(),r.getFromEnv("animationManager").setAnimationState("chartmessage"),r.setChartMessage(),r.drawChartMessage(),this._sudoSetState(1),(0,a.triggerEvent)("nodatatodisplay",this,{},[this.id])):(r.config.hasChartMessage=!1,r.setData(o))}function v(e){(0,a.triggerEvent)("dataloadcancelled",e,{},[e.id]),e.__state&&(e.__state.newDataArrived=!1)}function y(e,t,n,r){var i=e.jsVars,l=e.apiInstance,c=i.fcObj,u=c.width,d=c.height,f=i.overlayButton;i.width=l.getFromEnv("chartWidth"),i.height=l.getFromEnv("chartHeight"),i.container=t,i.hcObj=e,i.hcObj.container=t,i.instanceAPI=l,e.hasRendered&&i.overlayButtonActive&&f&&(f.innerHTML=o.BLANK,f.appendChild(document.createTextNode(i.overlayButtonMessage)),e.container.appendChild(f)),(/\%/g.test(u)||/\%/g.test(d))&&t&&t.parentNode&&!FusionCharts.options.preventTrackResize&&g(e,t,FusionCharts),function(e,t,n){e.apiInstance.addJob("fire-rendered",function(){if(e.apiInstance.config.hasRendered=n.hasRendered,"waiting"!==e._getState()&&"function"==typeof t&&t(n),"waiting"!==e._getState()&&((0,a.triggerEvent)("drawcomplete",e,{width:e.jsVars.width,height:e.jsVars.height,drawCount:e.jsVars.drawCount,displayingMessage:"waiting"===e._getState()||"error"===e._getState(),renderer:"javascript"},[e.id]),e.__state&&delete e.__state.beforedrawFired),!e.disposed&&"ready"===e._getState()){if(e.__state.rendering&&(0,a.triggerEvent)("rendered",e,{renderer:"javascript"},[e.id]),e.disposed)return;if((0,a.triggerEvent)("renderComplete",e,{width:e.jsVars.width,height:e.jsVars.height,drawCount:e.jsVars.drawCount,renderer:"javascript"}),e.disposed)return;e.__state&&delete e.__state.rendering,e.__state.renderComplete=!0}},s.priorityList.postRender)}(e,n,r)}t.globalStore=p,t["default"]=function(e,t,n,r,s,l,c,u){var d=void 0,f=t.apiInstance,g=void 0,b=t.jsVars,x=void 0,w=void 0,C=void 0,_=h.test(t.width)?n.offsetWidth:t.width,E=h.test(t.height)?n.offsetHeight:t.height;if(n.FusionCharts=e.items[t.id],t.__state.beforedrawFired=!0,r=r||t.chartType(),!(d=(0,i.getDep)(r,"chartapi"))&&(x=(0,i.getDep)(r,"maps"))&&(d=(0,i.getDep)("maps","chartapi"),w=!0),f&&f.getName().toLowerCase()!==r.toLowerCase()&&(f.remove({instant:!0}),f=o.UNDEF),f&&f.getName().toLowerCase()===r.toLowerCase()||(f=t.apiInstance=new d,p.attachChild(f,"chartAPI")),w)for(var k in x=x[0])x.hasOwnProperty(k)&&(f.config[k]=x[k]);if(f.addToEnv("core-options",e.options),f.addToEnv("chartInstance",t),f.addToEnv("chart",f),f.addToEnv("chart-container",n),f.addToEnv("eventListeners",[]),f.addToEnv("chartWidth",_),f.addToEnv("chartHeight",E),f._removeWaitingJobs(),f.setDummyEImethods(r),f.config.origRenderWidth=t.__state.renderedWidth,f.config.origRenderHeight=t.__state.renderedHeight,"base"===r||l)!function(e){var t=arguments.length>1&&arguments[1]!==undefined&&arguments[1],n=e.options.dataErroneous;if(n)e.__state.dataReady=!1,t||(0,a.triggerEvent)("dataInvalid",e,{error:n},o.UNDEF,function(){(0,a.triggerEvent)("dataxmlinvalid",e,{},[e.id])})}(t,u),function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};e._chartMessageImageStyle=t.image||{},e._chartMessageStyle=t.message||{}}(t,c),f.createBaseComponent(),f.getFromEnv("animationManager").setAnimationState("chartmessage"),f.setChartMessage(l,t,n),f.drawChartMessage();else if(t.__state.resize)f.asyncDraw();else{if(f.getFromEnv("toolTipController")||(C=new((0,i.getDep)("ToolTipController"))(n),f.addToEnv("toolTipController",C)),f.disposeChartStyleSheet(),n.jsVars=t.jsVars,g=f.eiMethods,t.ref=n,b.type=r,g&&"string"!=typeof g)for(var S in g)n[S]=g[S];!u&&t.__state.newDataArrived?(0,a.triggerEvent)("beforedataload",t,{data:t.getChartData((0,i.getDepsByType)("transcoder").JSON,!0,!0)},void 0,m,v):m.call(t,void 0,void 0,u)}!t.disposed&&y(t,n,s,{hasRendered:!0,container:n})}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=[],a={},i=[],s={},l=0,c=window,u=c.navigator,d=/trident/i.test(u.userAgent)&&/rv:11/i.test(u.userAgent)&&!c.opera,f=/msie/i.test(u.userAgent)&&!c.opera,h=/Edge/.test(u.userAgent),p={},g=c.requestAnimationFrame||c.webkitRequestAnimationFrame||c.mozRequestAnimationFrame||c.oRequestAnimationFrame||c.msRequestAnimationFrame||function(e){setTimeout(e,16)},m=!1,v=function y(){var e=!0,t=void 0,n=(new Date).getTime(),r=void 0,a=void 0;for(m=!0;e&&(t=o[0]);)r=(new Date).getTime(),t.OIAF&&a||t.executeAfter&&!(t.executeAfter<r)||!(r-n<16)?e=!1:(o.shift(),i[t.priority]-=1,s[t.jobID]&&!t.executed&&(t.executed=!0,delete s[t.jobID],t.job(),a=t.OIAF));o.length?g(y):m=!1};(d||f||h)&&(g=g.bind(window)),p.addJob=function(e,t,n){var a,c,u,d=0,f=n&&n.oneInAFrame,h=n&&n.addToTop?t-1:t;for("function"===(void 0===e?"undefined":r(e))?(c={job:e,priority:t,OIAF:f,jobID:a="JOB_"+ ++l+"_"+(t||1)},n&&n.executionDelay&&(c.executeAfter=(new Date).getTime()+n.executionDelay)):c=e,u=0;u<=h;u++)d+=i[u]||0;return o.splice(d,0,c),s[c.jobID]=c,i[t]=(i[t]||0)+1,m||1!==o.length||(f?g(v):setTimeout(v,0)),a},p.removeJob=function(e){s[e]&&delete s[e]},p.updateJob=function(e,t,n,r){return s[e]?(s[e].job=t,e):this.addJob(t,n,r)},p.pauseExecution=function(e){if(!s[e])return!1;a[e]=s[e],delete s[e]},p.resumeExecution=function(e){var t=a[e];if(!t)return!1;p.addJob(t,t.priority),delete a[e]},t["default"]=p,t.priorityList={instant:1,render:1,chartEvents:1,configure:2,chartClick:2,draw:3,entitydraw:4,label:4,animation:5,tracker:6,kdTree:6,postRender:7}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(131);function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var i=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return a(t,e),t.prototype.getName=function(){return"globalStore"},t.prototype.getType=function(){return"globalStore"},t}(((r=o)&&r.__esModule?r:{"default":r})["default"]);t["default"]=i},function(e,t,n){"use strict";t.__esModule=!0,t.removeAllEventsFromGraphic=t._mapSubFnForward=undefined;var r,o=n(118),a=n(124),i=n(129),s=(r=i)&&r.__esModule?r:{"default":r};var l={},c={executionDelay:16},u=function(e,t){if(e&&e.hasOwnProperty&&t&&t.call){var n=void 0,r=void 0,o=void 0,a=void 0;for(n in e)if(e.hasOwnProperty(n))if((r=e[n])instanceof Array)for(a=r.length,o=0;o<a;o++)t(r[o],n,o);else t(r,n)}};function d(e,t,n){var r,o;if(t&&t.hasOwnProperty)for(r in t)t.hasOwnProperty(r)&&(o=(0,a.getListeners)(r,n))&&o.length>=1&&e&&e.on(r,t[r])}function f(e,t){var n,r;if(t&&t.hasOwnProperty)for(n in t)t.hasOwnProperty(n)&&(r=(0,a.getListeners)(n,this))&&r.length>=1&&e&&e.off(n,t[n])}var h=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var t=this;t.config={},t._jobList={},t._components={},t._env={},t._extListeners={},t._state={},t._factories=[],t._factoriyNames={},t._graphics={},t.__drawJob=function(){t.updateVisual()},t.__remove=function(){t.getState("removed")&&t._dispose()},t._setRemoveAnim=function(e,n){var r=t.getFromEnv("animationManager");r.setAnimation({el:e,component:t,label:n,props:e.__props}),t._setRemoveAnim=function(e,n){r.setAnimation({el:e,component:t,label:n,props:e.__props})}},t.__instantRemoveFn=function(e){var n=t.getFromEnv("animationManager");n.removeElement(e,!0),t.__instantRemoveFn=function(e){return n.removeElement(e,!0)}},t.fireEvent("instantiated"),t.__setDefaultConfig()}return e.prototype.configure=function(e){this.preConfigure(e),this.configureAttributes(e),this.postConfigure(e),this.invokeFactories()},e.prototype.preConfigure=function(e){this.fireEvent("preconfigure",e)},e.prototype.configureAttributes=function(){return this},e.prototype.postConfigure=function(e){this.fireEvent("postconfigure",e)},e.prototype.prepareAttributes=function(){this.fireEvent("preattributeprepared"),this.allocatePosition&&this.allocatePosition(),this._mapChildren(function(e){e.prepareAttributes&&e.prepareAttributes()}),this.fireEvent("attributeprepared")},e.prototype.setDefaults=function(){this.__setDefaultConfig(),this._mapChildren(function(e){return e.setDefaults()})},e.prototype.__setDefaultConfig=function(){return this},e.prototype.setData=function(e){var t,n=arguments.length>1&&arguments[1]!==undefined&&arguments[1],r=this.getLinkedParent();this.asyncDraw(),!n&&this.setDefaults(),this.configure&&this.configure(e),(t=this.getState("change-info"))&&t.hasNoExternalEffect||r&&r.childChange&&r.childChange(t,this.getId())},e.prototype.getName=function(){return"generic"},e.prototype.getType=function(){return"generic"},e.prototype.getId=function(){return this._id||this.setId(),this._id},e.prototype.setId=function(e){var t;e===o.UNDEF&&(t=this.getType()+o.UNDERSCORE+this.getName(),l[t]||(l[t]=1),e=t+o.UNDERSCORE+l[t],l[t]+=1),this._id=e},e.prototype.iterateComponents=function(e){this._mapChildren(function t(n,r,o){!1!==e(n,r,o)&&n._mapChildren&&n._mapChildren(t)})},e.prototype._mapChildren=function(e,t){t?function(e,t){if(e&&e.hasOwnProperty&&t&&t.call){var n=void 0,r=void 0,o=void 0;for(n in e)if(e.hasOwnProperty(n))if((r=e[n])instanceof Array)for(o=r.length-1;o>=0;o--)t(r[o],n,o);else t(r,n)}}(this.getChildren(),e):u(this.getChildren(),e)},e.prototype.getFromEnv=function(e){return e?this._env[e]:this._env},e.prototype.addToEnv=function(e,t){e&&(this._env[e]=t)},e.prototype.deleteFromEnv=function(e){delete this._env[e]},e.prototype._updateParentEnv=function(){var e,t,n,r,o=this.getLinkedParent(),a=this._env;if(o){if(e=o.getFromEnv(),(t=function(){}).prototype=e,t.prototype.constructor=t,n=new t,a)for(r in a)a.hasOwnProperty(r)&&(n[r]=a[r]);this._env=n,this._mapChildren(function(e){e._updateParentEnv&&e._updateParentEnv()})}},e.prototype.addJob=function(e,t,n,r){this._jobList[e]?this._jobList[e]=s["default"].updateJob(this._jobList[e],t,n,r):this._jobList[e]=s["default"].addJob(t,n,r)},e.prototype.removeJob=function(e){var t=this._jobList[e];t&&(s["default"].removeJob(t),delete this._jobList[e])},e.prototype.removeAllJobs=function(){var e=void 0,t=this._jobList;for(e in t)t.hasOwnProperty(e)&&(s["default"].removeJob(t[e]),delete t[name])},e.prototype.asyncDraw=function(){this.addJob("draw",this.__drawJob,i.priorityList&&i.priorityList.draw,c)},e.prototype.syncDraw=function(){var e=this;e.fireEvent("predraw"),e.removeJob("draw"),e.getState("removed")?e.removingDraw():e.draw&&e.draw(),e.addExtEventListener("animationComplete",e.__remove,e.getFromEnv("animationManager")),e.childrenSyncDraw(),e.setState("dirty",!1),e.setState("parentChanged",!1),e.addJob("draw-complete",function(){e.fireEvent("drawn")},i.priorityList.instant)},e.prototype.updateVisual=function(){this.fireEvent("previsualupdate"),this.removeJob("visualupdate"),this.manageSpace&&this.manageSpace(),this.prepareAttributes(),this.syncDraw(),this.fireEvent("visualupdated")},e.prototype.removingDraw=function(){u(this.getChildContainer(),this._setRemoveAnim),u(this.getGraphicalElement(),this._setRemoveAnim),u(this.getContainer(),this._setRemoveAnim)},e.prototype.childrenSyncDraw=function(){this._mapChildren(function(e){e&&e.draw&&e.syncDraw()})},e.prototype.addEventListener=function(e,t,n){var r,i=this;return!!(e&&e.toLowerCase&&(e=e.toLowerCase(),(0,a.addListener)(e,t,i,n)))&&((0,o.isInterActiveEvt)(e)&&(r=(0,a.getListeners)(e,i))&&1===r.length&&(i._middleListeners||(i._middleListeners={}),i._middleListeners[e]||(i._middleListeners[e]=function(t){i.fireEvent(e,o.UNDEF,o.UNDEF,o.UNDEF,t)}),function(e,t,n){var r;t&&n&&(r=function(e){e.on&&e.on(t,n)},u(e.getGraphicalElement(),r),u(e.getChildContainer(),r))}(i,e,i._middleListeners[e])),t)},e.prototype.removeEventListener=function(e,t){var n;e&&e.toLowerCase&&(e=e.toLowerCase(),(0,a.removeListener)(e,t,this),(0,o.isInterActiveEvt)(e)&&(n=(0,a.getListeners)(e,this))&&0===n.length&&this._middleListeners&&this._middleListeners[e]&&function(e,t,n){var r;t&&n&&(r=function(e){e.off&&e.off(t,n)},u(e.getGraphicalElement(),r),u(e.getChildContainer(),r))}(this,e,this._middleListeners[e]))},e.prototype.fireEvent=function(e,t,n,r,o){(0,a.triggerEvent)(e,this,t,o,n,r)},e.prototype.addExtEventListener=function(e,t,n){return!!(n&&n.addEventListener&&n.addEventListener(e,t))&&(this._extListeners[e]||(this._extListeners[e]=[]),this._extListeners[e].push({fn:t,component:n}),t)},e.prototype.removeExtEventListener=function(e,t,n){var r,o;if(n&&n.addEventListener&&this._extListeners&&this._extListeners[e])for(r=(o=this._extListeners[e]).length-1;r>=0;r-=1)if(o[r]&&o[r].fn===t&&o[r].component===n)return n.removeEventListener(e,t),void o.splice(r,1)},e.prototype.addGraphicalElement=function(e,t,n,r){var a=this._graphics;return n=n||!1,t&&(n?(a[e]===o.UNDEF&&(a[e]=[]),r?a[e][r]=t:a[e].push(t)):(a[e]=t,this.fireEvent("graphicalelementattached",{element:t})),d(t,this._middleListeners,this)),t},e.prototype.removeGraphicalElement=function(e){var t=this,n=t._graphics,r=void 0;u(n,function(a,i,s){a===e&&(r=!0,f(a,t._middleListeners),t._setRemoveAnim(a,i),s!==o.UNDEF?n[i].splice(s,1):delete n[i])}),r&&this.fireEvent("graphicalelementremoved",{element:e})},e.prototype.getGraphicalElement=function(e){return void 0!==e?this._graphics[e]:this._graphics},e.prototype.addChildContainer=function(e,t){var n=this._childContainers;return t&&(n===o.UNDEF&&(n=this._childContainers={}),n[e]=t,d(t,this._middleListeners,this)),t},e.prototype.removeChildContainer=function(e){var t=this._childContainers;t&&t[e]&&(f(t[e],this._middleListeners),this._setRemoveAnim(t[e],e),delete t[e])},e.prototype.getChildContainer=function(e){return this._childContainers===o.UNDEF&&(this._childContainers={}),e?this._childContainers[e]:this._childContainers},e.prototype.addContainer=function(e,t){var n=this._containers;return t&&(n===o.UNDEF&&(n=this._containers={}),n[e]=t),t},e.prototype.removeContainer=function(e){var t=this._containers;t&&t[e]&&(this._setRemoveAnim(t[e],e),delete t[e])},e.prototype.getContainer=function(e){return this._containers===o.UNDEF&&(this._containers={}),e?this._containers[e]:this._containers},e.prototype._setLinkedParent=function(e){var t=this._linkedParent;this._linkedParent=e,t!==e&&(this.setState("parentChanged",!0),t&&this.fireEvent("parentdetached",{oldParent:t}),e&&this.fireEvent("parentAttached",{newParent:e})),this._updateParentEnv&&this._updateParentEnv()},e.prototype.getLinkedParent=function(){return this._linkedParent},e.prototype.setLinkedItem=function(e,t){this.linkedItems||(this.linkedItems={}),e===o.UNDEF&&t===o.UNDEF||(this.linkedItems[e]=t)},e.prototype.getLinkedItem=function(e){if(this.linkedItems)return e!==o.UNDEF?this.linkedItems[e]:this.linkedItems},e.prototype.removeLinkedItem=function(e){this.linkedItems&&this.linkedItems[e]&&delete this.linkedItems[e]},e.prototype.attachChild=function(e,t,n){var r=t||e.getType(),o=this._components;return!1===n?o[r]=e:(o[r]&&o[r]instanceof Array||(o[r]=[]),o[r].push(e)),e._setLinkedParent(this),this.fireEvent("childattached",{attachedChild:e}),e},e.prototype.getChild=function(e){var t,n=this._components;return e===o.UNDEF?n:(this._searchChildren(e,function(e){t=e}),t)},e.prototype._searchChildren=function(e,t){var n,r,a,i=this._components;for(r in i)if(i.hasOwnProperty(r))if((n=i[r]).constructor===Array){for(a=n.length-1;a>=0;a--)if(n[a].getId&&n[a].getId()===e)return t(n[a],a,n)}else if(n.getId&&n.getId()===e)return t(r,o.UNDEF,i)},e.prototype.detachChild=function(e){var t,n=this;return e===o.UNDEF?o.UNDEF:(n._searchChildren(e,function(e,r,a){a&&a.constructor===Array?t=a.splice(r,1)[0]:(t=a[e],delete a[e]),t._setLinkedParent(o.UNDEF),n.fireEvent("childdetached",{detachedChild:t})}),t)},e.prototype.getChildren=function(e){return e?this._components[e]:this._components},e.prototype._dispose=function(){var e,t,n,r,o;if(this&&this!==window&&!0!==this._disposing){if(this._disposing=!0,this.fireEvent("preremove"),(e=this.getLinkedParent())&&e.detachChild&&!e._disposing&&e.detachChild(this.getId()),this._extListeners)for(r in this._extListeners)for(n=(o=this._extListeners[r]).length-1;n>=0;n--)o[n].component&&o[n].component.addEventListener&&o[n].component.removeEventListener(r,o[n].fn);for(t in this.removeAllJobs(),this.getFromEnv("paper")&&!this.getFromEnv("paper").removed&&(u(this.getChildContainer(),this.__instantRemoveFn),u(this.getGraphicalElement(),this.__instantRemoveFn),u(this.getContainer(),this.__instantRemoveFn)),this)this.hasOwnProperty(t)&&delete this[t];this.fireEvent("removed")}},e.prototype.remove=function(e){var t=e&&e.instant;this.setState("removed",!0),this.getChildren()&&this._mapChildren(function(t){t&&t.remove&&t.remove(e)},!0),t&&this._dispose()},e.prototype.setState=function(e,t){this._state[e]=t},e.prototype.getState=function(e){return this._state&&this._state[e]},e.prototype.registerFactory=function(e,t,n){var r={name:e,factory:t,dep:n};if(this._factoriyNames[e])for(var o=0,a=this._factories.length,i=!1;o<a&&!i;o+=1)this._factories[o].name===e&&(this._factories.splice(o,1),i=!0);this._factories.push(r),this._factoriyNames[e]=!0},e.prototype.deregisterFactory=function(e){if(this._factoriyNames[e])return delete this._factoriyNames[e],this._factories.splice(this._factories.findIndex(function(t){return t.name===e}),1)[0].factory},e.prototype.invokeFactories=function(){for(var e=this,t=e._factoriyNames,n={},r=e._factories,o=void 0,a=r.length+1,i=function(r){var a=void 0;r.dep&&r.dep.length&&r.dep.forEach(function(e){a=t[e]&&!n[e]}),a?o.push(r):(r.factory(e),n[r.name]=!0)};r.length&&r.length<a;)o=[],r.forEach(i),a=r.length,r=o;r.length&&r.forEach(function(t){return t.factory(e)}),this.fireEvent("factoriesinvoked",{})},e}();t["default"]=h,t._mapSubFnForward=u,t.removeAllEventsFromGraphic=f},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(133)),o=a(n(134));function a(e){return e&&e.__esModule?e:{"default":e}}var i=r["default"].init(window),s=i.win.document,l=i.win.Math,c=l.max,u=l.round,d={" ":" "},f=i.getDocumentSupport(),h=f.isWebKit?0:4.5;function p(e,t,n){var r,a,l,c=!1,u=window.document.createElement("canvas");for(a in(n=n||{}).maxCacheLimit=isFinite(l=n.maxCacheLimit)?l:i.maxDefaultCacheLimit,"string"==typeof e&&(e=s.getElementById(e)),(r=i.createContainer(e)).innerHTML=i.testStrAvg,!f.isHeadLess&&(f.isIE||r.offsetHeight||r.offsetWidth)||(c=!0),r.innerHTML="",i.parentContainerStyle)r.style[a]=i.parentContainerStyle[a];this.parentContainer=r,this.ctx=u&&u.getContext&&u.getContext("2d"),this._containerManager=new o["default"](r,c,10),this._showNoEllipses=!t,this._init=!0,this.style={},this.oldStyle=1,this.options=n,this.setStyle()}p.textToLines=function(e){return(e=e||{}).text?"string"!=typeof e.text&&(e.text=e.text.toString()):e.text="",e.lines=e.text.split(/\n|<br\s*?\/?>/gi),e},p.prototype._calCharDimWithCache=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",t=arguments[1],n=arguments[2];if(!this._init)return!1;var r,o,a,i,s,l,c,u,f,h,p=this.options.maxCacheLimit,g=this.style||{};return c=this._advancedCache=this._advancedCache||(this._advancedCache={}),u=this._advancedCacheKey||(this._advancedCacheKey=[]),f=e+(g.fontSize||"")+(g.fontFamily||"")+(g.fontWeight||"")+(g.fontStyle||""),h=e+"init"+(g.fontSize||"")+(g.fontFamily||"")+(g.fontWeight||"")+(g.fontStyle||""),!this.ctx&&d[e]&&(e=d[e]),t?(l=c[h])===undefined&&(a=this._getDimention(e.repeat?e.repeat(n):Array(n+1).join(e)).width,i=this._getDimention(e).width,l=c[h]=(a-n*i)/(n+1),u.push(h),u.length>p&&delete c[u.shift()]):l=0,(s=c[f])?(o=s.split(","),{width:parseFloat(o[0],10),height:parseFloat(o[1],10)}):((r=this._getDimention(e)).width+=l,c[f]=r.width+","+r.height,u.push(f),u.length>p&&delete c[u.shift()],r)},p.prototype._getDimention=function(e){return this.requireDiv||!this.ctx?i._getDimentionUsingDiv(e,this):i._getDimentionUsingCanvas(e,this)},p.prototype._getWidthFn=function(){var e=this,t=e._containerObj.svgText;return t?function(e){var n,r;return t.textContent=e,(r=(n=t.getBBox()).width-h)<1&&(r=n.width),r}:function(t){return e.requireDiv||!e.ctx?i._getDimentionUsingDiv(t,e).width:i._getDimentionUsingCanvas(t,e).width}},p.prototype._setStyleOfCanvas=function(){if(this.style!==this.oldStyle){var e,t=this.style,n=t.fontStyle||t["font-style"]||"normal",r=t.fontVariant||t["font-variant"]||"normal",o=t.fontWeight||t["font-weight"]||"normal",a=t.fontSize||t["font-size"]||"12px",s=t.fontFamily||t["font-family"]||"Verdana,sans";a+=-1===a.indexOf("px")?"px":"",this.ctx.font=n+" "+r+" "+o+" "+a+" "+s,e=this._containerObj=this._containerManager.get(t),this._containerObj?(this._container=e.node,this._context=e.context,this._cache=e.charCache,this._lineHeight=e.lineHeight,this._styleNotSet=!1):this._styleNotSet=!0,e.ellipsesWidth=this.ctx.measureText("...").width,e.dotWidth=this.ctx.measureText(".").width,e.lineHeight=this._lineHeight=e.lineHeight||i._getCleanHeight(t.lineHeight),this.oldStyle=t}},p.prototype._setStyleOfDiv=function(){var e,t=this.style;this._containerObj=e=this._containerManager.get(t),!e.node&&this._containerManager._makeDivNode(this._containerObj),this._containerObj?(this._container=e.node,this._context=e.context,this._cache=e.charCache,this._lineHeight=e.lineHeight,this._styleNotSet=!1):this._styleNotSet=!0},p.prototype._updateStyle=function(){return this.requireDiv||!this.ctx?this._setStyleOfDiv():this._setStyleOfCanvas()},p.prototype.setStyle=function(e){e&&(this.style=e,i.setLineHeight(e))},p.prototype.useEllipsesOnOverflow=function(e){return this._init?(this._showNoEllipses=!e,this):this},p.prototype.getSmartText=function(e,t,n,r){if(!this._init)return!1;e===undefined||null===e?e="":"string"!=typeof e&&(e=e.toString());var o,a,l,u,d,h,p,g,m,v,y,b,x,w,C,_,E,k,S,A,T,M,O,L,I,F,N,D,P,R,j,V,B,G,H,z=0,$=-1,X=-1,U=-1,W=0,Y=0,q=[],K=0,J=this._showNoEllipses?"":"...",Z=this.ctx,Q=[],ee=-1,te=-1,ne=-1,re=function(e){for(var t=/\s/,n=(e=e.replace(/^\s\s*/,"")).length;t.test(e.charAt(n-=1)););return e.slice(0,n+1)},oe={text:e,maxWidth:t,maxHeight:n,width:null,height:null,oriTextWidth:null,oriTextHeight:null,oriText:e,isTruncated:!1};if(N=i.xmlTagRegEx.test(e),G=i._hasOnlyBRTag(e),this.requireDiv=N&&!G,this._updateStyle(),D=this._lineHeight,P=this._context,R=this._container,V=(j=this._containerObj).ellipsesWidth,B=j.dotWidth,h=e.replace(i.spanAdditionRegx,"$2"),b=this._getWidthFn(),D-n<=1&&D-n>=0&&(n*=1.2),Z||R){if(!f.isBrowserLess){if(N?G?(e=e.replace(i.brRegex,"<br />"),H=i._getDimentionOfMultiLineText(e,this),oe.oriTextWidth=p=H.width,oe.oriTextHeight=g=H.height):(R.innerHTML=e,oe.oriTextWidth=p=R.offsetWidth,oe.oriTextHeight=g=R.offsetHeight):(u=e=e.replace(i.ltgtRegex,function(e){return"<"===e?"<":">"}),C=this.getOriSize(u,!0,{hasHTMLTag:N,hasOnlyBrTag:G,cleanText:!0}),oe.oriTextWidth=p=C.width,oe.oriTextHeight=g=C.height),g<=n&&p<=t)return oe.width=oe.oriTextWidth=p,oe.height=oe.oriTextHeight=g,oe;if(D>n)return oe.text="",oe.width=oe.oriTextWidth=0,oe.height=oe.oriTextHeight=0,oe}if(e=re(e).replace(/(\s+)/g," "),d=this._showNoEllipses?t:t-V,!N||G){if(o=(q=i._getTextArray(e)).length,a="",l=[],y=q[0],this._cache[y]?S=this._cache[y].width:(S=b(y),this._cache[y]={width:S}),d>S&&!G)l=e.substr(0,i.getNearestBreakIndex(e,d,this)).split("");else{if(S>t)return oe.text="",oe.width=oe.oriTextWidth=oe.height=oe.oriTextHeight=0,oe;J&&((d=t-2*B)>S?J="..":(d=t-B)>S?J=".":(d=0,J=""))}if(K=l.length,W=b(l.join("")),Y=this._lineHeight,r){for(;K<o;K+=1)if(y=l[K]=q[K],"<br />"!==l[K]){if(this._cache[y]?S=this._cache[y].width:(C&&(S=C.detailObj[y])||(S=b(y)),this._cache[y]={width:S}),(W+=S)>d&&(a||(a=l.slice(0,-1).join("")),W>t))return oe.text=re(a)+J,oe.tooltext=oe.oriText,oe.width=c(z,W),oe.height=Y,oe}else Y+=this._lineHeight,U=K,z=c(z,W),W=0,a=null;return oe.text=l.join(""),oe.width=c(z,W),oe.height=Y,oe}for(;K<o;K+=1){if(" "!==(y=l[K]=q[K])||P||(y=this.ctx?" ":" "),"<br />"===l[K]){if(z=c(z,W),(Y+=this._lineHeight)<=n){U=K,W=0,a=null;continue}if(Y>n)return a=l.slice(0,-1).join(""),oe.text=re(a)+J,oe.tooltext=h,oe.width=z,oe.height=Y-this._lineHeight,oe}if(this._cache[y]?S=this._cache[y].width:(C&&(S=C.detailObj[y])||(S=b(y)),this._cache[y]={width:S}),(W+=S)>d&&(a||(a=l.slice(0,-1).join("")),W>t)){if("<br />"===q[K+1])continue;if(X=i._findLastIndex(q.slice(0,l.length)," "),$=i._findLastIndex(q.slice(0,l.length),"-"),X>U?(W=b(l.slice(U+1,X).join("")),l.splice(X,1,"<br />"),U=X,m=X+1):$>U?($===l.length-1?(W=b(l.slice(U+1,X).join("")),l.splice($,1,"<br />-")):(W=b(l.slice(U+1,X).join("")),l.splice($,1,"-<br />")),U=$,m=$+1):(l.splice(l.length-1,1,"<br />"+q[K]),ne=l.length-2,W=b(l.slice(U+1,ne+1).join("")),U=ne,m=K),(Y+=this._lineHeight)>n)return oe.text=re(a)+J,oe.tooltext=oe.oriText,oe.width=t,oe.height=Y-this._lineHeight,oe;z=c(z,W),a=null,G?W=i._getDimentionOfMultiLineText(l.slice(U+1).join(""),this).width:(v=i.getNearestBreakIndex(e.substr(m),d,this),W=b(e.substr(m,v||1)),l.length<m+v&&(K=(l=l.concat(e.substr(l.length,m+v-l.length).split(""))).length-1))}}return z=c(z,W),oe.text=l.join(""),oe.width=z,oe.height=Y,oe}for(h=e.replace(i.spanAdditionRegx,"$2"),e=(e=e.replace(i.spanAdditionRegx,i.spanAdditionReplacer)).replace(/(<br\s*\/*\>)/g,'<span class="'+[i.classNameWithTag," ",i.classNameWithTagBR].join("")+'">$1</span>'),R.innerHTML=e,E=0,k=(_=R[f.childRetriverFn](f.childRetriverString)).length;E<k;E+=1)A=_[E],(f.noClassTesting||i.classNameReg.test(A.className))&&""!==(T=A.innerHTML)&&(" "===T?te=Q.length:"-"===T&&(ee=Q.length),Q.push({spaceIdx:te,dashIdx:ee,elem:A}),q.push(T));if(K=0,(S=(o=Q.length)&&Q[0].elem.offsetWidth)>t||!o)return oe.text="",oe.width=oe.oriTextWidth=oe.height=oe.oriTextHeight=0,oe;if(S>d&&!this._showNoEllipses&&((d=t-2*B)>S?J="..":(d=t-B)>S?J=".":(d=0,J="")),x=Q[0].elem.offsetLeft,w=Q[0].elem.offsetTop,r)for(;K<o;K+=1)(M=(A=Q[K].elem).offsetLeft-x+A.offsetWidth)>d&&(F||(F=K),R.offsetWidth>t&&(I=K,K=o));else for(;K<o;K+=1)O=(A=Q[K].elem).offsetHeight+(A.offsetTop-w),L=null,(M=A.offsetLeft-x+A.offsetWidth)>d?(F||(F=K),M>t&&(X=Q[K].spaceIdx,$=Q[K].dashIdx,X>U?(Q[X].elem.innerHTML="<br/>",U=X):$>U?(Q[$].elem.innerHTML=$===K?"<br/>-":"-<br/>",U=$):A.parentNode.insertBefore(L=s.createElement("br"),A),A.offsetHeight+A.offsetTop>n?(L?L.parentNode.removeChild(L):U===$?Q[$].elem.innerHTML="-":Q[X].elem.innerHTML=" ",I=K,K=o):F=null)):O>n&&(I=K,K=o);if(I<o){for(oe.isTruncated=!0,F=F||I,K=o-1;K>=F;K-=1)(A=Q[K].elem).parentNode.removeChild(A);for(;K>=0;K-=1)A=Q[K].elem,i.classNameBrReg.test(A.className)?A.parentNode.removeChild(A):K=0}return oe.text=R.innerHTML.replace(i.spanRemovalRegx,"$1").replace(/\&\;/g,"&"),oe.isTruncated&&(oe.text+=J,oe.tooltext=h),oe.height=R.offsetHeight,oe.width=R.offsetWidth,oe}return oe.error=new Error("Body Tag Missing!"),oe},p.prototype.getOriSize=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};if(!this._init)return!1;var r,o,a,s,l,d,f=0,h=0,p={},g=n.hasHTMLTag,m=n.hasOnlyBrTag;if(void 0===g&&(g=i.xmlTagRegEx.test(e)),void 0===m&&(m=i._hasOnlyBRTag(e)),this.requireDiv=g&&!m,n.cleanText||(e=e.replace(i.ltgtRegex,function(e){return"<"===e?"<":">"})),this._updateStyle(),d=this._container,m)return i._getDimentionOfMultiLineText(e,this);if(!t)return this._calCharDimWithCache(e);if(g)return d.innerHTML=e,{width:d.offsetWidth,height:d.offsetHeight};for(s=0,l=(r=e.split("")).length;s<l;s++)o=r[s],a=this._calCharDimWithCache(o,!1,r.length),h=c(h,a.height),f+=a.width,p[o]=a.width;return{width:u(f),height:h,detailObj:p}},p.prototype.dispose=function(){return this._init?(this._containerManager&&this._containerManager.dispose&&this._containerManager.dispose(),delete this._container,delete this._context,delete this._cache,delete this._containerManager,delete this._containerObj,delete this.id,delete this.style,delete this.parentContainer,delete this._showNoEllipses,this):this},t["default"]=p},function(e,t,n){"use strict";t.__esModule=!0;var r={init:function(e){var t=e.document,n=e.navigator.userAgent,o=Math.ceil,a=Math.floor,i="fusioncharts-smartlabel-",s=i+"container",l=i+"tag";return r={win:e,containerClass:s,classNameWithTag:l,classNameWithTagBR:"fusioncharts-smartlabel-br",maxDefaultCacheLimit:1e3,classNameReg:/\bfusioncharts-smartlabel-tag\b/,classNameBrReg:/\bfusioncharts-smartlabel-br\b/,spanAdditionRegx:/(<[^<\>]+?\>)|(&(?:[a-z]+|#[0-9]+);|.)/gi,spanAdditionReplacer:'$1<span class="'+l+'">$2</span>',spanRemovalRegx:new RegExp("\\<span[^\\>]+?"+l+"[^\\>]{0,}\\>(.*?)\\<\\/span\\>","ig"),xmlTagRegEx:new RegExp("<[^>][^<]*[^>]+>","i"),brRegex:new RegExp("({br[ ]*})|(<br[ ]*>)|(<br[ ]*/>)|(<BR[ ]*/>)|(<br\\>)","g"),ltgtRegex:/<|>/g,htmlSpecialEntityRegex:/&|"|<|>/g,brReplaceRegex:/<br\/>/gi,testStrAvg:"WgI",parentContainerStyle:{position:"absolute",top:"-9999em",whiteSpace:"nowrap",padding:"0px",width:"1px",height:"1px",overflow:"hidden"},supportedStyle:{font:"font",fontFamily:"font-family","font-family":"font-family",fontWeight:"font-weight","font-weight":"font-weight",fontSize:"font-size","font-size":"font-size",lineHeight:"line-height","line-height":"line-height",fontStyle:"font-style","font-style":"font-style"},getDocumentSupport:function(){var r,o,a;return t.getElementsByClassName?(r="getElementsByClassName",o=l,a=!0):(r="getElementsByTagName",o="span",a=!1),{isIE:/msie/i.test(n)&&!e.opera,hasSVG:Boolean(e.SVGAngle||t.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),isHeadLess:new RegExp(" HtmlUnit").test(n),isWebKit:new RegExp(" AppleWebKit/").test(n),childRetriverFn:r,childRetriverString:o,noClassTesting:a}},createContainer:function(e){var n,r;if(e&&(e.offsetWidth||e.offsetHeight)){if(e.appendChild)return e.appendChild(r=t.createElement("DIV")),r.className=s,r.setAttribute("aria-hidden","true"),r.setAttribute("role","presentation"),r}else if((n=t.getElementsByTagName("body")[0])&&n.appendChild)return(r=t.createElement("DIV")).className=s,r.setAttribute("aria-hidden","true"),r.setAttribute("role","presentation"),n.appendChild(r),r},getNearestBreakIndex:function(e,t,n){if(!e||!e.length)return 0;var r,i=n._getWidthFn(),s=0,l=0,c=i(e),u=c/e.length;if(r=t,s=o(t/u),c<t)return e.length-1;for(s>e.length&&(r=t-c,s=e.length);r>0;){if(r=t-i(e.substr(0,s)),!(l=a(r/u)))return s;s+=l}for(;r<0;){if(r=t-i(e.substr(0,s)),!(l=a(r/u)))return s;s+=l}return s},setLineHeight:function(e){var t=e.fontSize=e.fontSize||e["font-size"]||"12px";return e.lineHeight=e.lineHeight||e["line-height"]||1.2*parseInt(t,10)+"px",e},_getCleanHeight:function(e){return e=e.replace(/px/g,""),Number(e)},_getDimentionUsingDiv:function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",t=arguments[1]._container;return e instanceof Array&&(e=e.join("")),t.innerHTML=e,{width:t.offsetWidth,height:t.offsetHeight}},_getDimentionUsingCanvas:function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",t=arguments[1],n=t.ctx,o=t.style,a=r._getCleanHeight(o.lineHeight);return e=e instanceof Array?(e=e.join("")).replace(/<br \/>/g,""):e.replace(/<br \/>/g,""),{width:n.measureText(e).width,height:a}},_hasOnlyBRTag:function(){var e,t=(arguments.length>0&&arguments[0]!==undefined?arguments[0]:"").replace(r.brRegex,"<br />").split("<br />"),n=t.length;for(e=0;e<n;e++)if(r.xmlTagRegEx.test(t[e]))return!1;return n>1},_getDimentionOfMultiLineText:function(){var e,t,n,o=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",a=arguments[1],i=o.replace(r.brRegex,"<br />"),s=r._getTextArray(i),l=0,c=0,u=a._getWidthFn(),d=r._getCleanHeight(a.style.lineHeight),f=d,h={};for(e=0,t=s.length;e<t;e++)"<br />"===s[e]?(c=Math.max(c,l),l=0,f+=d):(l+=n=u(s[e]),h[s[e]]=n);return{height:f,width:c=Math.max(c,l),detailObj:h}},_getTextArray:function(){var e,t,n,r,o,a,i=[];for(n=(o=(arguments.length>0&&arguments[0]!==undefined?arguments[0]:"").split("<br />")).length,e=0;e<n;e++){for(r=(a=o[e].split("")).length,t=0;t<r;t++)i.push(a[t]);e!==n-1&&i.push("<br />")}return i},_findLastIndex:function(){var e,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],n=arguments[1];for(e=t.length-1;e>=0;e--)if(t[e]===n)return e;return-1}}}};t["default"]=r},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(133);var a=((r=o)&&r.__esModule?r:{"default":r})["default"].init(window),i=a.win.document,s=a.getDocumentSupport(),l=s.isWebKit?0:4.5;function c(e,t,n){var r;n=(n=n>5?n:5)<20?n:20,this.maxContainers=n,this.first=null,this.last=null,this.containers={},this.length=0,this.rootNode=e,t&&((r=i.createElementNS("http://www.w3.org/2000/svg","svg")).setAttributeNS("http://www.w3.org/2000/svg","xlink","http://www.w3.org/1999/xlink"),r.setAttributeNS("http://www.w3.org/2000/svg","height","0"),r.setAttributeNS("http://www.w3.org/2000/svg","width","0"),this.svgRoot=r,this.rootNode.appendChild(r))}c.prototype.get=function(e){var t,n,r,o=this.containers,i=this.length,s=this.maxContainers,l="";for(n in a.supportedStyle)e[n]!==undefined&&(l+=a.supportedStyle[n]+":"+e[n]+";");if(!l)return!1;if(r=o[l])this.first!==r&&(r.prev&&(r.prev.next=r.next),r.next&&(r.next.prev=r.prev),r.next=this.first,r.next.prev=r,this.last===r&&(this.last=r.prev),r.prev=null,this.first=r);else{if(i>=s)for(t=i-s+1;t--;)this.removeContainer(this.last);r=this.addContainer(l)}return r},c.prototype._makeDivNode=function(e){var t,n=e.keyStr;e.node||(e.node=i.createElement("div"),e.node.className="fusioncharts-div",this.rootNode.appendChild(e.node)),t=e.node,s.isIE&&!s.hasSVG?t.style.setAttribute("cssText",n):t.setAttribute("style",n),t.setAttribute("aria-hidden","true"),t.setAttribute("role","presentation"),t.style.display="inline-block",t.innerHTML=a.testStrAvg,e.lineHeight=t.offsetHeight,e.avgCharWidth=t.offsetWidth/3,s.isBrowserLess?(e.svgText||(e.svgText=i.createElementNS("http://www.w3.org/2000/svg","text"),this.svgRoot.appendChild(t)),(t=e.svgText).setAttribute("style",n),t.textContent=a.testStrAvg,e.lineHeight=t.getBBox().height,e.avgCharWidth=(t.getBBox().width-l)/3,t.textContent="...",e.ellipsesWidth=t.getBBox().width-l,t.textContent=".",e.dotWidth=t.getBBox().width-l):(t.innerHTML="...",e.ellipsesWidth=t.offsetWidth,t.innerHTML=".",e.dotWidth=t.offsetWidth,t.innerHTML="")},c.prototype.addContainer=function(e){var t;return this.containers[e]=t={next:null,prev:null,node:null,ellipsesWidth:0,lineHeight:0,dotWidth:0,avgCharWidth:4,keyStr:e,charCache:{}},t.next=this.first,t.next&&(t.next.prev=t),this.first=t,this.last||(this.last=t),this.length+=1,t},c.prototype.removeContainer=function(e){var t=e.keyStr;t&&this.length&&e&&(this.length-=1,e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),this.first===e&&(this.first=e.next),this.last===e&&(this.last=e.prev),e.node&&e.node.parentNode.removeChild(e.node),delete this.containers[t])},c.prototype.dispose=function(){var e,t=this.containers;for(e in this.maxContainers=null,t)this.removeContainer(t[e]);this.rootNode.parentNode.removeChild(this.rootNode),this.rootNode=null,this.first=null,this.last=null},t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0;var r={},o=function(e){r[e]=!0},a=function(e){return r[e]};t.addFile=o,t.getFile=a,t["default"]={extension:function(e){e.addFile=o,e.getFile=a},name:"fileStore",type:"plugin",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={options:{chartTypeSourcePath:["typeSourcePath",""],product:["product","v3"],insertMode:["insertMode","replace"],safeMode:["safeMode",!0],overlayButton:["overlayButton"],containerBackgroundColor:["containerBackgroundColor","#ffffff"],containerBackgroundOpacity:["containerBackgroundOpacity",1],containerClassName:["containerClassName","fusioncharts-container"],chartType:["type"],baseChartMessageFont:["baseChartMessageFont","Verdana,sans"],baseChartMessageFontSize:["baseChartMessageFontSize","10"],baseChartMessageColor:["baseChartMessageColor","#666666"],baseChartMessageImageHAlign:["baseChartMessageImageHAlign","middle"],baseChartMessageImageVAlign:["baseChartMessageImageVAlign","middle"],baseChartMessageImageAlpha:["baseChartMessageImageAlpha",100],baseChartMessageImageScale:["baseChartMessageImageScale",100],dataLoadStartMessage:["dataLoadStartMessage","Retrieving data. Please wait."],dataLoadErrorMessage:["dataLoadErrorMessage","Error in loading data."],dataInvalidMessage:["dataInvalidMessage","Invalid data."],dataEmptyMessage:["dataEmptyMessage","No data to display."],typeNotSupportedMessage:["typeNotSupportedMessage","Chart type not supported."],browserNotSupportedMessage:["browserNotSupportedMessage","This browser is not supported."],loadMessage:["loadMessage","Loading chart. Please wait."],renderErrorMessage:["renderErrorMessage","Unable to render chart."],messageURL:["messageURL",""],containerElementId:["renderAt"],renderer:["renderer"],containerElementType:["containerElementType"],showChartLoadingMessage:["showChartLoadingMessage",!0],visibilityTrackingInterval:300,events:["events",{}]},jsVars:{},attributes:{lang:["lang","EN"],id:["id"]},link:["link"],width:["width","400"],height:["height","300"]}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(118);var a=Math.abs,i=Math.pow,s=Math.round,l=void 0,c=void 0,u=void 0,d=void 0,f=void 0,h={formatnumber:"1",formatnumberscale:"1",forcenumberscale:"0",defaultnumberscale:"",numberscaleunit:["K","M"],numberscalevalue:[1e3,1e3],numberprefix:"",numbersuffix:"",decimals:"",forcedecimals:"0",yaxisvaluedecimals:"2",decimalseparator:".",thousandseparator:",",thousandseparatorposition:[3],indecimalseparator:"",inthousandseparator:"",sformatnumber:"1",sformatnumberscale:"0",sforcenumberscale:"0",sdefaultnumberscale:"",snumberscaleunit:["K","M"],snumberscalevalue:[1e3,1e3],snumberprefix:"",snumbersuffix:"",sdecimals:"2",sforcedecimals:"0",syaxisvaluedecimals:"2",xFormatNumber:"0",xFormatNumberScale:"0",xforcenumberscale:"0",xDefaultNumberScale:"",xNumberScaleUnit:["K","M"],xNumberScaleValue:[1e3,1e3],xNumberPrefix:"",xNumberSuffix:""},p={mscombidy2d:{formatnumberscale:"1"}},g=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=t.getName&&t.getName(),a=this.csConf=(0,o.extend2)({},h),i=p[r];this.cleaneValueCacheStore={},this.percentStrCacheStore={},i&&(a=(0,o.extend2)(a,i)),this.linkedItems={chart:t},this.configure(n)}return e.prototype.setDefaults=function(){var e=this.linkedItems.chart,t=e.getName&&e.getName(),n=this.csConf=(0,o.extend2)({},h),r=p[t];r&&(0,o.extend2)(n,r)},e.prototype.configure=function(e){var t,n,r,a,i,s,l,c,u,d,f,p,g,m,v,y,b,x,w,C,_,E,k,S,A,T,M,O,L=this,I=L.linkedItems.chart,F=e||I.getFromEnv("chart-attrib"),N=I.getName&&I.getName(),D=I.config,P=L.csConf;if(D||(D=I),L.csConf=P,L.useScaleRecursively=D.useScaleRecursively,(0,o.getValidValue)(F.numberscaleunit)&&(t=F.numberscaleunit.split(",")),(n=(0,o.getValidValue)(F.snumberscaleunit,F.numberscaleunit))&&(n=n.split(",")),(r=(0,o.getValidValue)(F.xnumberscaleunit,F.numberscaleunit))&&(r=r.split(",")),(a=(0,o.getValidValue)(F.ticknumberscaleunit,F.numberscaleunit))&&(a=a.split(",")),(i=(0,o.getValidValue)(F.ynumberscaleunit,F.numberscaleunit))&&(i=i.split(",")),(0,o.getValidValue)(F.numberscalevalue)&&(s=F.numberscalevalue.split(",")),(f=(0,o.getValidValue)(F.snumberscalevalue,F.numberscalevalue))&&(f=f.split(",")),(l=(0,o.getValidValue)(F.xnumberscalevalue,F.numberscalevalue))&&(l=l.split(",")),(c=(0,o.getValidValue)(F.ticknumberscalevalue,F.numberscalevalue))&&(c=c.split(",")),(u=(0,o.getValidValue)(F.ynumberscalevalue,F.numberscalevalue))&&(u=u.split(",")),(0,o.getValidValue)(F.thousandseparatorposition))for(b=(d=F.thousandseparatorposition.split(",")).length,w=h.thousandseparatorposition[0];b--;)(x=parseInt(d[b],10))<=0&&(x=w),w=d[b]=x;C=(0,o.pluckNumber)(F.scalerecursively,0),_=(0,o.pluckNumber)(F.sscalerecursively,C),E=(0,o.pluckNumber)(F.xscalerecursively,C),k=(0,o.pluckNumber)(F.maxscalerecursion,-1),S=(0,o.pluckNumber)(F.smaxscalerecursion,k),A=(0,o.pluckNumber)(F.xmaxscalerecursion,k),T=(0,o.getValidValue)(F.scaleseparator," "),M=(0,o.getValidValue)(F.sscaleseparator,T),O=(0,o.getValidValue)(F.xscaleseparator,T),k||(k=-1),L.baseConf=y={cacheStore:[],formatnumber:(0,o.pluck)(F.formatnumber,P.formatnumber),formatnumberscale:(0,o.pluck)(F.formatnumberscale,D.formatnumberscale,P.formatnumberscale),forcenumberscale:(0,o.pluck)(F.forcenumberscale,P.forcenumberscale),defaultnumberscale:(0,o.getFirstValue)(F.defaultnumberscale,P.defaultnumberscale),numberscaleunit:(0,o.pluck)(t,P.numberscaleunit).concat(),numberscalevalue:(0,o.pluck)(s,P.numberscalevalue).concat(),numberprefix:(0,o.getFirstValue)(F.numberprefix,P.numberprefix),numbersuffix:(0,o.getFirstValue)(F.numbersuffix,P.numbersuffix),decimalprecision:parseInt("auto"===F.decimals?P.decimalprecision:(0,o.pluck)(F.decimals,F.decimalprecision,D.decimals,P.decimals,D.decimalprecision,P.decimalprecision),10),forcedecimals:(0,o.pluck)(F.forcedecimals,P.forcedecimals),decimalseparator:(0,o.pluck)(F.decimalseparator,P.decimalseparator),thousandseparator:(0,o.pluck)(F.thousandseparator,P.thousandseparator),thousandseparatorposition:(0,o.pluck)(d,P.thousandseparatorposition),indecimalseparator:(0,o.getFirstValue)(F.indecimalseparator,P.indecimalseparator),inthousandseparator:(0,o.getFirstValue)(F.inthousandseparator,P.inthousandseparator),scalerecursively:C,maxscalerecursion:k,scaleseparator:T},(0,o.getValidValue)(y.inthousandseparator)&&(L.baseConf._REGinthousandseparator=new RegExp((0,o.regescape)(y.inthousandseparator),"g")),(0,o.getValidValue)(y.indecimalseparator)&&(L.baseConf._REGindecimalseparator=new RegExp((0,o.regescape)(y.indecimalseparator))),L.Y=[],p={cacheStore:[],formatnumber:y.formatnumber,formatnumberscale:y.formatnumberscale,forcenumberscale:y.forcenumberscale,defaultnumberscale:y.defaultnumberscale,numberscaleunit:y.numberscaleunit.concat(),numberscalevalue:y.numberscalevalue.concat(),numberprefix:y.numberprefix,numbersuffix:y.numbersuffix,decimalprecision:y.decimalprecision,forcedecimals:y.forcedecimals,decimalseparator:y.decimalseparator,thousandseparator:y.thousandseparator,thousandseparatorposition:y.thousandseparatorposition,indecimalseparator:y.indecimalseparator,inthousandseparator:y.inthousandseparator,scalerecursively:C,maxscalerecursion:k,scaleseparator:T},D.useScaleRecursively&&(p.numberscalevalue&&p.numberscalevalue.length)==(p.numberscaleunit&&p.numberscaleunit.length)||(p.scalerecursively=C=0),m={cacheStore:[],formatnumber:p.formatnumber,formatnumberscale:p.formatnumberscale,forcenumberscale:p.forcenumberscale,defaultnumberscale:p.defaultnumberscale,numberscaleunit:p.numberscaleunit.concat(),numberscalevalue:p.numberscalevalue.concat(),numberprefix:p.numberprefix,numbersuffix:p.numbersuffix,decimalprecision:parseInt((0,o.pluck)(F.yaxisvaluedecimals,p.decimalprecision,2),10),forcedecimals:(0,o.pluck)(F.forceyaxisvaluedecimals,p.forcedecimals),decimalseparator:p.decimalseparator,thousandseparator:p.thousandseparator,thousandseparatorposition:p.thousandseparatorposition.concat(),indecimalseparator:p.indecimalseparator,inthousandseparator:p.inthousandseparator,scalerecursively:C,maxscalerecursion:k,scaleseparator:T},v={cacheStore:[],formatnumber:(0,o.pluck)(F.sformatnumber,h.sformatnumber),formatnumberscale:(0,o.pluck)(F.sformatnumberscale,h.sformatnumberscale),forcenumberscale:(0,o.pluck)(F.sforcenumberscale,h.sforcenumberscale),defaultnumberscale:(0,o.getFirstValue)(F.sdefaultnumberscale,p.defaultnumberscale),numberscaleunit:(0,o.pluck)(n,h.snumberscaleunit).concat(),numberscalevalue:(0,o.pluck)(f,h.snumberscalevalue).concat(),numberprefix:(0,o.getFirstValue)(F.snumberprefix,h.snumberprefix),numbersuffix:(0,o.getFirstValue)(F.snumbersuffix,h.snumbersuffix),decimalprecision:parseInt((0,o.pluck)(F.syaxisvaluedecimals,F.sdecimals,F.decimals,h.sdecimals),10),forcedecimals:(0,o.pluck)(F.forcesyaxisvaluedecimals,F.sforcedecimals,F.forcedecimals,h.sforcedecimals),decimalseparator:(0,o.pluck)(F.decimalseparator,h.decimalseparator),thousandseparator:(0,o.pluck)(F.thousandseparator,h.thousandseparator),thousandseparatorposition:p.thousandseparatorposition.concat(),indecimalseparator:(0,o.pluck)(F.indecimalseparator,h.indecimalseparator),inthousandseparator:(0,o.pluck)(F.inthousandseparator,h.inthousandseparator),scalerecursively:_,maxscalerecursion:S,scaleseparator:M},(g=(0,o.extend2)({},v)).decimalprecision=parseInt((0,o.pluck)(F.sdecimals,F.decimals,F.syaxisvaluedecimals,h.sdecimals),10),g.forcedecimals=(0,o.pluck)(F.sforcedecimals,F.forcedecimals,F.forcesyaxisvaluedecimals,h.sforcedecimals),g.cacheStore=[],D.useScaleRecursively&&(v.numberscalevalue&&v.numberscalevalue.length)==(v.numberscaleunit&&v.numberscaleunit.length)||(v.scalerecursively=_=0),/^(bubble|scatter|selectscatter|zoomscatter)$/gi.test(N)&&(m.formatnumber=(0,o.pluck)(F.yformatnumber,m.formatnumber),m.formatnumberscale=(0,o.pluck)(F.yformatnumberscale,m.formatnumberscale),m.forcenumberscale=(0,o.pluck)(F.yforcenumberscale,m.forcenumberscale),m.defaultnumberscale=(0,o.getFirstValue)(F.ydefaultnumberscale,m.defaultnumberscale),m.numberscaleunit=(0,o.pluck)(i,m.numberscaleunit),m.numberscalevalue=(0,o.pluck)(u,m.numberscalevalue),m.numberprefix=(0,o.pluck)(F.ynumberprefix,m.numberprefix),m.numbersuffix=(0,o.pluck)(F.ynumbersuffix,m.numbersuffix),p.formatnumber=(0,o.pluck)(F.yformatnumber,p.formatnumber),p.formatnumberscale=(0,o.pluck)(F.yformatnumberscale,p.formatnumberscale),p.forcenumberscale=(0,o.pluck)(F.yforcenumberscale,p.forcenumberscale),p.defaultnumberscale=(0,o.getFirstValue)(F.ydefaultnumberscale,p.defaultnumberscale),p.numberscaleunit=(0,o.pluck)(F.ynumberscaleunit,p.numberscaleunit.concat()),p.numberscalevalue=(0,o.pluck)(F.ynumberscalevalue,p.numberscalevalue.concat()),p.numberprefix=(0,o.pluck)(F.ynumberprefix,p.numberprefix),p.numbersuffix=(0,o.pluck)(F.ynumbersuffix,p.numbersuffix)),/^(pie2d|pie3d|doughnut2d|doughnut3d|marimekko|pareto2d|pareto3d)$/.test(N)&&(p.decimalprecision=(0,o.pluck)(F.decimals,"2")),C&&(p.numberscalevalue.push(1),p.numberscaleunit.unshift(p.defaultnumberscale),m.numberscalevalue.push(1),m.numberscaleunit.unshift(m.defaultnumberscale)),_&&(v.numberscalevalue.push(1),v.numberscaleunit.unshift(v.defaultnumberscale),g.numberscalevalue.push(1),g.numberscaleunit.unshift(g.defaultnumberscale)),L.Y[0]={yAxisLabelConf:m,dataLabelConf:p},L.Y[1]={yAxisLabelConf:v,dataLabelConf:g},L.paramLabels=p,L.param1=m,L.param2=v,L.paramLabels2=g,L.paramX={cacheStore:[],formatnumber:(0,o.pluck)(F.xformatnumber,y.formatnumber),formatnumberscale:(0,o.pluck)(F.xformatnumberscale,y.formatnumberscale),forcenumberscale:(0,o.pluck)(F.xforcenumberscale,y.forcenumberscale),defaultnumberscale:(0,o.getFirstValue)(F.xdefaultnumberscale,y.defaultnumberscale),numberscaleunit:(0,o.pluck)(r,y.numberscaleunit.concat()),numberscalevalue:(0,o.pluck)(l,y.numberscalevalue.concat()),numberprefix:(0,o.pluck)(F.xnumberprefix,y.numberprefix),numbersuffix:(0,o.pluck)(F.xnumbersuffix,y.numbersuffix),decimalprecision:parseInt((0,o.pluck)(F.xaxisvaluedecimals,F.xaxisvaluesdecimals,y.decimalprecision,2),10),forcedecimals:(0,o.pluck)(F.forcexaxisvaluedecimals,0),decimalseparator:y.decimalseparator,thousandseparator:y.thousandseparator,thousandseparatorposition:y.thousandseparatorposition.concat(),indecimalseparator:y.indecimalseparator,inthousandseparator:y.inthousandseparator,scalerecursively:E,maxscalerecursion:A,scaleseparator:O},L.paramLegend=(0,o.extend2)((0,o.extend2)({},y),{cacheStore:[],decimalprecision:parseInt((0,o.pluckNumber)(F.legendvaluedecimals,y.decimalprecision,2),10),forcedecimals:(0,o.pluckNumber)(F.legendvalueforcedecimals,y.forcedecimals,0),formatnumberscale:(0,o.pluck)(F.legendvalueformatnumberscale,y.formatnumberscale),forcenumberscale:(0,o.pluck)(F.legendvalueforcenumberscale,y.forcenumberscale),formatnumber:(0,o.pluck)(F.legendvalueformatnumber,y.formatnumber)}),C&&(L.paramLegend.numberscalevalue.push(1),L.paramLegend.numberscaleunit.unshift(L.paramLegend.defaultnumberscale)),D.useScaleRecursively&&(L.paramX.numberscalevalue&&L.paramX.numberscalevalue.length)==(L.paramX.numberscaleunit&&L.paramX.numberscaleunit.length)||(L.paramX.scalerecursively=E=0),E&&(L.paramX.numberscalevalue.push(1),L.paramX.numberscaleunit.unshift(L.paramX.defaultnumberscale)),L.paramScale={cacheStore:[],formatnumber:(0,o.pluck)(F.tickformatnumber,y.formatnumber),formatnumberscale:(0,o.pluck)(F.tickformatnumberscale,y.formatnumberscale),forcenumberscale:(0,o.pluck)(F.tickforcenumberscale,y.forcenumberscale),defaultnumberscale:(0,o.getFirstValue)(F.tickdefaultnumberscale,y.defaultnumberscale),numberscaleunit:(0,o.pluck)(a,y.numberscaleunit.concat()),numberscalevalue:(0,o.pluck)(c,y.numberscalevalue.concat()),numberprefix:(0,o.pluck)(F.ticknumberprefix,y.numberprefix),numbersuffix:(0,o.pluck)(F.ticknumbersuffix,y.numbersuffix),decimalprecision:parseInt((0,o.pluck)(F.tickvaluedecimals,y.decimalprecision,"2"),10),forcedecimals:(0,o.pluck)(F.forcetickvaluedecimals,y.forcedecimals,0),decimalseparator:y.decimalseparator,thousandseparator:y.thousandseparator,thousandseparatorposition:y.thousandseparatorposition.concat(),indecimalseparator:y.indecimalseparator,inthousandseparator:y.inthousandseparator,scalerecursively:C,maxscalerecursion:k,scaleseparator:T},C&&(L.paramScale.numberscalevalue.push(1),L.paramScale.numberscaleunit.unshift(L.paramScale.defaultnumberscale)),L.timeConf={inputDateFormat:(0,o.pluck)(F.inputdateformat,F.dateformat,"mm/dd/yyyy"),outputDateFormat:(0,o.pluck)(F.outputdateformat,F.inputdateformat,F.dateformat,"mm/dd/yyyy"),days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],daySuffix:["","st","nd","rd","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","th","st","nd","rd","th","th","th","th","th","th","th","st"]},L.cleaneValueCacheStore={},L.percentStrCacheStore={}},e.prototype.dispose=function(){var e=this;e.Y&&delete e.Y,e.cleaneValueCacheStore&&delete e.cleaneValueCacheStore,e.percentStrCacheStore&&delete e.percentStrCacheStore,e.paramLabels&&delete e.paramLabels,e.param1&&delete e.param1,e.param2&&delete e.param2,e.paramLabels2&&delete e.paramLabels2,e.csConf&&delete e.csConf,e.chart&&delete e.chart,e.baseConf&&delete e.baseConf,e.timeConf&&delete e.timeConf,e.paramX&&delete e.paramX,e.paramScale&&delete e.paramScale},e.prototype.parseMLAxisConf=function(e,t){var n,r,i,s,l,c,u,d,f=this.baseConf,p=this.csConf,g=(0,o.pluckNumber)(e.scalerecursively,f.scalerecursively),m=(0,o.pluckNumber)(e.maxscalerecursion,f.maxscalerecursion),v=(0,o.getValidValue)(e.scaleseparator,f.scaleseparator);if(t=(0,o.pluckNumber)(t,this.Y.length),(0,o.getValidValue)(e.numberscaleunit)&&(r=e.numberscaleunit.split(",")),(0,o.getValidValue)(e.numberscalevalue)&&(i=e.numberscalevalue.split(",")),m||(m=-1),(0,o.getValidValue)(e.thousandseparatorposition))for(c=(l=e.thousandseparatorposition.split(",")).length,d=h.thousandseparatorposition[0];c--;)(u=(0,o.pluckNumber)(a(l[c])))?d=u:u=d,l[c]=u;n={cacheStore:[],formatnumber:(0,o.pluck)(e.formatnumber,f.formatnumber),formatnumberscale:(0,o.pluck)(e.formatnumberscale,f.formatnumberscale),forcenumberscale:(0,o.pluck)(e.forcenumberscale,f.forcenumberscale),defaultnumberscale:(0,o.getFirstValue)(e.defaultnumberscale,f.defaultnumberscale),numberscaleunit:(0,o.pluck)(r,f.numberscaleunit).concat(),numberscalevalue:(0,o.pluck)(i,f.numberscalevalue).concat(),numberprefix:(0,o.getFirstValue)(e.numberprefix,f.numberprefix),numbersuffix:(0,o.getFirstValue)(e.numbersuffix,f.numbersuffix),forcedecimals:(0,o.pluck)(e.forcedecimals,f.forcedecimals),decimalprecision:parseInt("auto"===e.decimals?p.decimalprecision:(0,o.pluck)(e.decimals,f.decimalprecision),10),decimalseparator:(0,o.pluck)(e.decimalseparator,f.decimalseparator),thousandseparator:(0,o.pluck)(e.thousandseparator,f.thousandseparator),thousandseparatorposition:(0,o.pluck)(l,f.thousandseparatorposition),indecimalseparator:(0,o.getFirstValue)(e.indecimalseparator,f.indecimalseparator),inthousandseparator:(0,o.getFirstValue)(e.inthousandseparator,f.inthousandseparator),scalerecursively:g,maxscalerecursion:m,scaleseparator:v},this.useScaleRecursively&&(n.numberscalevalue&&n.numberscalevalue.length)==(n.numberscaleunit&&n.numberscaleunit.length)||(n.scalerecursively=g=0),s={cacheStore:[],formatnumber:n.formatnumber,formatnumberscale:n.formatnumberscale,forcenumberscale:n.forcenumberscale,defaultnumberscale:n.defaultnumberscale,numberscaleunit:n.numberscaleunit.concat(),numberscalevalue:n.numberscalevalue.concat(),numberprefix:n.numberprefix,numbersuffix:n.numbersuffix,decimalprecision:parseInt((0,o.pluck)(e.yaxisvaluedecimals,n.decimalprecision,2),10),forcedecimals:(0,o.pluck)(e.forceyaxisvaluedecimals,n.forcedecimals),decimalseparator:n.decimalseparator,thousandseparator:n.thousandseparator,thousandseparatorposition:n.thousandseparatorposition.concat(),indecimalseparator:n.indecimalseparator,inthousandseparator:n.inthousandseparator,scalerecursively:g,maxscalerecursion:m,scaleseparator:v},g&&(n.numberscalevalue.push(1),n.numberscaleunit.unshift(n.defaultnumberscale),s.numberscalevalue.push(1),s.numberscaleunit.unshift(s.defaultnumberscale)),this.Y[t]={dataLabelConf:n,yAxisLabelConf:s}},e.prototype.percentValue=function(e){var t,n=this.percentStrCacheStore[e];return void 0===n&&(t=isNaN(this.paramLabels.decimalprecision)?"2":this.paramLabels.decimalprecision,n=this.percentStrCacheStore[e]=f(d(e,t,this.paramLabels.forcedecimals),this.paramLabels.decimalseparator,this.paramLabels.thousandseparator,this.paramLabels.thousandseparatorposition)+"%"),n},e.prototype.getCleanValue=function(e,t){var n,r=this.cleaneValueCacheStore[e];return(void 0===r||t)&&(n=u(e,this.baseConf),this.cleaneValueCacheStore[e]=r=isNaN(n)?null:t?a(n):n),r},e.prototype.dataLabels=function(e,t){var n,r=this.Y[t]||(t?this.Y[1]:this.Y[0]);return void 0===(n=(r=r&&r.dataLabelConf||this.baseConf).cacheStore[e])&&(n=r.cacheStore[e]=l(e,r)),n},e.prototype.yAxis=function(e,t){var n,r=this.Y[t]||(t?this.Y[1]:this.Y[0]);return void 0===(n=(r=r&&r.yAxisLabelConf||this.baseConf).cacheStore[e])&&(n=r.cacheStore[e]=l(e,r,!0)),n},e.prototype.xAxis=function(e){var t=this.paramX.cacheStore[e];return void 0===t&&(t=this.paramX.cacheStore[e]=l(e,this.paramX,!0)),t},e.prototype.sYAxis=function(e){var t,n=this.Y[1];return void 0===(t=(n=n&&n.yAxisLabelConf||this.baseConf).cacheStore[e])&&(t=n.cacheStore[e]=l(e,n)),t},e.prototype.scale=function(e){var t=this.paramScale.cacheStore[e];return void 0===t&&(t=this.paramScale.cacheStore[e]=l(e,this.paramScale)),t},e.prototype.legendValue=function(e){var t=this.paramLegend.cacheStore[e];return void 0===t&&(t=this.paramLegend.cacheStore[e]=l(e,this.paramLegend)),t},e.prototype.legendPercentValue=function(e){var t,n=this.percentStrCacheStore[e],r=this.paramLegend;return void 0===n&&(t=isNaN(r.decimalprecision)?"2":r.decimalprecision,n=this.percentStrCacheStore[e]=f(d(e,t,r.forcedecimals),r.decimalseparator,r.thousandseparator,r.thousandseparatorposition)+"%"),n},e.prototype.getDateValue=function(e){var t,n,r,a,i;return e&&!/\//.test(this.timeConf.inputDateFormat)&&(e=e.replace(new RegExp(this.timeConf.inputDateFormat.replace(/[a-z]/gi,"").slice(0,1),"g"),"/")),e=/^dd/.test(this.timeConf.inputDateFormat)&&e&&e.replace(/(\d{1,2})\/(\d{1,2})\/(\d{2,4})/,"$2/$1/$3")||e,!(i=(t=new Date(e)).getTime())&&e&&/\:/.test(e)&&(e=e.split(":"),n=(0,o.pluckNumber)(e[0],0),r=(0,o.pluckNumber)(e[1],0),a=(0,o.pluckNumber)(e[2],0),n=n>23?24===n&&0===r&&0===a?n:23:n,r=r>59?59:r,a=a>59?59:a,(t=new Date).setHours(n),t.setMinutes(r),t.setSeconds(a),i=t.getTime()),{ms:i,date:t}},e.prototype.getFormattedDate=function(e,t){var n="object"===(void 0===e?"undefined":r(e))&&e||new Date(e),a=this.timeConf,i=(0,o.pluck)(t,a.outputDateFormat),s=n.getFullYear(),l=n.getMonth(),c=n.getDate(),u=n.getDay(),d=n.getMinutes(),f=n.getSeconds(),h=n.getHours();return d=d>9?""+d:"0"+d,f=f>9?""+f:"0"+f,h=h>9?""+h:"0"+h,i.match(/dnl/)&&(i=i.replace(/dnl/gi,a.days[u])),i.match(/dns/)&&(i=i.replace(/dns/gi,a.days[u]&&a.days[u].substr(0,3))),i.match(/dd/)&&(i=i.replace(/dd/gi,c)),i.match(/mnl/)&&(i=i.replace(/mnl/gi,a.months[l])),i.match(/mns/)&&(i=i.replace(/mns/gi,a.months[l]&&a.months[l].substr(0,3))),i.match(/mm/)&&(i=i.replace(/mm/gi,l+1)),i.match(/yyyy/)&&(i=i.replace(/yyyy/gi,s)),i.match(/yy/)&&(i=i.replace(/yy/gi,(s%1e3%100+"").replace(/^(\d)$/,"0$1"))),i.match(/hh12/)&&(i=i.replace(/hh12/gi,h%12||12)),i.match(/hh/)&&(i=i.replace(/hh/gi,h)),i.match(/mn/)&&(i=i.replace(/mn/gi,d)),i.match(/ss/)&&(i=i.replace(/ss/gi,f)),i.match(/ampm/)&&(i=i.replace(/ampm/gi,h<12?"AM":"PM")),i.match(/ds/)&&(i=i.replace(/ds/gi,a.daySuffix[c])),i},e}();l=function(e,t,n){var r,a,i,s,l,u,h,p,g,m,v;if(null!==e){if(r=(e=Number(e))+"",a=1==t.formatnumberscale?t.defaultnumberscale:"",m=(g=r.split(".")[1])?g.length:t.forcedecimals?"2":"",1==t.formatnumberscale&&(r=(v=c(e,t.defaultnumberscale,t.numberscalevalue,t.numberscaleunit,t.scalerecursively,t.forcenumberscale)).value,e=v.value,a=v.scale),t.scalerecursively&&0!==t.formatnumberscale&&"0"!==t.formatnumberscale){if(i=v.value,s=v.scale,l=-1==t.maxscalerecursion?i.length:Math.min(i.length,t.maxscalerecursion),1==t.formatnumber)for(r="",p=0;p<l;p++)h=(u=0===p?i[p]:Math.abs(i[p]))+"",p==l-1&&(h=d(u,(0,o.pluck)(t.decimalprecision,m),t.forcedecimals)),r=r+f(h,t.decimalseparator,t.thousandseparator,t.thousandseparatorposition)+s[p]+(p<l-1?t.scaleseparator:"");else for(r="",p=0;p<l;p++)r=r+(0===p?i[p]:Math.abs(i[p])+"")+s[p]+(p<l-1?t.scaleseparator:"");r=(t.numberprefix||"")+r+(t.numbersuffix||"")}else 1==t.formatnumber&&(r=d(e,(0,o.pluck)(t.decimalprecision,m),t.forcedecimals),r=f(r,t.decimalseparator,t.thousandseparator,t.thousandseparatorposition,n)),r=(t.numberprefix||"")+r+a+(t.numbersuffix||"");return r}},c=function(e,t,n,r,a,i){var s,l,c,u,d={},f=t,h=0,p=[],g=[];if(i=(0,o.pluckNumber)(i)||0,a){for(s=(0,o.pluckNumber)(n[0])||1e3,h=0;h<n.length;h++){if(c=(0,o.pluckNumber)(n[h])||1e3,!(Math.abs(Number(e))>=c&&h<n.length-1)){0===h&&""===t&&i?(e=Number(e)/s,p.push(e),g.push(r[1]||"")):(1===h&&""===t&&i?(l=e+(p.length?p.pop():0),g.pop(),p.push(l)):p.push(e),g.push(r[h]));break}e=(e-(u=e%c))/c,0===h&&0!==u&&""===r[h]&&i?(p.push(u/s),g.push(r[1]||"")):0!==u&&(1===h&&""===t&&i?(l=u+(p.length?p.pop():0),g.pop(),p.push(l)):p.push(u),g.push(r[h]))}p.reverse(),g.reverse(),d.value=p,d.scale=g}else{if(n.length===r.length)for(h=0;h<n.length;h++){if(!((c=(0,o.pluckNumber)(n[h])||1e3)&&Math.abs(Number(e))>=c)){0===h&&""===t&&i&&(f=r[0]||"",e=Number(e)/c);break}f=r[h]||"",e=Number(e)/c}d.value=e,d.scale=f}return d},d=function(e,t,n){var r,o,a,l;if(t<=0)return s(e)+"";if(isNaN(t))return(e+="").length>12&&-1!=e.indexOf(".")&&(t=12-e.split(".")[0].length,r=i(10,t),e=o=s(e*r)/r+""),e;if(r=i(10,t),o=s(e*r)/r+"",1==n)for(-1==o.indexOf(".")&&(o+=".0"),a=t-o.split(".")[1].length,l=1;l<=a;l++)o+="0";return o},f=function(e,t,n,r,o){var a,i,s,l,c=Number(e),u="",d=!1,f="",h="",p=0,g=0;if(isNaN(c))return"";if(c>1e15)return a=o?1:14,c.toExponential(a);if(p=0,g=e.length,-1!=e.indexOf(".")&&(u=e.substring(e.indexOf(".")+1,e.length),g=e.indexOf(".")),c<0&&(d=!0,p=1),(i=(f=e.substring(p,g)).length)<(l=r[s=r.length-1]))h=f;else for(;i>=l;)h=(i-l?n:"")+f.substr(i-l,l)+h,(i-=l)<(l=(s-=1)<=0?r[0]:r[s])&&(h=f.substring(i,0)+h);return""!=u&&(h=h+t+u),!0===d&&(h="-"+h),h},u=function(e,t){return e+="",t._REGinthousandseparator&&(e=e.replace(t._REGinthousandseparator,"")),t._REGindecimalseparator&&(e=e.replace(t._REGindecimalseparator,".")),e=parseFloat(e),isFinite(e)?e:NaN},t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(139),a=(r=o)&&r.__esModule?r:{"default":r};a["default"].stopPartialEventPropagation=!0,a["default"]._stopabsolutePath=!0,t["default"]={extension:a["default"],name:"redraphael",type:"plugin"}},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=l(n(140)),i=n(121),s=l(i);function l(e){return e&&e.__esModule?e:{"default":e}}var c="undefined"!=typeof window?window:void 0!==e?e:null;function u(e){var t,n,r;return u._url===undefined&&(u._url=g),u.is(e,S)?d?e():a["default"].on("raphael.DOMload",e):u.is(e,C)?u._engine.create[y](u,e.splice(0,3+u.is(e[0],x))).add(e):(n=(0,i.getArrayCopy)(arguments),t=Array.prototype.slice.call(n,0),u.is(t[t.length-1],S)?(r=t.pop(),d?r.call(u._engine.create[y](u,t)):a["default"].on("raphael.DOMload",function(){r.call(u._engine.create[y](u,t))})):u._engine.create[y](u,arguments))}u.upgrade="1.0.0",u.version="2.1.0",u.eve=a["default"];var d,f,h,p,g="",m=" ",v="hasOwnProperty",y="apply",b="concat",x="number",w="string",C="array",_="object",E="split",k="none",S="function",A=/R/i,T=/trident/i.test(c.navigator.userAgent),M={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},O=Array.prototype.splice,L=function(){}.hasOwnProperty("prototype"),I={doc:c.document,win:c},F=I.doc,N=I.win,D=u.safePointerEventMapping={mouseover:"pointerover",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup",mouseout:"pointerout"},P=N.navigator,R=u.supportsTouch="ontouchstart"in F||P.maxTouchPoints||P.msMaxTouchPoints,j=u.supportsPointer="onpointerover"in F,V=u.isEdge=/Edge/.test(P.userAgent),B=u.isIE11=/trident/i.test(P.userAgent)&&/rv:11/i.test(P.userAgent)&&!N.opera,G=u.isFirefox=/Firefox/.test(P.userAgent),H=u.isWindows=/Windows/.test(P.userAgent),z="m",$="M",X="L",U=[],W=/[a-z]/i,Y=function(e,t,n){var r=t.toLowerCase(),o=[],a=0;if(U.length=0,n.replace(Se,function(e,t){t&&U.push(+t)}),"r"===r)f.push([t][b](U));else if("z"===r)f.push([t]);else if(U.length>=M[r]){for(;a<U.length;)a%M[r]?o.push(U[a]):(o.length&&f.push(o)&&(o=[]),o.push(t,U[a])),a++;f.push(o)}},q=function(){},K=(u.ca=u.customAttributes=q.prototype,function(){this.ca=this.customAttributes=new q,this._CustomAttributes=function(){},this._CustomAttributes.prototype=this.ca,this._elementsById={},this.id=u._oid++,(0,a["default"])("raphael.new",this)}),J=u.fn=K.prototype=u.prototype,Z="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel dragstart dragmove dragend"[E](m),Q={dragstart:"touchstart",dragmove:"touchmove",dragend:"touchend"},ee=String,te=N.parseFloat,ne=N.parseInt,re=Math,oe=re.max,ae=re.min,ie=re.abs,se=re.pow,le=re.cos,ce=re.sin,ue=re.sqrt,de=re.round,fe=re.PI,he=fe/180,pe=180/fe,ge=ee.prototype.toLowerCase,me=ee.prototype.toUpperCase,ve=Object.prototype.toString,ye=/[, ]+/,be=/\{(\d+)\}/g,xe=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,we=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,Ce=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,_e=/,?([achlmqrstvxz]),?/gi,Ee=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ke=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,Se=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,Ae={NaN:1,Infinity:1,"-Infinity":1},Te={hs:1,rg:1},Me=u._availableAttrs=((r={"arrow-end":k,"arrow-start":k,blur:0,"clip-rect":"0 0 1e9 1e9","clip-path":g,cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"about:blank","letter-spacing":0,"line-height":12,"vertical-align":"middle",opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:g,stroke:"#000","stroke-dasharray":g,"stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",visibility:g,title:g,transform:g,rotation:0,width:0,x:0,y:0,"shape-rendering":"auto",alpha:x,"font-stretch":"normal","alignment-baseline":"auto","baseline-shift":"auto","clip-rule":"nonzero",direction:"ltr","dominant-baseline":"auto","fill-rule":"nonzero",filter:k,"flood-color":"#000","flood-opacity":1,"font-size-adjust":k})["font-stretch"]="normal",r["font-variant"]="normal",r.kerning="auto",r["lighting-color"]="white",r["marker-end"]=k,r["marker-mid"]=k,r["marker-start"]=k,r.mask=k,r["pointer-events"]="visiblePainted",r["stop-color"]="#000",r["stop-opacity"]=1,r["stroke-dashoffset"]=0,r["text-decoration"]=k,r["vector-effect"]=g,r.visibility="visible",r["word-spacing"]="normal",r["writing-mode"]="lr-tb",r),Oe=u._availableAnimAttrs={blur:x,"clip-rect":"csv","clip-path":"path",cx:x,cy:x,fill:"colour","fill-opacity":x,"font-size":x,height:x,opacity:x,path:"path",r:x,rx:x,ry:x,stroke:"colour","stroke-opacity":x,"stroke-width":x,transform:"transform",width:x,x:x,y:x,color:"colour",borderColor:"colour",borderWidth:x,alpha:x,"text-bound":"text-bound"},Le={},Ie=function(e,t){return te(e)-te(t)},Fe=function(e){return e},Ne=u._rectPath=function(e,t,n,r,o){return o?[[$,e+o,t],["l",n-2*o,0],["a",o,o,0,0,1,o,o],["l",0,r-2*o],["a",o,o,0,0,1,-o,o],["l",2*o-n,0],["a",o,o,0,0,1,-o,-o],["l",0,2*o-r],["a",o,o,0,0,1,o,-o],["z"]]:[[$,e,t],["l",n,0],["l",0,r],["l",-n,0],["z"]]},De=function(e,t,n,r){return null==r&&(r=n),[[$,e,t],[z,0,-r],["a",n,r,0,1,1,0,2*r],["a",n,r,0,1,1,0,-2*r],["z"]]},Pe=u._getPath={group:function(){return!1},path:function(e){return e.attr("path")},circle:function(e){var t=e.attrs;return De(t.cx,t.cy,t.r)},ellipse:function(e){var t=e.attrs;return De(t.cx,t.cy,t.rx,t.ry)},rect:function(e){var t=e.attrs;return Ne(t.x,t.y,t.width,t.height,t.r)},image:function(e){var t=e.attrs;return Ne(t.x,t.y,t.width,t.height)},text:function(e){var t=e._getBBox();return Ne(t.x,t.y,t.width,t.height)}},Re=u.mapPath=function(e,t){if(!t)return e;var n,r,o,a,i,s,l;for(o=0,i=(e=lt(e).slice(0)).length;o<i;o++)for(a=1,s=(l=e[o]=e[o].slice(0)).length;a<s;a+=2)n=t.x(l[a],l[a+1]),r=t.y(l[a],l[a+1]),l[a]=n,l[a+1]=r;return e},je=u._lastArgIfGroup=function(e,t){var n=e.length-1,r=e[n];if(r&&r.constructor===u.el.constructor&&"group"===r.type)return t&&(e[n]=undefined,delete e[n],O.call(e,n,1)),r},Ve=u._serializeArgs=function(e){var t,n,r,o,a=e[0];if(u.is(a,_)&&!u.is(a,C)&&"group"!==a.type)for(n=a,a.path&&(t=a.path)&&!u.is(t,w)&&!u.is(t[0],C)&&(t+=g),r=1,o=arguments.length;r<o;r+=2)n[arguments[r]]||(n[arguments[r]]=arguments[r+1]);else for(n={},r=1,o=arguments.length;r<o;r+=2)n[arguments[r]]=e[(r-1)/2]||arguments[r+1];return n},Be=u.is=function(e,t){return"finite"===t?!Ae[v](+e):t===C?e instanceof Array:(t!==_||void 0!==e&&null!==e)&&("null"===t&&null===e||t===(void 0===e?"undefined":o(e))&&null!==e||t===_&&e===Object(e)||t===C&&Array.isArray&&Array.isArray(e)||ve.call(e).slice(8,-1).toLowerCase()===t)},Ge=u.clone=L?function(e){if(Object(e)!==e)return e;if(e instanceof Function)return e;var t=new e.constructor;for(var n in e)"prototype"!==n&&e[v](n)&&(t[n]=Ge(e[n]));return t}:function(e){if(Object(e)!==e)return e;if(e instanceof Function)return e;var t=new e.constructor;for(var n in e)e[v](n)&&(t[n]=Ge(e[n]));return t},He=c.Node;function ze(e){this._comparator=e,this._elements=[]}He&&!He.prototype.contains&&(He.prototype.contains=function(e){for(;e=e.parentNode;)if(e===this)return!0;return!1}),u._g=I,u.merge=i.merge,u.extend=s["default"],u.createUUID=(h=/[xy]/g,p=function(e){var t=16*re.random()|0;return("x"===e?t:3&t|8).toString(16)},function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(h,p).toUpperCase()}),u._radial_gradient=/^x?r(?:\(([^\)]*?)\))?/,u._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,u.getElementID=function(e){return"rr-"+e},ze.prototype.isEmpty=function(){return 0===this.size()},ze.prototype.peek=function(){return this.isEmpty()?null:this._elements[0]},ze.prototype.deq=function(){var e=this.peek(),t=this._elements.pop(),n=this.size();if(0===n)return e;this._elements[0]=t;for(var r=0;r<n;){var o=r,a=2*r+1,i=2*r+2;if(a<n&&this._compare(a,o)>=0&&(o=a),i<n&&this._compare(i,o)>=0&&(o=i),o===r)break;this._swap(o,r),r=o}return e},ze.prototype.enq=function(e){for(var t=this._elements.push(e),n=t-1;n>0;){var r=Math.floor((n-1)/2);if(this._compare(n,r)<=0)break;this._swap(r,n),n=r}return t},ze.prototype.size=function(){return this._elements.length},ze.prototype._compare=function(e,t){return this._comparator(this._elements[e],this._elements[t])},ze.prototype._swap=function(e,t){var n=this._elements[e];this._elements[e]=this._elements[t],this._elements[t]=n},u.type=N.ENABLE_RED_CANVAS&&(N.CanvasRenderingContext2D||F.createElement("canvas").getContext)?"CANVAS":N.SVGAngle||F.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML",u.svg=!((u.vml="VML"===u.type)||(u.canvas="CANVAS"===u.type)),u._Paper=K,u._id=0,u._oid=0,u.rad=function(e){return e%360*he},u.deg=function(e){return e*pe%360};var $e=function(e){if(u.vml){var t,n=/^\s+|\s+$/g;try{var r=new ActiveXObject("htmlfile");r.write("<body>"),r.close(),t=r.body}catch(s){t=createPopup().document.body}var o=t.createTextRange();$e=(0,i.cacher)(function(e){try{t.style.color=ee(e).replace(n,g);var r=o.queryCommandValue("ForeColor");return"#"+("000000"+(r=(255&r)<<16|65280&r|(16711680&r)>>>16).toString(16)).slice(-6)}catch(s){return k}})}else{var a=I.doc.createElement("i");a.title="Raphaël Colour Picker",a.style.display=k,I.doc.body.appendChild(a),$e=(0,i.cacher)(function(e){return a.style.color=e,I.doc.defaultView.getComputedStyle(a,g).getPropertyValue("color")})}return $e(e)},Xe=function(){return"hsb("+[this.h,this.s,this.b]+")"},Ue=function(){return"hsl("+[this.h,this.s,this.l]+")"},We=function(){return this.hex},Ye=function(e,t,n){if(null==t&&Be(e,_)&&"r"in e&&"g"in e&&"b"in e&&(n=e.b,t=e.g,e=e.r),null==t&&Be(e,w)){var r=u.getRGB(e);e=r.r,t=r.g,n=r.b}return(e>1||t>1||n>1)&&(e/=255,t/=255,n/=255),[e,t,n]},qe=function(e,t,n,r){var o={r:e*=255,g:t*=255,b:n*=255,hex:u.rgb(e,t,n),toString:We};return Be(r,"finite")&&(o.opacity=r),o};function Ke(){return this.hex}function Je(e,t){for(var n=[],r=0,o=e.length;o-2*!t>r;r+=2){var a=[{x:+e[r-2],y:+e[r-1]},{x:+e[r],y:+e[r+1]},{x:+e[r+2],y:+e[r+3]},{x:+e[r+4],y:+e[r+5]}];t?r?o-4===r?a[3]={x:+e[0],y:+e[1]}:o-2===r&&(a[2]={x:+e[0],y:+e[1]},a[3]={x:+e[2],y:+e[3]}):a[0]={x:+e[o-2],y:+e[o-1]}:o-4===r?a[3]=a[2]:r||(a[0]={x:+e[r],y:+e[r+1]}),n.push(["C",(-a[0].x+6*a[1].x+a[2].x)/6,(-a[0].y+6*a[1].y+a[2].y)/6,(a[1].x+6*a[2].x-a[3].x)/6,(a[1].y+6*a[2].y-a[3].y)/6,a[2].x,a[2].y])}return n}u.color=function(e){var t;return u.is(e,_)&&"h"in e&&"s"in e&&"b"in e?(t=u.hsb2rgb(e),e.r=t.r,e.g=t.g,e.b=t.b,e.hex=t.hex):u.is(e,_)&&"h"in e&&"s"in e&&"l"in e?(t=u.hsl2rgb(e),e.r=t.r,e.g=t.g,e.b=t.b,e.hex=t.hex):(u.is(e,w)&&(e=u.getRGB(e)),u.is(e,_)&&"r"in e&&"g"in e&&"b"in e?(t=u.rgb2hsl(e),e.h=t.h,e.s=t.s,e.l=t.l,t=u.rgb2hsb(e),e.v=t.b):(e={hex:k}).r=e.g=e.b=e.h=e.s=e.v=e.l=-1),e.toString=We,e},u.hsb2rgb=function(e,t,n,r){var o,a,i,s,l;return this.is(e,_)&&"h"in e&&"s"in e&&"b"in e&&(n=e.b,t=e.s,r=(e=e.h).o),s=(l=n*t)*(1-ie((e=(e*=360)%360/60)%2-1)),o=a=i=n-l,qe(o+=[l,s,0,0,s,l][e=~~e],a+=[s,l,l,s,0,0][e],i+=[0,0,s,l,l,s][e],r)},u.hsl2rgb=function(e,t,n,r){var o,a,i,s,l;return this.is(e,_)&&"h"in e&&"s"in e&&"l"in e&&(n=e.l,t=e.s,e=e.h),(e>1||t>1||n>1)&&(e/=360,t/=100,n/=100),e=(e*=360)%360/60,s=(l=2*t*(n<.5?n:1-n))*(1-ie(e%2-1)),o=a=i=n-l/2,qe(o+=[l,s,0,0,s,l][e=~~e],a+=[s,l,l,s,0,0][e],i+=[0,0,s,l,l,s][e],r)},u.rgb2hsb=function(e,t,n){var r,o;return e=(n=Ye(e,t,n))[0],t=n[1],n=n[2],{h:((0===(o=(r=oe(e,t,n))-ae(e,t,n))?null:r===e?(t-n)/o:r===t?(n-e)/o+2:(e-t)/o+4)+360)%6*60/360,s:0===o?0:o/r,b:r,toString:Xe}},u.rgb2hsl=function(e,t,n){var r,o,a,i;return e=(n=Ye(e,t,n))[0],t=n[1],n=n[2],r=((o=oe(e,t,n))+(a=ae(e,t,n)))/2,{h:((0===(i=o-a)?null:o===e?(t-n)/i:o===t?(n-e)/i+2:(e-t)/i+4)+360)%6*60/360,s:0===i?0:r<.5?i/(2*r):i/(2-2*r),l:r,toString:Ue}},u._path2string=function(){return this.join(",").replace(_e,"$1")},u._cacher=i.cacher,u.getRGB=(0,i.cacher)(function(e){var t,n,r,o,a,i,s;return e&&Be(e,_)&&"opacity"in e&&(t=e.opacity),!e||(e=ee(e)).indexOf("-")+1?{r:-1,g:-1,b:-1,hex:k,error:1,toString:Ke}:e===k?{r:-1,g:-1,b:-1,hex:k,toString:Ke}:(!Te[v](e.toLowerCase().substring(0,2))&&"#"!==e.charAt()&&(e=$e(e)),(s=e.match(xe))?(s[2]&&(o=ne(s[2].substring(5),16),r=ne(s[2].substring(3,5),16),n=ne(s[2].substring(1,3),16)),s[3]&&(o=ne((a=s[3].charAt(3))+a,16),r=ne((a=s[3].charAt(2))+a,16),n=ne((a=s[3].charAt(1))+a,16)),s[4]&&(i=s[4][E](Ce),n=te(i[0]),"%"===i[0].slice(-1)&&(n*=2.55),r=te(i[1]),"%"===i[1].slice(-1)&&(r*=2.55),o=te(i[2]),"%"===i[2].slice(-1)&&(o*=2.55),"rgba"===s[1].toLowerCase().slice(0,4)&&(t=te(i[3])),i[3]&&"%"===i[3].slice(-1)&&(t/=100)),s[5]?(i=s[5][E](Ce),n=te(i[0]),"%"===i[0].slice(-1)&&(n*=2.55),r=te(i[1]),"%"===i[1].slice(-1)&&(r*=2.55),o=te(i[2]),"%"===i[2].slice(-1)&&(o*=2.55),("deg"===i[0].slice(-3)||"°"===i[0].slice(-1))&&(n/=360),"hsba"===s[1].toLowerCase().slice(0,4)&&(t=te(i[3])),i[3]&&"%"===i[3].slice(-1)&&(t/=100),u.hsb2rgb(n,r,o,t)):s[6]?(i=s[6][E](Ce),n=te(i[0]),"%"===i[0].slice(-1)&&(n*=2.55),r=te(i[1]),"%"===i[1].slice(-1)&&(r*=2.55),o=te(i[2]),"%"===i[2].slice(-1)&&(o*=2.55),("deg"===i[0].slice(-3)||"°"===i[0].slice(-1))&&(n/=360),"hsla"===s[1].toLowerCase().slice(0,4)&&(t=te(i[3])),i[3]&&"%"===i[3].slice(-1)&&(t/=100),u.hsl2rgb(n,r,o,t)):((s={r:n,g:r,b:o,toString:Ke}).hex="#"+(16777216|o|r<<8|n<<16).toString(16).slice(1),u.is(t,"finite")&&(s.opacity=t),s)):{r:-1,g:-1,b:-1,hex:k,error:1,toString:Ke})},u),u.tintshade=(0,i.cacher)(function(e,t){var n,r=u.getRGB(e),o=255;return t<0&&(t*=-1,o=0),t>1&&(t=1),(n=0===t?r:{r:o-(o-r.r)*t,g:o-(o-r.g)*t,b:o-(o-r.b)*t,toString:Ke}).hex=u.rgb(n.r,n.g,n.b),r.error&&(n.error=r.error),"opacity"in r?(n.rgba="rgba("+[n.r,n.g,n.b,r.opacity].join(",")+")",n.opacity=r.opacity):n.rgba="rgb("+[n.r,n.g,n.b].join(",")+")",n},u),u.rgb=(0,i.cacher)(function(e,t,n){return"#"+(16777216|n|t<<8|e<<16).toString(16).slice(1)}),u.sanitizePath=function(e){var t;return t=e.join?e.join(","):e,t=A.test(t)?u._pathToAbsolute(t):t.replace(_e,"$1")},u.parsePathString=function(e){if(!e||!e.length)return null;var t=Ze(e);if(t.arr)return nt(t.arr);if(f=void 0,u.is(e,C))if(e=ee(e).replace(/,?([A-Z]),?/g,",$1,").replace(/(^,?)|(,?$)/g,"").replace(/,,?/g,",").split(","),u.is(e[0],C))f=nt(e);else{var n,r,o,a=[],i=e.length;for(f=[],n=0;n<i;n+=1)W.test(e[n])?(a.length&&f.push(a),a=[r=e[n]],o=M[r.toLowerCase()]):o?(a.push(+e[n]),o--):e[n].length&&(f.push(a),a=[r].concat(+e[n]),o=M[r.toLowerCase()]-1);f.push(a)}return f&&f.length||(f=[],ee(e).replace(Ee,Y)),f.toString=u._path2string,t.arr=f,t.arr},u.parseTransformString=(0,i.cacher)(function(e){if(!e)return null;var t=[];return u.is(e,C)&&u.is(e[0],C)&&(t=nt(e)),t.length||ee(e).replace(ke,function(e,n,r){var o=[];ge.call(n);r.replace(Se,function(e,t){t&&o.push(+t)}),t.push([n][b](o))}),t.toString=u._path2string,t});var Ze=(0,i.cacher)(function(){return{}},void 0,void 0,void 0,500,{},!0);function Qe(e,t,n,r,o){return e*(e*(-3*t+9*n-9*r+3*o)+6*t-12*n+6*r)-3*t+3*n}function et(e,t,n,r,o,a,i,s,l){null==l&&(l=1);for(var c=(l=l>1?1:l<0?0:l)/2,u=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],d=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],f=0,h=0;h<12;h++){var p=c*u[h]+c,g=Qe(p,e,n,o,i),m=Qe(p,t,r,a,s);f+=d[h]*ue(g*g+m*m)}return c*f}u.findDotsAtSegment=function(e,t,n,r,o,a,i,s,l){var c=1-l,u=se(c,3),d=se(c,2),f=l*l,h=f*l,p=u*e+3*d*l*n+3*c*l*l*o+h*i,g=u*t+3*d*l*r+3*c*l*l*a+h*s,m=e+2*l*(n-e)+f*(o-2*n+e),v=t+2*l*(r-t)+f*(a-2*r+t),y=n+2*l*(o-n)+f*(i-2*o+n),b=r+2*l*(a-r)+f*(s-2*a+r),x=c*e+l*n,w=c*t+l*r,C=c*o+l*i,_=c*a+l*s,E=90-180*re.atan2(m-y,v-b)/fe;return(m>y||v<b)&&(E+=180),{x:p,y:g,m:{x:m,y:v},n:{x:y,y:b},start:{x:x,y:w},end:{x:C,y:_},alpha:E}},u._removedFactory=function(e){return function(){(0,a["default"])("raphael.log",null,"Raphaël: you are calling to method “"+e+"” of removed object",e)}};var tt=u.pathBBox=function(e){var t=Ze(e);if(!e)return{x:0,y:0,width:0,height:0,x2:0,y2:0};for(var n,r=0,o=0,a=[],i=[],s=0,l=(e=lt(e)).length;s<l;s++)if((n=e[s])[0]===$)r=n[1],o=n[2],a.push(r),i.push(o);else{var c=st(r,o,n[1],n[2],n[3],n[4],n[5],n[6]);a=a[b](c.min.x,c.max.x),i=i[b](c.min.y,c.max.y),r=n[5],o=n[6]}var u=ae[y](0,a),d=ae[y](0,i),f=oe[y](0,a),h=oe[y](0,i),p={x:u,y:d,x2:f,y2:h,width:f-u,height:h-d};return t.bbox=Ge(p),p},nt=function(e){var t=Ge(e);return t.toString=u._path2string,t},rt=u._pathToAbsolute=function(e){var t,n=Ze(e);if(!n.abs){if(u.is(e,C)&&u.is(e&&e[0],C)||(e=u.parsePathString(e)),!e||!e.length)return(t=[[$,0,0]]).toString=u._path2string,t;var r=0,o=0,a=0,i=0,s=0;t=[],e[0][0]===$&&(a=r=+e[0][1],i=o=+e[0][2],s++,t[0]=[$,r,o]);for(var l,c,d=3===e.length&&e[0][0]===$&&"R"===e[1][0].toUpperCase()&&"Z"===e[2][0].toUpperCase(),f=s,h=e.length;f<h;f++){if(t.push(l=[]),(c=e[f])[0]!=me.call(c[0]))switch(l[0]=me.call(c[0]),l[0]){case"A":l[1]=c[1],l[2]=c[2],l[3]=c[3],l[4]=c[4],l[5]=c[5],l[6]=+(c[6]+r),l[7]=+(c[7]+o);break;case"V":l[1]=+c[1]+o;break;case"H":l[1]=+c[1]+r;break;case"R":for(var p=[r,o][b](c.slice(1)),g=2,m=p.length;g<m;g++)p[g]=+p[g]+r,p[++g]=+p[g]+o;t.pop(),t=t[b](Je(p,d));break;case"M":a=+c[1]+r,i=+c[2]+o;default:for(g=1,m=c.length;g<m;g++)l[g]=+c[g]+(g%2?r:o),g%2?r=l[g]:o=l[g]}else if("R"===c[0])p=[r,o][b](c.slice(1)),t.pop(),t=t[b](Je(p,d)),l=["R"][b](c.slice(-2));else for(var v=0,y=c.length;v<y;v++)l[v]=c[v];switch(l[0]){case"Z":r=a,o=i;break;case"H":r=l[1];break;case"V":o=l[1];break;case"M":a=l[l.length-2],i=l[l.length-1];default:r=l[l.length-2],o=l[l.length-1]}}t.toString=u._path2string,n.abs=t}return nt(n.abs)},ot=function(e,t,n,r){return[e,t,n,r,n,r]},at=function(e,t,n,r,o,a){return[1/3*e+2/3*n,1/3*t+2/3*r,1/3*o+2/3*n,1/3*a+2/3*r,o,a]},it=function(e,t,n,r,o,a,i,s,l){var c=1-l;return{x:se(c,3)*e+3*se(c,2)*l*n+3*c*l*l*o+se(l,3)*i,y:se(c,3)*t+3*se(c,2)*l*r+3*c*l*l*a+se(l,3)*s}},st=(0,i.cacher)(function(e,t,n,r,o,a,i,s){var l,c=o-2*n+e-(i-2*o+n),u=2*(n-e)-2*(o-n),d=e-n,f=(-u+ue(u*u-4*c*d))/2/c,h=(-u-ue(u*u-4*c*d))/2/c,p=[t,s],g=[e,i];return ie(f)>"1e12"&&(f=.5),ie(h)>"1e12"&&(h=.5),f>0&&f<1&&(l=it(e,t,n,r,o,a,i,s,f),g.push(l.x),p.push(l.y)),h>0&&h<1&&(l=it(e,t,n,r,o,a,i,s,h),g.push(l.x),p.push(l.y)),f=(-(u=2*(r-t)-2*(a-r))+ue(u*u-4*(c=a-2*r+t-(s-2*a+r))*(d=t-r)))/2/c,h=(-u-ue(u*u-4*c*d))/2/c,ie(f)>"1e12"&&(f=.5),ie(h)>"1e12"&&(h=.5),f>0&&f<1&&(l=it(e,t,n,r,o,a,i,s,f),g.push(l.x),p.push(l.y)),h>0&&h<1&&(l=it(e,t,n,r,o,a,i,s,h),g.push(l.x),p.push(l.y)),{min:{x:ae[y](0,g),y:ae[y](0,p)},max:{x:oe[y](0,g),y:oe[y](0,p)}}}),lt=u._path2curve=(0,i.cacher)(function(e,t){var n=!t&&Ze(e);if(!t&&n.curve)return nt(n.curve);for(var r=rt(e),o=t&&rt(t),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},s={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},l=function(e,t){if(!e)return["C",t.x,t.y,t.x,t.y,t.x,t.y];switch(!(e[0]in{T:1,Q:1})&&(t.qx=t.qy=null),e[0]){case"M":t.X=e[1],t.Y=e[2];break;case"A":e=["C"][b](function n(e,t,r,o,a,s,l,c,u,d){l=l&&+l,s=s&&+s;var f,h=120*fe/180,p=he*(+a||0),g=[],m=(0,i.cacher)(function(e,t,n){return{x:e*le(n)-t*ce(n),y:e*ce(n)+t*le(n)}});if(d)A=d[0],T=d[1],k=d[2],S=d[3];else{e=(f=m(e,t,-p)).x,t=f.y,c=(f=m(c,u,-p)).x,u=f.y,le(he*a),ce(he*a);var v=(e-c)/2,y=(t-u)/2,x=v*v/(r*r)+y*y/(o*o);x>1&&(r*=x=ue(x),o*=x);var w=r*r,C=o*o,_=(s===l?-1:1)*ue(ie((w*C-w*y*y-C*v*v)/(w*y*y+C*v*v))),k=_*r*y/o+(e+c)/2,S=_*-o*v/r+(t+u)/2,A=re.asin(((t-S)/o).toFixed(9)),T=re.asin(((u-S)/o).toFixed(9));A=e<k?fe-A:A,T=c<k?fe-T:T,A<0&&(A=2*fe+A),T<0&&(T=2*fe+T),l&&A>T&&(A-=2*fe),!l&&T>A&&(T-=2*fe)}var M=T-A;if(ie(M)>h){var O=T,L=c,I=u;g=n(c=k+r*le(T=A+h*(l&&T>A?1:-1)),u=S+o*ce(T),r,o,a,0,l,L,I,[T,O,k,S])}M=T-A;var F=le(A),N=ce(A),D=le(T),P=ce(T),R=re.tan(M/4),j=4/3*r*R,V=4/3*o*R,B=[e,t],G=[e+j*N,t-V*F],H=[c+j*P,u-V*D],z=[c,u];if(G[0]=2*B[0]-G[0],G[1]=2*B[1]-G[1],d)return[G,H,z][b](g);for(var $=[],X=0,U=(g=[G,H,z][b](g).join()[E](",")).length;X<U;X++)$[X]=X%2?m(g[X-1],g[X],p).y:m(g[X],g[X+1],p).x;return $}[y](0,[t.x,t.y][b](e.slice(1))));break;case"S":e=["C",t.x+(t.x-(t.bx||t.x)),t.y+(t.y-(t.by||t.y))][b](e.slice(1));break;case"T":t.qx=t.x+(t.x-(t.qx||t.x)),t.qy=t.y+(t.y-(t.qy||t.y)),e=["C"][b](at(t.x,t.y,t.qx,t.qy,e[1],e[2]));break;case"Q":t.qx=e[1],t.qy=e[2],e=["C"][b](at(t.x,t.y,e[1],e[2],e[3],e[4]));break;case"L":e=["C"][b](ot(t.x,t.y,e[1],e[2]));break;case"H":e=["C"][b](ot(t.x,t.y,e[1],t.y));break;case"V":e=["C"][b](ot(t.x,t.y,t.x,e[1]));break;case"Z":e=["C"][b](ot(t.x,t.y,t.X,t.Y))}return e},c=function(e,t){if(e[t].length>7){e[t].shift();for(var n=e[t];n.length;)e.splice(t++,0,["C"][b](n.splice(0,6)));e.splice(t,1),f=oe(r.length,o&&o.length||0)}},u=function(e,t,n,a,i){e&&t&&e[i][0]===$&&t[i][0]!=$&&!i&&(t.splice(i,0,[$,a.x,a.y]),n.bx=0,n.by=0,n.x=e[i][1],n.y=e[i][2],f=oe(r.length,o&&o.length||0))},d=0,f=oe(r.length,o&&o.length||0);d<f;d++){r[d]=l(r[d],a),c(r,d),o&&(o[d]=l(o[d],s)),o&&c(o,d),u(r,o,a,s,d),u(o,r,s,a,d);var h=r[d],p=o&&o[d],g=h.length,m=o&&p.length;a.x=h[g-2],a.y=h[g-1],a.bx=te(h[g-4])||a.x,a.by=te(h[g-3])||a.y,s.bx=o&&(te(p[m-4])||s.x),s.by=o&&(te(p[m-3])||s.y),s.x=o&&p[m-2],s.y=o&&p[m-1]}return o||(n.curve=nt(r)),o?[r,o]:r},null,nt),ct=(u._parseDots=(0,i.cacher)(function(e){for(var t=[],n=0,r=e.length;n<r;n++){var o={},a=e[n].match(/^([^:]*):?([\d\.]*)/);if(o.color=u.getRGB(a[1]),o.color.error)return null;o.opacity=o.color.opacity,o.color=o.color.hex,a[2]&&(o.offset=a[2]+"%"),t.push(o)}for(n=1,r=t.length-1;n<r;n++)if(!t[n].offset){for(var i=te(t[n-1].offset||0),s=0,l=n+1;l<r;l++)if(t[l].offset){s=t[l].offset;break}s||(s=100,l=r);for(var c=((s=te(s))-i)/(l-n+1);n<l;n++)i+=c,t[n].offset=i+"%"}return t}),u._tear=function(e,t){e===t.top&&(t.top=e.prev),e===t.bottom&&(t.bottom=e.next),e.next&&(e.next.prev=e.prev),e.prev&&(e.prev.next=e.next)}),ut=(u._tofront=function(e,t){return t.top!==e&&(ct(e,t),e.next=null,e.prev=t.top,t.top.next=e,t.top=e,!0)},u._toback=function(e,t){return t.bottom!==e&&(ct(e,t),e.next=t.bottom,e.prev=null,t.bottom.prev=e,t.bottom=e,!0)},u._insertafter=function(e,t,n,r){ct(e,n),e.parent=r,t===r.top&&(r.top=e),t.next&&(t.next.prev=e),e.next=t.next,e.prev=t,t.next=e},u._insertbefore=function(e,t,n,r){ct(e,n),e.parent=r,t===r.bottom&&(r.bottom=e),t.prev&&(t.prev.next=e),e.prev=t.prev,t.prev=e,e.next=t},u._extractTransform=function(e,t){if(null==t)return e._.transform;t=ee(t).replace(/\.{3}|\u2026/g,e._.transform||g);var n,r,o=u.parseTransformString(t),a=0,i=1,s=1,l=e._,c=new ht;if(l.transform=o||[],o)for(var d=0,f=o.length;d<f;d++){var h,p,m,v,y,b=o[d],x=b.length,w=ee(b[0]).toLowerCase(),C=b[0]!=w,_=C?c.invert():0;"t"===w&&3===x?C?(h=_.x(0,0),p=_.y(0,0),m=_.x(b[1],b[2]),v=_.y(b[1],b[2]),c.translate(m-h,v-p)):c.translate(b[1],b[2]):"r"===w?2===x?(y=l.bb||(l.bb=e.getBBox(1)),c.rotate(b[1],y.x+y.width/2,y.y+y.height/2),a+=b[1]):4===x&&(C?(m=_.x(b[2],b[3]),v=_.y(b[2],b[3]),c.rotate(b[1],m,v)):c.rotate(b[1],b[2],b[3]),a+=b[1]):"s"===w?2===x||3===x?(y=l.bb||(l.bb=e.getBBox(1)),c.scale(b[1],b[x-1],y.x+y.width/2,y.y+y.height/2),i*=b[1],s*=b[x-1]):5===x&&(C?(m=_.x(b[3],b[4]),v=_.y(b[3],b[4]),c.scale(b[1],b[2],m,v)):c.scale(b[1],b[2],b[3],b[4]),i*=b[1],s*=b[2]):w===z&&7===x&&c.add(b[1],b[2],b[3],b[4],b[5],b[6]),l.dirtyT=1,e.matrix=c}e.matrix=c,l.sx=i,l.sy=s,l.deg=a,l.dx=n=c.e,l.dy=r=c.f,1===i&&1===s&&!a&&l.bbox?(l.bbox.x+=+n,l.bbox.y+=+r):l.dirtyT=1}),dt=function(e){var t=e[0];switch(t.toLowerCase()){case"t":return[t,0,0];case"m":return[t,1,0,0,1,0,0];case"r":return 4===e.length?[t,0,e[2],e[3]]:[t,0];case"s":return 5===e.length?[t,1,1,e[3],e[4]]:3===e.length?[t,1,1]:[t,1]}},ft=u._equaliseTransform=function(e,t){t=ee(t).replace(/\.{3}|\u2026/g,e),e=u.parseTransformString(e)||[],t=u.parseTransformString(t)||[];for(var n,r,o,a,i=oe(e.length,t.length),s=[],l=[],c=0;c<i;c++){if(o=e[c]||dt(t[c]),a=t[c]||dt(o),o[0]!=a[0]||"r"===o[0].toLowerCase()&&(o[2]!=a[2]||o[3]!=a[3])||"s"===o[0].toLowerCase()&&(o[3]!=a[3]||o[4]!=a[4]))return;for(s[c]=[],l[c]=[],n=0,r=oe(o.length,a.length);n<r;n++)n in o&&(s[c][n]=o[n]),n in a&&(l[c][n]=a[n])}return{from:s,to:l}};function ht(e,t,n,r,o,a){null!=e?(this.a=+e,this.b=+t,this.c=+n,this.d=+r,this.e=+o,this.f=+a):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}u._getContainer=function(e,t,n,r){var o;if(null!=(o=null!=r||u.is(e,_)?e:I.doc.getElementById(e)))return o.tagName?null==t?{container:o,width:o.style.pixelWidth||o.offsetWidth,height:o.style.pixelHeight||o.offsetHeight}:{container:o,width:t,height:n}:{container:1,x:e,y:t,width:n,height:r}},u._engine={},u.path2curve=lt,u.matrix=function(e,t,n,r,o,a){return new ht(e,t,n,r,o,a)},function(e){function t(e){return e[0]*e[0]+e[1]*e[1]}function n(e){var n=ue(t(e));e[0]&&(e[0]/=n),e[1]&&(e[1]/=n)}e.add=function(e,t,n,r,o,a){var i,s,l,c,u=[[],[],[]],d=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],f=[[e,n,o],[t,r,a],[0,0,1]];for(e&&e instanceof ht&&(f=[[e.a,e.c,e.e],[e.b,e.d,e.f],[0,0,1]]),i=0;i<3;i++)for(s=0;s<3;s++){for(c=0,l=0;l<3;l++)c+=d[i][l]*f[l][s];u[i][s]=c}this.a=u[0][0],this.b=u[1][0],this.c=u[0][1],this.d=u[1][1],this.e=u[0][2],this.f=u[1][2]},e.invert=function(){var e=this,t=e.a*e.d-e.b*e.c;return new ht(e.d/t,-e.b/t,-e.c/t,e.a/t,(e.c*e.f-e.d*e.e)/t,(e.b*e.e-e.a*e.f)/t)},e.clone=function(){return new ht(this.a,this.b,this.c,this.d,this.e,this.f)},e.translate=function(e,t){this.add(1,0,0,1,e,t)},e.scale=function(e,t,n,r){null==t&&(t=e),(n||r)&&this.add(1,0,0,1,n,r),this.add(e,0,0,t,0,0),(n||r)&&this.add(1,0,0,1,-n,-r)},e.rotate=function(e,t,n){e=u.rad(e),t=t||0,n=n||0;var r=+le(e).toFixed(9),o=+ce(e).toFixed(9);this.add(r,o,-o,r,t,n),this.add(1,0,0,1,-t,-n)},e.x=function(e,t){return e*this.a+t*this.c+this.e},e.y=function(e,t){return e*this.b+t*this.d+this.f},e.get=function(e){return+this[ee.fromCharCode(97+e)].toFixed(4)},e.toString=function(){return u.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},e.toMatrixString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"},e.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},e.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},e.split=function(){var e={};e.dx=this.e,e.dy=this.f;var r=[[this.a,this.c],[this.b,this.d]];e.scalex=ue(t(r[0])),n(r[0]),e.shear=r[0][0]*r[1][0]+r[0][1]*r[1][1],r[1]=[r[1][0]-r[0][0]*e.shear,r[1][1]-r[0][1]*e.shear],e.scaley=ue(t(r[1])),n(r[1]),e.shear/=e.scaley;var o=-r[0][1],a=r[1][1];return a<0?(e.rotate=u.deg(re.acos(a)),o<0&&(e.rotate=360-e.rotate)):e.rotate=u.deg(re.asin(o)),e.isSimple=!(+e.shear.toFixed(9)||e.scalex.toFixed(9)!==e.scaley.toFixed(9)&&e.rotate),e.isSuperSimple=!+e.shear.toFixed(9)&&e.scalex.toFixed(9)===e.scaley.toFixed(9)&&!e.rotate,e.noRotation=!+e.shear.toFixed(9)&&!e.rotate,e},e.toTransformString=function(e){var t=e||this[E]();return t.isSimple?(t.scalex=+t.scalex.toFixed(4),t.scaley=+t.scaley.toFixed(4),t.rotate=+t.rotate.toFixed(4),(t.dx||t.dy?"t"+[t.dx,t.dy]:g)+(1!=t.scalex||1!=t.scaley?"s"+[t.scalex,t.scaley,0,0]:g)+(t.rotate?"r"+[t.rotate,0,0]:g)):z+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(ht.prototype);var pt=(P=N.navigator).userAgent.match(/Version\/(.*?)\s/)||P.userAgent.match(/Chrome\/(\d+)/);"Apple Computer, Inc."===P.vendor&&(pt&&pt[1]<4||"iP"===P.platform.slice(0,2))||"Google Inc."===P.vendor&&pt&&pt[1]<8?J.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:k});return setTimeout(function(){e.remove()}),!0}:J.safari=function(){};for(var gt=function(){this.returnValue=!1},mt=function(){return this.originalEvent.preventDefault()},vt=function(){this.cancelBubble=!0},yt=function(){return this.originalEvent.stopPropagation()},bt={stopPropagation:"fn",stopImmediatePropagation:"fn",preventDefault:"fn",type:!0,clientX:!0,clientY:!0,pageX:!0,pageY:!0,bubbles:!0,cancelable:!0,touches:!0,target:!0,originalTarget:!0,srcElement:!0,relatedTarget:!0,fromElement:!0,changedTouches:!0,layerX:!0,layerY:!0},xt=u.makeSelectiveCopy=function(e,t){var n=function(n){e[n]="fn"===bt[n]?function(){t[n]()}:t[n]};for(var r in bt)n(r);e.originalEvent=t,e.type||(e.type=t.originalEvent&&t.originalEvent.type)},wt=u.addEvent=I.doc.addEventListener?function(e,t,n,r){var o,a,i=j?D[t]:R?Q[t]:t;return T||(a={capture:!1}),r.dragFn&&("pointerup"===i?i="mouseup":void 0===i&&(i="touchend")),o=function(o){var a,i=I.doc.documentElement.scrollTop||I.doc.body.scrollTop,s=I.doc.documentElement.scrollLeft||I.doc.body.scrollLeft;if(R&&Q[t])for(var l=0,c=o.targetTouches&&o.targetTouches.length;l<c;l++)if((a=o.targetTouches[l].target)===e||"tspan"===a.nodeName&&a.parentNode===e){var u=o;(o=o.targetTouches[l]).originalEvent=u,o.preventDefault=mt,o.stopPropagation=yt;break}return n.call(r,o,o.clientX+s,o.clientY+i)},e.addEventListener(i,o,a),function(){return e.removeEventListener(i,o,a),!0}}:I.doc.attachEvent?function(e,t,n,r){var o=function(e){e=e||I.win.event;var t=I.doc.documentElement.scrollTop||I.doc.body.scrollTop,o=I.doc.documentElement.scrollLeft||I.doc.body.scrollLeft,a=e.clientX+o,i=e.clientY+t;return e.preventDefault=e.preventDefault||gt,e.stopPropagation=e.stopPropagation||vt,n.call(r,e,a,i)};return e.attachEvent("on"+t,o),function(){return e.detachEvent("on"+t,o),!0}}:void 0,Ct=function(e){var t,n=I.doc.documentElement.scrollTop||I.doc.body.scrollTop,r=I.doc.documentElement.scrollLeft||I.doc.body.scrollLeft,o=(void 0!==e.clientX?e.clientX:e.changedTouches&&e.changedTouches[0].clientX)+r,i=(void 0!==e.clientY?e.clientY:e.changedTouches&&e.changedTouches[0].clientY)+n,s={},l=this,c=l.dragInfo.onmove.length;if(!(l.dragStartFn&&!(Math.abs(o-l._drag.x)>=2.5||Math.abs(i-l._drag.y)>=2.5)||l._blockDrag))for(;c--;){if(R&&"touchmove"===e.type)for(var d,f=e.touches.length;f--;)if((d=e.touches[f]).identifier===l._drag.id){o=d.clientX+r,i=d.clientY+n;break}if(!l.removed){if(l.dragStartFn&&(l.dragStartFn(c),l.dragStartFn=undefined,l.dragInfo._dragmove=!0),I.win.opera){var h=u._engine.getNode(l),p=h.nextSibling,g=h.parentNode,m=h.style.display;g.removeChild(h),h.style.display=k,h.style.display=m,p?g.insertBefore(h,p):g.appendChild(h)}xt(s,e),t=s.data=[o-l._drag.x,i-l._drag.y,o,i],(0,a["default"])("raphael.drag.move."+l.id,l.dragInfo.move_scope[c]||l,s,t)}}},_t=function e(t){var n=this,r=n.dragInfo,o=r.onend.length;if(n.dragInfo._dragmove)for(;o--;)n._drag={},(0,a["default"])("raphael.drag.end."+n.id,r.end_scope[o]||r.start_scope[o]||r.move_scope[o]||n,t);n.dragInfo._dragmove=undefined,R&&!B&&!V&&(!H||!G)&&(n.paper.canvas.style["touch-action"]="auto"),u.undragmove.call(n,Ct),u.undragend.call(n,e),u.unmousemove.call(n,Ct).unmouseup.call(n,e)},Et=u.el={},kt=Z.length;kt--;)!function(e){u[e]=Et[e]=function(t,n,r){return u.is(t,S)&&(this.events=this.events||[],this.events.push({name:e,f:t,unbind:wt(r||this.shape||this.node||I.doc,e,t,n||this)})),this},u["un"+e]=Et["un"+e]=function(t){for(var n=this.events||[],r=n.length;r--;)if(n[r].name===e&&n[r].f===t)return n[r].unbind(),n.splice(r,1),!n.length&&delete this.events,this;return this}}(Z[kt]);Et.data=function(e,t){var n=Le[this.id]=Le[this.id]||{};if(1===arguments.length){if(u.is(e,_)){for(var r in e)e[v](r)&&this.data(r,e[r]);return this}return u.stopPartialEventPropagation||(0,a["default"])("raphael.data.get."+this.id,this,n[e],e),n[e]}return n[e]=t,u.stopPartialEventPropagation||(0,a["default"])("raphael.data.set."+this.id,this,t,e),this},Et.removeData=function(e){return null==e?delete Le[this.id]:Le[this.id]&&delete Le[this.id][e],this},Et.dbclick=function(e,t){var n,r=this,o=function(n){var o;(n&&n.preventDefault(),!(o=n).touches||o.touches&&1===o.touches.length)&&(r._tappedOnce?(e.call(t||r,n),r._tappedOnce=!1):(r._tappedOnce=!0,setTimeout(function(){r._tappedOnce=!1},500)))};n=u.supportsPointer?"pointerup":u.supportsTouch?"touchstart":"mouseup",r.node.addEventListener(n,o),u.storeHandlers(r,e,o)},Et.undbclick=function(e){var t=removeHandlers(this,e);t&&this.node.removeEventListener(u.supportsPointer?"pointerup":u.supportsTouch?"touchstart":"mouseup",t)},Et.getData=function(){return Ge(Le[this.id]||{})};var St=[],At=function(){this.untrack=wt(I.doc,"mouseup",Tt,this)},Tt=function(){return this.untrack(),this.untrack=null,this.fn&&this.fn.apply(this.scope||this.el,arguments)};Et.mouseup=function(e,t,n,r){return n?(St.push(n={el:this,fn:e,scope:t}),n.unbind=wt(this.shape||this.node||I.doc,"mousedown",At,n),this):u.mouseup.apply(this,[e,t,r])},Et.unmouseup=function(e){for(var t,n=St.length;n--;)St[n].el===this&&St[n].fn===e&&((t=St[n]).unbind(),t.untrack&&t.untrack(),St.splice(n,1));return t?this:u.unmouseup.apply(this,arguments)},Et.hover=function(e,t,n,r){return this.on("fc-mouseover",e,n).on("fc-mouseout",t,r)},Et.unhover=function(e,t){return this.off("fc-mouseover",e).off("fc-mouseout",t)},Et.fcclick=function(e,t){var n,r,o,a,i,s=this,l=s.node,c=function(e){s._lastEventTriggered="mousedown",o=void 0!==e.clientX?e.clientX:e.changedTouches&&e.changedTouches[0].clientX,a=void 0!==e.clientY?e.clientY:e.changedTouches&&e.changedTouches[0].clientY},d=function(e){var t=void 0!==e.clientX?e.clientX:e.changedTouches&&e.changedTouches[0].clientX,n=void 0!==e.clientY?e.clientY:e.changedTouches&&e.changedTouches[0].clientY;(Math.abs(o-t)>=2.5||Math.abs(a-n)>=2.5)&&(s._lastEventTriggered=undefined)};if(s._clickStoreActual||(s._clickStoreActual=[]),s._clickStoreDerived||(s._clickStoreDerived=[]),!s._clickHandlerHelper){for(n in i=!j&&u.supportsTouch?{touchstart:function(){s._lastEventTriggered="touchstart",s._lastEventTriggeredAt=(new Date).getTime()},touchmove:d}:j&&u.supportsTouch?{pointerdown:c,pointermove:d}:{mousedown:c,mousemove:d})l.addEventListener?l.addEventListener(n,i[n]):l.attachEvent("on"+n,i[n]);s._clickHandlerHelper=i}return!j&&u.supportsTouch?(n="touchend",r=function(n){"touchstart"===s._lastEventTriggered&&(new Date).getTime()-s._lastEventTriggeredAt<=500&&setTimeout(function(){e.call(t||s,n)},0)}):(n="click",r=function(n){"mousedown"===s._lastEventTriggered&&e.call(t||s,n)}),l.addEventListener?l.addEventListener(n,r):l.attachEvent("on"+n,r),s._clickStoreDerived.push(r),s._clickStoreActual.push(e),s},Et.fcunclick=function(e){var t,n,r=this.node,o=this._clickHandlerHelper,a=this._clickStoreActual,i=this._clickStoreDerived;if(a){for(t=a.length-1;t>=0;t--)a[t]===e&&(r.removeEventListener?r.removeEventListener(!j&&u.supportsTouch?"touchend":"click",i[t]):r.detachEvent("onclick",i[t]),a.splice(t,1),i.splice(t,1));if(!a.length){for(n in o)r.removeEventListener?r.removeEventListener(n,o[n]):r.detachEvent("on"+n,o[n]);this._clickHandlerHelper=undefined}}return this};var Mt=[];function Ot(){return this.x+m+this.y+m+this.width+" × "+this.height}Et.drag=function(e,t,n,r,o,i){var s=this,l=s.dragInfo||(s.dragInfo={onmove:[],onstart:[],onend:[],move_scope:[],start_scope:[],end_scope:[]});return e&&l.onmove.push(e)&&l.move_scope.push(r),t&&l.onstart.push(t)&&l.start_scope.push(o),n&&l.onend.push(n)&&l.end_scope.push(i),s.dragFn=s.dragFn||function(e){var t,n,r,o,i,l,c,d,f,h,p=I.doc.documentElement.scrollTop||I.doc.body.scrollTop,g=I.doc.documentElement.scrollLeft||I.doc.body.scrollLeft,m={},v=s.dragInfo,y=[Ct,void 0,I.doc];for(R&&(j?B||V||H&&G||(s.paper.canvas.style["touch-action"]="none"):e.preventDefault()),s._drag.x=f=(void 0!==e.clientX?e.clientX:e.changedTouches&&e.changedTouches[0].clientX)+g,s._drag.y=h=(void 0!==e.clientY?e.clientY:e.changedTouches&&e.changedTouches[0].clientY)+p,s._drag.id=e.identifier,R&&!j?u.dragmove.apply(s,y):u.mousemove.apply(s,y).mouseup.call(s,_t,void 0,void 0,I.doc),R&&u.dragend.call(s,_t,void 0,I.doc),xt(m,e),t=m.data=[f,h],n=0,i=v.onstart.length;n<i;n++)a["default"].on("raphael.drag.start."+s.id,v.onstart[n]);for(r=0,l=v.onmove.length;r<l;r++)a["default"].on("raphael.drag.move."+s.id,v.onmove[r]);for(o=0,c=v.onend.length;o<c;o++)a["default"].on("raphael.drag.end."+s.id,v.onend[o]);i&&!l&&(d=function(){s.undragmove(),v.onmove=[]},v.onmove.push(d),a["default"].on("raphael.drag.end."+s.id,d)),s.dragStartFn=function(e){(0,a["default"])("raphael.drag.start."+s.id,s.dragInfo.start_scope[e]||s.dragInfo.move_scope[e]||s,m,t)}},s._drag={},Mt.push({el:s,start:s.dragFn,onstart:t,onmove:e,onend:n}),t&&!s.startHandlerAttached&&(R&&!j?s.dragstart(s.dragFn):s.mousedown(s.dragFn),s.startHandlerAttached=!0),s},Et.onDragOver=function(e){e?a["default"].on("raphael.drag.over."+this.id,e):a["default"].unbind("raphael.drag.over."+this.id)},Et.undrag=function(){for(var e=Mt.length;e--;)Mt[e].el===this&&(this.unmousedown(this.dragFn),Mt.splice(e,1),a["default"].unbind("raphael.drag.*."+this.id),this.dragInfo=undefined,this.dragFn=undefined,this.startHandlerAttached=undefined);u.unmousemove.call(this,Ct).unmouseup.call(this,_t),u.undragmove.call(this,Ct),u.undragend.call(this,_t),delete this._drag},Et.undragstart=function(e){var t,n,r=this.dragInfo,o=r&&r.onstart,i=r&&r.start_scope;if(e)for(t=0,n=o&&o.length;t<n;t++)if(o[t]===e){o.splice(t,1),i.splice(t,1),a["default"].unbind("raphael.drag.start."+this.id,e);break}o&&o.length&&e||(u.undragstart.call(this,this.dragFn),u.unmousedown.call(this,this.dragFn),a["default"].unbind("raphael.drag.start."+this.id),this.startHandlerAttached=!1,r&&(r.onstart=[],r.start_scope=[]))},Et.undragmove=function(e){var t,n,r=this.dragInfo,o=r&&r.onmove,i=r&&r.move_scope;if(e)for(t=0,n=o&&o.length;t<n;t++)if(o[t]===e){o.splice(t,1),i.splice(t,1),a["default"].unbind("raphael.drag.move."+this.id,e);break}o&&o.length&&e||(u.undragmove.call(this,Ct),u.unmousemove.call(this,Ct),r&&(r.onmove=[],r.move_scope=[]),a["default"].unbind("raphael.drag.move."+this.id))},Et.undragend=function(e){var t,n,r=this.dragInfo,o=r&&r.onend,i=r&&r.end_scope;if(e)for(t=0,n=o&&o.length;t<n;t++)if(o[t]===e){o.splice(t,1),i.splice(t,1),a["default"].unbind("raphael.drag.end."+this.id,e);break}o&&o.length&&e||(u.undragend.call(this,_t),u.unmouseup.call(this,_t),r&&(r.onend=[],r.end_scope=[]),a["default"].unbind("raphael.drag.end."+this.id))},Et.follow=function(e,t,n){return e.removed||e.constructor!==u.el.constructor?this:(e.followers.push({el:this,stalk:n={before:"insertBefore",after:"insertAfter"}[n],cb:t}),n&&this[n](e),this)},Et.unfollow=function(e){if(e.removed||e.constructor!==u.el.constructor)return this;for(var t=0,n=e.followers.length;t<n;t++)if(e.followers[t].el===this){e.followers.splice(t,1);break}return this},J.hide=function(){return this.canvas.style.visibility="hidden",this},J.show=function(){return this.canvas.style.visibility=g,this},J.group=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=u._engine.group(this,e[0],t);return this.__set__&&this.__set__.push(n),this._elementsById[n.id]=n},J.circle=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=this._addDefAttribs()?Ve(e,"cx",0,"cy",0,"r",0,"fill",k,"stroke","#000"):Ve(e),r=u._engine.circle(this,n,t);return this.__set__&&this.__set__.push(r),this._elementsById[r.id]=r},J.rect=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=this._addDefAttribs()?Ve(e,"x",0,"y",0,"width",0,"height",0,"r",0,"fill",k,"stroke","#000"):Ve(e),r=u._engine.rect(this,n,t);return this.__set__&&this.__set__.push(r),this._elementsById[r.id]=r},J.ellipse=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=this._addDefAttribs()?Ve(e,"x",0,"y",0,"rx",0,"ry",0,"fill",k,"stroke","#000"):Ve(e),r=u._engine.ellipse(this,n,t);return this.__set__&&this.__set__.push(r),this._elementsById[r.id]=r},J.path=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=this.config,r=n&&n["stroke-linecap"]||"butt",o=this._addDefAttribs()?Ve(e,"path",g,"fill",k,"stroke","#000","stroke-linecap",r):Ve(e),a=u._engine.path(this,o,t);return this.__set__&&this.__set__.push(a),this._elementsById[a.id]=a},J.image=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=this._addDefAttribs()?Ve(e,"x",0,"y",0,"width",0,"height",0):Ve(e),r=u._engine.image(this,n,t);return this.__set__&&this.__set__.push(r),this._elementsById[r.id]=r},J.text=function(){var e=(0,i.getArrayCopy)(arguments),t=je(e,!0),n=this._addDefAttribs()?Ve(e,"x",0,"y",0,"text",g,"stroke",k,"fill","#000","text-anchor","middle","vertical-align","middle"):Ve(e),r=u._engine.text(this,n,t,e[1]);return this.__set__&&this.__set__.push(r),this._elementsById[r.id]=r},J._addDefAttribs=function(){return!(u.svg&&this.config&&this.config.noDefaultAttribs)},J.setConfig=function(e,t){return e!==undefined&&t!==undefined&&(this.config=this.config||{},this.config[e]=t),this.config},J._createDOMNodes=function(e,t,n){var r,o,a,i,s={},l=u._createNode,c=t.tagName,d=t.children||[];for(i in!n&&(n={}),t)"tagName"!==i&&"children"!==i&&(s[i]=t[i]);if(!s.id&&(s.id=u.getElementID(u.createUUID())),!this.canvas.getElementById(s.id)&&c)for(r=e.appendChild(l(c,s)),n.element=r,n.id=s.id,(a=d.length)>0&&(n.children=[]),o=0;o<a;o++)n.children[o]={},this._createDOMNodes(r,d[o],n.children[o]);return n},J.addDefs=function(e){if(u.svg){var t,n={},r=this.defs;for(t in e)n[t]={},this._createDOMNodes(r,e[t],n[t]);return n}},J.setSize=function(e,t){return u._engine.setSize.call(this,e,t)},J.setDimension=function(e,t){var n;(void 0===e?"undefined":o(e))===_?(n=e.width,t=e.height,this.setSize(e.width,e.height)):(n=e,this.setSize(n,t))},J.attr=function(e){return null==e?{width:this.width,height:this.height}:u.is(e,w)?this[e]:(this.setDimension(e),this)},J.status=function(e,t){return Et.status.call(this,e,t)},J.animateWith=function(e,t,n,r,o,a,i){return Et.animateWith.call(this,e,t,n,r,o,a,i)},J.animate=function(e,t,n,r){return Et.animate.call(this,e,t,n,r)},J.setViewBox=function(e,t,n,r,o){return u._engine.setViewBox.call(this,e,t,n,r,o)},J.getById=function(e){return this._elementsById[e]||null},J.top=J.bottom=null,J.raphael=u,Et.getBBox=function(e){if(this.removed)return{};var t=this._;return e?(!t.dirty&&t.bboxwt||(this.realPath=Pe[this.type](this),t.bboxwt=tt(this.realPath),t.bboxwt.toString=Ot,t.dirty=0),t.bboxwt):((t.dirty||t.dirtyT||!t.bbox)&&(!t.dirty&&this.realPath||(t.bboxwt=0,this.realPath=Pe[this.type](this)),t.bbox=tt(Re(this.realPath,this.matrix)),t.bbox.toString=Ot,t.dirty=t.dirtyT=0),t.bbox)},Et.clone=function(e,t){if(this.removed)return null;var n,r,o=this,a=o.attr();if(e){for(n in e)a[n]=e[n];r=o.paper[o.type](a,t)}else r=o.paper[o.type]().attr(a);return o.__set__&&o.__set__.push(r),r};var Lt=function(e,t,n,r,o,a,i,s,l){return null==l?et(e,t,n,r,o,a,i,s):u.findDotsAtSegment(e,t,n,r,o,a,i,s,function(e,t,n,r,o,a,i,s,l){if(!(l<0||et(e,t,n,r,o,a,i,s)<l)){var c,u=.5,d=1-u;for(c=et(e,t,n,r,o,a,i,s,d);ie(c-l)>.01;)u/=2,c=et(e,t,n,r,o,a,i,s,d+=(c<l?1:-1)*u);return d}}(e,t,n,r,o,a,i,s,l))},It=function(e,t){return function(n,r,o){n=lt(n);for(var a,i,s,l,c,d=g,f={},h=0,p=0,m=n.length;p<m;p++){if((s=n[p])[0]===$)a=+s[1],i=+s[2];else{if(h+(l=Lt(a,i,s[1],s[2],s[3],s[4],s[5],s[6]))>r){if(t&&!f.start){if(d+=["C"+(c=Lt(a,i,s[1],s[2],s[3],s[4],s[5],s[6],r-h)).start.x,c.start.y,c.m.x,c.m.y,c.x,c.y],o)return d;f.start=d,d=[$+c.x,c.y+"C"+c.n.x,c.n.y,c.end.x,c.end.y,s[5],s[6]].join(),h+=l,a=+s[5],i=+s[6];continue}if(!e&&!t)return{x:(c=Lt(a,i,s[1],s[2],s[3],s[4],s[5],s[6],r-h)).x,y:c.y,alpha:c.alpha}}h+=l,a=+s[5],i=+s[6]}d+=s.shift()+s}return f.end=d,(c=e?h:t?f:u.findDotsAtSegment(a,i,s[0],s[1],s[2],s[3],s[4],s[5],1)).alpha&&(c={x:c.x,y:c.y,alpha:c.alpha}),c}},Ft=It(1),Nt=It();It(0,1);u.getTotalLength=Ft,u.getPointAtLength=Nt,Et.getTotalLength=function(){if("path"==this.type)return this.node.getTotalLength?this.node.getTotalLength():Ft(this.attrs.path)},Et.getPointAtLength=function(e){if("path"==this.type)return Nt(this.attrs.path,e)};var Dt=u.easing_formulas={linear:function(e){return e},"<":function(e){return se(e,1.7)},">":function(e){return se(e,.48)},"<>":function(e){var t=.48-e/1.04,n=ue(.1734+t*t),r=n-t,o=-n-t,a=se(ie(r),1/3)*(r<0?-1:1)+se(ie(o),1/3)*(o<0?-1:1)+.5;return 3*(1-a)*a*a+a*a*a},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return(e-=1)*e*((t+1)*e+t)+1},elastic:function(e){return e===!!e?e:se(2,-10*e)*ce(2*fe*(e-.075)/.3)+1},bounce:function(e){var t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},oneBounceOut:function(e){return e<=.9?1.33*Dt.easeIn(e):1.2-e/5},elasticOnce:function(e){return e===!!e?e:Math.pow(2,-10*e)*Math.sin((e-.225)*(2*Math.PI)/.9)+1},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e}};Dt.easeIn=Dt["ease-in"]=Dt["<"],Dt.easeOut=Dt["ease-out"]=Dt[">"],Dt.easeInOut=Dt["ease-in-out"]=Dt["<>"],Dt["back-in"]=Dt.backIn,Dt["back-out"]=Dt.backOut;var Pt,Rt=[],jt=function qt(){for(var e,t,n,r=+new Date,o=0,i=[],s=0;o<Rt.length;o++){var l=Rt[o];if(!(l.el.removed||l.paused||l.parentEl&&l.parentEl.e&&l.parentEl.e.paused)){for(var c,d,f,h=r-l.start,p=l.ms,y=l.easing,x=l.from,w=l.diff,C=l.to,_=(l.t,l.el),E={},k={},A=!u.stopPartialEventPropagation,T=(s=0,l.el&&l.el.animElements&&l.el.animElements.peek());T&&T.pos<=h/p;)i.push(l.el.animElements.deq()),T=l.el.animElements.peek();if(l.initstatus?(h=(l.initstatus*l.anim.top-l.prev)/(l.percent-l.prev)*p,l.status=l.initstatus,delete l.initstatus,l.stop&&(delete l.el,Rt.splice(o--,1))):l.status=(l.prev+(l.percent-l.prev)*(h/p))/l.anim.top,d=p,l.parentEl&&l.parentEl.animElements?(p=l.delayend-l.delaystart,h=l.parentEl.cPos-l.delaystart):l.el.animElements&&(l.el.cPos=h/p),!(h<0))if(h<p){var M=y(h/p);for(var O in p=d,x)if(x[v](O)){switch(Oe[O]){case"number":c=+x[O]+M*p*w[O];break;case"colour":if(w[O].length){for(c=[],s=0,L=x[O].length;s<L;++s)0===s?x[O].isRadial||w[O].isRadial?(n="xr(",n+=x[O][0].f1*(1-M)+w[O][0].f1*M||g,n+=",",n+=x[O][0].f2*(1-M)+w[O][0].f2*M||g,n+=",",n+=100*(x[O][0].f3*(1-M)+w[O][0].f3*M)||g,n+="%,",n+=x[O][0].f4*(1-M)+w[O][0].f4*M||g,n+=",",n+=x[O][0].f5*(1-M)+w[O][0].f5*M,n+=",",n+=x[O][0].f6,n+=")",c.push(n)):(c.push(x[O][s]*(1-M)+M*w[O][s]),c[0]<=0&&(c[0]+=360)):c.push("rgba("+[Vt(de(x[O][s].r+M*p*w[O][s].r)),Vt(de(x[O][s].g+M*p*w[O][s].g)),Vt(de(x[O][s].b+M*p*w[O][s].b)),x[O][s].opacity+M*p*w[O][s].opacity].join(",")+"):"+x[O][s].position);c=c.join("-"),(x[O].isRadial||w[O].isRadial)&&(c=c.replace("-",g))}else t=x[O].opacity+M*p*w[O].opacity,isNaN(t)&&(t=1),c="rgba("+[Vt(de(x[O].r+M*p*w[O].r)),Vt(de(x[O].g+M*p*w[O].g)),Vt(de(x[O].b+M*p*w[O].b)),t].join(",")+")";break;case"path":c=[];s=0;for(var L=x[O].length;s<L;s++){var I;c[s]=[x[O][s][0]],I=x[O][s]?x[O][s].length:0;for(var F=1;F<I;F++)c[s][F]=(+x[O][s][F]+M*p*w[O][s][F]).toFixed(4);c[s]=c[s].join(m)}c=c.join(m);break;case"transform":if(w[O].real)for(c=[],s=0,L=x[O].length;s<L;s++)for(c[s]=[x[O][s][0]],F=1,I=x[O][s].length;F<I;F++)c[s][F]=x[O][s][F]+M*p*w[O][s][F];else{var N=function(e){return+x[O][e]+M*p*w[O][e]};c=[[z,N(0),N(1),N(2),N(3),N(4),N(5)]]}break;case"csv":if("clip-rect"===O)for(c=[],s=4;s--;)c[s]=+x[O][s]+M*p*w[O][s];break;case"text-bound":c=[][b](x[O]);break;default:var D=[][b](x[O]);for(c=[],s=_.ca[O].length;s--;)c[s]=+D[s]+M*p*w[O][s]}E[O]=c}_.attr(E),A&&function(e,t,n){setTimeout(function(){(0,a["default"])("raphael.anim.frame."+e,t,n)})}(_.id,_,l.anim)}else{if(function(e,t,n){setTimeout(function(){A&&(0,a["default"])("raphael.anim.frame."+t.id,t,n),A&&(0,a["default"])("raphael.anim.finish."+t.id,t,n),u.is(e,S)&&e.call(t)})}(l.callback,_,l.anim),_.attr(C),delete l.el,Rt.splice(o--,1),l.repeat>1&&!l.next){for(f in C)C[v](f)&&(k[f]=l.totalOrigin[f]);l.el.attr(k),Ut(l.anim,l.el,l.anim.percents[0],null,l.totalOrigin,l.repeat-1)}l.next&&!l.stop&&Ut(l.anim,l.el,l.next,null,l.totalOrigin,l.repeat)}}}for(u.svg&&_&&_.paper&&_.paper.safari(),o=0,e=i.length;o<e;++o)u.getInstantAnimFrameFn()(function(e){return function(){Ut.apply(null,i[e].params)}}(o));Rt.length&&(Pt||u.getAnimFrameFn())(qt)},Vt=function(e){return e>255?255:e<0?0:e},Bt=function(e){return e>1&&(e=1),e<0&&(e=0),e};function Gt(e,t,n,r,o,a){var i=3*t,s=3*(r-t)-i,l=1-i-s,c=3*n,u=3*(o-n)-c,d=1-c-u;function f(e){return((l*e+s)*e+i)*e}return function(e,t){var n=function(e,t){var n,r,o,a,c,u;for(o=e,u=0;u<8;u++){if(a=f(o)-e,ie(a)<t)return o;if(ie(c=(3*l*o+2*s)*o+i)<1e-6)break;o-=a/c}if(r=1,(o=e)<(n=0))return n;if(o>r)return r;for(;n<r;){if(a=f(o),ie(a-e)<t)return o;e>a?n=o:r=o,o=(r-n)/2+n}return o}(e,t);return((d*n+u)*n+c)*n}(e,1/(200*a))}function Ht(e,t){var n=[],r={};if(this.ms=t,this.times=1,e){for(var o in e)e[v](o)&&(r[te(o)]=e[o],n.push(te(o)));n.sort(Ie)}this.anim=r,this.top=n[n.length-1],this.percents=n}function zt(e,t,n){var r,o,a=0,i=0,s=[],l=[],c={},u=0,d=[];if(e=e.constructor===Array?e[0]:e,t=t.constructor===Array?t[0]:t,r=e.split("-"),o=t.split("-"),1===r.length&&1===o.length)return[e,t];for(r=f(r),o=f(o),!r.defaultAngleSet&&o.defaultAngleSet&&(o[0]=r[0]),!o.defaultAngleSet&&r.defaultAngleSet&&(r[0]=o[0]),function e(t,n,r){t.isRadial&&!n.isRadial&&(+n[0],n[0]={f1:0,f2:0,f3:0,f4:0,f5:0,f6:g},n.isRadial=!0);r||e(n,t,!0)}(r,o),a=1,i=r.length;a<i;++a)u=r[a].position,d.push(u);for(a=1,i=o.length;a<i;++a)u=o[a].position,-1===d.indexOf(u)&&d.push(u);for(d.push(0),d.sort(function(e,t){return e-t}),s=[r[0]],a=1,i=d.length;a<i;++a)u=d[a],c=r.getColorAtPosition(u),s.push(c);for(l=[o[0]],a=1,i=d.length;a<i;++a)u=d[a],c=o.getColorAtPosition(u),l.push(c);return s.isRadial=r.isRadial,l.isRadial=o.isRadial,[s,l];function f(e){var t,r=0,o=0,a=0,i=[],s={},l=0,c=0,u=0,d=0,f=0,h=0,p={f1:.5,f2:.5};for(1===e.length&&(e[0]===k&&(e[0]="rgba(0,0,0,0)"),e.unshift(0),e.defaultAngleSet=!0),isNaN(e[0])?~"rx".indexOf(e[0].charAt(0))?(e.isRadial=!0,d=1,-1!==e[0].indexOf(")")&&(d=e[0].indexOf(")"),f=e[0].indexOf("(")+1,h=d,i=e[0].substr(f,h-f).split(","),p.f1=parseFloat(i[0])||0,p.f2=parseFloat(i[1])||0,~i[2].indexOf("%")&&(i[2]=parseFloat(i[2])/100),p.f3=parseFloat(i[2])||0,p.f4=parseFloat(i[3])||0,p.f5=parseFloat(i[4])||0,p.f6=i[5]),e[0]=e[0].substr(h+1),e.unshift(p)):e[0]=0:e[0]=+e[0],r=1,o=e.length;r<o;++r)i=e[r].split(":"),s=n(i[0]),e[r]={},e[r].r=s.r,e[r].g=s.g,e[r].b=s.b,e[r].opacity=s.opacity,e[r].opacity=+e[r].opacity,isNaN(e[r].opacity)&&(e[r].opacity=1),e[r].position=+i[1];if(e.sort(function(e,t){return"number"==typeof e||e.f1?-1:"number"==typeof t||e.f2?1:isNaN(e.position)&&isNaN(t.position)?0:isNaN(e.position)?-1:isNaN(t.position)?1:e.position-t.position}),0!=+e[1].position)if(isNaN(e[1].position))e[1].position=0;else{for(t in s={},e[1])s[t]=e[1][t];for(s.position=0,e.push({}),r=e.length-1;1!==r;--r)e[r]=e[r-1];e[1]=s}if(100!==e[o=e.length-1].position)if(isNaN(e[o].position))e[o].position=100;else{for(t in s={},e[o])s[t]=e[o][t];s.position=100,e.push(s)}for(r=2,o=e.length;r<o;++r)if(!e[r].position){for(l=e[r-1].position,u=1,a=r+1;a<o;++a)if(++u,!isNaN(e[a].position)){c=+e[a].position;break}e[r].position=l+(c-l)/u}return e.getColorAtPosition=function(e){for(var t=-1,n=this.length,r=1,o=this.length,a=0,i=g,s={r:0,g:0,b:0};r<o-1;++r)if(this[r].position<=e&&(t=r,n=r+1),!(this[r].position<e)&&this[r].position>=e){n=r;break}for(i in a=(e-this[t].position)/(this[n].position-this[t].position),isNaN(a)&&(a=0),s)s[i]=Vt((1-a)*this[t][i]+a*this[n][i]);return s.position=e,s.opacity=(1-a)*this[t].opacity+a*this[n].opacity,s},e}}function $t(e,t){var n,r=[],a=[],i=f(e),s=f(t),l=0,c=0,u=document.createElementNS&&document.createElementNS.bind(document),d=u&&u("http://www.w3.org/2000/svg","path");if(!i||!s||!d)return[e,t];if(function(e,t){var n,r,o=g,a=g;if(d.setAttribute("d","M300 10 L300 300 C50 310,50 640,350 650C600 640,600 310,400 300 L400 10 L295 10"),n=d.getTotalLength(),r=d.getPointAtLength(10),n<1829.1||n>1829.2)return!0;if(300!==Math.round(r.x)||20!==Math.round(r.y))return!0;function i(e){for(var t=e.length;t---1&&e[t].join(g)===e[t-1].join(g);)e.pop()}function s(e){for(var t=g,n=0,r=e.length;n<r;++n)t+=e[n].join(m);return t}if(i(e),i(t),o=s(e),a=s(t),o.split(/[Mm]/).length>2||a.split(/[Mm]/).length>2)return!1;if(e.length===t.length)return!0;return!1}(e,t))return[e,t];if(!e||!t)return[e,t];if(!document.createElementNS)return[e,t];if(i=f(e),s=f(t),-1!==i.join().indexOf("undefined"))return[e,t];if(-1!==s.join().indexOf("undefined"))return[e,t];if(!d.getTotalLength||!d.getPointAtLength)return[e,t];function f(e){var t=[],n=0,r=e.length;if((void 0===e?"undefined":o(e))===w)return e;for(n=0;n<r;++n){if(!e[n].join)return;n&&e[n+1]&&"M"===e[n+1][0]&&"M"===e[n][0]||t.push(e[n].join(m))}for(n=0,r=(t=(t=t.join(g)).split(/[Mm]/).slice(1)).length;n<r;++n)t[n]="M"+t[n];return t}for(c=Math.max(i.length,s.length),l=0;l<c;++l)n=Xt(i[l],s[l]),i[l]=n[0],s[l]=n[1];function h(e){var t,n=0,r=[];for(t=(e=e||[]).length,n=0;n<t;++n)e[n].length-1&&r.push(e[n].join(m));return r.join(g)}function p(e,t){for(var n=e.length;n---1&&e[n].slice(1).toString()===e[n-1].slice(1).toString();)e.pop();1===e.length&&t&&(e.length=0)}function v(e,t){for(var n,r=[],o=[],a=e.length,i=0,s=0,l=0,c=0,u=t-a;u>=0;)i=e.length-1,e.push(e.slice(i)[0]),--u;for(a=e.length,i=0;i<=t;++i)o.push(Math.round(i/t*a));for(i=0,n=o.length-1;i<n;++i)r.push(e.slice(o[i],o[i+1])),"M"!==r[i][0][0]&&r[i][0][0]!==z&&(l=r[i-1].length-1,s=r[i-1][l][1],c=r[i-1][l][2],r[i].unshift(["M",s,c]));return r}for(l=i.length;l--;)p(i[l],l),i[l].length||i.pop();for(l=s.length;l--;)p(s[l],l),s[l].length||s.pop();for(function(e){var t,n=[],r=[],o=[],a=0,l=!0;if(0!==e){for(e>0?(n=s,l=!1):(e=-e,n=i),a=0,t=n.length;a<t;++a)r.push(1);for(;e--;)--a<0&&(a=t-1),r[a]++;for(a=0;a<t;++a)1===r[a]?o.push(n[a]):o.push.apply(o,v(n[a],r[a]));l?i=o:s=o}}(i.length-s.length),c=Math.max(i.length,s.length),l=0;l<c;++l)n=Xt(h(i[l]),h(s[l])),i[l]=n[0],s[l]=n[1];for(l=0,c=i.length;l<c;++l)r=r.concat(i[l]);for(l=0,c=s.length;l<c;++l)a=a.concat(s[l]);return[r,a]}function Xt(e,t){var n,r,o,a=0,i=[],s=[];function l(e,t){var n,r,o,a,i=0,s={},l=[],c=[],u=0,d=Math.round;for((n=document.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d",e),(r=document.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d",t),o=n.getTotalLength(),a=r.getTotalLength(),u=.15*Math.max(o,a),(!(u=Math.ceil(u))||!isFinite(u)||u<10)&&(u=10),i=0;i<=u;++i)s=n.getPointAtLength(i/u*o),l.push([i?X:$,d(s.x),d(s.y)]),s=r.getPointAtLength(i/u*a),c.push([i?X:$,d(s.x),d(s.y)]);return[l,c]}for(e&&"M "!==e||(e=t.split(m).slice(0,3).join(m).replace(/[LC]/,g)),t&&"M "!==t||(t=e.split(m).slice(0,3).join(m).replace(/[LC]/,g)),r=function(e,t){var n,r,o,a,i=0,s=0,l=0,c=0,u={},d={},f=[],h=[],p=-1,v=-1,y=!0;function b(e){var t,n=0;for(n=0,t=(e=e.split(/[MCLmcl]/).slice(1)).length;n<t;++n)e[n]=e[n].split(m).slice(1),n||e[n].unshift("M"),n&&(2===e[n].length&&e[n].unshift(X)||e[n].unshift("C"));return e}function x(e,t){var n,r,o=0,a=e.length;for(o=0,a=e.length;o<a;++o)n=e[o].join(m),"C"===(r=e[o])[0]&&r[3]===r[5]&&r[4]===r[6]?e[o].stringValue=[X,r[3],r[4]].join(m):r.stringValue=n,t[r.stringValue]&&t[r.stringValue].push(o),t[r.stringValue]||(t[r.stringValue]=[o])}function w(e,t,n,r,o){for(var a,i=n,s=0,l=0;i<r;++i)if(a=t[e[i].stringValue])for(s=0,l=a.length;s<l;++s)if(a[s]>=o)return{index:i,mapValue:a[s],diff:i-n};return-1}function C(e){var t=e.length-1;return["M",e[t-1],e[t]].join(m)}function _(e){return e.join(g)}for(e=b(e),t=b(t),x(e,u),x(t,d),n=e.length,r=t.length,i=0,s=0;i<n&&s<r;){if(++v,f[++p]=[],h[v]=[],y=e[i].stringValue===t[s].stringValue,i&&(f[p].push(C(e[i-1])),h[v].push(C(t[s-1]))),y)for(;i<n&&s<r&&e[i].stringValue===t[s].stringValue;)f[p].push(e[i].stringValue),h[v].push(t[s].stringValue),++i,++s;else{for(o=w(e,d,i,n,s),a=w(t,u,s,r,i),l=o.index,c=o.mapValue,(!~o||o.diff>a.diff)&&(l=a.mapValue,c=a.index),~o||~a||(l=n-1,c=r-1);i<=l;)f[p].push(e[i].stringValue),++i;for(;s<=c;)h[v].push(t[s].stringValue),++s}f[p]=_(f[p]),h[v]=_(h[v])}if(i<n){for(f[++p]=[],f[p].push(C(e[i-1])),h[++v]=[],h[v].push(C(t[s-1]));i<n;)f[p].push(e[i].stringValue),++i;f[p]=_(f[p])}if(s<r){for(f[++p]=[],f[p].push(C(e[i-1])),h[++v]=[],h[v].push(C(t[s-1]));s<r;)h[v].push(t[s].stringValue),++s;h[v]=_(h[v])}return[f,h]}(e,t),a=0,n=r[0].length;a<n;++a)o=l(r[0][a],r[1][a]),a?(i=i.concat(o[0].slice(1)),s=s.concat(o[1].slice(1))):(i=i.concat(o[0]),s=s.concat(o[1]));return[i,s]}function Ut(e,t,n,r,i,s,l,c){n=te(n);var d,f,h,p,g,m,y,x,C=e.ms,_={},S={},A={};if(null!==t.type){if((c=c||{}).hookFn&&c.hookFn.call(t),c.from=c.from||{},r)for(M=0,O=Rt.length;M<O;M++){var T=Rt[M];if(T.el.id===t.id&&T.anim===e){T.percent!=n?(delete T.el.e,delete T.el,Rt.splice(M,1),h=1):f=T,t.attr(T.totalOrigin);break}}else r=+S;for(var M=0,O=e.percents.length;M<O;M++){if(e.percents[M]===n||e.percents[M]>r*e.top){n=e.percents[M],g=e.percents[M-1]||0,C=C/e.top*(n-g),p=e.percents[M+1],d=e.anim[n];break}r&&t.attr(e.anim[e.percents[M]])}if(d){if(f)f.initstatus=r,f.start=new Date-f.ms*r;else{for(var L in d)if(d[v](L))if(Oe[v](L)||t.ca[L]){switch(_[L]=c.from[L]||t.attr(L),null==_[L]&&(_[L]=Me[L]),S[L]=d[L],x=!1,Oe[L]){case"number":((y=S[L]-_[L])||isNaN(y))&&(x=!0),A[L]=y/C;break;case"colour":if(_[L]===S[L])break;x=!0;var I=zt(_[L],S[L],u.getRGB);_[L]=I[0];var F=I[1];if((void 0===F?"undefined":o(F))===w)_[L].toLowerCase()!==k?(_[L]=u.getRGB(_[L]),_[L].opacity||(_[L].opacity=1)):_[L]={r:0,g:0,b:0,opacity:0},S[L].toLowerCase()!==k?(F=u.getRGB(S[L])).opacity||(F.opacity=1):F={r:0,g:0,b:0,opacity:0},A[L]={r:(F.r-_[L].r)/C,g:(F.g-_[L].g)/C,b:(F.b-_[L].b)/C,opacity:(F.opacity-_[L].opacity)/C};else for(A[L]=[],M=0,O=_[L].length;M<O;++M)0===M?A[L].push(F[0]):A[L].push({r:(F[M].r-_[L][M].r)/C,g:(F[M].g-_[L][M].g)/C,b:(F[M].b-_[L][M].b)/C,opacity:(F[M].opacity-_[L][M].opacity)/C});break;case"path":var N,D=lt(_[L],S[L]);for(c.smartMorph&&(D=$t(D[0],D[1])),N=D[1],_[L]=D[0],A[L]=[],M=0,O=_[L].length;M<O;M++){var P;A[L][M]=[0],P=_[L][M]?_[L][M].length:0;for(var R=1;R<P;R++)A[L][M][R]=(N[M][R]-_[L][M][R])/C,!x&&A[L][M][R]&&(x=!0)}break;case"transform":var j=t._,V=ft(j[L],S[L]);if(x=!0,V)for(_[L]=V.from,S[L]=V.to,A[L]=[],A[L].real=!0,M=0,O=_[L].length;M<O;M++)for(A[L][M]=[_[L][M][0]],R=1,P=_[L][M].length;R<P;R++)A[L][M][R]=(S[L][M][R]-_[L][M][R])/C;else{var B=t.matrix||new ht,G={_:{transform:j.transform},getBBox:function(){return t.getBBox(1)}};_[L]=[B.a,B.b,B.c,B.d,B.e,B.f],ut(G,S[L]),S[L]=G._.transform,A[L]=[(G.matrix.a-B.a)/C,(G.matrix.b-B.b)/C,(G.matrix.c-B.c)/C,(G.matrix.d-B.d)/C,(G.matrix.e-B.e)/C,(G.matrix.f-B.f)/C]}break;case"csv":var H=ee(d[L])[E](ye),z=ee(_[L])[E](ye);if("clip-rect"===L)for(_[L]=z,A[L]=[],M=z.length;M--;)((y=H[M]-_[L][M])||isNaN(y))&&(x=!0),A[L][M]=y/C;S[L]=H;break;default:for(H=[][b](d[L]),z=[][b](_[L]),A[L]=[],M=t.ca[L].length;M--;)((y=(H[M]||0)-(z[M]||0))||isNaN(y))&&(x=!0),A[L][M]=y/C}x||(delete _[L],delete S[L],delete d[L],delete A[L])}else(u._availableAttrs[v](L)||"text"===L||t.ca[L])&&(t.attr(L,d[L]),delete d[L]);var $=d.easing,X=u.easing_formulas[$];if(!X)if((X=ee($).match(we))&&5===X.length){var U=X;X=function(e){return Gt(e,+U[1],+U[2],+U[3],+U[4],C)}}else X=Fe;if(m=d.start||e.start||+new Date,t.e=T={anim:e,percent:n,timestamp:m,start:m+(e.del||0),status:0,initstatus:r||0,stop:!1,ms:C,easing:X,from:_,diff:A,to:S,el:t,callback:d.callback,prev:g,next:p,repeat:s||e.times,origin:t.attr(),totalOrigin:i,parentEl:l,delayend:c&&c.end,delaystart:c&&c.start},Rt.push(T),r&&!f&&!h&&(T.stop=!0,T.start=new Date-C*r,1===Rt.length))return jt();h&&(T.start=new Date-T.ms*r),1===Rt.length&&(Pt||u.getAnimFrameFn())(jt)}(0,a["default"])("raphael.anim.start."+t.id,t,e)}}}function Wt(e){for(var t=0;t<Rt.length;t++)Rt[t].el.paper===e&&Rt.splice(t--,1)}u.getAnimFrameFn=function(){return Pt=u.requestAnimFrame||c.webkitRequestAnimationFrame||c.mozRequestAnimationFrame||c.oRequestAnimationFrame||c.msRequestAnimationFrame||function(e){setTimeout(e,16)}},u.getInstantAnimFrameFn=function(){return u.instantRequestAnimFrame||c.webkitRequestAnimationFrame||c.mozRequestAnimationFrame||c.oRequestAnimationFrame||c.msRequestAnimationFrame||function(e){setTimeout(e,16)}},Et.animateWith=function(e,t,n,r,o,a,i){var s,l=this,c={};for(s in i=i||{})i.hasOwnProperty(s)&&(c[s]=i[s]);if(i=c,l.removed)return a&&a.call(l),l;if(0===r)return u.is(a,S)&&setTimeout(function(){a.call(l)},0),l.attr(n);var d=n instanceof Ht?n:u.animation(n,r,o,a);i.start=Bt(i.start||0),i.end=Bt(i.end||1),i.start>=i.end&&(i.start=i.end),!i.from&&i.start>.01?(e.animElements=e.animElements||new ze(function(e,t){return t.pos-e.pos}),e.animElements.enq({pos:i.start,attr:i.start===i.end,params:[d,l,d.percents[0],null,l.attr(),undefined,e,{start:i.start,end:i.end,smartMorph:i.smartMorph,hookFn:i.hookFn},n],executeOb:{el:this,attrs:n,callback:a,hookFn:i.hookFn}})):Ut(d,l,d.percents[0],null,l.attr(),undefined,e,i);for(var f=0,h=Rt.length;f<h;f++)if(Rt[f].anim===t&&Rt[f].el===e){Rt[h-1].start=Rt[f].start;break}return l},Et.onAnimation=function(e){return e?a["default"].on("raphael.anim.frame."+this.id,e):a["default"].unbind("raphael.anim.frame."+this.id),this},Ht.prototype.delay=function(e){var t=new Ht(this.anim,this.ms);return t.times=this.times,t.del=+e||0,t},Ht.prototype.repeat=function(e){var t=new Ht(this.anim,this.ms);return t.del=this.del,t.times=re.floor(oe(e,0))||1,t},u.animation=function(e,t,n,r,o){if(e instanceof Ht)return e;!u.is(n,S)&&n||(r=r||n||null,n=null),!u.stopPartialEventPropagation&&(u.stopPartialEventPropagation=o),e=Object(e),t=+t||0;var a,i,s={};for(i in e)e[v](i)&&te(i)!=i&&te(i)+"%"!=i&&(a=!0,s[i]=e[i]);return r&&(a=!0),a?(n&&(s.easing=n),r&&(s.callback=r),new Ht({100:s},t)):new Ht(e,t)},Et.animate=function(e,t,n,r){if(this.removed)return r&&r.call(this),this;var o=e instanceof Ht?e:u.animation(e,t,n,r);return Ut(o,this,o.percents[0],null,this.attr()),this},Et.status=function(e,t){var n,r,o=[],a=0;if(null!=t)return Ut(e,this,-1,ae(t,1)),this;for(n=Rt.length;a<n;a++)if((r=Rt[a]).el.id===this.id&&(!e||r.anim===e)){if(e)return r.status;o.push({anim:r.anim,status:r.status})}return e?0:o},Et.pause=function(e,t){var n,r,o=+new Date;for(r=0;r<Rt.length;r++)!((n=Rt[r]).el.id===this.id||t&&n.parentEl&&n.parentEl.e.el&&n.parentEl.e.el.id===this.id)||e&&n.anim!==e||!1!==(0,a["default"])("raphael.anim.pause."+this.id,this,n.anim)&&(n.paused=!0,n.pauseStart=o);return this},Et.resume=function(e,t){var n,r,o=+new Date;for(r=0;r<Rt.length;r++)!((n=Rt[r]).el.id===this.id||t&&n.parentEl&&n.parentEl.e.el&&n.parentEl.e.el.id===this.id)||e&&n.anim!==e||!1!==(0,a["default"])("raphael.anim.resume."+this.id,this,n.anim)&&(delete n.paused,n.el.status(n.anim,n.status),n.pauseEnd=o,n.start+=(n.parentEl&&n.parentEl.e.pauseEnd||n.pauseEnd)-(n.parentEl&&n.parentEl.e.pauseStart||n.pauseStart)||0);return this},Et.stop=function(e,t,n){var r,o;if(t)for(i=Rt.length-1;i>=0;i--)!((r=Rt[i]).el.id===this.id||r.parentEl&&r.parentEl.id===this.id)||e&&Rt[i].anim!==e||(o=r.el,n&&o.attr(r.to),r.callback&&r.callback.call(o),delete o.e,delete r.el,Rt.splice(i,1));else for(var i=0;i<Rt.length;i++)(r=Rt[i]).el.id!==this.id||e&&r.anim!==e||!1!==(0,a["default"])("raphael.anim.stop."+this.id,this,r.anim)&&Rt.splice(i--,1);return this.animElements&&function(e){var t;for(;t=e.deq();)(t=t.executeOb).hookFn&&t.hookFn.call(t.el),t.el.attr(t.attrs),t.callback&&t.callback.call(t.el)}(this.animElements),this},a["default"].on("raphael.remove",Wt),a["default"].on("raphael.clear",Wt),Et.toString=function(){return"Raphaël’s object"},Et.toFront=function(){if(this.removed)return this;var e,t,n,r=this,o=u._engine.getNode(r),a=r.parent,i=r.followers;for(u._tofront(r,a)&&a.canvas.appendChild(o),t=0,n=i.length;t<n;t++)(e=i[t]).stalk&&e.el[e.stalk](r);return r},Et.toBack=function(){if(this.removed)return this;var e,t,n,r=this,o=u._engine.getNode(r),a=r.parent,i=r.followers;for(u._toback(r,a)&&a.canvas.insertBefore(o,a.canvas.firstChild),t=0,n=i.length;t<n;t++)(e=i[t]).stalk&&e.el[e.stalk](r);return r},Et.insertAfter=function(e){if(this.removed)return this;var t,n,r,o=this,a=u._engine.getNode(o),i=u._engine.getLastNode(e),s=e.parent.canvas,l=o.followers;for(i.nextSibling?s.insertBefore(a,i.nextSibling):s.appendChild(a),u._insertafter(o,e,o.parent,e.parent),n=0,r=l.length;n<r;n++)(t=l[n]).stalk&&t.el[t.stalk](e);return o},Et.insertBefore=function(e){if(this.removed)return this;var t,n,r,o=this,a=u._engine.getNode(o),i=u._engine.getNode(e),s=o.followers;for(e.parent.canvas.insertBefore(a,i),u._insertbefore(o,e,o.parent,e.parent),o.parent=e.parent,n=0,r=s.length;n<r;n++)(t=s[n]).stalk&&t.el[t.stalk](e);return this},Et.appendChild=function(e){if(this.removed||"group"!==this.type)return this;var t,n,r,o,a=this.followers;if(e.parent===this)return e.toFront(),this;for(n=u._engine.getNode(e),u._tear(e,e.parent),this.canvas.appendChild(n),e.parent=this,!this.bottom&&(this.bottom=e),e.prev=this.top,e.next=null,this.top&&(this.top.next=e),this.top=e,r=0,o=a.length;r<o;r++)(t=a[r]).stalk&&t.el[t.stalk](e);return this},Et.appendTo=function(e){return e.appendChild(this)},Et.removeChild=function(e){if(this.removed||"group"!==this.type||e.parent!==this)return this;var t=this,n=u._engine.getNode(e),r=t.paper;return u._tear(e,t),r.canvas.appendChild(n),t.parent=r,!r.bottom&&(r.bottom=t),t.prev=r.top,r.top&&(r.top.next=t),r.top=t,t.next=null,t},u.format=function(e,t){var n=(0,i.getArrayCopy)(arguments),r=u.is(t,C)?[0][b](t):n;return e&&u.is(e,w)&&r.length-1&&(e=e.replace(be,function(e,t){return null==r[++t]?g:r[t]})),e||g};var Yt=u.vml?.5:0;u.crispBound=(0,i.cacher)(function(e,t,n,r,o){var a,i={};return e=e||0,t=t||0,n=n||0,r=r||0,a=(o=o||0)%2/2+Yt,i.x=de(e+a)-a,i.y=de(t+a)-a,i.width=de(e+n+a)-a-i.x,i.height=de(t+r+a)-a-i.y,i["stroke-width"]=o,0===i.width&&0!==n&&(i.width=1),0===i.height&&0!==r&&(i.height=1),i},u),Et.crisp=function(){var e,t=this,n=t.attrs,r=t.attr();for(e in r=u.crispBound(r.x,r.y,r.width,r.height,r["stroke-width"]))n[e]===r[e]&&delete r[e];return t.attr(r)},u.define=function(e,t,n,r,o,a){var s,l;if(u.is(e,C))for(s=0,l=e.length;s<l;s++)u.define(e[s]);else if(u.is(e,_))u.define(e.name,e[e.name],e.ca,e.fn,e.e,e.data);else if(e&&!u.fn[e])return u.fn[e]=function(){var a,s=(0,i.getArrayCopy)(arguments),l=t.apply(this,s);if(r&&u.is(r,_))for(a in r)l[a]=r[a];if(o&&u.is(o,_))for(a in o)l[a]&&l[a](o[a]);if(n){if(u.is(n,S))l.ca[e]=n;else for(a in n)l.ca[a]=n[a];l.ca[e]&&(u._lastArgIfGroup(s,!0),s.length&&(s[0][e]?l.attr.apply(l,s):l.attr(e,s[0])))}return l},n&&(u.fn[e].ca=n),r&&(u.fn[e].fn=r),o&&(u.fn[e].e=o),a&&(u.fn[e].data=a),u.fn[e]},function(e,t,n){null==e.readyState&&e.addEventListener&&(e.addEventListener("DOMContentLoaded",n=function(){e.removeEventListener("DOMContentLoaded",n,!1),e.readyState="complete"},!1),e.readyState="loading"),function r(){/in/.test(e.readyState)?setTimeout(r,9):u.eve("raphael.DOMload")}()}(F),a["default"].on("raphael.DOMload",function(){d=!0}),u._preload=function(e,t){var n=I.doc,r=n.createElement("img");r.style.cssText="position:absolute;left:-9999em;top:-9999em",r.onload=function(){t.call(this),this.onload=null,n.body.removeChild(this)},r.onerror=function(){n.body.removeChild(this)},n.body.appendChild(r),r.src=e},t["default"]=u}).call(this,n(111))},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var r=n(121);t["default"]=function(e){var t,n,o="hasOwnProperty",a=/[\.\/]/,i=/\s*,\s*/,s=function(e,t){return e-t},l={n:{}},c=function(){for(var e=0,t=this.length;e<t;e++)if("undefined"!=typeof this[e])return this[e]},u=function(){for(var e=this.length;--e;)if("undefined"!=typeof this[e])return this[e]},d=Object.prototype.toString,f=String,h=Array.isArray||function(e){return e instanceof Array||"[object Array]"==d.call(e)};function p(e,o){var a,i=n,l=(0,r.getArrayCopy)(arguments),d=Array.prototype.slice.call(l,2),f=p.listeners(e),h=0,g=[],m={},v=[],y=t;v.firstDefined=c,v.lastDefined=u,t=e,n=0;for(var b=0,x=f.length;b<x;b++)"zIndex"in f[b]&&(g.push(f[b].zIndex),f[b].zIndex<0&&(m[f[b].zIndex]=f[b]));for(g.sort(s);g[h]<0;)if(a=m[g[h++]],v.push(a.apply(o,d)),n)return n=i,v;for(b=0;b<x;b++)if("zIndex"in(a=f[b]))if(a.zIndex==g[h]){if(v.push(a.apply(o,d)),n)break;do{if((a=m[g[++h]])&&v.push(a.apply(o,d)),n)break}while(a)}else m[a.zIndex]=a;else if(v.push(a.apply(o,d)),n)break;return n=i,t=y,v}return p._events=l,p.listeners=function(e){var t,n,r,o,i,s,c,u,d=h(e)?e:e.split(a),f=l,p=[f],g=[];for(o=0,i=d.length;o<i;o++){for(u=[],s=0,c=p.length;s<c;s++)for(n=[(f=p[s].n)[d[o]],f["*"]],r=2;r--;)(t=n[r])&&(u.push(t),g=g.concat(t.f||[]));p=u}return g},p.separator=function(e){e?(e="["+(e=f(e).replace(/(?=[\.\^\]\[\-])/g,"\\"))+"]",a=new RegExp(e)):a=/[\.\/]/},p.on=function(e,t){if("function"!=typeof t)return function(){};for(var n=h(e)?h(e[0])?e:[e]:f(e).split(i),r=0,o=n.length;r<o;r++)!function(e){for(var n,r=h(e)?e:f(e).split(a),o=l,i=0,s=r.length;i<s;i++)o=(o=o.n).hasOwnProperty(r[i])&&o[r[i]]||(o[r[i]]={n:{}});for(o.f=o.f||[],i=0,s=o.f.length;i<s;i++)if(o.f[i]==t){n=!0;break}!n&&o.f.push(t)}(n[r]);return function(e){+e==+e&&(t.zIndex=+e)}},p.f=function(e){var t=(0,r.getArrayCopy)(arguments),n=[].slice.call(t,1);return function(){p.apply(null,[e,null].concat(n).concat([].slice.call(t,0)))}},p.stop=function(){n=1},p.nt=function(e){var n=h(t)?t.join("."):t;return e?new RegExp("(?:\\.|\\/|^)"+e+"(?:\\.|\\/|$)").test(n):n},p.nts=function(){return h(t)?t:t.split(a)},p.off=p.unbind=function(e,t){if(e){var n=h(e)?h(e[0])?e:[e]:f(e).split(i);if(n.length>1)for(var r=0,s=n.length;r<s;r++)p.off(n[r],t);else{n=h(e)?e:f(e).split(a);var c,u,d,g,m,v=[l],y=[];for(r=0,s=n.length;r<s;r++)for(g=0;g<v.length;g+=d.length-2){if(d=[g,1],c=v[g].n,"*"!=n[r])c[n[r]]&&(d.push(c[n[r]]),y.unshift({n:c,name:n[r]}));else for(u in c)c[o](u)&&(d.push(c[u]),y.unshift({n:c,name:u}));v.splice.apply(v,d)}for(r=0,s=v.length;r<s;r++)for(c=v[r];c.n;){if(t){if(c.f){for(g=0,m=c.f.length;g<m;g++)if(c.f[g]==t){c.f.splice(g,1);break}!c.f.length&&delete c.f}for(u in c.n)if(c.n[o](u)&&c.n[u].f){var b=c.n[u].f;for(g=0,m=b.length;g<m;g++)if(b[g]==t){b.splice(g,1);break}!b.length&&delete c.n[u].f}}else for(u in delete c.f,c.n)c.n[o](u)&&c.n[u].f&&delete c.n[u].f;c=c.n}e:for(r=0,s=y.length;r<s;r++){for(u in(c=y[r]).n[c.name].f)continue e;for(u in c.n[c.name].n)continue e;delete c.n[c.name]}}}else p._events=l={n:{}}},p.once=function(e,t){return p.on(e,function n(){return p.off(e,n),t.apply(this,arguments)})},p.version="0.5.3",p.toString=function(){return"You are running Eve 0.5.3"},e.eve=p,p}("undefined"!=typeof window?window:void 0!==e?e:null)}).call(this,n(111))},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(142),a=(r=o)&&r.__esModule?r:{"default":r};t["default"]={extension:function(e){(0,a["default"])(e.getDep("redraphael","plugin"))},name:"redraphaelSvg",type:"plugin",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){if(e.svg){var t="hasOwnProperty",n="vertical-align",a="function",i={visibility:"hidden","font-size":"0px"},s=String,l=parseFloat,c=parseInt,u={top:0,bottom:-1,middle:-.5},d=e._g.win.navigator,f=!!document.documentMode,h=Math,p=h.max,g=h.abs,m=h.pow,v=h.sqrt,y=/^xlink:/,b=/[, ]+/,x=/\n|<br\s*?\/?>/i,w=/<|>|<br/i,C=Array.prototype.shift,_=!(!/AppleWebKit/.test(d.userAgent)||/Chrome/.test(d.userAgent)&&!(d.appVersion.match(/Chrome\/(\d+)\./)[1]<29)),E=e.eve,k="",S=" ",A="http://www.w3.org/1999/xlink",T="http://www.w3.org/2000/svg",M=(!!d.platform&&/iPad|iPhone|iPod/.test(d.platform),{block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"}),O={speed:"optimizeSpeed",crisp:"crispEdges",precision:"geometricPrecision"},L=d.userAgent.toLowerCase(),I=!(!(ne=-1!=L.indexOf("msie")&&parseInt(L.split("msie")[1]))||9!==ne),F={},N=function(t,n,r,o){e._preload(r[1],function(){var e=this.offsetWidth,r=this.offsetHeight;B(t,{width:e,height:r}),B(n,{width:e,height:r}),o.safari()})},D=function(e,t){if(t)for(var n in t)e[n]=t[n]},P={elementInfo:[]},R=e._g.doc,j=(e._g.win,{mouseover:"touchstart",mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove",mouseout:"touchend"});e.supportsTouch&&R.addEventListener(e.supportsPointer?"pointerover":"touchstart",function(e){if(P.srcElement&&P.srcElement!==(e.srcElement||e.target)){var t,n,r,o=(t=P.elementInfo).length;for(r=0;r<o;r++)(n=t[r]).callback.call(n.el,e)}P={elementInfo:[]}},!0),e.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version},e._url=k;var V=function(e,t){var n=e.gradient;if(n){if(n===t)return;n.refCount--,n.refCount||n.parentNode.removeChild(n),delete e.gradient}t&&(e.gradient=t,t.refCount++)},B=e._createNode=function(t,n){var o,a;if("string"===(void 0===t?"undefined":r(t))&&(t=e._g.doc.createElementNS(T,t)),n)for(o in n)a=I?s(n[o]):n[o],y.test(o)?t.setAttributeNS(A,o.replace(y,k),a):t.setAttribute(o,a);return t},G={userSpaceOnUse:"userSpaceOnUse",objectBoundingBox:"objectBoundingBox"},H={pad:"pad",redlect:"reflect",repeat:"repeat"},z=function(t,n){if(!t.paper||!t.paper.defs)return 0;var r,o,a,i,c,u,d="linear",f=t.paper,y=e.getElementID((f.id+"-"+n).replace(/[()\s%:,\xb0#]/g,"_")),b=.5,x=.5,w=t.node,C=w.style,_=e._g.doc.getElementById(y);if(!_){if(n=(n=s(n).replace(e._radial_gradient,function(e,t){d="radial",t=t?t.split(","):[],i=t[5],c=t[6];var n,s,u=t[0],f=t[1],h=t[2],p=t[3],g=t[4],y=u&&f;return h&&(r=/%/.test(h)?h:l(h)),i===G.userSpaceOnUse?(y&&(b=u,x=f),p&&g&&(o=p,a=g,y||(b=o,x=a)),k):(y&&(b=l(u),n=2*((x=l(f))>.5)-1,(s=m(b-.5,2))+m(x-.5,2)>.25&&s<.25&&(x=v(.25-s)*n+.5)&&.5!==x&&(x=x.toFixed(5)-1e-5*n)),p&&g&&(o=l(p),n=2*((a=l(g))>.5)-1,(s=m(o-.5,2))+m(a-.5,2)>.25&&s<.25&&(a=v(.25-s)*n+.5)&&.5!==a&&(a=a.toFixed(5)-1e-5*n),y||(b=o,x=a)),k)})).split(/\s*-\s*/),"linear"===d){var E,S=n.shift(),A=S.match(/\((.*)\)/);if(A=A&&A[1]&&A[1].split(/\s*,\s*/),S=-l(S),isNaN(S))return null;A&&A.length?(A[0]in G?(i=A.shift(),A[0]in H&&(c=A.shift())):(A[4]&&(i=A[4]),A[5]&&(c=A[5])),u=[A[0]||"0%",A[1]||"0%",A[2]||"100%",A[3]||"0%"]):(u=[0,0,h.cos(e.rad(S)),h.sin(e.rad(S))],E=1/(p(g(u[2]),g(u[3]))||1),u[2]*=E,u[3]*=E,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0))}var T=e._parseDots(n);if(!T)return null;(_=B(d+"Gradient",{id:y})).refCount=0,i in G&&_.setAttribute("gradientUnits",s(i)),c in H&&_.setAttribute("spreadMethod",s(c)),"radial"===d?(r!==undefined&&_.setAttribute("r",s(r)),o!==undefined&&a!==undefined&&(_.setAttribute("cx",s(o)),_.setAttribute("cy",s(a))),_.setAttribute("fx",s(b)),_.setAttribute("fy",s(x))):B(_,{x1:u[0],y1:u[1],x2:u[2],y2:u[3]});for(var M=0,O=T.length;M<O;M++)_.appendChild(B("stop",{offset:T[M].offset?T[M].offset:M?"100%":"0%","stop-color":T[M].color||"#fff","stop-opacity":T[M].opacity===undefined?1:T[M].opacity}));f.defs.appendChild(_)}return V(t,_),B(w,{fill:"url('"+e._url+"#"+y+"')","fill-opacity":1}),C.fill=k,1},$=function(e){var t=e.getBBox(1);B(e.pattern,{patternTransform:e.matrix.invert()+" translate("+t.x+","+t.y+")"})},X=function(n,r,o){if("path"==n.type){for(var a,i,l,c,u,d=s(r).toLowerCase().split("-"),f=n.paper,h=o?"end":"start",p=n.node,g=n.attrs,m=g["stroke-width"],v=d.length,y="classic",b=3,x=3,w=5;v--;)switch(d[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":y=d[v];break;case"wide":x=5;break;case"narrow":x=2;break;case"long":b=5;break;case"short":b=2}if("open"==y?(b+=2,x+=2,w+=2,l=1,c=o?4:1,u={fill:"none",stroke:g.stroke}):(c=l=b/2,u={fill:g.stroke,stroke:"none"}),n._.arrows?o?(n._.arrows.endPath&&F[n._.arrows.endPath]--,n._.arrows.endMarker&&F[n._.arrows.endMarker]--):(n._.arrows.startPath&&F[n._.arrows.startPath]--,n._.arrows.startMarker&&F[n._.arrows.startMarker]--):n._.arrows={},"none"!=y){var C="raphael-marker-"+y,_="raphael-marker-"+h+y+b+x+"-obj"+n.id;e._g.doc.getElementById(C)?F[C]++:(f.defs.appendChild(B(B("path"),{"stroke-linecap":"round",d:M[y],id:C})),F[C]=1);var E,S=e._g.doc.getElementById(_);S?(F[_]++,E=S.getElementsByTagName("use")[0]):(S=B(B("marker"),{id:_,markerHeight:x,markerWidth:b,orient:"auto",refX:c,refY:x/2}),E=B(B("use"),{"xlink:href":"#"+C,transform:(o?"rotate(180 "+b/2+" "+x/2+") ":k)+"scale("+b/w+","+x/w+")","stroke-width":(1/((b/w+x/w)/2)).toFixed(4)}),S.appendChild(E),f.defs.appendChild(S),F[_]=1),B(E,u);var A=l*("diamond"!=y&&"oval"!=y);o?(a=n._.arrows.startdx*m||0,i=e.getTotalLength(g.path)-A*m):(a=A*m,i=e.getTotalLength(g.path)-(n._.arrows.enddx*m||0)),(u={})["marker-"+h]="url('"+e._url+"#"+_+"')",(i||a)&&(u.d=e.getSubpath(g.path,a,i)),B(p,u),n._.arrows[h+"Path"]=C,n._.arrows[h+"Marker"]=_,n._.arrows[h+"dx"]=A,n._.arrows[h+"Type"]=y,n._.arrows[h+"String"]=r}else o?(a=n._.arrows.startdx*m||0,i=e.getTotalLength(g.path)-a):(a=0,i=e.getTotalLength(g.path)-(n._.arrows.enddx*m||0)),n._.arrows[h+"Path"]&&B(p,{d:e.getSubpath(g.path,a,i)}),delete n._.arrows[h+"Path"],delete n._.arrows[h+"Marker"],delete n._.arrows[h+"dx"],delete n._.arrows[h+"Type"],delete n._.arrows[h+"String"];for(u in F)if(F[t](u)&&!F[u]){var T=e._g.doc.getElementById(u);T&&T.parentNode.removeChild(T)}}},U={"":["none"],none:["none"],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},W=function(t,n,r){if(n!==undefined){var o,a,i,s,l,c=U[n.toLowerCase&&n.toLowerCase()];if(n=c||[].concat(n),e.is(n,"array")){if(i={round:a=r["stroke-width"]||t.attrs["stroke-width"]||1,square:a,butt:0}[r["stroke-linecap"]||t.attrs["stroke-linecap"]]||0,s=n.length,l=c?a:1,"none"===n[0])o=n;else for(o=[];s--;)o[s]=n[s]*l+(s%2?1:-1)*i,o[s]<=0&&(o[s]=.01+(a<=1?i:0)),isNaN(o[s])&&(o[s]=0);return{"stroke-dasharray":o.join(",")}}}},Y=e._setFillAndStroke=function(n,r){if(n.paper.canvas){var a,i,l,u,d,f,h=n.node,m=n.attrs,v=n.paper,y={},x={};for(i in"image"===n.type&&(0,o.loadRefImage)(n,r),r)if(i in e._availableAttrs)if((l=r[i])===k&&i in m)delete m[i],h.removeAttribute("src"===i?"href":i);else switch(m[i]=l,i){case"blur":n.blur(l);break;case"href":case"title":case"target":var w=h.parentNode;if("a"!==w.tagName.toLowerCase()){if(l===k)break;var C=B("a");C.raphael=!0,C.raphaelid=h.raphaelid,w.insertBefore(C,h),C.appendChild(h),w=C}"target"===i?w.setAttributeNS(A,"show","blank"===l?"new":l):w.setAttributeNS(A,i,l),h.titleNode=w;break;case"cursor":x.cursor=l;break;case"transform":n.transform(l);break;case"rotation":e.is(l,"array")?n.rotate.apply(n,l):n.rotate(l);break;case"arrow-start":X(n,l);break;case"arrow-end":X(n,l,1);break;case"clip-path":u=!0;case"clip-rect":if(f=!u&&s(l).split(b),n._.clipispath=!!u,u||4===f.length){n.clip&&n.clip.parentNode.parentNode.removeChild(n.clip.parentNode);var E=B(u?"path":"rect");(a=B("clipPath")).id=e.getElementID(e.createUUID()),B(E,u?{d:l?m["clip-path"]=e._pathToAbsolute(l):e._availableAttrs.path,fill:"none"}:{x:f[0],y:f[1],width:f[2],height:f[3],transform:n.matrix.invert()}),a.appendChild(E),v.defs.appendChild(a),y["clip-path"]="url('"+e._url+"#"+a.id+"')",n.clip=E}if(!l){var S=h.getAttribute("clip-path");if(S){var T=e._g.doc.getElementById(S.replace(/(^url\(#|\)$)/g,k));T&&T.parentNode.removeChild(T),y["clip-path"]=k,11===document.documentMode&&h.removeAttribute("clip-path"),delete n.clip}}break;case"path":"path"===n.type&&(y.d=l?m.path=e._stopabsolutePath?e.sanitizePath(l):e._pathToAbsolute(l):e._availableAttrs.path,n._.dirty=1,n._.arrows&&("startString"in n._.arrows&&X(n,n._.arrows.startString),"endString"in n._.arrows&&X(n,n._.arrows.endString,1)));break;case"width":if(y[i]=l,n._.dirty=1,!m.fx)break;i="x",l=m.x;case"x":m.fx&&(l=-m.x-(m.width||0));case"rx":if("rx"===i&&"rect"===n.type)break;case"cx":y[i]=l,n.pattern&&$(n),n._.dirty=1;break;case"height":if(y[i]=l,n._.dirty=1,!m.fy)break;i="y",l=m.y;case"y":if("text"===n.type)break;m.fy&&(l=-m.y-(m.height||0));case"ry":if("ry"===i&&"rect"===n.type)break;case"cy":y[i]=l,n.pattern&&$(n),n._.dirty=1;break;case"r":"rect"===n.type?y.rx=y.ry=l:y[i]=l,n._.dirty=1;break;case"src":"image"===n.type&&h.setAttributeNS(A,"href",l);break;case"stroke-width":1===n._.sx&&1===n._.sy||(l/=p(g(n._.sx),g(n._.sy))||1),v._vbSize&&(l*=v._vbSize),_&&0===l&&(l=1e-6),y[i]=l,!r["stroke-dasharray"]&&m["stroke-dasharray"]&&D(y,W(n,m["stroke-dasharray"],r)),n._.arrows&&("startString"in n._.arrows&&e.addArrow&&e.addArrow(n,n._.arrows.startString),"endString"in n._.arrows&&e.addArrow&&e.addArrow(n,n._.arrows.endString,1));break;case"stroke-dasharray":D(y,W(n,l,r));break;case"fill":if(e._ISURL.test(l)){d=l.split(e._ISURL),a=B("pattern");var M=B("image");a.id=e.getElementID(e.createUUID()),B(a,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),B(M,{x:0,y:0,"xlink:href":d[1]}),a.appendChild(M),N(a,M,d,v),v.defs.appendChild(a),y.fill="url('"+e._url+d[1]+"')",n.pattern=a,n.pattern&&$(n);break}var L=e.getRGB(l);if(L.error){if(("circle"===n.type||"ellipse"===n.type||"r"!==s(l).charAt())&&z(n,l)){m.gradient=l;break}}else delete r.gradient,delete m.gradient,!e.is(m["fill-opacity"],"undefined")&&e.is(r["fill-opacity"],"undefined")&&(y["fill-opacity"]=m["fill-opacity"]),n.gradient&&V(n);L[t]("opacity")?(y["fill-opacity"]=L.opacity>1?L.opacity/100:L.opacity,n._.fillOpacityDirty=!0):n._.fillOpacityDirty&&e.is(m["fill-opacity"],"undefined")&&e.is(r["fill-opacity"],"undefined")&&(h.removeAttribute("fill-opacity"),delete n._.fillOpacityDirty);case"stroke":L=e.getRGB(l),y[i]=L.hex,"stroke"===i&&(L[t]("opacity")?(y["stroke-opacity"]=L.opacity>1?L.opacity/100:L.opacity,n._.strokeOpacityDirty=!0):n._.strokeOpacityDirty&&e.is(m["stroke-opacity"],"undefined")&&e.is(r["stroke-opacity"],"undefined")&&(h.removeAttribute("stroke-opacity"),delete n._.strokeOpacityDirty),n._.arrows&&("startString"in n._.arrows&&X(n,n._.arrows.startString),"endString"in n._.arrows&&X(n,n._.arrows.endString,1)));break;case"gradient":("circle"===n.type||"ellipse"===n.type||"r"!==s(l).charAt())&&z(n,l);break;case"visibility":"hidden"===l?n.hide():n.show();break;case"opacity":l=l>1?l/100:l,y.opacity=l;break;case"fill-opacity":l=l>1?l/100:l,y["fill-opacity"]=l;break;case"shape-rendering":n.attrs[i]=l=O[l]||l||"auto",y[i]=l,h.style.shapeRendering=l;break;case"line-height":case"vertical-align":break;default:"font-size"===i&&(l=c(l,10)+"px"),n._.dirty=1,y[i]=l,o.dashedAttr2CSSMap[i]&&(x[o.dashedAttr2CSSMap[i]]=l)}for(i in x)h.style[i]=x[i];for(i in y)h.setAttribute(i,y[i]);"text"===n.type&&!r["_do-not-tune"]&&K(n,r)}},q=e._updateFollowers=function(){var e,t,n,r=(0,o.getArrayCopy)(arguments),a=C.call(r),i=C.call(r);for(e=0,t=a.followers.length;e<t;e++)(n=a.followers[e].el)[i].apply(n,r)},K=function(r,o){if("text"===r.type&&(o[t]("text")||o[t]("font")||o[t]("font-size")||o[t]("x")||o[t]("y")||o[t]("line-height")||o[t](n))){var a,c,d,h,p,g,m,v,y,b,C,_=r.attrs,E=r.parent,A=r.node,T=r._oldAttr=r._oldAttr||{baseLineDiff:8,valign:-.5},M=l(o["line-height"]||_["line-height"]),O=o.direction||_.direction||E&&E.attrs&&E.attrs.direction||T.direction||"initial",L=!1,I=!1,F=f||"rtl"!==O?1:2,N=!1,D=!1,P=!(f||!T.direction||O===T.direction);if(T.direction=O,M||(M=1.2*(a=(a=o.fontSize||o["font-size"]||_["font-size"]||E&&E.attrs&&E.attrs.fontSize)?a.toString().replace("px",k):10)),o[t]("text")&&(C=e.is(o.text,"array")?o.text.join("<br>"):o.text)!==T.text&&(D=!0,C&&w.test(C)&&(C=C.replace(/</g,"<").replace(/>/g,">").replace(/&<br\/>lt;|&l<br\/>t;|<<br\/>;/g,"<<br/>").replace(/&<br\/>gt;|&g<br\/>t;|><br\/>;/g,"><br/>")),T.text=_.text=C,x.test(C)?(T.noTSpan&&(T.noTSpan=!(P=!0)),p=(m=s(C).split(x)).length):(P=!0,T.noTSpan=!0,p=1),T.lineCount!==p&&(T.lineCount=p,N=!0)),M!==T.lineHeight&&(T.lineHeight=M,T.baseLineDiff=.75*M,N=!0),P)for(;A.firstChild;)A.removeChild(A.firstChild);if(T.lineCount>1){if(d={},T.tspanAttr||(T.tspanAttr={},T.tspan0Attr={}),T.tspanAttr.dy!==T.lineHeight&&(T.tspanAttr.dy=d.dy=T.lineHeight,I=!0),o[t]("x")&&T.tspanAttr.x!==o.x&&(T.tspan0Attr.x=T.tspanAttr.x=d.x=_.x,I=!0),D){for(b=A.getElementsByTagName("tspan"),h=0;h<p;h++){if(y=b[h*F]){if(y.innerHTML=k,f)for(;y.firstChild;)y.removeChild(y.firstChild);I&&B(y,h?d:T.tspan0Attr)}else y=B("tspan",h?T.tspanAttr:T.tspan0Attr),A.appendChild(y),f||"rtl"!==O||((v=B("tspan",i)).appendChild(e._g.doc.createTextNode("i")),A.appendChild(v));m[h]||(y.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),m[h]=S),y.appendChild(e._g.doc.createTextNode(m[h]))}if(g=p*F,b.length>g)for(h=b.length-1;h>=g;h-=1)A.removeChild(b[h])}else if(I)for(g=(b=A.getElementsByTagName("tspan")).length,h=0;h<g;h+=F)B(b[h],h?d:T.tspan0Attr)}else D&&A.appendChild(e._g.doc.createTextNode(C));o[n]&&(c=u[_[n]]||0)!==T.valign&&(T.valign=c,N=!0),N&&(T.shift=T.baseLineDiff+T.lineCount*T.lineHeight*T.valign,L=!0),!o.y&&0!==o.y||T.y===o.y||(T.y=_.y,L=!0),!L||!T.y&&0!==T.y||!T.shift&&0!==T.shift||B(A,{y:Math.round(T.y+T.shift)})}},J=function(t,n,r){var o=this,a=r||n; +/*! dontAppend && */a.canvas&&a.canvas.appendChild(t),o.node=o[0]=t,t.raphael=!0,t.raphaelid=o.id=e._oid++,o.matrix=e.matrix(),o.realPath=null,o.attrs=o.attrs||{},o.followers=o.followers||[],o.paper=n,o.ca=o.customAttributes=o.customAttributes||new n._CustomAttributes,o._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},o.parent=a,!a.bottom&&(a.bottom=o),o.prev=a.top,a.top&&(a.top.next=o),a.top=o,o.next=null},Z=function(e,t,n){var r=n?"pageY":"pageX";return t[r]-e[r]},Q=e.storeHandlers=function(e,t,n){e._actualListners||(e._actualListners=[]),e._derivedListeners||(e._derivedListeners=[]),e._actualListners.push(t),e._derivedListeners.push(n)},ee=function(e,t){var n,r=e._actualListners.indexOf(t);return-1!==r&&(n=e._derivedListeners[r],e._actualListners.splice(r,1),e._derivedListeners.splice(r,1)),n},te=e.el;J.prototype=te,te.constructor=J,e._engine.getNode=function(e){var t=e.node||e[0].node;return t.titleNode||t},e._engine.getLastNode=function(e){var t=e.node||e[e.length-1].node;return t.titleNode||t},te.rotate=function(e,t,n){var r,o=this;return o.removed?o:(q(o,"rotate",e,t,n),(e=s(e).split(b)).length-1&&(t=l(e[1]),n=l(e[2])),e=l(e[0]),null==n&&(t=n),null!=t&&null!=n||(t=(r=o.getBBox(1)).x+r.width/2,n=r.y+r.height/2),o.transform(o._.transform.concat([["r",e,t,n]])),o)},te.scale=function(e,t,n,r){var o,a=this;return a.removed?a:(q(a,"scale",e,t,n,r),(e=s(e).split(b)).length-1&&(t=l(e[1]),n=l(e[2]),r=l(e[3])),e=l(e[0]),null==t&&(t=e),null==r&&(n=r),null!=n&&null!=r||(o=a.getBBox(1)),n=null==n?o.x+o.width/2:n,r=null==r?o.y+o.height/2:r,a.transform(a._.transform.concat([["s",e,t,n,r]])),a)},te.translate=function(e,t){var n=this;return n.removed?n:(q(n,"translate",e,t),(e=s(e).split(b)).length-1&&(t=l(e[1])),e=l(e[0])||0,t=+t||0,n.transform(n._.transform.concat([["t",e,t]])),n)},te.transform=function(t){var n,r=this,o=r._;return null==t?o.transform:(e._extractTransform(r,t),r.clip&&!o.clipispath&&B(r.clip,{transform:r.matrix.invert()}),r.pattern&&$(r),r.node&&B(r.node,{transform:r.matrix}),1===o.sx&&1===o.sy||(n=r.attrs["stroke-width"])&&r.attr({"stroke-width":n}),r)},te.hide=function(){var e=this;return q(e,"hide"),!e.removed&&e.paper.safari(e.node.style.display="none"),e},te.show=function(){var e=this;return q(e,"show"),!e.removed&&e.paper.safari(e.node.style.display=k),e},te.remove=function(){if(!this.removed&&this.parent.canvas){var t,n=this,o=e._engine.getNode(n),i=n.paper,s=i.defs;for(i.__set__&&i.__set__.exclude(n),E.unbind("raphael.*.*."+n.id),n.gradient&&s&&V(n);t=n.followers.pop();)t.el.remove();for(;t=n.bottom;)t.remove();if(n._drag&&n.undrag(),n.events)for(;t=n.events.pop();)t.unbind();for(t in n.parent.canvas.contains(o)&&n.parent.canvas.removeChild(o),n.removeData(),delete i._elementsById[n.id],e._tear(n,n.parent),n)n[t]=r(n[t])===a?e._removedFactory(t):null;n.removed=!0}},te._getBBox=function(){var e,t,r,a=this,i=a.node,s={},l=a.attrs,c="text"===a.type;f&&c?e=(0,o.showRecursively)(a):"none"===i.style.display&&(a.show(),r=!0);try{s=i.getBBox(),c&&(s.x===undefined&&(s.isCalculated=!0,t=l["text-anchor"],s.x=(l.x||0)-s.width*("start"===t?0:"middle"===t?.5:1)),s.y===undefined&&(s.isCalculated=!0,t=l[n],s.y=(l.y||0)-s.height*("bottom"===t?1:"middle"===t?.5:0)))}catch(u){}finally{s=s||{}}return f&&c?e&&e():r&&a.hide(),s},te.attr=function(n,r){if(this.removed)return this;var o,i,s,l,c,u,d,f,h=this.attrs,p={},g=this._invokedCa||(this._invokedCa={}),m=this.ca;if(null==n){var v={};for(o in h)h[t](o)&&(v[o]=h[o]);return v.gradient&&"none"===v.fill&&(v.fill=v.gradient)&&delete v.gradient,v.transform=this._.transform,v.visibility="none"===this.node.style.display?"hidden":"visible",v}if(null==r){if(e.is(n,"object"))l=n;else if(e.is(n,"string"))return"fill"===n&&"none"===h.fill&&h.gradient?h.gradient:"transform"===n?this._.transform:"visibility"===n?"none"===this.node.style.display?"hidden":"visible":n in h?h[n]:e.is(m[n],a)?m[n].def:e._availableAttrs[n]}else(l={})[n]=r;if(!e.stopPartialEventPropagation)for(o in l)E("raphael.attr."+o+"."+this.id,this,l[o],o);for(o in l)if((f=m[o])&&!g[o]&&e.is(f,a)){for(c in g[o]=!0,u=f.apply(this,[].concat(l[o])),g[o]=!1,u)p[c]=u[c];h[o]=l[o]}else p[o]=l[o];for(Y(this,p),i=0,s=this.followers.length;i<s;i++)(d=this.followers[i]).cb&&!d.cb.call(d.el,p,this)||d.el.attr(p);return this},te.pinchstart=function(t,n){var r=this,o={},a=function(a){if(a.touches&&2===a.touches.length){var i=a.touches[0],s=a.touches[1];console.log("pinch"),r._blockDrag=!0,a&&a.preventDefault(),e.makeSelectiveCopy(o,a),o.data={finger0:i,finger1:s,distanceX:Z(i,s),distanceY:Z(i,s,!0)},t.call(n||r,o)}else r._blockDrag=!1};Q(r,t,a),r.node.addEventListener("touchstart",a)},te.unpinchstart=function(e){var t=ee(this,e);this.__blockDrag=!1,this._pinchDragStarted=!1,t&&this.node.removeEventListener("touchstart",t)},te.pinchmove=function(t,n){var r=this,o={},a=function(a){if(a.touches&&2===a.touches.length){var i=a.touches[0],s=a.touches[1];a&&a.preventDefault(),r._pinchDragStarted=!0,e.makeSelectiveCopy(o,a),o.data={finger0:i,finger1:s,distanceX:Z(i,s),distanceY:Z(i,s,!0)},t.call(n||r,o)}};Q(r,t,a),r.node.addEventListener("touchmove",a)},te.unpinchmove=function(e){var t=ee(this,e);t&&this.node.removeEventListener("touchmove",t)},te.pinchend=function(e,t){var n=this,r=function(r){n._pinchDragStarted&&(n._pinchDragStarted=!1,e.call(t||n,r))};Q(n,e,r),n.node.addEventListener("touchend",r)},te.unpinchend=function(e){var t=ee(this,e);this._pinchDragStarted=!1,t&&this.node.removeEventListener("touchend",t)},te.pinch=function(e,t,n){te.pinchstart.call(this,e),te.pinchin.call(this,t),te.pinchend.call(this,n)},te.unpinch=function(e,t,n){te.unpinchstart.call(this,e),te.unpinchin.call(this,t),te.unpinchend.call(this,n)},te.on=function(t,n,r){if(n&&t){var o,a,i=this,s=t.match(/fc-/),l=n;if(this.removed)return this;switch(i._actualListners||(i._actualListners=[]),i._derivedListeners||(i._derivedListeners=[]),t){case"fc-dragstart":return i.drag(null,n),i;case"fc-dragmove":return i.drag(n),i;case"fc-dragend":return i.drag(null,null,n),i;case"fc-dbclick":return i.dbclick(n,r),i;case"fc-pinchstart":return i.pinchstart(n,r),i;case"fc-pinchmove":return i.pinchmove(n,r),i;case"fc-pinchend":return i.pinchend(n,r),i;case"fc-click":return i.fcclick(n,r),i}return s&&(t=t.replace(/fc-/,"")),s&&e.supportsTouch&&(a=t,t=(e.supportsPointer?e.safePointerEventMapping[t]:j[t])||t,"mouseout"===a&&(l=function(e){P.elementInfo.push({el:r||i,callback:n}),P.srcElement=e.srcElement||e.target},t=e.supportsPointer?"pointerover":"touchstart")),this._&&this._.RefImg&&("load"===t||"error"===t)?(o=this._.RefImg,l=function(e){!i.removed&&n.call(i,e)}):o=this.node,l===n&&(l=function(e){n.call(r||i,e)}),i._actualListners.push(n),i._derivedListeners.push(l),o.addEventListener?o.addEventListener(t,l):o["on"+t]=l,this}},te.off=function(t,n){var r,o,a,i=n,s=t.match(/fc-/);if(this.removed||!this._actualListners||!t||!n)return this;switch(t){case"fc-dragstart":return this.undragstart(n),this;case"fc-dragmove":return this.undragmove(n),this;case"fc-dragend":return this.undragend(n),this;case"fc-dbclick":return this.undbclick(n),this;case"fc-pinchstart":return this.unpinchstart(n),this;case"fc-pinchmove":return this.unpinchmove(n),this;case"fc-pinchend":return this.unpinchend(n),this;case"fc-click":return this.fcunclick(n),this}return s&&(t=t.replace(/fc-/,"")),i=n,s&&e.supportsTouch&&(r=t,t=(e.supportsPointer?e.safePointerEventMapping[t]:j[t])||t,"mouseout"===r&&(t=e.supportsPointer?"pointerover":"touchstart")),a=this._&&this._.RefImg?this._.RefImg:this.node,-1!==(o=this._actualListners.indexOf(i))&&(i=this._derivedListeners[o],this._actualListners.splice(o,1),this._derivedListeners.splice(o,1)),a.removeEventListener?a.removeEventListener(t,i):a["on"+t]=null,this},e._engine.path=function(e,t,n){var r=B("path"),o=new J(r,e,n);return o.type="path",t&&o.attr(t),o},e._engine.group=function(e,t,n){var r=B("g"),o=new J(r,e,n);return o.type="group",o.canvas=o.node,o.top=o.bottom=null,o._id=t||k,t&&r.setAttribute("class","raphael-group-"+o.id+"-"+t),o},e._engine.circle=function(e,t,n){var r=B("circle"),o=new J(r,e,n);return o.type="circle",t&&o.attr(t),o},e._engine.rect=function(e,t,n){var r=B("rect"),o=new J(r,e,n);return o.type="rect",t.rx=t.ry=t.r,t&&o.attr(t),o},e._engine.ellipse=function(e,t,n){var r=B("ellipse"),o=new J(r,e,n);return o.type="ellipse",t&&o.attr(t),o},e._engine.image=function(e,t,n){var r=B("image"),o=new J(r,e,n,!0);return o._.group=n||e,o.type="image",r.setAttribute("preserveAspectRatio","none"),t&&o.attr(t),o},e._engine.text=function(e,t,n,r){var o=B("text"),a=new J(o,e,n);return a.type="text",r&&a.css&&a.css(r,undefined,!0),t&&a.attr(t),a},e._engine.setSize=function(e,t){return this.width=e||this.width,this.height=t||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},e._engine.create=function(){var t,n=e._getContainer.apply(0,arguments),r=n&&n.container,o=n.x,a=n.y,i=n.width,s=n.height;if(!r)throw new Error("SVG container not found.");var l,c=B("svg"),u="overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-ms-user-select:none;user-select:none;-o-user-select:none;cursor:default;vertical-align:middle;";return e.supportsTouch&&(e.isEdge?u+="touch-action:none;":e.isFirefox&&e.isWindows?u+="touch-action:none;":e.isIE11&&(u+="-ms-touch-action:none;")),o=o||0,a=a||0,i=i||512,B(c,{height:s=s||342,version:1.1,width:i,xmlns:T}),1===r?(c.style.cssText=u+"position:absolute;left:"+o+"px;top:"+a+"px",(r=e._g.doc.body).appendChild(c),l=1):(c.style.cssText=u+"position:relative",r.firstChild?r.insertBefore(c,r.firstChild):r.appendChild(c)),(t=new e._Paper).width=i,t.height=s,t.canvas=c,t.container=r,B(c,{id:"raphael-paper-"+t.id}),t.clear(),t._left=t._top=0,l&&(t.renderfix=function(){}),t.renderfix(),t},e._engine.setViewBox=function(e,t,n,r,o){E("raphael.setViewBox",this,this._viewBox,[e,t,n,r,o]);var a,i,s=p(n/this.width,r/this.height),l=this.top,c=o?"meet":"xMinYMin";if(null==e?(this._vbSize&&(s=1),delete this._vbSize,a="0 0 "+this.width+S+this.height):(this._vbSize=s,a=e+S+t+S+n+S+r),B(this.canvas,{viewBox:a,preserveAspectRatio:c}),s)for(;l;)i="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":i}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[e,t,n,r,!!o],this},e.prototype.detachPaper=function(){!1!==this._detached&&(this.container.removeChild(this.canvas),this._detached=!0)},e.prototype.attachPaper=function(){this._detached&&(this.container.appendChild(this.canvas),this._detached=!1)},e.prototype.renderfix=function(){var e,t=this.canvas,n=t.style;try{e=t.getScreenCTM()||t.createSVGMatrix()}catch(a){e=t.createSVGMatrix()}var r=-e.e%1,o=-e.f%1;(r||o)&&(r&&(this._left=(this._left+r)%1,n.left=this._left+"px"),o&&(this._top=(this._top+o)%1,n.top=this._top+"px"))},e.prototype._desc=function(t){var n=this.desc;if(n)for(;n.firstChild;)n.removeChild(n.firstChild);else this.desc=n=B("desc"),this.canvas.appendChild(n);n.appendChild(e._g.doc.createTextNode(e.is(t,"string")?t:"Created with Red Raphaël "+e.version))},e.prototype.clear=function(){var e;for(E("raphael.clear",this);e=this.bottom;)e.remove();for(e=this.canvas;e.firstChild;)e.removeChild(e.firstChild);this.bottom=this.top=null,e.appendChild(this.desc=B("desc")),e.appendChild(this.defs=B("defs"))},e.prototype.remove=function(){var t;for(E("raphael.remove",this);t=this.bottom;)t.remove();for(t in this.defs&&this.defs.parentNode.removeChild(this.defs),this.desc&&this.desc.parentNode.removeChild(this.desc),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this)this[t]=r(this[t])===a?e._removedFactory(t):null;this.removed=!0},e.prototype.setHTMLClassName=function(){}}var ne};var o=n(121)},function(e,t,n){"use strict";function r(e){var t={data:{}};if(!e)return t;if("string"==typeof e)try{t.data=JSON.parse(e)}catch(n){t.error=n}else t.data=e;return t}function o(){return this.getChartData("json")}function a(e){this.setChartData(e,"json")}t.__esModule=!0,t["default"]={extension:function(e){return e&&(e.prototype.setJSONData=a),e&&(e.prototype.getJSONData=o),{format:"json",toJSON:r,fromJSON:r}},name:"JSON",type:"transcoder",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(129),o=d(r),a=d(n(145)),i=d(n(146)),s=d(n(147)),l=d(n(148)),c=d(n(149)),u=d(n(150));function d(e){return e&&e.__esModule?e:{"default":e}}var f={oneInAFrame:!0};t["default"]={extension:function(e){var t=e.getDep("redraphael","plugin"),n={};t.fn._elementFromEvent=function(e){if(!e||this.removed)return null;var t=e.srcElement||e.target||(e=e.originalEvent)&&(e.srcElement||e.target)||n;return"tspan"===t.nodeName&&(t=t.parentNode),this.getById(t.raphaelid)},t.requestAnimFrame=o["default"].addJob&&function(e){o["default"].addJob(e,r.priorityList.animation,f)},t.instantRequestAnimFrame=o["default"].addJob&&function(e){o["default"].addJob(e,r.priorityList.instant)},(0,u["default"])(t),(0,a["default"])(t),(0,i["default"])(t),(0,s["default"])(t),(0,l["default"])(t),(0,c["default"])(t)},name:"redraphaelExt",type:"plugin",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t,n,a=e.eve,i=e._g,s=e.fn,l=e.el,c=/[, ]+/,u="",d=" ",f=/\B([A-Z]{1})/g,h="fusioncharts-raphael-stylesheet";(n=(t=function(e){this.styleSheet=u,this.rules={},this.ns=e||u}).prototype).getSheet=function(){var t=this.node;return this.styleSheet=n.getStyleSheet(h),this.styleSheet||((t=this.node=i.doc.createElement("style")).setAttribute("id",e.format("raphael-stylesheet-{0}",e._oid++)),t.setAttribute("type","text/css"),t.setAttribute("title",h),(i.doc.head||i.doc.getElementsByTagName("head")[0]).appendChild(this.node),this.styleSheet=n.getStyleSheet(h)),this.styleSheet},n.getStyleSheet=function(e){for(var t,n=i.doc.styleSheets,r=n.length;r--;)if((t=n[r]).title===e)return t},n.applyCSSRule=function(e,t){var n,r=this.styleSheet;if(!r){if(!e||!t)return;r=this.getSheet()}n=(r.rules||r.cssRules||{}).length||0,r.insertRule?r.insertRule(e+"{"+t+"}",n):r.addRule&&r.addRule(e,t,n)},n.removeCSS=function(e){var t,n=this.styleSheet,r=n.rules||n.cssRules||{},o=r.length||0;for(e=e||this.ns;o--;)t=r[o],new RegExp(e).test(t.selectorText)&&(n.removeRule?n.removeRule(o):n.deleteRule(o))},n.destroy=function(){this.removeCSS(),delete this.node,delete this.styleSheet,delete this.ns,delete this.rules},n.clear=function(){this.removeCSS(),this.rules={}},n.add=function(e,t,n){var r,o=u,a=this.rules[e]||(this.rules[e]={}),i=n?u:"\t",s=n?":":": ";for(r in t)(a[r]=t[r])&&(o+=i+r.replace(f,"-$1").toLowerCase()+s+a[r]+";");this.applyCSSRule(e,o)},n.render=function(){this.setCssText()},n.setCssText=function(e){var t,n,r=e?u:"\t",o=e?":":": ",a=u,i=u;for(t in this.rules){for(n in a=u,i=t.replace(/(^|\,)/g,"$1"+this.ns+d),t=this.rules[t])t[n]&&(a+=r+n.replace(f,"-$1").toLowerCase()+o+t[n]+";");this.applyCSSRule(i,a)}},a.on("raphael.new",function(){this._stylesheet=this._stylesheet||new t,this.cssNamespace(u)}),a.on("raphael.remove",function(){this._stylesheet&&this._stylesheet.destroy(),delete this._stylesheet}),s.cssNamespace=function(t){return arguments.length&&(this._stylesheet.ns=e.format("{0}#raphael-paper-{1}",t&&t+d||u,this.id)),this._stylesheet.ns},s.cssAddRule=function(e,t){if(1===arguments.length&&"object"===(void 0===e?"undefined":r(e))){for(var n in e)this.cssAddRule(n,e[n]);return this}return this._stylesheet.add(e,t),this},s.cssRender=function(){return e.svg&&this._stylesheet.render(),this},s.cssClear=function(){return this._stylesheet.clear(),this},e.ca["class"]=function(t){var n,r,o,a,i=this,s=i.node,l=i.paper,c="."+t,f=l._stylesheet&&l._stylesheet.rules,h=i.parent,p=i.attrs,g={};if(e.svg)t=t||u,s.setAttribute("class","group"===i.type&&i._id?"raphael-group-"+i.id+"-"+i._id+d+t:t);else if(e.vml&&(n=s.className="group"===i.type?t&&i._id+d+t||i._id:"rvml "+t,s.className=n?n+" fusioncharts-div":"fusioncharts-div",c&&f)){for(a in r=f[c])"color"===a&&"text"===i.type&&(a="fill"),!p[a]&&(g[a]=r[a]);for(;h&&h.attr;){if(o=h.attr("class"))for(a in r=f[c="."+o+d+c])"color"===a&&"text"===i.type&&(a="fill"),!p[a]&&!g[a]&&(g[a]=r[a]);h=h.parent}i.css(g)}},l.css=function(t,n,r){var o,i,s,l,u,d,f;if(this.removed)return this;if(this.styles||(this.styles={}),void 0===n&&e.is(t,"string")){for(s={},d=0,f=(o=t.split(c)).length;d<f;d++)(t=o[d])in this.styles&&(s[t]=this.styles[t]);return f-1?s:s[o[0]]}if(void 0===n&&e.is(t,"array")){for(s={},d=0,f=t.length;d<f;d++)s[t[d]]=this.styles(t[d]);return s}for(d in void 0!==n?(i={})[t]=n:t&&e.is(t,"object")&&(i=t),u={},i)l=d.replace(/\B([A-Z]{1})/g,"-$1").toLowerCase(),e._availableAttrs.hasOwnProperty(l)||"color"===l?("color"===l&&"text"===this.type&&(l="fill"),u[l]=i[d],u.dirty=!0):(a("raphael.css."+l+"."+this.id,this,i[d],l),this.node.style[l]=i[d],this.styles[l]=i[d]);for(d=0,f=this.followers.length;d<f;d++)this.followers[d].el.attr(i);return u.hasOwnProperty("dirty")&&(delete u.dirty,r&&(u["_do-not-tune"]=!0),this.attr(u)),this},l.removeCSS=function(t){var n,r,a;if(!t&&(t=o.appliedCSS),this.removed)return this;if(e.is(t,"string")&&(t=t.split(",")),e.is(t,"array"))for(a=t.length,r=0;r<a;r++)n=t[r].replace(/\B([A-Z]{1})/g,"-$1").toLowerCase(),this.node.removeAttribute(n),this.node.style[n]="";return this}};var o=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t,n=window,a=Math.sqrt,i=n.parseFloat,s=n.parseInt,l="none",c="rgba(0,0,0,1)",u=n.SVGFilterElement||n.SVGFEColorMatrixElement&&2===n.SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE,d={"drop-shadow":"drop-shadow",stroke:"stroke",fill:"fill","stroke-width":"stroke-width","stroke-opacity":"stroke-opacity","stroke-linecap":"stroke-linecap","stroke-linejoin":"stroke-linejoin","shape-rendering":"shape-rendering",opacity:"opacity","fill-opacity":"fill-opacity"};e.svg?(u&&(e.filterShadow=function(t,n){var r,s,l,u,d=t.dx||1,f=t.dy||1,h=t.spread||3,p=t.color||"rgb(64,64,64)",g=t.paper,m=g.cacheShadows||(g.cacheShadows={}),v=t.id||"drop-shadow-"+(n?"layered":"non-layered")+"-"+[d,f,h,p].join(" "),y=t.id||e.getElementID(v.replace(/[\(\)\s%:,\xb0#]/g,"_")),b=!!(t.id?e._g.doc.getElementById(y):m[v]);return g&&!b?((p=e.color(p)).error&&(p=e.color(c)),l=(0,o.pluck)(p.opacity,1),l=t.opacity||l,s=(r=g.addDefs({filter:{tagName:"filter",id:y,y:"-1000%",x:"-1000%",width:"2000%",height:"2000%",children:[{tagName:"feOffset",result:"offOut","in":"SourceGraphic",dx:i(d),dy:i(f)},{tagName:"feColorMatrix",result:"matrixOut","in":"offOut",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "+l+" 0"},{tagName:"feGaussianBlur",result:"blurOut","in":"matrixOut",stdDeviation:n?1:a(i(h))},{tagName:"feComposite","in":"SourceGraphic",in2:"blurOut",operator:"over"}]}})).filter.children,u=m[v]={use:1,hash:v,id:y,filter:r.filter.element,offset:s[0].element,matrix:s[1].element,blur:s[2].element,blend:s[3].element}):(u=m[v]).use+=1,u},e.el.dropshadow=function(n,r,o,a,i,s){var c,u,d,f,h,p,g,m,v=this,y=v._.shadowFilter,b=v.paper,x=b.cacheShadows||(b.cacheShadows={}),w="drop-shadow"+[n,r,o,a].join(" ");for(h=f=.05*i,g=1;g<=3;g++)h+=f*g*(i-h);if(u=(c=s?v.shadowElem||v.clone({fill:l,stroke:"rgb(51, 51, 51)","stroke-width":v.attr("stroke-width")||1,opacity:h},s).translate(n,r).follow(v,t,!s&&"before"):v).shadowElem&&c.shadowElem.node||c.node,n===l){if(y){if(y.use-=1,u.removeAttribute("filter"),v.shadowElem&&v.shadowElem.attr("opacity",0),!y.use){for(d in w=y.hash,y)(m=y[d]).parentNode&&m.parentNode.removeChild(m),delete y[d];m=null,delete x[w]}y=null,delete v._.shadowFilter}}else s&&!v.shadowElem&&(p=!0),s&&(v.shadowElem=c),y=y&&x[w]?x[w]:v._.shadowFilter=e.filterShadow({paper:b,dx:n,dy:r,spread:o,color:a,opacity:!s&&h},!!s),!p&&v.shadowElem&&v.shadowElem.attr("opacity",h),u.setAttribute("filter",'url("'+e._url+"#"+y.id+'")');return this}),t=function(e,t){var n,r,o=this,a={};for(r in e)switch(d[r]&&(a[r]=e[r],delete e[r]),r){case"transform":(n=t.matrix.clone()).translate(o.__shadowx,o.__shadowy),o.transform(n.toTransformString());break;case"stroke-width":e[r]=a[r]||1}for(r in o.attr(e),a)e[r]=a[r]},e.ca["drop-shadow"]=function(n,r,a,i,u,d){var f,h,p,g,m,v,y,b=this,x=b._.shadows||(b._.shadows=[]);if(b.__shadowblocked)return!1;if(n===l)for(;h=x.pop();)h.remove();else for((i=e.color(i)).error&&(i=e.color(c)),u instanceof Array?(m=u[0],v=u[1]):m=v=u,m=1/(0,o.pluck)(m,1),v=1/(0,o.pluck)(v,1),n=(0,o.pluck)(n,1)*m,r=(0,o.pluck)(r,1)*m,f=.05*(0,o.pluck)(i.opacity,1),p=s(b.attr("stroke-width")||1,10)+6,(g=b.matrix.clone()).translate(n,r),y=1;y<=3;y++)(h=(x[y-1]||b.clone().follow(b,t,!d&&"before")).attr({stroke:i.hex,"stroke-opacity":f*y,opacity:"1","stroke-width":(p-2*y)*v,transform:g.toTransformString(),"stroke-linecap":"round","stroke-linejoin":"round",fill:l})).__shadowlevel=y,h.__shadowscale=v,h.__shadowx=n,h.__shadowy=r,d&&d.appendChild(h),x.push(h);return!1},e.el.shadow=function(t,n,a,i){var s;if(a&&a.constructor===e.el.constructor&&(i=a,a=undefined),"object"===(void 0===t?"undefined":r(t))&&(n&&n.constructor===e.el.constructor&&(i=n),n=t.opacity,a=t.scalefactor,s=t.useFilter!==undefined?!!t.useFilter:!o.isIE9,t=t.apply===undefined?!!n:t.apply),n===undefined&&(n=1),this.dropshadow){if(s&&!this.ca.hasOwnProperty("drop-shadow"))return t&&this.dropshadow(1,1,3,"rgb(64,64,64)",n,i)||this.dropshadow(l),this;this._.shadowFilter&&this.dropshadow(l)}return this.attr("drop-shadow",t?[1,1,3,"rgba(64,64,64,"+n+")",a,i]:l)}):e.vml?(e.ca["drop-shadow"]=function(t,n,r,a,s,u){var d,f,h,p,g=this,m=g._.shadow;return!g.isShadow&&(t===l?m&&(m=g._.shadow=m.remove()):(m||(m=g._.shadow=g.clone(),u&&u.appendChild(m.follow(g))||m.follow(g,void 0,"before"),m.attr({fill:"none","fill-opacity":.5,"stroke-opacity":1}).isShadow=!0,m.attr("stroke-width")<=0&&m.attr("stroke-width",1)),f=(d=m.node.runtimeStyle).filter.replace(/ progid:\S+Blur\([^\)]+\)/g,""),(a=e.color(a)).error&&(a=e.color(c)),p=(0,o.pluck)(a.opacity,1)/5,h=s instanceof Array?s[0]:s,h=1/(0,o.pluck)(s,1),t=(0,o.pluck)(t,1)*h,n=(0,o.pluck)(n,1)*h,m.translate(t,n),d.filter=f+" progid:DXImageTransform.Microsoft.Blur(pixelRadius="+i(.4*r)+" makeShadow=True Color="+a.hex+' shadowOpacity="'+p+'");'),!1)},e.el.shadow=function(t,n,o,a){return o&&o.constructor===e.el.constructor&&(a=o,o=void 0),"object"===(void 0===t?"undefined":r(t))&&(n&&"group"===n.type&&(a=n),n=t.opacity,o=t.scalefactor,t=void 0===t.apply?!!n:t.apply),void 0===n&&(n=1),this.attr("drop-shadow",t||!n?[1,1,5,"rgba(64,64,64,"+n+")",o,a]:l)}):e.canvas&&(e.el.shadow=function(){return this})};var o=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t=/rgba\([\d]+\,[\d]+\,[\d]+\,0\)$/,n=window,a=n.navigator.userAgent,i="createTouch"in n.document,s=/msie/i.test(a)&&!n.opera,l=Math,c=l.cos,u=l.sin,d=l.abs,f=l.min,h=l.PI,p=n.parseInt,g=n.parseFloat,m=String,v=Array.prototype.slice,y="hasOwnProperty",b="none",x="M",w="L",C="Z",_="scroll-position",E="rgba(192,192,192,"+(s?.002:1e-6)+")",k=e.eve,S=/\s*\,\s*/g;e&&e._availableAnimAttrs&&e._availableAnimAttrs.cx&&(e._availableAnimAttrs["scroll-position"]=e._availableAnimAttrs.cx),e.define&&e.define([{name:"polypath",polypath:function(){return this.path(void 0,e._lastArgIfGroup(arguments))},ca:{polypath:function(t,n,r,o,a,i){var s,l,d,f,m;if(s=[],t=p(t,10)||0,n=g(n)||0,r=g(r)||0,o=g(o)||0,a=null===a||isNaN(a)?.5*h:e.rad(a),i=null===i||isNaN(i)?0:g(i),f=a,t>2)switch(l=2*h/t,i){case 0:for(d=0;d<t;d++)s.push(w,n+o*c(-f),r+o*u(-f)),f+=l;s[0]=x,s.push(C);break;case 1:for(d=0;d<t;d++)s.push(x,n,r,w,n+o*c(-f),r+o*u(-f)),f+=l;break;default:for(m=o*c(l*=.5)*(1-i),d=0;d<t;d++)s.push(w,n+o*c(-f),r+o*u(-f)),f+=l,s.push(w,n+m*c(-f),r+m*u(-f)),f+=l;s[0]=x,s.push(C)}else 0===o?s.push(x,n,r,w,n,r,C):s.push(x,n-o,r,"A",o,o,0,0,0,n+o,r,"A",o,o,0,0,0,n-o,r,C);return{path:s}},r:function(e){var t=this.attrs.polypath;return t[3]=e,this.attr("polypath",t),!1}}},{name:"scroller",scroller:function(t,n,a,i,s,l,c){if("object"===(void 0===t?"undefined":r(t))&&t.scroller){var u=t.scroller;t=u[0],n=u[1],a=u[2],i=u[3],s=u[4],l=u[5],c=u[6]}var f,h,p,m,v,y=this.group("scroller",c),x=y.attrs,w=y._.scroller={},C={};for(v in f=s?"horizontal":"vertical",w.track=this.rect(y).on("fc-mousedown",w._mousedownTrack=function(t){var n,r=x["scroll-orientation"],a=x[_],i=(0,o.extend2)({},w.anchor.node.getBoundingClientRect());i.y=i.y||i.top,i.x=i.x||i.left,i.height=i.height||i.bottom-i.top,i.width=i.width||i.right-i.left,(n=a+(n=("horizontal"!==r?t.y-(i.y+i.height/2):t.x-(i.x+i.width/2))/w.trackLength))>1?n=1:(n<0||isNaN(n))&&(n=0),h=e.animation({"scroll-position":n},2e3*d(a-n),"easeIn"),y.animate(h),k("raphael.scroll.start."+y.id,y,a)}).on("fc-mouseup",w._mouseupTrack=function(){this.stop(h),k("raphael.scroll.end."+this.id,this,x[_])},y,!0),w.anchor=this.rect(y).drag(function(e){C[_]=p+e.data[m]/w.trackLength,C[_]>=1?C[_]=1:(C[_]<=0||isNaN(C[_]))&&(C[_]=0),y.attr(C)},function(){m="horizontal"===x["scroll-orientation"]?0:1,k("raphael.scroll.start."+y.id,y,p=x[_]),"function"==typeof w.scrollStart&&w.scrollStart.call(y,p)},function(){k("raphael.scroll.end."+y.id,y,p=x[_]),"function"==typeof w.scrollEnd&&w.scrollEnd.call(y,p)}),e.fn.scroller.fn)y[v]=e.fn.scroller.fn[v];for(v in e.fn.scroller.ca)y.ca[v]=e.fn.scroller.ca[v];return x["scroll-orientation"]=f,x["stroke-width"]=1,y.ca["scroll-repaint"]=y.ca["scroll-repaint-"+f],!e.is(l,"object")&&(l={}),y.attr({"scroll-display-buttons":l.showButtons?"arrow":b,"scroll-display-style":l.displayStyleFlat?"flat":"3d","scroll-ratio":g(l.scrollRatio)||1,"scroll-position":g(l.scrollPosition)||0,"scroll-repaint":[t,n,a,i]})},fn:{scroll:function(e){var t=this._.scroller;return t.callback=e.scroll,t.scrollStart=e.scrollStart,t.scrollEnd=e.scrollEnd,this},remove:function(){var t,n=this,r=n._.scroller;for(t in n.attr("scroll-display-buttons",b),r.track.off("fc-mouseup",r._mouseupTrack),r.track.off("fc-mousedown",r._mousedownTrack),r)r[t]&&r[t].remove&&r[t].remove(),r[t]=null;delete n._.scroller,e.el.remove.apply(n,arguments)}},ca:{"stroke-width":function(e){var t=this._.scroller,n=(0,o.pluckNumber)(e["stroke-width"],1);return t.anchor.attr({"stroke-width":n}),t.track.attr({"stroke-width":n}),!1},"drop-shadow":function(e,t,n,r,o,a){return this._.scroller.track.attr("drop-shadow",[e,t,n,r,o,a]),!1},"scroll-display-style":function(e){var t=this.attrs,n=t["scroll-display-style"],r=t.fill;return e={flat:"flat","3d":"3d",transparent:"transparent"}[e]||n,r&&e!==n&&(t["scroll-display-style"]=e,this.attr("fill",r)),{"scroll-display-style":e}},"scroll-display-buttons":function(t){var n,r,o=this,a=o.paper,i=o._.scroller,s=o.attrs,l=s["scroll-display-buttons"],c=s["scroll-repaint"];return void 0===l&&(l=b),(t={none:b,arrow:"arrow"}[t]||l)!==l&&(s["scroll-display-buttons"]=t,t===b&&i.start?(i.arrowstart.remove(),delete i.arrowstart,i.arrowend.remove(),delete i.arrowend,i.start.off("fc-mouseup",i._mouseupStart),i.start.off("fc-mousedown",i._mousedownStart),i.start.remove(),delete i.start,i.end.off("fc-mouseup",i._mouseupEnd),i.end.off("fc-mousedown",i._mousedownEnd),i.end.remove(),delete i.end):(i.arrowstart=a.polypath(o),i.arrowend=a.polypath(o),i.start=a.rect(o).on("fc-mousedown",i._mousedownStart=function(){var t,r,a;0!==(t=s[_])&&(i.scrollStart&&i.scrollStart.call(o,o.attrs[_]),o.animate({"scroll-position":t-.1},100,void 0,function(){a=!0,r&&i.scrollEnd&&i.scrollEnd.call(o,o.attrs[_])}).animate(n=e.animation({"scroll-position":0},4500*t,"easeIn",function(){r=!0,a&&i.scrollEnd&&i.scrollEnd.call(o,o.attrs[_])})),k("raphael.scroll.start."+o.id,o,t))}).on("fc-mouseup",i._mouseupStart=function(){o.stop(n,!0),k("raphael.scroll.end."+o.id,o,s[_])},o),i.end=a.rect(o).on("fc-mousedown",i._mousedownEnd=function(){var t,n,a;1!==(t=s[_])&&(i.scrollStart&&i.scrollStart.call(o,o.attrs[_]),o.animate({"scroll-position":t+.1},100,void 0,function(){a=!0,n&&i.scrollEnd&&i.scrollEnd.call(o,o.attrs[_])}).animate(r=e.animation({"scroll-position":1},4500*(1-t),"easeIn",function(){n=!0,a&&i.scrollEnd&&i.scrollEnd.call(o,o.attrs[_])})),k("raphael.scroll.start."+o.id,o,t))}).on("fc-mouseup",i._mouseupEnd=function(){o.stop(r,!0),k("raphael.scroll.end."+o.id,o,s[_])},o),s.fill&&o.attr("fill",s.fill)),c&&o.attr("scroll-repaint",c)),{"scroll-display-buttons":t}},"scroll-orientation":function(e){var t=this,n=t.attrs,r=n["scroll-repaint"],o=n["scroll-orientation"];return o!==(e={horizontal:"horizontal",vertical:"vertical"}[e]||o)&&(t.ca["scroll-repaint"]=t.ca["scroll-repaint-"+e],r&&(r[2]=r[2]+r[3],r[3]=r[2]-r[3],r[2]=r[2]-r[3],t.attr("scroll-repaint",r)),n.fill&&t.attr("fill",n.fill)),{"scroll-orientation":e}},"scroll-ratio":function(e){var t=this.attrs,n=t["scroll-ratio"],r=t["scroll-repaint"];return e=e>1?1:e<.01?.01:g(e),r&&e!==n&&(t["scroll-ratio"]=e,this.attr("scroll-repaint",r)),{"scroll-ratio":e}},"scroll-position":function(e,t){var n,r=this,o=r.attrs,a="horizontal"===o["scroll-orientation"],i=o["scroll-repaint"],s=o[_],l=r._.scroller,c=l.anchor;return e=e>1?1:e<0?0:g(e),isNaN(e)&&(e=s),i&&(s!==e||t)&&(n=l.start&&l.start.attr(a?"width":"height")||0,a&&c.attr("x",i[0]+n+(i[2]-2*n-c.attr("width"))*e+.5)||c.attr("y",i[1]+n+(i[3]-2*n-c.attr("height"))*e+.5),!t&&o["scroll-ratio"]<1&&(k("raphael.scroll.change."+r.id,r,e),l.callback&&l.callback.call(r,e))),{"scroll-position":e}},r:function(e){var t=this._.scroller;return t.track.attr("r",e),t.anchor.attr("r",this.attrs["scroll-display-buttons"]===b&&e||0),!1},"scroll-repaint-horizontal":function(e,t,n,r){var o=this.attrs,a=this._.scroller,i=o["scroll-ratio"],s=o[_],l=0,c=n*i,u=o["scroll-display-buttons"]===b;n&&(n-=1),e&&(e+=.5),r&&(r-=1),t&&(t+=.5),a.track.attr({width:n,height:r,y:t,x:e}).crisp(),u||(c-=2*(l=f(r,.5*n))*i,a.start.attr({width:l,height:r,x:e,y:t}),a.arrowstart.attr("polypath",[3,e+.5*l,t+.5*r,.25*l,180]),a.end.attr({width:l,height:r,x:e+n-l,y:t}),a.arrowend.attr("polypath",[3,e+n-.5*l,t+.5*l,.25*l,0])),a.trackLength=n-2*l-c,a.trackOffset=e+l+.5,a.anchorOffset=a.trackOffset+.5*(c-1),a.anchor.attr({height:r<1?1:r,width:c-1<1?1:c-1,y:t,x:a.trackOffset+a.trackLength*s}).crisp()},"scroll-repaint-vertical":function(e,t,n,r){var o=this.attrs,a=this._.scroller,i=o["scroll-ratio"],s=o[_],l=0,c=r*i,u=o["scroll-display-buttons"]===b;n&&(n-=1),e&&(e+=.5),r&&(r-=1),t&&(t+=.5),a.track.attr({width:n,height:r,y:t,x:e}).crisp(),u||(c-=2*(l=f(n,.5*r))*i,a.start.attr({width:n,height:l,x:e,y:t}),a.arrowstart.attr("polypath",[3,e+.5*n,t+.5*l,.25*l,90]),a.end.attr({width:n,height:l,x:e,y:t+r-l}),a.arrowend.attr("polypath",[3,e+.5*n,t+r-.5*l,.25*l,-90])),a.trackLength=r-2*l-c,a.trackOffset=t+l+.5,a.anchorOffset=a.trackOffset+.5*(c-1),a.anchor.attr({height:c-1<1?1:c-1,width:n<1?1:n,y:a.trackOffset+a.trackLength*s,x:e}).crisp()},fill:function(t){var n,r=this.attrs,o=this._.scroller,a=r["scroll-repaint"],s="flat"===r["scroll-display-style"],l="horizontal"===r["scroll-orientation"],c={stroke:b};return i&&a&&(n=16-a[l?3:2])>3&&(c.stroke=E,c["stroke-width"]=n<0?0:n),(t=e.color(t)).error&&(t=e.color("#000000")),t="opacity"in t?"rgba("+[t.r,t.g,t.b,t.opacity]+")":"rgb("+[t.r,t.g,t.b]+")",c.fill=s&&t||[90*l,e.tintshade(t,.15).rgba,t].join("-"),c.stroke=e.tintshade(t,-.75).rgba,o.track.attr(c),c.fill=s&&e.tintshade(t,-.6).rgba||[270*l,e.tintshade(t,.3).rgba+":40",e.tintshade(t,-.7).rgba].join("-"),c.stroke=e.tintshade(t,-.6).rgba,o.anchor.attr(c),c.stroke=b,r["scroll-display-buttons"]!==b&&(c.fill=E,o.start.attr(c),o.end.attr(c),c.fill=e.tintshade(t,-.4).rgba,o.arrowstart.attr(c),o.arrowend.attr(c)),!1}}}]),e.ca["text-bound"]=function(n,r,o,a,i,s,l){var c=this,u=c.paper,d=c._.textbound;if(this._origOpacity=void 0!==l?l:1,"text"===this.type)return r&&r!==b&&!t.test(r)||n&&n!==b&&!t.test(n)?(c.attrs["text-bound"]=arguments,(!o||!e.is(o,"finite"))&&(o=0),(!i||!e.is(i,"finite"))&&(i=0),!d&&(d=c._.textbound=u.rect(0,0,0,0,c.group).follow(c,e.ca["text-bound"].reposition,"before")),d.attr({stroke:r||b,"stroke-width":o,fill:n||b,"shape-rendering":1===o?"crisp":"",r:i}),void 0!==l&&d.attr("opacity",l),s&&d.attr("stroke-dasharray",s),e.ca["text-bound"].reposition.call(d,c.attr(),c),!1):(c._.textbound=d&&d.unfollow(c).remove(),!1)},e.ca["text-bound"].reposition=function(e,t){var n,r,a,i,s,l,c,u,d,f=this,h={};e[y]("visibility")&&f.attr("visibility",e.visibility),(e[y]("text-bound")||e[y]("x")||e[y]("y")||e[y]("text")||e[y]("text-anchor")||e[y]("text-align")||e[y]("font-size")||e[y]("line-height")||e[y]("vertical-align")||e[y]("transform")||e[y]("rotation")||e[y]("opacity"))&&(r=(n=t.attrs)["text-bound"],a=m(r&&r[3]||"0").split(S),i=g(a[0])||0,s=(0,o.pluck)(g(a[1]),i),u=(l=t.getBBox()).width,d=l.height,void 0===f._origOpacity&&(f._origOpacity=1),c=g(e.opacity||n.opacity),h.opacity=isNaN(c)?f._origOpacity:f._origOpacity*c,isNaN(u)||(h.x=l.x-i,h.y=l.y-s,h.width=Math.max(u+2*i,0),h.height=Math.max(d+2*s,0)),f.attr(h))},e.fn.symbol=function(){var t,n=arguments,r=n.length-1,o=n[r];return o&&o.constructor===e.el.constructor?n[r]=void 0:o=void 0,(t=this.path(void 0,o)).ca.symbol=e.fn.symbol.ca.symbol,n.length===!!o+0?t:t.attr("symbol",n)},e.fn.getSuggestiveRotation=function(){var e,t,n,r;return e=arguments[0],1===arguments.length?(t=e.angle,n=e.x,r=e.y):(t=e,n=arguments[1],r=arguments[2]),"r"+(t=t||0)+","+n+","+r},e.fn.symbol.cache={"":e._cacher(function(e,t,n,r){return arguments.length>3?["M",e,t,"h",n,"v",r,"h",-n,"v",-r,"z"]:["M",e-n,t-n,"h",n*=2,"v",n,"h",-n,"v",-n,"z"]})},e.fn.symbol.ca={symbol:function(t){var n,r,o=e.is(t,"object")&&1===arguments.length&&!e.is(t,"function")?t:arguments;o===t&&(t=o[0]),r=(n=e.is(t,"function")&&t||e.fn.symbol.cache[t]||e.fn.symbol.cache[""])&&n.apply(e,v.call(o,1)),e.is(r,"array")||e.is(r,"string")?this.attr("path",r):r&&this.attr(r)}},e.addSymbol=function(t,n){var r,o,a=e.fn.symbol.cache,i=[];for(o in r=e.is(n,"function")&&((r={})[t]=n,r)||t)n=r[o],a[o]=e.is(n,"function")&&e._cacher(n,e)||(i.push(o),n);for(o=i.pop();o;)a[o]=a[a[o]],o=i.pop()}};var o=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t=function(e,t,r){return function(){var o=n(e._.imageGridAttr,t),a=1,i=1,s=1,l=void 0,c=void 0,u=void 0;if(o.tileInfo&&(a=o.tileInfo.xCount,i=s=o.tileInfo.yCount,u=o.y,delete o.tileInfo),e._.gridElem){for(c=0;c<e._.gridElem.length;c++)e._.gridElem[c].remove();e._.gridElem.length=0}for(c=0;a&&o.width&&o.height;)s--,0===c?e.attr(r?Object.assign(o,{applysrc:e._._src}):o):(l=e.clone().attr({x:o.x,y:o.y}),e._.gridElem.push(l.follow(e,void 0,"after"))),o.y+=o.height,0===s&&(s=i,a--,o.x+=o.width,o.y=u),c++}},n=function(e,t){var n=void 0;if(e){var r=e.displayMode,a=e.vAlign,i=e.hAlign,s=e.scale,l=e.canvasBorderWidth,c=e.canvasWidth,u=e.canvasHeight,d=t.width*(s/100),f=t.height*(s/100),h=c-2*l,p=u-2*l;n=(0,o.getAlignImage)(a,i,r,d,f,c,u,l,h,p)}return n||{x:0,y:0,width:t.width,height:t.height}};e.define&&e.define([{name:"imagegrid",imagegrid:function(){var n=void 0,o=void 0,a=arguments,i=a.length-1,s=a[i];return s&&s.constructor===e.el.constructor?a[i]=void 0:s=void 0,n=new Image,(o=this.image(s))._.gridElem=[],o._.refImage=n,o._attr=o.attr,o.attr=function(e,t){var n=Array.isArray(e),a=!n&&"object"===(void 0===e?"undefined":r(e)),i="string"==typeof e;if(n&&(a="object"===(void 0===(e=e[0])?"undefined":r(e))),a){var s=Object.assign({},e),l=s&&s.src,c=s&&s.applysrc;delete s.src,delete s.applysrc,l&&delete o._._src,o._attr(s),l&&o._attr({_src:l}),c&&o._attr({src:c})}else{if(void 0===e&&void 0===t)return this.attrs;if(void 0===t)return this.attrs[e];i&&t&&("src"===e?o._attr({_src:t}):"applysrc"===e?o._attr({src:t}):o._attr({name:t}))}return this},n.onload=t(o,n,!0),n.onerror=function(e){return function(){e.hide();for(var t=0,n=e._.gridElem&&e._.gridElem.length;t<n;t++)e._.gridElem[t].remove();e._.gridElem=[],e._attr({src:e._._src}),setTimeout(function(){e.show()},100)}}(o),o},ca:{imagegrid:function(e,n,r){var o=arguments.length>3&&arguments[3]!==undefined?arguments[3]:100,a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0,i=arguments.length>5&&arguments[5]!==undefined?arguments[5]:0,s=arguments.length>6&&arguments[6]!==undefined?arguments[6]:0,l=this;"tile"===e||"fill"===e||"fit"===e?("top"!==n&&"middle"!==n&&"bottom"!==n&&(n="middle"),"left"!==r&&"middle"!==r&&"right"!==r&&(r="middle")):("top"!==n&&"middle"!==n&&"bottom"!==n&&(n="top"),"left"!==r&&"middle"!==r&&"right"!==r&&(r="left")),l._.imageGridAttr={displayMode:e,vAlign:n,hAlign:r,scale:o,canvasBorderWidth:a,canvasWidth:i,canvasHeight:s},this._._src&&t(l,l._.refImage)()},_src:function(e){return this._.refImage.src=e,this._._src=e,{_src:e}}}}])};var o=n(123)},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t,n,o,a=window,l=a.document,c=/msie/i.test(a.navigator.userAgent)&&!a.opera,u="VML"===e.type,d={cursor:"cursor"},f={x:"left",y:"top",strokeWidth:"borderThickness","stroke-width":"borderThickness",width:"width",height:"height"},h={fill:"backgroundColor",stroke:"borderColor",color:"color"},p={left:0,top:0,padding:0,border:"none",margin:0,outline:"none","-webkit-apperance":"none",position:"absolute",zIndex:20},g=function(e,t,n,r){var o,a=l.createElement(e);for(o in t)f[o]?a.style[o]=t[o]:a.setAttribute(o,t[o]);for(o in n)a.style[o]=n[o];return r&&r.appendChild&&r.appendChild(a),a};(t=(o=function(e,t,n){t&&t instanceof o&&(t=t.element),this.element=g(e,n,p,t),this.nodeName=e.toLowerCase(),this.added=Boolean(t),this.attrs={}}).prototype={attr:function(e){var t,n,o,a,i,s,p,g,m,v,y,b=this.element,x={};if("object"!==(void 0===e?"undefined":r(e)))return void 0!==this[e]?this[e]:function(e,t,n){var o,a;if("string"==typeof t)void 0!==n&&null!==n?e.setAttribute(t,n):e&&e.getAttribute&&(a=e.getAttribute(t));else if(void 0!==t&&null!==t&&"object"===(void 0===t?"undefined":r(t)))for(o in t)e.setAttribute(o,t[o]);return a}(b,e);for(t in e){if(o=e[t],d[t]){switch(t){case"cursor":"pointer"===o&&u&&(o="hand")}b.style[d[t]]=o,a=!0}else if(f[t])b.style[f[t]]=o+"px",a=!0;else if(h[t])b.style[h[t]]=(y=o)&&y.replace(/^#?([a-f0-9]+)/gi,"#$1")||"none",a=!0;else if(/^visibility$/i.test(t))i="hidden"===o,b.style.display=i?"none":"",this.hidden=i,a=!0;else if(/^opacity$/i.test(t))b.style.opacity=o,c&&(n=100*Number(o),b.style.filter="progid:DXImageTransform.Microsoft.Alpha(Opacity="+n+")"),a=!0;else if(/^innerhtml$/i.test(t)){if(u&&"select"==b.nodeName.toLowerCase()){for(s=o.match(/<option\s?[\s\S]*?(\/>|><\/option>|>[\s\S]*?<\/option>)/gi);b.firstChild;)b.removeChild(b.firstChild);for(g=0,m=s.length;g<m;g+=1)p=s[g],v=l.createElement("option"),/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/gi.test(p)&&(v.value=p.replace(/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/gi,"$1").replace(/[\s\S]*value\s*\=\s*[\'\"]([\s\S]*)[\'\"]/,"$1")),v.text=p.replace(/<option\s*[\s\S]*[\'\"]?\s*?[\/>|\>]([\s\S]*)<\/option>/gi,"$1 "),b.options.add(v)}else"input"!==b.nodeName.toLowerCase()&&void 0!==o&&(b.innerHTML=o||"");a=!0}else/^text$/i.test(t)?("input"!==b.nodeName.toLowerCase()&&(b.innerHTML="",void 0!==o&&b.appendChild(l.createTextNode(o))),a=!0):/^type$/i.test(t)&&c&&this.added&&(a=!0);a&&(x[t]=o,delete e[t],a=!1)}for(t in e)b.setAttribute(t,e[t]);for(t in x)this[t]=this.attrs[t]=e[t]=x[t],delete x[t];return this},val:function(e){var t=this.element,n=void 0===e;if("input"===this.nodeName&&"checkbox"===t.getAttribute("type"))return n?this.checked()?1:0:this.checked(e);if("select"===this.nodeName){var r=t.childNodes,o=t.selectedIndex,a=r.length;if(""===e)return;if(!n)for(var i=0;i<a;i++)if(r[i].value===e)return t.selectedIndex=i,r[i].value;return s.isIE9&&(o=0),n?r[o].value:(r[a-1].value=e,t.selectedIndex=a-1,this)}return n?t.value:(t.value=e,this)},checked:function(e){var t=this.element;return void 0===e?t.checked:(e?t.setAttribute("checked","checked"):t.removeAttribute("checked"),this)},css:function(e,t){var n,o=this.element.style;if("object"===(void 0===e?"undefined":r(e)))for(n in e)o[n]=e[n];else n&&void 0!==t&&(o[n]=t);return this},translate:function(e,t){var n=this.element;return void 0!==e&&(n.style.left=e+"px"),void 0!==t&&(n.style.top=t+"px"),this},add:function(e,t){var n=this.element,r=e.element;return t?r.insertBefore(n,r.firstChild):r.appendChild(n),this.added=!0,this},hide:function(){return this.element.style.display="none",this},show:function(){return this.element.style.display="",this},isVisible:function(){return"none"!==this.element.style.display},focus:function(){"function"==typeof this.element.focus?this.element.focus():i["default"].fire(this.element,"focus")},destroy:function(){var e=this.element||{};return e.onclick=e.onmouseout=e.onmouseover=e.onmousemove=e.onblur=e.onfocus=null,e=function(e){n||(n=g("div")),e&&n.appendChild(e),n.innerHTML=""}(e),delete this.element,null},on:u?function(e,t){return this.element["on"+e]=function(){var e=a.event;e.target=e.srcElement,t(e)},this}:function(e,t){var n=t;return s.hasTouch&&"click"===e&&(e="touchstart",n=function(e){e.preventDefault(),t()}),this.element["on"+e]=n,this},bind:function(e,t,n){return i["default"].listen(this.element,e,t,n),this},unbind:function(e,t){return i["default"].unlisten(this.element,e,t),this},trigger:function(e,t){return i["default"].fire(this.element,e,t),this}}).remove=t.destroy,t.constructor=o,e.fn.html=function(t,n,r,a){var i,s,l={};for(s in n&&"type"in n&&(l.type=n.type,delete n.type),i=new o(t,a,l).css(r).attr(n),l)n[s]=l[s];return i.ca=function(){return!1},i.appendTo=function(e){e&&e instanceof o&&(e=e.element),e.appendChild(this.element)},i.animateWith=e.el.animateWith,i}};var o,a=n(120),i=(o=a)&&o.__esModule?o:{"default":o},s=n(118)},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=[{reg:/xmlns\=\"http\:\/\/www.w3.org\/2000\/svg\"/gi,repStr:""},{reg:/^.*<svg /,repStr:'<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" '},{reg:/\/svg>.*$/,repStr:"/svg>"},{reg:/<desc\>[^<]*<\/desc\>/,repStr:""},{reg:/zIndex="[^"]+"/g,repStr:""},{reg:/url\((\\?[\'\"])[^#]+#/g,repStr:"url($1#"},{reg:/ href=/g,repStr:" xlink:href="},{reg:/(id|class|width|height)=([^" >]+)/g,repStr:'$1="$2"'},{reg:/:(path|rect)/g,repStr:"$1"},{reg:/<ima?ge? ([^\>]+?[^\/])\>/gi,repStr:"<image $1 />"},{reg:/<\/ima?ge?\>/g,repStr:""},{reg:/style="([^"]+)"/g,repStr:function(e){return e.toLowerCase()}}],n=function(e){var t=JSON.stringify(e);return t=t=(t=(t=(t=t.replace(/([a-z]+)([A-Z]+)([a-z]+)/g,function(e,t,n,r){return t+"-"+n.toLowerCase()+r})).replace(/\"\,\"/g,'";"')).replace(/\"/g," ")).replace(/\{|\}/g,"")};e.svg&&(e.fn.toSVG=function(e){var r,o="",a=0,i=t.length;if(this.canvas&&this.canvas.parentNode){for(o=this.canvas.parentNode.innerHTML;a<i;a+=1)r=t[a],o=o.replace(r.reg,r.repStr);this._stylesheet&&this._stylesheet.rules&&(o=function(e,t){var r,o,a,i,s,l,c,u=function(e){return e=e.match(/style\s*=/)?e.replace(/(style\s*=")([^"]+)/g,function(e,t,n){return t+i+n}):e.replace(/class\s*="[^"]*"/i,function(e){return e+' style="'+i+'" '})};for(r in t)if(t.hasOwnProperty(r))for(l in o=/\s+/,a=r.split(o),i=n(t[r]),a)a.hasOwnProperty(l)&&(s=a[l].trim().replace(".",""),c=new RegExp("<[^>]+("+s+")[^>]+","g"),e=e.replace(c,u));return e}(o,this._stylesheet.rules))}return e||(o=o.replace(/<image[^\>]*\>/gi,function(e){return e.match(/href=\"data\:image/i)?e:""})),o})}},function(e,t,n){"use strict";t.__esModule=!0,t._mouseEvtHandler=undefined;var r=n(118),o=n(124),a=u(n(152)),i=u(n(131)),s=u(n(153)),l=n(125),c=u(n(154));function u(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var f=r.creditLabel,h=function(e,t,n){var o,a,i,s,l,c,u,d,f=n.mouseTracker,h=t.originalEvent,p=e.config.datasetOrder||e.getDatasets(),g=!1,m=p.length,v=f._lastDatasetIndex,y=f._lastPointIndex;for(a=(o=(0,r.getMouseCoordinate)(e.getFromEnv("chart-container"),h,e)).chartX,i=o.chartY;m--&&!g;)(s=p[m])&&s.getState("visible")&&(l=s._getHoveredPlot&&s._getHoveredPlot(a,i))&&l.hovered&&(g=!0,l.datasetIndex=m,d=f.getMouseEvents(t,l.datasetIndex,l.pointIndex));if((!g||d&&d.fireOut)&&void 0!==v&&p[v]&&p[v]._firePlotEvent&&(d&&!d.events.length?f.mouseoutTimer=setTimeout(function(){e.mouseoutHandler(t,v,y)},20):(e.mouseoutHandler(t,v,y),clearTimeout(f.mouseoutTimer))),g)for((u=d.events&&d.events.length)&&(f._lastDatasetIndex=l.datasetIndex,y=f._lastPointIndex=l.pointIndex),c=0;c<u;c+=1)s&&s._firePlotEvent&&s&&s._firePlotEvent&&s._firePlotEvent(d.events[c],y,t,l.datasetIndex)},p=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return d(t,e),t.getName=function(){return"base"},t.prototype.setDummyEImethods=function(e){var t=this.config,n=t._eiStore||(t._eiStore={}),r=function(e){return(c["default"][e]||[]).concat(c["default"]["*"])}(e),o=this.getFromEnv("chartInstance");r.forEach(function(e){var t;!o[e]&&(o[e]=(t=e,function(){!n[t]&&(n[t]=[]),n[t].push(arguments)}))}),o.addEventListener("renderComplete",function(){var e=function(e){n[e].forEach(function(t){o[e].apply(o,t)})};for(var r in n)e(r);t._eiStore={}})},t.getType=function(){return"chartAPI"},t.prototype.mouseoutHandler=function(e,t,n){var r=this.config.datasetOrder||this.getDatasets(),o=this.getChildren("mouseTracker")[0];r[t]&&r[t].components.data[n]?r[t]._firePlotEvent("fc-mouseout",n,e):this.getFromEnv("toolTipController").hideAll(),delete o._lastDatasetIndex,delete o._lastPointIndex},t.prototype.getName=function(){return"base"},t.prototype.getType=function(){return"chartAPI"},t.prototype._mouseEvtHandler=function(e,t){h(this,e,t)},t.prototype.getComponents=function(e,t){var n=[];return(e||this).iterateComponents(function(e){e.getType()===t&&n.push(e)}),n},t.prototype.getDatasets=function(e){var t=[];return(e||this).iterateComponents(function(e){"dataset"===e.getType()&&t.push(e)}),t},t.prototype.preConfigure=function(t){e.prototype.preConfigure.call(this,t),function(e,t){var n=void 0;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}(this.getFromEnv("chartInstance"),this.eiMethods)},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t),this.createBaseComponent()},t.prototype.createBaseComponent=function(){var e=this,t=void 0;(t=e.getFromEnv("animationManager"))?t.configure():(t=new s["default"],e.addToEnv("animationManager",t),t.addToEnv("chart",e),t.addToEnv("animationManager",t),t.configure(),e.addExtEventListener("animationstart",function(t){var n=t.data.duration;n&&e.fireChartInstanceEvent("animationinvoked",{duration:n})},t))},t.prototype.setChartMessage=function(e,t,n){var o,i;(0,r.componentFactory)(this,a["default"],"chartMessage"),i=this.getChildren("chartMessage")[0],n?this.addToEnv("chart-container",n):n=this.getFromEnv("chart-container"),(o=this.getFromEnv("paper"))||((o=new((0,l.getDep)("redraphael","plugin"))(n,this.getFromEnv("chartWidth"),this.getFromEnv("chartHeight"))).setHTMLClassName("fusioncharts-div"),this.addToEnv("paper",o)),o.setConfig("stroke-linecap",r.ROUND),!this.getChildContainer("messageGroup")&&this.addChildContainer("messageGroup",o.group("messageGroup")),this.config.hasChartMessage=!0,i.setChartMessage(e,t)},t.prototype.drawChartMessage=function(){this.config.hasChartMessage=!0,this.getChildren("chartMessage")[0].drawChartMessage(),this._drawCreditLabel()},t.prototype._dispose=function(){this._clearTimers&&this._clearTimers();var t=this.getFromEnv("paper");t&&t.remove&&t.remove(),e.prototype._dispose.call(this)},t.prototype.fireChartInstanceEvent=function(e,t,n,r,a){var i=this.getFromEnv("chartInstance");(0,o.triggerEvent)(e,i,t,n,r,a)},t.prototype._hideChartMessage=function(){var e=this.getChildren("chartMessage");this.config.hasChartMessage=!1,e&&e[0]._hideChartMessage(),this.getGraphicalElement("messageText")&&this.getGraphicalElement("messageText").hide(),this.getGraphicalElement("messageVeil")&&this.getGraphicalElement("messageVeil").hide()},t.prototype._removeWaitingJobs=function(){this.iterateComponents(function(e){return e.removeAllJobs()})},t.prototype._drawCreditLabel=function(){var e,t,n,o,a=this.getFromEnv("core-options"),i=this.getFromEnv("paper"),s=a.creditLabel,l=this.getFromEnv("chartInstance").args.creditLabel,c=+this.getFromEnv("chartHeight"),u=this.getGraphicalElement("creditLabel"),d=this.getContainer("parentgroup"),h={href:r.CREDIT_HREF,text:r.CREDIT_STRING};(0,r.pluck)(l,s,f)?(t=this.getContainer("creditgroup")||this.addContainer("creditgroup",i.group("creditgroup")),d&&t.insertAfter(d),n={text:h.text,x:6,y:c-4,"vertical-align":r.POSITION_BOTTOM,"text-anchor":r.POSITION_START,fill:"rgba(0,0,0,0.5)",title:h.title||r.BLANK},o={fontSize:9,fontFamily:"Verdana,sans",cursor:r.POINTER,_cursor:r.HAND},u?u.attr(n).css(o):(e=i.text(n,o,t),this.addGraphicalElement("creditLabel",e),e.on("fc-click",function(){try{open(h.href)}catch(e){(top||window).location.href=h.href}}))):e&&e.remove&&this.removeGraphicalElement("creditLabel")},t.prototype._hideModal=function(){this.getChildContainer("messageGroup").hide()},t.prototype.remove=function(t){var n=this.getFromEnv("animationManager");e.prototype.remove.call(this,t),n&&n.remove(t)},t}(i["default"]);p.stringConstants={BACKGROUNDLOADED:"BackgroundLoaded",BACKGROUNDLOADERROR:"BackgroundLoadError",clipRectStr:"clip-rect"},t._mouseEvtHandler=h,t["default"]=p},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(131),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=i.preDefStr.noneStr,c=function(e,t){e.on("fc-click",function(){try{open(t)}catch(e){(top||window).location.href=t}}),e.css({cursor:"pointer",_cursor:"pointer"})},u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getName=function(){return"chartMessage"},t.prototype._drawBackground=function(e){var t,n,r,o,a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},s=this,u=s.config,d=s.getFromEnv("paper"),f=s.getFromEnv("chart"),h=s.getGraphicalElement("backgroundElement"),p=s.getGraphicalElement("backgroundImage"),g=s.getFromEnv("chartWidth"),m=s.getFromEnv("chartHeight"),v=s.getLinkedParent().getChildContainer("messageGroup").show(),y=(0,i.pluckNumber)(a.imageAlpha,100),b=0+i.COMMA+0+i.COMMA+g+i.COMMA+m,x=(0,i.getValidValue)(a.imageVAlign,i.BLANKSTRING).toLowerCase(),w=(0,i.pluck)(a.imageHAlign,i.BLANKSTRING).toLowerCase(),C=(0,i.pluckNumber)(a.imageScale,100),_=s.getFromEnv("chartInstance"),E=u.messageURL,k=(0,i.getContainerBackgroundColor)(_);d.canvas.style.backgroundColor=k,x!==i.POSITION_TOP&&x!==i.POSITION_MIDDLE&&x!==i.POSITION_BOTTOM&&(x=i.POSITION_TOP),w!==i.POSITION_LEFT&&w!==i.POSITION_MIDDLE&&w!==i.POSITION_RIGHT&&(w=i.POSITION_LEFT),n={x:0,y:0,width:g,height:m,stroke:l},h||(h=d.rect(v),s.addGraphicalElement("backgroundElement",h)),h.attr(n),h&&E&&c(h,E),u.bgImageVAlign=x,u.bgImageHAlign=w,u.bgImageScale=C,u.bgSWFAlpha=y,u.imgClipRect=b,e&&((t=p)?t.attr({src:e}):(t=s.getFromEnv("paper").image(v),s.addGraphicalElement("backgroundImage",t),t.attr({src:e}),t.on("load",function(){if(!(!t||t&&t.removed)){var n=t._.RefImg;r=s.getFromEnv("chartConfig"),u.isImage&&(void 0===r||r.hasChartMessage)&&(o=(0,i.setImageDisplayMode)(l,u.bgImageVAlign,u.bgImageHAlign,u.bgImageScale,0,s.getFromEnv("chartWidth"),s.getFromEnv("chartHeight"),n),(0,i.extend2)(o,{opacity:.01*u.bgSWFAlpha,visibility:"visible","clip-rect":u.imgClipRect}),t.attr(o).show(),t&&E&&c(t,E),f.fireChartInstanceEvent("backgroundloaded",{url:e,bgImageAlpha:100*u.bgSWFAlpha,bgImageDisplayMode:l,bgImageVAlign:u.bgImageVAlign,bgImageHAlign:u.bgImageHAlign,bgImageScale:u.bgImageScale,imageWidth:n.width,imageHeight:n.height}))}}),t.on("error",function(n){t.removed||f.fireChartInstanceEvent("backgroundloaderror",{url:e,bgImageAlpha:100*u.bgSWFAlpha,error:n,bgImageDisplayMode:l,bgImageVAlign:u.bgImageVAlign,bgImageHAlign:u.bgImageHAlign,bgImageScale:u.bgImageScale},_)})))},t.prototype.setChartMessage=function(e,t){var n,r,o,a,s=this.getFromEnv("chartInstance"),l=s.options,c=s.args,u=this.config,d=this.getFromEnv("smartLabel"),f=(0,i.getImageURL)(void 0!==e?e:l.dataEmptyMessage),h=this.getFromEnv("chartWidth"),p=this.getFromEnv("chartHeight");r=u.width=Number(h),n=u.height=Number(p),f.image?(o=f.string,a=t?{imageHAlign:(0,i.pluck)(t._chartMessageImageStyle.imageHAlign,l.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:(0,i.pluck)(t._chartMessageImageStyle.imageVAlign,l.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:(0,i.pluckNumber)(t._chartMessageImageStyle.imageAlpha,l.baseChartMessageImageAlpha),imageScale:(0,i.pluckNumber)(t._chartMessageImageStyle.imageScale,l.baseChartMessageImageScale)}:{imageHAlign:(0,i.pluck)(c.dataEmptyMessageImageHAlign,l.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:(0,i.pluck)(c.dataEmptyMessageImageVAlign,l.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:(0,i.pluckNumber)(c.dataEmptyMessageImageAlpha,l.baseChartMessageImageAlpha),imageScale:(0,i.pluckNumber)(c.dataEmptyMessageImageScale,l.baseChartMessageImageScale)},u.chartMessageType="image"):(a=t?{"font-family":t._chartMessageStyle.fontFamily||l.baseChartMessageFont,"font-size":t._chartMessageStyle.fontSize||l.baseChartMessageFontSize,fill:t._chartMessageStyle.color||l.baseChartMessageColor}:{"font-family":c.dataEmptyMessageFont||l.baseChartMessageFont,"font-size":c.dataEmptyMessageFontSize||l.baseChartMessageFontSize,fill:c.dataEmptyMessageColor||l.baseChartMessageColor},d.setStyle(a),o={text:d.getSmartText((0,i.parseUnsafeString)(f.string),r,n).text,x:r/2,y:n/2},u.chartMessageType="text"),u.messageURL=l.messageURL,u.chartMessageAttr=o,u.chartMessageStyle=a},t.prototype.drawChartMessage=function(){var e,t,n,r=this.config,o=this.getFromEnv("paper"),a=r.isImage="image"===r.chartMessageType,s=r.messageURL,l=a?r.chartMessageAttr:(0,i.extend2)(r.chartMessageAttr,r.chartMessageStyle);e=this.getGraphicalElement("messageText"),n=this._graphics,t=this.getLinkedParent().getChildContainer("messageGroup").show(),a?this._drawBackground(r.chartMessageAttr,r.chartMessageStyle):e||"text"!==r.chartMessageType?(n.message=e.attr(l),e.show()):e=this.addGraphicalElement("messageText",o.text(l,t)),(e||n.message)&&s&&c(e||n.message,s),this._hideOtherMessage(a)},t.prototype._hideOtherMessage=function(e){var t,n,r;e?(n=this.getGraphicalElement("messageText"))&&n.hide():(t=this.getGraphicalElement("backgroundImage"),r=this.getGraphicalElement("backgroundElement"),t&&t.hide(),r&&r.hide())},t.prototype._hideChartMessage=function(){this._hideOtherMessage(!0),this._hideOtherMessage()},t.prototype.getType=function(){return"chartMessage"},t}(a["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(118),i=n(129),s=n(131),l=(r=s)&&r.__esModule?r:{"default":r},c=n(125);function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var d=void 0,f=!a.hasSVG,h={initial:1,update:0,realTimeUpdate:0,resize:0,dispose:0,legendInteraction:0,scroll:0,mouseOut:0,mouseOver:0,"default":0,slicing:.25},p=["default","global","chartSpecific"],g={fadeIn:{opacity:{start:0,end:1}},fadeOut:{opacity:{start:1,end:0}}},m={fadeIn:function(){this&&this.show()},fadeOut:function(){this&&this.hide()}},v=function(e){return null===e},y=function(e){var t=[];return(arguments.length>1&&arguments[1]!==undefined?arguments[1]:"").split(",").forEach(function(n){e[n]&&e[n].animation&&t.push(e[n].animation)}),t},b=function(e,t,n){var r,o=Object.assign({},e),a=n/t;return a>.2&&(a=.2),r=o.end-o.start,o.start*=1-a,o.start+=a,o.end=o.start+(1-a)*r,o.start=Math.round(100*o.start)/100,o.end=Math.round(100*o.end)/100,o},x=function(e,t,n){var r,o=g[t],a="",i={};if(o&&e&&e.el&&e.el[0]){for(a in o)i[a]=e.el.attrs[a],i[a]===d&&(i[a]=null),e.attrs[a]=o[a].end,e.el.attr(a,o[a].start);r=e.callback,e.callback=function(){n&&m[t]&&m[t].call(this),r&&r.call&&r.call(this),this.attr(i)}}},w=function(e,t){var n,r=!0;if(t){for(e.attrs=e.attrs||{},~(t=t.split("-")).indexOf("nc")&&(r=!1),n=t.length;n--;)x(e,t[n],r);return e}},C=function(e,t,n,r,o,a,i,s){e.animateWith(o,a,t,i,s,n,r)},_=function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)&&"__esModule"!==n){var r=e[n];E(t,r)}return t},E=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(!e[n]&&(e[n]=[]),e[n].push(t[n]))},k=function(e){return"function"===(void 0===e?"undefined":o(e))};g.fadein=g.fadeIn,g.fadeout=g.fadeOut;var S=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r._removedGraphics=[],r._animCallBack=function(){if(!r.getState("removed")&&!this.removed){var e=r.getAnimationState();r._removeElems(),r.reset(),r.fireEvent("animationComplete",{currAnimState:e})}},r.startAnimation=function(){r.kickStart(),r.animate("draw")},n}return u(t,e),t.prototype.getType=function(){return"animationManager"},t.prototype.getName=function(){return"animationManager"},t.prototype.stopAnimation=function(){if(this.getState("chartAnimating")){var e,t=this.config.animationObj,n=t&&t.duration;n?(e=this.getGraphicalElement().dummyObj)&&e.stop(d,!0,!0):0===n&&(this.removeJob("anim-callBack"),this._animCallBack())}},t.prototype.kickStart=function(){var e,t,n=this.config,r=this.getGraphicalElement(),o=this.getFromEnv("paper"),a=n.animationObj,i=void 0,s=n.animationeffect;e=a.duration,a.animObj=t=(0,c.getDep)("redraphael","plugin").animation({x:0},e,s,this._animCallBack,!0),a.animType=s,(i=r.dummyObj)?i.attr({x:100}):(i=o.rect({x:100,y:0,width:10,height:30}),this.addGraphicalElement("dummyObj",i),i.hide()),a.dummyObj=r.dummyObj,i.stop(d,!0,!0),this.fireEvent("animationStart",{duration:e}),this.setState("chartAnimating",!0),i.animate(t)},t.prototype.setAnimationState=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:d;e&&this.stopAnimation(),this.config.__state=e,this._setAnimDuration(e)},t.prototype.getAnimationState=function(){return this.config&&this.config.__state},t.prototype._setAnimDuration=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"default",n=this.config,r=n.animationObj||(n.animationObj={}),o=n.animationDuration||(n.animationDuration={}),a=this.getFromEnv("chart").getFromEnv("chart-attrib")||{},i=e+"AnimDuration",s=n.killSwitch?0:1e3*(o[i]||a[i.toLowerCase()]||t.getFallbackAnimDuration(e));r&&(r[i]=s,r.duration=+s)},t.prototype.configureAttributes=function(){var e=this.getFromEnv("chart"),t=e.config,n=this.config,r=e.getFromEnv("chart-attrib")||{};n.killSwitch=!(0,a.pluckNumber)(r.animation,t.animation,1),n.animationeffect=t.animationeffect||"linear",this.invokeAnimationRules(),!n.workingRules&&(n.workingRules={}),!n.animateArr&&(n.animateArr=[]),!n.animationName&&(n.animationName=[])},t.prototype.invokeAnimationRules=function(){var e=this.getFromEnv("chart"),n=e.getFromEnv("chart-attrib")||{},r=e.config||{},o=this.config,i=e.getFromEnv("chartInstance").args.animation,s=e.getFromEnv("core-options").defaultTheme,l=function(e){var t={},n=void 0;for(var r in e)e.hasOwnProperty(r)&&(t[(n=e[r]).name]=n);return t}((0,c.getDepsByType)("theme")),u=(e.getFromEnv("core-options")._globalAnimationRule||[]).concat(y(l,s)),d=(i&&[i]||[]).concat(y(l,r.theme)),f=void 0;o.animationRules={global:_(u.map(function(e){return e&&e.rule}).filter(function(e){return e})),chartSpecific:_(d.map(function(e){return e&&e.rule}).filter(function(e){return e})),"default":_((0,c.getDepsByType)("animationRule"))},o.animationDuration=f={},u.map(function(e){return Object.assign(f,e.duration)}),d.map(function(e){return Object.assign(f,e.duration)}),f.initialAnimDuration=(0,a.pluckNumber)(f.initialAnimDuration,n.initialanimduration,n.animationduration),this.config.slots=t.getFallbackAnimTimeSlots().concat([].concat.apply([],u.map(function(e){return e.slots})).filter(function(e){return e})).concat([].concat.apply([],d.map(function(e){return e.slots})).filter(function(e){return e}))},t.prototype.reInitialize=function(){var e=this.config.animationObj.duration;this.setState("initialized",!0),e?this.addJob("start-animation",this.startAnimation,i.priorityList.animation):(this.fireEvent("animationStart",{duration:e}),this.setState("chartAnimating",!0),this.addJob("anim-callBack",this._animCallBack,i.priorityList.animation))},t.prototype.reset=function(){this.setState("initialized",!1),this.config&&this.config.animateArr&&(this.config.animateArr.length=0),this.setState("chartAnimating",!1),this.setAnimationState()},t.prototype.registerAnimObj=function(e){var t;for(t in e)this.registerAnimation(e[t],t)},t.prototype.getFinalSlots=function(){var e,t,n,r,o=this.config,a=o.slots,i=o.workingRules={},s=o.animationName;return t=function(e,t,n){var o,a,s,l,c,u=e.length,d=0,f=0,h=t;for(a=0,s=0,c=0;c<u;c+=1)(o=e[c]).hasAnimation||!1===o.collapsible?s+=1:a+=o.duration,f+=o.duration;for(a/=s,c=0;c<u;c+=1)(o=e[c]).hasAnimation&&(l=n-t,h=(d=h)+(o.duration/f+a)*l,i[o.name]={start:d,end:h,effect:o.effect,transition:o.transition},o.child&&r(o.child,d,h))},n=function(e,t,n){var o,a,s;a=e.start,s=e.end,a=t+a*(o=n-t),s=t+s*o,i[e.name]={start:a,end:s,effect:e.effect,transition:e.transition},e.child&&r(e.child,a,s)},r=function(e,r,o){var a,i,s=e.length;for(a=0;a<s;a++)i=e[a],Array.isArray(i)?t(i,r,o):n(i,r,o)},(e=function(t){var n,r,o,a,i,l,c=!1;if(!t)return!1;for(o=0,a=t.length;o<a;o+=1)if(r=t[o],Array.isArray(r))for(i=0,l=t[o].length;i<l;i+=1)r=t[o][i],n=!1,-1!==s.indexOf(r.name)?n=!0:r.child&&(n=r.hasAnimation=e(r.child)),c=c||n,r.hasAnimation=n;else n=!1,-1!==s.indexOf(r.name)?n=!0:r.child&&(n=r.hasAnimation=e(r.child)),c=c||n,r.hasAnimation=n;return c})(a),r(a,0,1),i["default"]={start:0,end:1},i},t.prototype.registerOne=function(e,t){this.registerAnimation([{data:[e]}],t)},t.prototype.registerAnimation=function(){var e,t,n,r=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],o=arguments[1],a=!1;for(e=0,n=r.length;e<n;e+=1)(t=r[e]).data&&t.data.length&&(this.config.animateArr.push((t.component=o,t)),a=!0);a&&this.config.animationName.push(o),!this.getState("initialized")&&this.reInitialize()},t.prototype.onAnimationComplete=function(e){this.addEventListener("animationComplete",function(t){e(),t.detachHandler()})},t.removeOpacityFromGroup=function(e,t){t&&f&&("group"===e||"group"===e.type)&&delete t.opacity},t.prototype.setAnimation=function(){var e,n,r,a,i,s,l,c,u,f,h,p,g,m,v=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},y=this.config.animationObj,b=v.el,x=v.attr||{},w={},C={},_=function(e,t,n,r){return function(){n.callback&&n.callback.call(this),e&&this.attr(e),t&&v.callback&&v.callback.call(this),r&&this.appendTo(r)}},E=function(e,t,n){return function(){t.hookFn&&t.hookFn.call(this),e&&this.attr(e),n&&this.appendTo(n)}},k=[],S=y.duration,A="object"===(void 0===b?"undefined":o(b))&&v.container&&b.parent!==v.container;if(S&&(u=this.getAnimAttributes(v))){for(c=u.length,m=!1,h=!(f="appearing"===v.state||"string"===(void 0===b?"undefined":o(b)))&&b.attrs,l={},s=0;s<c;s++){for(a in p=s===c-1,i=k[s]={},e=(g=u[s]).finalAttr,n=g.initialAttr,t.removeOpacityFromGroup(v.el,n),t.removeOpacityFromGroup(v.el,e),n)l[a]=n[a],C[a]===d&&(C[a]=n[a]);for(a in e)l[a]=e[a],f&&C[a]===d&&(C[a]=e[a]);if(i.attrs=e,i.transition=g.transition,i.effect=g.effect,i.animConfig=[g.startEnd],g.callback&&(i.callback=g.callback),(m=A&&g.changeGroup)&&(A=!1),p){if(f)for(a in x)C[a]===d&&(C[a]=x[a]);for(a in x)r=x[a],!l[a]&&f||l[a]===r||(e&&e[a]===d?e[a]=r:w[a]=r);for(a in l)w[a]===d&&(r=x[a]||h[a]||"",l[a]!==r&&(e&&e[a]===d&&r!==d?e[a]=r:w[a]=r));e||(i.attrs=w),i.callback=_((e||n)&&w,p,g,A&&v.container),b=this.setAttributes(b,{attr:C,inputJSON:v})}(n||g.hookFn||m)&&(i.animConfig[0].hookFn=E((!f||s)&&n,g,m&&v.container))}for(s=0;s<c;s++)k[s].el=b.el,this.registerAnimation([{data:[k[s]]}],u[s].slot)}else this.registerAnimation(),b=this.setAttributes(b,{attr:x,inputJSON:v,groupChangeReq:A,immediate:!0});return b.removed?null:b.el},t.prototype._removeElems=function(){if(this.getFromEnv("paper")&&!this.getFromEnv("paper").removed){this._removedGraphics.forEach(function(e){return e.remove&&e.remove()}),this._removedGraphics.length=0}},t.prototype.removeElement=function(e,t){return t?e.remove():this._removedGraphics.push(e),null},t._ruleSelectorQueryBuilder=function(e){var t=!(arguments.length>1&&arguments[1]!==undefined)||arguments[1],n=e.label,r=e.state,o=e.component,a=o.getType(),i=o.getName();if(t){var s=["*","*.*","*.*.*"],l=["*.*."+i,"*."+a+".*","*."+a+"."+i];return"*"===r?s.concat(l):s.concat(l,[r+".*",r+".*.*",r+".*."+i,r+"."+a+".*",r+"."+a+"."+i])}return[n+"."+r,n+".*","*."+r,"*.*","*"]},t.prototype._getRulesByState=function(e){var n,r=e.component,o=void 0,a=void 0,i=void 0,s=this.getAnimationState()||"*",l=t._ruleSelectorQueryBuilder(Object.assign(e,{state:s}));return(n=(i=r.getState("animRules")||{})[s])?n:(o=i[s]={},a=this.config.animationRules,p.forEach(function(e){var t=a[e];t&&l.forEach(function(e){t[e]&&(Array.isArray(t[e])?t[e].forEach(function(e){o=i[s]=v(e)?null:Object.assign(o||{},k(e)?e.call(r):e)}):o=i[s]=v(t[e])?null:Object.assign(o||{},k(t[e])?t[e].call(r):t[e]))})}),r.setState("animRules",i),!r.getState("ruleFlushAttached")&&r.addExtEventListener("predraw",function(){r.setState("animRules",d),r.setState("ruleFlushAttached",!0)},r.getFromEnv("chart")),o)},t._getRulesByElement=function(e,n){var r=void 0;return t._ruleSelectorQueryBuilder(n,!1).forEach(function(t){r||(r=e[t])}),r},t.prototype.getAnimAttributes=function(e){var n,r=e.component||this.getFromEnv("chart"),a=e.label||("object"===o(e.el)?e.el.type:e.el),i=e.state,s=this._getRulesByState({label:a,component:r}),l=void 0,c=void 0,u=[],d=void 0,f=void 0;if(!v(s)&&(!i&&(i="string"===o(e.el)?"appearing":e.attr?"updating":"disappearing"),l=t._getRulesByElement(s,{component:r,state:i,label:a}),!v(l))){if(!l)return t.getFallbackAnimRule(e);for(k(l)&&(l=l.call(r,e)),n=l.length,f=0;f<n;f++)d={},(c=l[f]).initialAttr&&(d.initialAttr=k(c.initialAttr)?c.initialAttr.call(r,e):Object.assign({},c.initialAttr)),c.finalAttr&&(d.finalAttr=k(c.finalAttr)?c.finalAttr.call(r,e):Object.assign({},c.finalAttr)),d.startEnd=k(c.startEnd)?c.startEnd.call(r,e):c.startEnd?Object.assign({},c.startEnd):{start:0,end:1},d.slot=c.slot||"default",d.callback=c.callback,d.hookFn=c.hookFn,d.transition=c.transition,d.effect=c.effect||"linear",c.groupChange&&(d.groupChange=!0),u.push(d);return u}},t.getFallbackAnimRule=function(e){if("appearing"===e.state||"string"===o(e.el)){if("group"!==e.el)return[{initialAttr:{opacity:0},finalAttr:{opacity:e.attr&&e.attr.opacity||1},startEnd:{start:0,end:1}}]}else{if("updating"===e.state||e.attr)return[{startEnd:{start:0,end:1}}];if("group"!==e.el.type)return[{initialAttr:{opacity:1},finalAttr:{opacity:0},startEnd:{start:0,end:1}}]}},t.getFallbackAnimDuration=function(e){return h[e]||0},t.getFallbackAnimTimeSlots=function(){return[{name:"_default",start:0,end:1,child:[[{name:"initial",duration:.125},{name:"middle",duration:.75,child:[[{name:"axis",duration:.25},{name:"plot",duration:.75}]]},{name:"final",duration:.125}]]}]},t.prototype.createElement=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=arguments[2],r=this.getFromEnv("paper");if(r||(r=this.getFromEnv("chart").getFromEnv("paper"),this.addToEnv("paper",r)),"group"===e)(e=r.group(n.attr&&n.attr.name||"",n.container)).attr(t);else if("html"===e)e=r.html(n.attr.type,t,n.css,n.container);else{if("text"===e&&n.css)return r[n.el](t,n.css,n.container);e=r[n.el](t,n.container)}return e},t.prototype.setAttributes=function(e,t){var n,r=t.attr,o=t.inputJSON||{};return"string"==typeof e?e=this.createElement(e,r,o):0!==Object.keys(r).length?e.attr(r):o.attr&&"disappearing"!==o.state||(n=!o.doNotRemove),n?this.removeElement(e,t.immediate):(o.css&&e.css(o.css),t.groupChangeReq&&e.appendTo(o.container),t.immediate&&o.callback&&o.callback.call(e)),{el:e,removed:n}},t.prototype.prepareAnimateArr=function(){var e,t,n,r,o,a,i,s,l,c=this.config.animateArr,u=this.config.preAnimArr=[];function f(e,n){var r,o,a,i={start:0,end:1};for(a in e)if(e.hasOwnProperty(a)){if(e[a].syncWith&&!t[e[a].syncWith])continue;r=e[a].syncWith,i.start=e[a].start===d?0:e[a].start,i.end=e[a].end===d?1:e[a].end,i.hookFn=e[a].hookFn||e.hookFn,i.smartMorph=e[a].smartMorph||e.smartMorph;break}return r=r&&t[r]?r:n&&t[n]?n:"default",o=t[r].end-t[r].start,i.start=t[r].start+i.start*o,i.end=t[r].start+i.end*o,i}for(t=this.getFinalSlots(),r=0,o=c.length;r<o;r+=1){for(n=(e=c[r]).component,a=0,i=e.data.length;a<i;a+=1)(s=(l=e.data[a]).transition||t[n]&&t[n].transition)&&w(l,s),l.preAnimFn&&u.push({el:l.el,fn:l.preAnimFn}),l.animConfig&&(l.animConfig=f(l.animConfig,n));e.effect||t[n]&&(e.effect=t[n].effect),e.animConfig||(e.animConfig=[{}]),e.animConfig=f(e.animConfig,n)}},t.prototype.animate=function(){var e,t,n,r,o,a,i,s,l=this.config,c=this.config.animateArr,u=l.animationObj,d=u.animObj,f=u.dummyObj,h=u.duration;for(this.prepareAnimateArr(),function(e){var t=0,n=e.length;for(t=0;t<n;++t)e[t].fn&&e[t].fn.call(e[t].el)}(this.config.preAnimArr),o=0,a=c.length;o<a;o+=1)for(i=0,s=(t=c[o]).data.length-1;i<=s;i+=1)n=t.data[i].animConfig||t.animConfig,n=b(n,h,180),e=t.data[i].effect||t.effect||"linear",r=o===a&&t.callback||t.data[i].callback,t.data[i].preAttrs&&t.data[i].el.attr(t.data[i].preAttrs),t.data[i].el&&C(t.data[i].el,t.data[i].attrs,r||null,n,f,d,h,e)},t.prototype.remove=function(t){this.removeAllJobs(),t.instant&&this.getGraphicalElement("dummyObj")&&this.getGraphicalElement("dummyObj").remove(),e.prototype.remove.call(this,t)},t}(l["default"]);t["default"]=S},function(e,t,n){"use strict";t.__esModule=!0;var r={pie2d:["isPlotItemSliced","addData","removeData","updateData","slicePlotItem","startingAngle"],dragcolumn2d:["getDataWithId","getData","setUpperLimit","setLowerLimit","getLowerLimit","getUpperLimit"],realtimecolumn:["feedData","setData","stopUpdate","restartUpdate","isUpdateActive","clearChart","getData","getDataForId","setDataForId","getDataJSON","showLog","hideLog","clearLog"],scrollcolumn2d:["scrollTo"],doughnut:["centerLabel"],zoomline:["zoomOut","zoomTo","resetChart","setZoomMode","getViewStartIndex","getViewEndIndex","scrollTo"],maps:["getMapName","getEntityList","getMapAttribute","exportMap","addMarker","updateMarker","removeMarker"],"*":["exportChart","getXML","getChartAttribute","getCSVData","getChartData","getDataAsCSV","getJSONData","getSVGString","getXMLData"]};r.pie3d=r.pie2d,r.doughnut2d=r.doughnut3d=r.doughnut.concat(r.pie2d),r.dragarea=r.dragline=r.dragnode=r.dragcolumn2d,r.realtimearea=r.realtimeline=r.realtimelinedy=r.realtimestackedarea=r.realtimestackedcolumn=r.bulb=r.angulargauge=r.hlineargauge=r.hled=r.vled=r.vbullet=r.hbullet=r.thermometer=r.cylinder=r.realtimecolumn,r.scrollarea2d=r.scrollline2d=r.scrollcombidy2d=r.scrollcombi2d=r.scrollstackedcolumn2d=r.scrollcolumn2d,r.zoomlinedy=r.zoomline,t["default"]=r},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.draw=function(){},e.prototype.drawAt=function(){},e.prototype.hide=function(){},e.prototype.hideAll=function(){},e.prototype.enableToolTip=function(){},e.prototype.disableToolTip=function(){},e.prototype.setStyle=function(){},e}();t["default"]={extension:r,name:"ToolTipController",type:"plugin"}},function(e,t,n){"use strict";t.__esModule=!0,t.MultiCanvasCrossLine=t.CrossLine=t.CenterLabel=t.ajax=t.debug=t.supportOldThemes=t.LogoExtension=t.BatchExportLinker=t.exportModule=t.LegendEventManagerLinker=t.inputAdapter=t.RegressionExtension=t.Annotation=t.DataSkipping=t.AlertManager=t.ConsolidatedToolTip=t.ToolTipController=t.PlotHighlighter=t.DefaultTheme=t.ThemeEngine=t.IgnoreCaseExt=t.XMLUrlTranscoder=t.JSONUrlTranscoder=t.CSVTranscoder=t.XMLTranscoder=t.linkedChartsExtension=t.MessageLogger=undefined;var r=O(n(157)),o=O(n(160)),a=O(n(162)),i=O(n(163)),s=O(n(164)),l=O(n(167)),c=O(n(168)),u=O(n(169)),d=O(n(170)),f=O(n(171)),h=O(n(173)),p=O(n(175)),g=O(n(176)),m=O(n(178)),v=O(n(182)),y=O(n(213)),b=O(n(219)),x=O(n(232)),w=O(n(233)),C=O(n(239)),_=O(n(240)),E=O(n(242)),k=O(n(243)),S=O(n(244)),A=O(n(245)),T=O(n(248)),M=O(n(252));function O(e){return e&&e.__esModule?e:{"default":e}}t.MessageLogger=r["default"],t.linkedChartsExtension=o["default"],t.XMLTranscoder=a["default"],t.CSVTranscoder=i["default"],t.JSONUrlTranscoder=s["default"],t.XMLUrlTranscoder=l["default"],t.IgnoreCaseExt=c["default"],t.ThemeEngine=u["default"],t.DefaultTheme=d["default"],t.PlotHighlighter=f["default"],t.ToolTipController=h["default"],t.ConsolidatedToolTip=p["default"],t.AlertManager=g["default"],t.DataSkipping=m["default"],t.Annotation=v["default"],t.RegressionExtension=y["default"],t.inputAdapter=b["default"],t.LegendEventManagerLinker=x["default"],t.exportModule=w["default"],t.BatchExportLinker=C["default"],t.LogoExtension=_["default"],t.supportOldThemes=E["default"],t.debug=k["default"],t.ajax=S["default"],t.CenterLabel=A["default"],t.CrossLine=T["default"],t.MultiCanvasCrossLine=M["default"],t["default"]={name:"features",type:"package",requiresFusionCharts:!0,extension:function(e){e.addDep(o["default"]),e.addDep(a["default"]),e.addDep(i["default"]),e.addDep(s["default"]),e.addDep(l["default"]),e.addDep(c["default"]),e.addDep(u["default"]),e.addDep(f["default"]),e.addDep(d["default"]),e.addDep(h["default"]),e.addDep(p["default"]),e.addDep(g["default"]),e.addDep(r["default"]),e.addDep(m["default"]),e.addDep(v["default"]),e.addDep(w["default"]),e.addDep(y["default"]),e.addDep(b["default"]),e.addDep(x["default"]),e.addDep(C["default"]),e.addDep(_["default"]),e.addDep(E["default"]),e.addDep(k["default"]),e.addDep(S["default"]),e.addDep(A["default"]),e.addDep(T["default"]),e.addDep(M["default"])}}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(158),a=(r=o)&&r.__esModule?r:{"default":r};t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){"chartAPI"===e.sender.getType()&&e.sender.registerFactory("messageLogger",function(t){if(t.getChildren("messageLogger"))t.getChildren("messageLogger")[0].configure(t);else{var n=t.getFromEnv("chart-container"),r=new a["default"];r.configure(t),r.addToEnv("chart-container",n),t.attachChild(r,"messageLogger"),t.getFromEnv("chartInstance").showLog=function(){return r&&r.show&&r.show()},t.getFromEnv("chartInstance").hideLog=function(){return r&&r.hide&&r.hide()},t.getFromEnv("chartInstance").clearLog=function(){return r&&r.clearLog&&r.clearLog()},e.sender.addEventListener("realtimeDataUpdate",function(e){e.sender.getChildren("messageLogger")&&e.sender.getChildren("messageLogger")[0].addLog(e.data)})}})})},name:"messageLoggerLinker",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=s(n(159)),o=s(n(131)),a=n(118),i=n(122);function s(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var c=Math.min,u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.pIndex=1,n.linkedItems=n.linkedItems||(n.linkedItems={}),n.components=n.components||{},n.components.messages=n.components.messages||[],n.graphics=n.graphics||{},n.config=n.config||(n.config={}),n}return l(t,e),t.prototype.getType=function(){return"extension"},t.prototype.getName=function(){return"MessageLogger"},t.prototype.configure=function(e){this.linkedItems.chart=e;var t=e.getFromEnv("chart-attrib")||{},n=this.config.usemessagelog=e.getFromEnv("chartConfig").usemessagelog;this.config.messageLogWPercent=c((0,a.pluckNumber)(t.messagelogwpercent,80),100),this.config.messageLogHPercent=c((0,a.pluckNumber)(t.messageloghpercent,70),100),this.config.messageLogShowTitle=(0,a.pluckNumber)(t.messagelogshowtitle,1),this.config.messageLogTitle=(0,a.pluck)(t.messagelogtitle,"Message Log"),this.config.messageLogColor=(0,a.pluck)(t.messagelogcolor,"#fbfbfb").replace(/^#?([a-f0-9]+)/gi,"$1"),this.config.messageLogColorRgb=(0,i.HEXtoRGB)(this.config.messageLogColor),this.config.messageGoesToJS=(0,a.pluckNumber)(t.messagegoestojs,0),this.config.messageGoesToLog=(0,a.pluckNumber)(t.messagegoestolog,1),this.config.messageJSHandler=(0,a.pluck)(t.messagejshandler,""),this.config.messagePassAllToJS=(0,a.pluckNumber)(t.messagepassalltojs,0),this.config.messagePassAsObject=(0,a.pluckNumber)(t.messagepassasobject,0),this.config.messageLogIsCancelable=(0,a.pluckNumber)(t.messagelogiscancelable,1),this.config.alwaysShowMessageLogMenu=(0,a.pluckNumber)(t.alwaysshowmessagelogmenu,n),e.config.useShowLogMenu=n&&this.config.messageGoesToLog,this.config.dynamicScrolling=!1,this.config.scrollToBottom=!0},t.prototype._createMessage=function(e){var t=new r["default"](e,this);return this.graphics.container&&t.draw(),t},t.prototype.addLog=function(e){var t=this.components.messages,n=(0,a.pluckNumber)(e.msgGoesToLog,this.config.messageGoesToLog),r=(0,a.pluckNumber)(e.msgGoesToJS,this.config.messageGoesToJS),o=window[this.config.messageJSHandler],i=(0,a.pluck)(e.msgId,""),s=(0,a.pluck)(e.msgTitle,""),l=(0,a.pluck)(e.msgText,""),c=(0,a.pluck)(e.msgType,"literal"),u=void 0;0!=this.config.usemessagelog&&(r&&o&&"function"==typeof o&&(this.config.messagePassAllToJS?this.config.messagePassAsObject?o(e):o(i,s,l,c):o(l)),"1"===e.clearLog&&this.clearLog(),n&&(e.msgTitle||e.msgText)&&(u=this._createMessage(e),t.push(u),1!==t.length||this.config.visible||this.show()))},t.prototype.show=function(){this.config.visible||1!=this.config.usemessagelog||(this.config.visible=!0,this.draw(),this.graphics.container||this.draw(),this.graphics.container&&this.graphics.container.show())},t.prototype.hide=function(){this.config.visible=!1,this.graphics.container&&this.graphics.container.hide()},t.prototype.clearLog=function(){var e=this.components.messages,t=void 0,n=e.length;for(t=0;t<n;t+=1)e[t]&&e[t].dispose&&e[t].dispose();e.splice(0,n)},t.prototype.isDrawn=function(){return!!this.graphics.container},t.prototype.draw=function(){var e=this.components.messages,t=void 0,n=void 0;if(0===this.config.usemessagelog)this.isDrawn()&&(this.clearLog(),this.hide());else for(this._createHTMLDialogue(),this.config.visible||this.hide(),n=e.length,t=0;t<n;t+=1)e[t]&&e[t].draw&&e[t].draw()},t.prototype._createHTMLDialogue=function(){var e,t,n,r,o=this,a=this.config,i=this.graphics,s=this.linkedItems.chart,l=this.getFromEnv("paper"),c=this.getFromEnv("chart-container"),u=s.config,d=u.width,f=u.height,h=u.style,p=h&&h.inCanvasStyle,g=this.config.messageLogWPercent,m=this.config.messageLogHPercent,v=this.config.messageLogShowTitle,y=this.config.messageLogIsCancelable,b=this.config.messageLogColor,x=this.config.messageLogTitle,w=d*(g/100),C=f*(m/100),_=(d-w)/2,E=(f-C)/2,k=w-18-22,S=C-18-22,A=b,T=b,M=i.container,O=this.isDrawn()&&u.animation&&u.animation.transposeAnimDuration;M||(M=i.container=l.html("div",{fill:"transparent"},{fontSize:"10px",lineHeight:"15px"},c),i.veil=l.html("div",{id:"veil",fill:"000000",opacity:.1},void 0,M).on("click",function(){y&&o.hide()}),x&&v&&(i.title=l.html("p",{id:"Title",innerHTML:x,x:5,y:5},{"font-weight":"bold"},M)),i.dialog=l.html("div",{id:"dialog",strokeWidth:1},{borderRadius:"5px",boxShadow:"1px 1px 3px #000000","-webkit-border-radius":"5px","-webkit-box-shadow":"1px 1px 3px #000000",filter:'progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000")'},M),i.logBackground=l.html("div",{id:"dialogBackground",x:0,y:0},void 0,i.dialog),y&&(i.closeButton=l.html("div",{id:"closeButton",x:w-11-3,y:2,innerHTML:"<b>x</b>"},{cursor:"pointer",_cursor:"hand"},i.dialog).on("click",function(){y&&o.hide()})),i.logWrapper=l.html("div",{id:"logWrapper"},{overflow:"auto"},i.dialog).on("scroll",function(){var e=this&&this.scrollTop,t=this&&this.scrollHeight,n=this&&this.offsetHeight;a.dynamicScrolling?a.dynamicScrolling=!1:a.scrollToBottom=t-e===n}),i.log=l.html("div",{id:"log",x:0,y:0},{},i.logWrapper)),M.css({fontFamily:p.fontFamily}),i.dialog.attr({fill:"ffffff",stroke:A}),i.logBackground.attr({fill:T}),e={width:d,height:f},t={x:_,y:E,width:w,height:C},n={width:w,height:C},r={x:(w-k)/2,y:(C-S)/2,width:k,height:S},O?(M.animate(e,O,"normal"),i.veil.animate(e,O,"normal"),i.dialog.animate(t,O,"normal"),i.logBackground.animate(n,O,"normal"),i.logWrapper.animate(r,O,"normal")):(M.attr(e),i.veil.attr(e),i.dialog.attr(t),i.logBackground.attr(n),i.logWrapper.attr(r))},t}(o["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118);var o=8===window.document.documentMode,a={},i={display:"block",paddingLeft:"10px",paddingRight:"10px","font-family":"Arial","font-size":"11px"};a.literal=a.info={title:'<span style="color: #005900">$titleVal$</span>',body:'<span">$msgVal$</span>'},a.link={title:a.info.title,body:'<a href="$msgLinkVal$">$msgVal$</a>'},a.error={title:'<span style="color: #CC0000">$titleVal$</span>',body:'<span style="color: #CC0000">$msgVal$</span>'};var s=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config={},this.messageType=(t.msgType&&t.msgType.replace(/^[\r\n]+|\.|[\r\n]+$/g,"")||"").toLowerCase(),this.msgTitle=t.msgTitle,this.msgText=t.msgText,this.msgLink=t.msgLink,this.graphics={},this.linkedItems={msgLogger:n},this.msgObj=a[this.messageType]||a.literal,this.configureMsgTextAndMsgTitle()}return e.prototype.configureMsgTextAndMsgTitle=function(){this.config.totalHTML="",this.msgTitle&&(this.config.titleHTML=this.msgObj.title.replace("$titleVal$",this.msgTitle),this.config.totalHTML+=this.config.titleHTML),this.msgText&&(this.config.msgHTML=this.msgObj.body.replace("$msgVal$",this.msgText),this.config.msgHTML=this.config.msgHTML.replace("$msgLinkVal$",this.msgText),this.config.totalHTML+=this.config.msgHTML)},e.prototype.draw=function(){var e,t,n,a=this.graphics.element,s=this.linkedItems.msgLogger,l=s.graphics,c=l&&l.log&&l.log.element,u=l.logWrapper&&l.logWrapper.element,d=s.config;if(!a){for(e in a=this.graphics.element=window.document.createElement("span"),i)a.style[e]=i[e];c.appendChild&&c.appendChild(a)}this.graphics.element.innerHTML=this.config.totalHTML,r.isIE&&o&&(t=c.innerHTML,c.innerHTML=t),d.scrollToBottom&&(d.dynamicScrolling=!0,n=u.scrollHeight,u.scrollTop=n)},e.prototype.dispose=function(){var e=this.linkedItems.msgLogger;e&&e.graphics&&e.graphics.log&&e.graphics.log.element&&e.graphics.log.element.removeChild&&e.graphics.log.element.removeChild(this.graphics.element),delete this.graphics.element,r.componentDispose.call(this)},e}();t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(161),a=c(o),i=n(124),s=n(118),l=c(n(120));function c(e){return e&&e.__esModule?e:{"default":e}}var u=s.regex.dropHash;function d(e,t){return(e.options.containerElement===t.options.containerElement||e.options.containerElementId===t.options.containerElementId)&&e.options.insertMode===s.domInsertModes.REPLACE}function f(e){var t;e.sender.link instanceof a["default"]&&!e.sender.link.root.disposed?e.sender.link.parent instanceof this&&!(t=e.sender.link.parent.link.items)[e.sender.id]&&(t[e.sender.id]=e.sender):e.sender.link=new a["default"](e.sender)}t["default"]={type:"extension",name:"LinkedChart",extension:function(e){e.prototype.configureLink=function(e,t){var n;if(e instanceof Array){for(n=0;n<e.length;n+=1)"object"!==r(o.store[this.link.root.id][n])&&(o.store[this.link.root.id][n]={}),(0,s.extend2)(o.store[this.link.root.id][n],e[n],!1,!0);o.store[this.link.root.id].splice(e.length)}else"object"===(void 0===e?"undefined":r(e))?("number"!=typeof t&&(t=this.link.level),"undefined"==typeof o.store[this.link.root.id][t]&&(o.store[this.link.root.id][t]={}),(0,s.extend2)(o.store[this.link.root.id][t],e,!1,!0)):(0,i.raiseError)(this,"25081731","param","~configureLink()","Unable to update link configuration from set parameters")},e.prototype.drawOverlayButton=function(e){var t,n,r,o=this.jsVars,a=o.overlayButton;if(e&&e.show){for(a||(a=o.overlayButton=document.createElement("span"),l["default"].listen(a,"click",function(){(0,i.triggerEvent)("OverlayButtonClick",o.fcObj,e)})),r=e.message?e.message:"Back";a.firstChild;)a.removeChild(a.firstChild);for(n in a.appendChild(document.createTextNode(r)),o.overlayButtonMessage=r,t={border:"1px solid "+(e.borderColor?e.borderColor.replace(u,s.HASHSTRING):"#7f8975"),backgroundColor:e.bgColor?e.bgColor.replace(u,s.HASHSTRING):"#edefec",fontFamily:e.font?e.font:"Verdana,sans",color:e.fontColor,fontSize:(e.fontSize?e.fontSize:"10")+s.PXSTRING,padding:(e.padding?e.padding:"3")+s.PXSTRING,fontWeight:0===parseInt(e.bold,10)?s.NORMAL:s.BOLD,position:"absolute",top:"0",right:"0",cursor:s.POINTER})a.style[n]=t[n];o.hcObj.container.appendChild(a),o.overlayButtonActive=!0}else a&&(o.overlayButton=a.parentNode.removeChild(a),o.overlayButtonActive=!1,delete o.overlayButtonMessage)},e.addEventListener("beforeRender",f),e.addEventListener("beforeInitialize",f),e.addEventListener("linkedChartInvoked",function(t,n){var o,l=t.sender,c=l.clone({dataSource:n.data,dataFormat:n.linkType,link:new a["default"](l.link.root,l,l instanceof e),clickedEntity:n.clickedEntity,clickedEntityBox:n.clickedEntityBox},!0),u=n.alias;u&&(!c.typeSource&&c.swfUrl&&(c.typeSource=c.swfUrl.replace(/(.*?)?[^\/]*\.swf.*?/gi,"$1")),c.type=u),l.args&&0!==parseInt(l.args.animate,10)&&delete c.animate,(0,s.extend2)(c,l.link.configuration(),!1,!0),(0,i.triggerEvent)("beforeLinkedItemOpen",l.link.root,{level:l.link.level},void 0,function(){e.items[c.id]instanceof e&&e.items[c.id].dispose(),d(o=new e(c),l)||l.options.overlayButton&&l.options.overlayButton.message||("object"!==r(l.options.overlayButton)&&(l.options.overlayButton={}),l.options.overlayButton.message="Close"),o.render(),(0,i.triggerEvent)("linkedItemOpened",l.link.root,{level:l.link.level,item:o})})}),e.addEventListener("overlayButtonClick",function(t,n){var r,o,a,s;"LinkManager"===n.id&&(r=t.sender,o=r.link.level-1,a=r.link.parent,s=r.link.root,(0,i.triggerEvent)("beforeLinkedItemClose",s,{level:o,item:r},void 0,function(){setTimeout(function(){e.items[r.id]&&r.dispose(),(0,i.triggerEvent)("linkedItemClosed",s,{level:o})},0),a.disposed||a.isActive()||!d(r,a)?(a._addChartDependency("returnFromLinkedChart",{resolve:function(){return{state:3}}}),a._setState()):a.render()}))}),e.addEventListener("DrawComplete",function(t){var n,r=t.sender;r&&"undefined"!=typeof r.link&&r.link.root!==r&&r.link.parent instanceof e&&(r.ref&&"function"==typeof r.drawOverlayButton?(n=(0,s.extend2)({show:!0,id:"LinkManager"},r.link.parent.options.overlayButton,!1,!0),(0,s.extend2)(n,r.link.parent.link.configuration().overlayButton||{},!1,!0),r.drawOverlayButton(n)):(0,i.raiseWarning)(r,"04091602","run","::LinkManager^Loaded","Unable to draw overlay button on object. -"+r.id))}),e.addEventListener("beforeDispose",function(t){var n=t.sender;n&&n.link instanceof a["default"]&&(n&&n.link&&n.link.parent instanceof e&&n.link.parent.link&&n.link.parent.link.items&&delete n.link.parent.link.items[t.sender.id],delete o.store[n.id])})},requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r={},o=function(){function e(t,n,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items={},this.root=t,this.parent=n,o?this.level=this.parent.link.level+1:(r[t.id]=[{}],this.level=0)}return e.prototype.configuration=function(){return r[this.root.id][this.level]||(r[this.root.id][this.level]={})},e}();t.store=r,t["default"]=o},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(118);function i(e){return e.replace(/</g,"<").replace(/>/g,">")}var s,l,c,u,d=(u={arr:{set:!0,trendlines:!0,vtrendlines:!0,line:{trendlines:!0,vtrendlines:!0},data:!0,dataset:!0,lineset:!0,categories:!0,category:!0,tasks:!0,linkeddata:!0,application:!0,definition:!0,axis:!0,connectors:!0,connector:{connectors:!0},trendset:!0,row:{rows:!0},column:{columns:!0},label:{labels:!0},color:{colorrange:!0},dial:{dials:!0},pointer:{pointers:!0},point:{trendpoints:!0},process:{processes:!0},task:{tasks:!0},milestone:{milestones:!0},datacolumn:{datatable:!0},text:{datacolumn:!0},item:{legend:!0},alert:{alerts:!0},groups:{annotations:!0},items:{groups:!0,data:!0},shapes:!0,shape:{shapes:!0},entitydef:!0,entity:{entitydef:!0}},tag:{chart:"linkedchart",map:"linkedmap",set:"data",vline:{chart:"data",graph:"data",dataset:"data",categories:"category",linkedchart:"data"},apply:{application:"application"},style:{definition:"definition"},marker:{application:"application",definition:"definition",data:"items"},entity:{entitydef:"entitydef",data:"data"},shape:{shapes:"shapes"},connector:{connectors:{chart:"connector",linkedchart:"connector",map:"connectors",linkedmap:"connectors"}},annotationgroup:{annotations:"groups"},annotation:{groups:"items"}},attr:{vline:{vline:"true"}},ins:{chart:!0,map:!0,graph:!0},dsv:{dataset:"data",categories:"category"},text:{target:"target",value:"value"},group:{styles:{definition:!0,application:!0},chart:{value:!0,target:!0},graph:{value:!0,target:!0},linkedchart:{value:!0,target:!0},markers:{definition:!0,application:!0,shapes:!0,connectors:!0,data:!0},map:{entitydef:!0,data:!0},linkedmap:{entitydef:!0,data:!0}}},s={append:function(e,t,n,r){!u.arr[n]||!0!==u.arr[n]&&!0!==u.arr[n][r]?t[n]=e:(t[n]instanceof Array||(t[n]=[]),t[n].push(e))},child:function(e,t,n,r){var i,l,c,d,f,h;for(i=0;i<t.length;i+=1)switch(l=(c=t[i]).nodeName.toLowerCase(),c.nodeType){case 1:if(d=s.attr(c.attributes),!0===(h=u.ins[l])&&(f=d,(d={})[l]=f,f=void 0),"object"===(void 0===(h=u.attr[l])?"undefined":o(h))&&(0,a.extend2)(d,h,!1,!0),h=u.tag[l])if("object"===(void 0===h?"undefined":o(h))&&"object"===o(h[n])){for(f in f=void 0,h[n])if(r[f]){l=h[n][f];break}}else"object"===(void 0===h?"undefined":o(h))&&"string"===o(h[n])?l=h[n]:"string"===(void 0===h?"undefined":o(h))&&(l=h);c.childNodes.length&&((h=u.group[n])&&h[l]?s.child(e,c.childNodes,l,r):s.child(d,c.childNodes,l,r)),(h=u.group[n])&&h[l]||s.append(d,e,l,n);break;case 3:(h=u.text[n])&&(l=h,d=c.data,s.append(d,e,l,n)),"string"===(void 0===(h=u.dsv[n])?"undefined":o(h))&&r.chart&&parseInt(r.chart.compactdatamode,10)&&(l=h,d=c.data,e[l]=e[l]?e[l]+d:d)}},attr:function(e){var t,n={};if(!e||!e.length)return n;for(t=0;t<e.length;t+=1)"xml"===c&&(e[t].value?e[t].value=i(e[t].value):e[t].nodeValue&&(e[t].nodeValue=i(e[t].nodeValue))),n[e[t].nodeName.toLowerCase()]=e[t].value||e[t].nodeValue;return n}},l=function(e){var t,n,i,c,u,d,f,h,p,g={};if("object"!==(void 0===e?"undefined":o(e))&&e&&"function"!==o(e.toString))return l.errorObject=new TypeError("xml2json.parse()"),g;if(e=e.toString().replace(/<\!--[\s\S]*?-->/g,"").replace(/<\?xml[\s\S]*?\?>/gi,"").replace(/&(?!([^;\n\r]+?;))/g,"&$1"),!(e=(0,a.fastTrim)(e)))return g;try{if(window.DOMParser?t=(new window.DOMParser).parseFromString(e,"text/xml"):document.body&&r.options.allowIESafeXMLParsing?((n=document.createElement("xml")).innerHTML=e,document.body.appendChild(n),t=n.XMLDocument,document.body.removeChild(n),n=null):((t=new window.ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)),!(t&&t.childNodes&&1===t.childNodes.length&&(i=t.childNodes[0])&&i.nodeName&&(c=i.nodeName.toLowerCase()))||"chart"!==c&&"map"!==c&&"graph"!==c)return l.errorObject=new TypeError("xml2json.parse()"),g;if("graph"===c){for(u=t.createElement("chart"),p=(f=i.attributes)&&f.length||0;p--;)u.setAttribute(f[p].name,f[p].value),f.removeNamedItem(f[p].name);for((p=(h=i.childNodes)&&h.length||0)&&(p-=1,d=i.removeChild(h[p]),u.appendChild(d));p--;)d=i.removeChild(h[p]),u.insertBefore(d,u.firstChild);t.replaceChild(u,i),i=u}}catch(m){l.errorObject=m}return i?(i.attributes&&(g[c]=s.attr(i.attributes)),i.childNodes&&s.child(g,i.childNodes,c,g),delete l.errorObject):l.errorObject=new TypeError("xml2json.parse()"),g},function(e){return delete l.errorObject,c=arguments[arguments.length-1],{data:l(e),error:l.errorObject}}),f=function(){var e,t;return e={items:{explode:{data:"set",groups:{annotations:"annotationgroup"},items:{groups:"annotation"}},text:{chart:{target:"target",value:"value"},graph:{target:"target",value:"value"}},dsv:{dataset:{data:"dataset"},categories:{category:"categories"}},attr:{chart:{chart:"chart"},graph:{graph:"graph"},map:{map:"map"},linkedmap:{map:"map"},linkedchart:{chart:"chart"}},group:{styles:{definition:"style",application:"apply"},map:{data:"entity",entitydef:"entity"},markers:{definition:"marker",application:"marker",shapes:"shape",connectors:"connector",items:"marker"}},tag:{markers:{items:"data"}}},qualify:function(e,t,n){return"object"===o(this.items[e][n])?this.items[e][n][t]:this.items[e][n]}},t=function(n,r,i,s){var l,c,u,d,f="",h="",p="",g="";if(r&&"function"==typeof r.toLowerCase&&(r=r.toLowerCase()),void 0===i&&n[r])for(c in n[r])"compactdatamode"===(u=c.toLowerCase())&&(s.applyDSV=1===n[r][c]);if(n instanceof Array)for(c=0;c<n.length;c+=1)"string"===o(n[c])?p+=(0,a.xssEncode)(n[c]):p+=t(n[c],r,i,s);else{for(c in n)u=c.toLowerCase().replace(/[`~!@#$%^&*()|+\=?;:'", <>\{\}\[\]\\\/]/gi,""),n[c]instanceof Array&&(d=e.qualify("group",u,r))?h+="<"+(l=e.qualify("tag",u,r)||u)+">"+t(n[c],d,r,s)+"</"+l+">":"object"===o(n[c])?(d=e.qualify("attr",u,r))?(g=t(n[c],d,r,s).replace(/\s*\/\>/gi,""),r=u):h+=t(n[c],u,r,s):s.applyDSV&&(d=e.qualify("dsv",u,r))?h+=n[c]:(d=e.qualify("text",u,r))?h+="<"+(l=e.qualify("tag",u,r)||d)+">"+n[c]+"</"+l+">":"vline"===u&&Boolean(n[c])?r="vline":f+=" "+u+'="'+(0,a.xssEncode)(n[c]).toString().replace(/\"/gi,""")+'"';(d=e.qualify("explode",i,r))&&(r=d),l=r,p=(""!==g?g:"<"+l)+f+(""!==h?">"+h+"</"+l+">":" />")}return p},function(e){if(delete t.errorObject,e&&"string"===(void 0===e?"undefined":o(e)))try{e=JSON.parse(e)}catch(r){t.errorObject=r}var n=e&&e.graph?"graph":e&&e.map?"map":"chart";return{data:t(e,n,void 0,{}),error:t.errorObject}}}(),h=function(){return this.getChartData("xml")},p=function(e){this.setChartData(e,"xml")};t["default"]={extension:function(e){return e&&(r=e,e.prototype.getXMLData=h,e.prototype.setXMLData=p),{format:"xml",toJSON:d,fromJSON:f}},name:"XML",type:"transcoder",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(124);var o,a,i,s,l,c,u,d,f,h,p=window,g=p.parseInt,m=p.parseFloat,v=function(e){return e},y=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.data=[],this.rowCount=0,this.columnCount=0,this.configure(t)}return e.prototype.set=function(e,t,n){var r;if(this.rowCount<=e){for(r=this.rowCount;r<=e;r+=1)this.data[r]=[];this.rowCount=e+1}this.columnCount<=t&&(this.columnCount=t+1),this.data[e][t]=n},e.prototype.setRow=function(e,t){var n;if(this.rowCount<=e){for(n=this.rowCount;n<=e;n+=1)this.data[n]=[];this.rowCount=e+1}this.columnCount<t.length&&(this.columnCount=t.length),this.data[e]=t},e.prototype.get=function(e,t){var n=this.data;return n[e]&&n[e][t]},e.prototype.configure=function(t){var n=e.decodeLiterals;this.delimiter=n(t.delimiter,","),this.qualifier=n(t.qualifier,'"'),this.eolCharacter=n(t.eolCharacter,"\r\n"),this.numberFormatted=!!g(t.numberFormatted,0)},e.prototype.clear=function(){this.data=[],this.rowCount=0,this.columnCount=0},e.prototype.toString=function(){var e,t,n="";for(e=0;e<this.rowCount;e+=1)n+='""'===(t=this.qualifier+this.data[e].join(this.qualifier+this.delimiter+this.qualifier)+this.qualifier)?this.eolCharacter:t+this.eolCharacter;return this.rowCount>0&&(n=n.slice(0,n.length-2)),n},e}();function b(){return this.getChartData("csv")}function x(){return this.getCSVData()}y.decodeLiterals=function(e,t){return e!==a&&null!==e&&e.toString?e.replace("{tab}","\t").replace("{quot}",'"').replace("{apos}","'"):t},c=function(e,t){var n=e.label||"",r=void 0;if(u.push(n),h++,f=Math.max(f,h),e.category!==a){for(r=0;r<e.category.length;++r)c(e.category[r],t);u.pop(),h--}else t.setRow(d++,u.slice()),u.pop(),h--},l=function(e){var t,n,r,o=e,i=o.chart,s=o&&o.category||[],l=s.length,p=[];for(d=1,f=0,h=0,r=new y({separator:i.exportdataseparator,qualifier:i.exportdataqualifier,numberFormatted:i.exportdataformattedval}),t=0;t<l;++t)n=s[t],u=[],c(n,r);for(t=0;t<f;++t)p.push("category");return r.setRow(0,p),{data:r.toString(),error:a,predictedFormat:{multilevel:!0}}},i=function(e,t){var n,r,i,s,c,u,d,f,h,p,g,b,x,w,C,_,E,k,S,A,T,M,O,L,I,F,N,D,P,R,j,V,B,G=e,H=t&&t.jsVars,z=t&&t.args,$=z&&z.type,X=H&&H.instanceAPI,U=G.chart||G.map||G.graph||{},W=Boolean(U.exporterrorcolumns||0),Y=G.categories&&G.categories[0]&&G.categories[0].category||[],q=G.map&&!G.chart||H&&H.instanceAPI&&"geo"===H.instanceAPI.defaultSeriesType,K=!1,J=!1,Z=!1,Q=!1,ee=!1,te=v,ne={},re=0,oe=-1;if("multilevelpie"===$)return l(e);if(n=new y({separator:U.exportdataseparator,qualifier:U.exportdataqualifier,numberFormatted:U.exportdataformattedval}),o.formatNumber&&n.numberFormatted&&(te=function(e,t){return o.formatNumber(e,U,t)}),q)for(N in ne.geo=!0,F=(h=H.instanceAPI.getDatasets())&&h[0]&&h[0].components.data||[],n.setRow(0,["Id"," Short Name","Long Name","Value","Formatted Value"]),c=0,F)V=(P=(D=F[N]).config).cleanValue,!0!==D.hidden&&n.setRow(++c,[N,P.shortLabel,P.label,null===V?"":V,P.formattedValue]);else if((h=G.dials&&G.dials.dial||G.pointers&&G.pointers.pointer||G.value)!==a)if(ne.gauge=!0,"string"==typeof h)n.set(0,0,te(h)),ne.singlevalue=!0,"string"==typeof G.target&&(n.set(0,1,te(G.target)),ne.bullet=!0);else for(n.setRow(0,["Id","Value"]),ne.multivalue=!0,c=0,d=1,u=h.length;c<u;c+=1,d+=1)n.setRow(d,[d,te(h[c].value)]);else if(h=G.dataset||!(G.data instanceof Array)&&[]){if(ne.multiseries=!0,i=1,(p=G.lineset)&&(h=h.concat(p),ne.lineset=!0),(g=G.axis)&&(h=h.concat(g),ne.multiaxis=!0),w=h.length,x=Y.length,!(w=h.length)){for(c=0;c<x;c+=1)C=Y[c],n.set(c+1,0,C.label||C.name);ne.multilevel=!0}for(c=0;c<w;c+=1)for((_=h)[c].dataset?(s=0,b=(_=_[c].dataset).length):(_=h,b=(s=c)+1);s<b&&!K&&!Z;s+=1)if(E=_[s],oe++,!(X&&(O=X.getDatasets())&&O[oe]&&!1===O[oe].visible)){for(B=(R=X&&O&&O[oe])&&R.config&&R.config.parentYAxis,n.set(0,i,E.seriesname),"string"==typeof E.data&&(ne.compactdata=!0,E.data=E.data.split(U.dataseparator||"|")),u=0,d=0,k=E.data&&E.data.length||0;u<k||u<x;u+=1){if(C=Y[u],r=d+1,(S=E.data&&E.data[d]||{}).x!==a&&S.y!==a){K=ne.xy=!0;break}if(S.open!==a||S.high!==a||S.close!==a||S.low!==a){Q=ne.ohlc=!0;break}if(S.rowid!==a&&S.columnid!==a){Z=ne.heatmap=!0;break}u<x&&!C.vline&&(n.set(r,0,C.label||C.name),A=m(S?S.value:""),A=isNaN(A)?"":te(A,B),n.set(r,i,A),(J||W||S.errorvalue)&&(J||n.set(0,i+1,"Error"),M=1,n.set(r,i+1,te(S.errorvalue))),d+=1)}M&&(i+=M,M=0),i+=1}p&&(h=h.slice(0,-p.length)),g&&(h=h.slice(0,-g.length))}else if(h=G.data){for(n.set(0,1,U.yaxisname||"Value"),ne.singleseries=!0,ee="1"==U.showsumatend,c=0,x=h.length;c<x;c+=1)(S=h[c]).vline||(A=m(S.value?S.value:""),n.setRow(c+1,[S.label||S.name,isNaN(A)?"":(re+=A,te(A))]));ee&&(ne.summation=!0,n.setRow(c+1,[U.sumlabel||"Total",te(re)]))}if(Q)for(n.clear(),n.setRow(0,["Open","Close","High","Low"]),c=0,r=1,b=(h=G.dataset).length;c<b;c+=1)for(u=0,w=(E=h[c]&&h[c].data||[]).length;u<w;u+=1,r+=1)S=E[u]||{},n.setRow(u+1,[te(S.open),te(S.close),te(S.high),te(S.low)]);else if(K){for(n.clear(),J=!1,M=0,n.setRow(0,["Series","x","y"]),c=0,r=1,b=(h=G.dataset).length;c<b;c+=1)if(!(X&&(O=X.getDatasets())&&O[c]&&!1===O[c].visible))for(u=0,w=(E=h[c]&&h[c].data||[]).length;u<w;u+=1,r+=1)S=E[u]||{},A=[h[c].seriesname,te(S.x),te(S.y)],S.z!==a&&(A.push(te(S.z)),M||(n.set(0,3,"z"),M=1)),(J||W||S.errorvalue!==a||S.horizontalerrorvalue!==a||S.verticalerrorvalue!==a)&&(T=te(S.errorvalue),A.push(S.errorvalue,S.horizontalerrorvalue===a?T:te(S.horizontalerrorvalue),S.verticalerrorvalue===a?T:te(S.verticalerrorvalue)),J||(n.set(0,M+3,"Error"),n.set(0,M+4,"Horizontal Error"),n.set(0,M+5,"Vertical Error")),J=ne.error=!0),n.setRow(r,A)}else if(Z){for(n.clear(),L={},I={},c=0,u=1,f=(Y=G.rows&&G.rows.row||[]).length;c<f;c+=1,u+=1)(C=Y[c]).id&&(L[C.id.toLowerCase()]=u,n.set(u,0,C.label||C.id));for(c=0,u=1,f=(Y=G.columns&&G.columns.column||[]).length;c<f;c+=1,u+=1)(C=Y[c]).id&&(I[C.id.toLowerCase()]=u,n.set(0,u,C.label||C.id));for(E=G.dataset&&G.dataset[0]&&G.dataset[0].data||[],j=X&&(O=X.getDatasets())&&O[0]&&O[0].components&&O[0].components.data||[],c=0,f=E.length;c<f;c+=1)r=(S=E[c]).rowid.toLowerCase(),i=S.columnid.toLowerCase(),j[c]&&!1===j[c].visible||(L[r]||(L[r]=n.rowCount,n.set(n.rowCount,0,S.rowid)),I[i]||(I[i]=n.columnCount,n.set(0,n.columnCount,S.columnid)),n.set(L[r],I[i],te(S.value)))}return g=null,p=null,Y=null,h=null,n.rowCount>0&&n.get(0,0)===a&&n.set(0,0,U.xaxisname||"Label"),{data:n.toString(),error:a,predictedFormat:ne}},s=function(e,t){return(0,r.raiseError)(t,"0604111215","run","csvToJson()","fusionCharts CSV data-handler only supports encoding of data."),e},t["default"]={extension:function(e){return e&&(o=e,e.prototype.getDataAsCSV=x,e.prototype.getCSVData=b),{format:"csv",toJSON:s,fromJSON:i}},name:"csv",type:"transcoder",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(124),o=n(165),a="json",i=void 0;function s(e,t,n,s,l){(0,r.triggerEvent)("dataLoadRequested",l,{source:o.sourceName,url:e,dataFormat:a,silent:!!s,config:t,successcallback:n},i,o.onDataLoadRequest,o.onDataLoadRequestCancel)}function l(e){this.setChartDataUrl(e,"jsonurl")}t["default"]={extension:function(e){return e&&(e.prototype.setJSONUrl=l),{format:"jsonurl",toJSON:s}},name:"JSONUrl",type:"transcoder",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0,t.onDataLoadRequestCancel=t.onDataLoadRequest=t.sourceName=undefined;var r,o=n(166),a=(r=o)&&r.__esModule?r:{"default":r},i=n(124);var s="XmlHttpRequest",l=void 0;function c(e,t){e.sender.jsVars.stallLoad=!1,e.sender.setChartData(t.dataSource,t.dataFormat,t.config,t.successcallback,t.silent)}function u(e,t){(0,i.triggerEvent)("dataLoadCancelled",e.sender,t),t.xmlHttpRequestObject.abort()}function d(e,t,n,r){var o=n.obj,a=n.args;a.dataSource=e,a.xmlHttpRequestObject=t,a.source=s,a.url=r,(0,i.triggerEvent)("dataLoadRequestCompleted",o,a,l,c,u)}function f(e,t,n){var r=n.obj,o=n.args;o.error=e,o.httpStatus=t.xhr&&t.xhr.status?t.xhr.status:-1,o.xmlHttpRequestObject=t,r._addChartDependency("data",{resolve:function(){return{state:1,msg:r.options.dataLoadErrorMessage,msgStyle:{image:{imageHAlign:r.args.dataLoadErrorMessageImageHAlign||r.options.baseChartMessageImageHAlign,imageVAlign:r.args.dataLoadErrorMessageImageVAlign||r.options.baseChartMessageImageVAlign,imageAlpha:r.args.dataLoadErrorMessageImageAlpha||r.options.baseChartMessageImageAlpha,imageScale:r.args.dataLoadErrorMessageImageScale||r.options.baseChartMessageImageScale},message:{color:r.args.dataLoadErrorMessageColor||r.options.baseChartMessageColor,fontFamily:r.args.dataLoadErrorMessageFont||r.options.baseChartMessageFont,fontSize:r.args.dataLoadErrorMessageFontSize||r.options.baseChartMessageFontSize}}}}}),r._setState(),(0,i.triggerEvent)("dataLoadError",r,o)}t.sourceName=s,t.onDataLoadRequest=function(e,t){var n=e.sender,r=n.__state,o=t.url;n.options.dataSource=t.url,r.dhmXhrObj||(r.dhmXhrObj=new a["default"](d,f)),r.dhmXhrObj.get("function"==typeof window.decodeURIComponent?window.decodeURIComponent(o):window.unescape(o),{obj:n,args:t})},t.onDataLoadRequestCancel=function(e,t){var n=e.sender,r=n.__state;(0,i.triggerEvent)("dataLoadRequestCancelled",n,t),r&&r.dhmXhrObj&&r.dhmXhrObj.abort()}},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(124),a=n(118);var i=window,s=parseFloat(i.navigator.appVersion.split("MSIE")[1]),l=!!(s>=5.5&&s<=7),c="file:"===i.location.protocol,u=i.ActiveXObject,d=(!u||!c)&&i.XMLHttpRequest,f={objects:0,xhr:0,requests:0,success:0,failure:0,idle:0},h=function(){var e;if(d)return(h=function(){return f.xhr++,new d})();try{e=new u("Msxml2.XMLHTTP"),h=function(){return f.xhr++,new u("Msxml2.XMLHTTP")}}catch(t){try{e=new u("Microsoft.XMLHTTP"),h=function(){return f.xhr++,new u("Microsoft.XMLHTTP")}}catch(n){e=!1}}return e},p=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.onSuccess=e,this.onError=n,this.open=!1,f.objects++,f.idle++}return t.stats=function(e){return e?f[e]:(0,a.extend2)({},f)},t.prototype.transact=function(n,r,s,u){var d,p,g=this,m=g.xmlhttp,v=t.headers,y=g.onError,b=g.onSuccess,x="POST"===n,w=Object.prototype.hasOwnProperty;-1!==r.search(/^(http:\/\/|https:\/\/)/)&&i.location.hostname!==/(http:\/\/|https:\/\/)([^\/\:]*)/.exec(r)[2]?delete v["X-Requested-By"]:!w.call(v,"X-Requested-By")&&(v["X-Requested-By"]="FusionCharts"),(!m||l||a.isFirefox)&&(m=h(),g.xmlhttp=m),m.onreadystatechange=function(){try{4===m.readyState&&(!m.status&&c||m.status>=200&&m.status<300||304===m.status||1223===m.status||0===m.status?(b&&b(m.responseText,g,u,r),f.success++):y&&(y(new Error("XmlHttprequest Error"),g,u,r),f.failure++),f.idle--,g.open=!1)}catch(e){y&&y(e,g,u,r),i.FC_DEV_ENVIRONMENT&&setTimeout(function(){throw e},0),f.failure++}};try{if(m.open(x?"POST":"GET",r,!0),m.overrideMimeType&&m.overrideMimeType("text/plain"),x)if("string"==typeof s)d=s;else{for(p in d=[],s)d.push(p+"="+(s[p]+"").replace(/\=/g,"%3D").replace(/\&/g,"%26"));d=d.join("&")}else d=null;for(p in v)m.setRequestHeader(p,v[p]);m.send(d),f.requests++,f.idle++,g.open=!0}catch(C){(0,o.raiseError)(e.core,"1110111515A","run","XmlHttprequest Error",C.message)}return m},t.prototype.get=function(e,t){return this.transact("GET",e,void 0,t)},t.prototype.post=function(e,t,n){return this.transact("POST",e,t,n)},t.prototype.abort=function(){var e=this.xmlhttp;return this.open=!1,e&&"function"===r(e.abort)&&e.readyState&&0!==e.readyState&&e.abort()},t.prototype.dispose=function(){var e=this;return e.open&&e.abort(),delete e.onError,delete e.onSuccess,delete e.xmlhttp,delete e.open,f.objects--,null},t}();p.headers={"If-Modified-Since":"Sat, 29 Oct 1994 19:43:31 GMT","X-Requested-With":"XMLHttpRequest","X-Requested-By":"FusionCharts",Accept:"text/plain, */*","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},t["default"]=p}).call(this,n(111))},function(e,t,n){"use strict";t.__esModule=!0;var r=n(124),o=n(165),a="xml",i=void 0;function s(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"",t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=arguments[2],s=arguments[3],l=arguments[4];(0,r.triggerEvent)("dataLoadRequested",l,{source:o.sourceName,url:e,dataFormat:a,silent:!!s,config:t,successcallback:n},i,o.onDataLoadRequest,o.onDataLoadRequestCancel)}function l(e){this.setChartDataUrl(e,"xmlurl")}function c(){(0,r.raiseWarning)(this,"11171116293","run","JavaScriptRenderer~setDataURL()",'Use of deprecated "setDataURL()". Replace with "setXMLUrl()".'),this.setXMLUrl.apply(this,arguments)}t["default"]={extension:function(e){return e&&(e.prototype.setXMLUrl=l),e&&(e.prototype.setDataURL=c),{format:"xmlurl",toJSON:s}},name:"XMLUrl",type:"transcoder",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r='"',o='":';t["default"]={extension:function(e){e.addEventListener("beforedataupdate",function(e,t){var n=JSON.stringify(t.data);n&&(t.data=JSON.parse(n.replace(/"([^"]+)"[\s]*:/g,function(){return r+arguments[1].toLowerCase()+o})))})},name:"IgnoreCaseExt",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(131),i=(r=a)&&r.__esModule?r:{"default":r},s=n(125),l=n(124);function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var f=void 0,h=/\s+!important$/,p=/\\!important$/,g=function(e,t){var n,r;for(r in t=(t+"").toLowerCase(),e)if(e.hasOwnProperty(r)&&t===(r+"").toLowerCase()){n=e[r];break}return n},m=function(e){for(var t=/\s/,n=(e=e.replace(/^\s\s*/,"")).length;t.test(e.charAt(n-=1)););return e.slice(0,n+1)},v=function(e){var t={},n=void 0;for(var r in e)e.hasOwnProperty(r)&&(t[(n=e[r]).name]=n);return t},y=function(e,t){for(var n=t.length,r=-1;n--;)if(e===t[n])return r=n;return r},b=function(e,t,n){return"object"!==(void 0===e?"undefined":o(e))&&"object"!==(void 0===t?"undefined":o(t))?null:"object"!==(void 0===t?"undefined":o(t))||null===t?e:("object"!==(void 0===e?"undefined":o(e))&&(e=t instanceof Array?[]:{}),function r(e,t,n,a,i){var s,l,c,u,d;if(i?(a.push(e),i.push(t)):(a=[e],i=[t]),t instanceof Array)for(s=0;s<t.length;s+=1){try{l=e[s],c=t[s]}catch(f){continue}"object"!==(void 0===c?"undefined":o(c))?n&&void 0===c||(e[s]=c):(null!==l&&"object"===(void 0===l?"undefined":o(l))||(l=e[s]=c instanceof Array?[]:{}),-1!==(d=y(c,i))?l=e[s]=a[d]:r(l,c,n,a,i))}else for(s in t){try{l=e[s],c=t[s]}catch(f){continue}null!==c&&"object"===(void 0===c?"undefined":o(c))?"[object Object]"===(u=Object.prototype.toString.call(c))?(null!==l&&"object"===(void 0===l?"undefined":o(l))||(l=e[s]={}),-1!==(d=y(c,i))?l=e[s]=a[d]:r(l,c,n,a,i)):"[object Array]"===u?(null!==l&&l instanceof Array||(l=e[s]=[]),-1!==(d=y(c,i))?l=e[s]=a[d]:r(l,c,n,a,i)):e[s]=c:e[s]=c}return e}(e,t,n),e)},x=function(e){var t={important:!1,str:""};return e?(e=e.toString(),h.test(e)?(e=e.replace(h,""),t.important=!0):(e=e.replace(p,"!imporant"),t.important=!1),t.str=e,t):t},w=function(e,t){var n,r,o,a=t.getAll();for(n in a)r=a[n].toString(),(o=x(r)).important?e[n.toLowerCase()]=o.str:void 0===e[n.toLowerCase()]&&(e[n.toLowerCase()]=o.str)},C=function(e){var t,n=e.sender,r=n.getChartData();r.error||((t=r&&(r.chart&&r.chart.theme||r.map&&r.map.theme))?(r.map&&(r.chart=r.map,delete r.map),f.themify(t,n,n.chartType(),r,"geo"===n.apiInstance.defaultSeriesType&&"geo")):n.jsVars&&n.jsVars.themeObject&&n.jsVars.themeObject.dispose())},_=function(e){function t(){return c(this,t),u(this,e.apply(this,arguments))}return d(t,e),t.prototype.configure=function(){!this.config.themeStore&&(this.config.themeStore={})},t.prototype.add=function(e){for(var t,n=0,r=e.length;n<r;n+=1)(t=e[n].name)&&(this.config.themeStore[t]=e[n])},t.prototype.themify=function(e,n,r,o,a){var i,c,u=n.jsVars,d=e.split(","),f=[],h=d.length;if(this.config.themeStore=v((0,s.getDepsByType)("theme")),h){for(c=0;c<h;c+=1)(i=this.config.themeStore[m(d[c])])&&f.push(t.evaluateThemeJSON(i.theme,n,r,a));f.length?(u.themeObject=new E(f,n,!1,o),t.applyTheme(n),this._attachedListeners||(n.addEventListener("chartTypeChanged",C),this._attachedListeners=!0)):(0,l.raiseWarning)(n,"14051100501","run","api.themes~themify()",'The theme "'+e+'" requested has not been registered.')}},t.evaluateThemeJSON=function(e,t,n,r){var a,i,s={},l=t.jsVars,c=function(e){var t,n;for(t in e)(n=e[t])instanceof Array?s[t]=b(s[t]||[],n):"object"===(void 0===n?"undefined":o(n))?s[t]=b(s[t]||{},n):s[t]=n};return n=n||t.chartType(),l.themeObject&&e!==l.themeObject&&(l.themeObject.dispose(),delete l.themeObject),c(g(e,"base")),r&&(a=g(e,r)),a&&c(a),n&&(i=g(e,n)),i&&c(i),s},t.applyTheme=function(e){var t=e.jsVars.themeObject,n=t.getThemedJSONData().data;n&&function r(e,t){var n,a,i,s,l,c,u=0,d=0;for(n in e)if((a=e[n])instanceof Array)for(c=a.length,l=0;l<c;l+=1)"object"===(void 0===(s=a[l])?"undefined":o(s))&&("category"===n?"true"===s.vline?(i=t.component("vline",u,s))&&(w(s,i),u+=1):(i=t.component("category",d,s,c))&&(w(s,i),d+=1):(i=t.component(n,l,s,c))&&(w(s,i),r(s,i)));else"object"===(void 0===a?"undefined":o(a))&&(i=t.component(n,null,a))&&(w(a,i),r(a,i))}(n,t)},t}(i["default"]),E=function(e){function t(n,r,o,a){c(this,t);var i,s=u(this,e.call(this)),l=0;for(s.themeArray=n,s.themeComponents={},s.base={},s.chartInstance=r,s.isChildInstance=Boolean(o),s.themedData=o?null:b({},a),s.length=n.length,i=n.length;l<i;l+=1)s.parse(n[l]);return s}return d(t,e),t.prototype.pushTheme=function(e){e&&(this.themeArray.push(e),this.parse(e),this.length+=1)},t.prototype.parse=function(e){var n,r,a,i,s,l=this.themeComponents,c=this.chartInstance,u=this.base;for(r in s=e)"string"==typeof s[r]||"number"==typeof s[r]?u[r]?(a=x(s[r]),i=x(u[r]),!a.important&&i.important||(u[r]=s[r])):u[r]=s[r]:(l[r]||(l[r]=[]),n=l[r],s[r]instanceof Array?n.push(b([],s[r])):"object"===o(s[r])?n.push(new t([s[r]],c,!0)):"function"==typeof s[r]&&n.push(s[r]))},t.prototype.merge=function(e){var t,n,r,o=this.base,a=e.base,i=this.themeComponents,s=e.themeComponents;for(r in a)t=x(o[r]),n=x(a[r]),t.important&&!n.important||(o[r]=a[r]);for(r in s)i[r]?i[r]=i[r].concat(s[r]):i[r]=[].concat(s[r]);this.length+=e.length},t.prototype.get=function(e){return this.base[e]},t.prototype.getAll=function(){return b({},this.base)},t.prototype.component=function(e,n,r,o){var a,i,s,l,c,u=this.themeComponents,d=this.chartInstance,f=new t([],d,!0);if(!(l=u[e]))return null;for(i=0,s=l.length;i<s;i+=1)"function"==typeof(c=l[i])?(n=n||0,f.pushTheme(c.call(d,n,r,o))):c instanceof Array?(n=n||0,(a=c[n%=c.length])instanceof t?f.merge(a):"function"==typeof a?f.pushTheme(a.call(d,n,r,o)):f.pushTheme(a)):c instanceof t?f.merge(c):f.pushTheme(c);return f},t.prototype.getThemedJSONData=function(){return{data:this.themedData}},t.prototype.dispose=function(){var e,t,n=this,r=n.themeComponents,o=n.chartInstance;for(e in r)if(t=r[e].length){for(;t--;)r[e][t].dispose&&r[e][t].dispose();delete r[e]}n.isChildInstance||o.removeEventListener("chartTypeChanged",C),n.themeComponents=null,n.chartInstance=null,n.base=null,n.themeArray=null,n.isChildInstance=null,n.dataWithoutTheme=null},t}(i["default"]);(f=new _).configure(),t["default"]={extension:function(e){e.addEventListener("beforedataload",function(t){var n,r,o,a=t.sender,i=v((0,s.getDepsByType)("theme")),l=a.getChartData(),c=e.options.defaultTheme,u=l&&(l.chart&&l.chart.theme||l.map&&l.map.theme),d=(c||u)&&(c||"")+","+(u||""),h=d&&d.split(","),p=h&&h.length,g=!1;for(r=0;r<p;r++)o=m(h[r]),i&&""!==o&&i.hasOwnProperty(o)&&(g=!0);g?(n=a.chartType(),l.map&&(l.chart=l.map,delete l.map),f.themify(d,a,n,l,"geo"===a.apiInstance.defaultSeriesType&&"geo")):a.jsVars&&a.jsVars.themeObject&&(a.jsVars&&a.jsVars.themeObject.dispose(),a.jsVars&&delete a.jsVars.themeObject)})},name:"ThemeEngine",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0; +/** ! + * @license FusionCharts JavaScript Library + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + */ +var r={name:"default",theme:{base:{chart:{labelDisplay:"stagger !important",caption:"Theme Caption \\!important",canvasBgColor:"#56EF22",borderThickness:"5 !important",borderColor:"#E60539",baseFontColor:"#781129"},categories:[{fontColor:"#0F4F40",fontSize:15,category:function(e){return{showLabel:e%2?0:1}},vline:{color:"#000000",thickness:2}}],dataset:[{color:"#8C3146",data:function(e,t){return 8==e&&(t.value=""),{color:Number(t.value)<32e3?"#8C3146":"#FF0000",alpha:"100"}}}],trendlines:[{line:function(e){return e?{color:"#ff0000",thickness:3}:{color:"#ffff00",thickness:3}}}]},pie2d:{chart:{bgColor:"#FF0000"}},msline:{chart:{canvasBgColor:"#ff0000"}},geo:{chart:{canvasBgColor:"#0000ff"}},world:{chart:{canvasBgColor:"#00ff00"}}}};t["default"]={extension:r,name:"DefaultTheme",type:"theme"}},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(118),i=n(122),s=n(172),l=(r=s)&&r.__esModule?r:{"default":r},c=n(129);var u=void 0,d=void 0,f=/^#?[0-9a-f]{6}/i,h=/FFFFFF/i,p=/255,255,255/,g=function(e){return"#"+("000000"+((e=e.replace("rgba(","").split(","))[0]<<16|e[1]<<8|e[2]).toString(16)).slice(-6)},m=function(e,t){var n,r,o=[];if("number"==typeof e)return t;for(r=e.split&&e.split(","),n=0;n<r.length;n++)o.push(t);return o.join()},v=function(e){var t;return/rgb/.test(e)?(t=e.match(/[\d\.]+\)/g),parseFloat(t&&t[0])):e.FCcolor?(0,i.getFirstAlpha)(e.FCcolor.alpha):void 0},y=function(e){e.forEach(function(e){e.removeStateCosmetics("highlight")})},b=function(e,t,n,r,o){var i,s,l,c,u,d,f,h,p,m;i=g(r.color),l=100*v(r.color),s=o?(0,a.pluck)(n.valuefontcolor,i):i,c=o?(0,a.pluck)(n.valuefontalpha,n.alpha,l):l,i=""===r.backgroundColor?"":g(r.backgroundColor),l=""===r.backgroundColor?0:100*v(r.backgroundColor),isNaN(l)&&(l=0),d=o?(0,a.pluck)(n.valuebgcolor,i):i,u=o?(0,a.pluck)(n.valuebgalpha,n.alpha,l):l,p=(0,a.toRaphaelColor)({color:d,alpha:u}),i=""===r.borderColor?"":g(r.borderColor),l=""===r.borderColor?"":100*v(r.borderColor),isNaN(l)&&(l=0),f=o?(0,a.pluck)(n.valuebordercolor,i):i,h=o?(0,a.pluck)(n.valueborderalpha,n.alpha,l):l,m=(0,a.toRaphaelColor)({color:f,alpha:h}),t&&e.setAnimation({el:t,label:"highlightedDataLabel",attr:{fill:(0,a.toRaphaelColor)({color:s,alpha:c}),"text-bound":[p,m,r.borderThickness,r.borderPadding,r.borderRadius,r.borderDash]}})},x=function(e){var t,n,r,o,a,i=e.split(","),s={};for(t=0,n=i.length;t<n;t++)o=(r=i[t].split("="))[0],a=r[1],s[o]=a;return s},w=function(e,t,n){var r,o,i=t.color;return/rgb/.test(e)?(r=(0,a.pluck)(t.alpha,100*v(e)),/rgb/.test(i)&&(i=g(i)),o=n?(0,a.toRaphaelColor)({color:(0,a.pluck)(i,g(e)),alpha:r}):e):e.FCcolor?o=n?(0,a.toRaphaelColor)(function(e,t){var n,r,o={};for(n in e)"alpha"===n?o[n]=t.alpha?m(e[n],t.alpha):e[n]:"color"===n?(-1!==e[n].indexOf(",")&&t.color&&(r=t.color+","+e[n].substring(e[n].indexOf(",")+1)),o[n]=(0,a.pluck)(r||t.color,e[n])):o[n]=e[n];return o}(e.FCcolor,t)):(0,a.toRaphaelColor)(e.FCcolor):f.test(e.color||e)&&(o=n?(0,a.toRaphaelColor)({color:(0,a.pluck)(t.color,e.color,e),alpha:(0,a.pluck)(t.alpha,e.alpha)}):(0,a.toRaphaelColor)({color:e.color||e,alpha:e.alpha})),o},C=function(e,t,n,r,o,s){var l,c,u,d,f,h,p,m,y={},b={};o?(l=(0,i.getColumnColor)(r.color||n.upperColorArr[0].FCcolor.color,r.alpha.toString(),n.upperColorArr[0].FCcolor.ratio,n.upperColorArr[0].FCcolor.angle,s,r.bordercolor||g(n.upperBoxBorder.color),r.borderalpha&&r.borderalpha.toString()||(100*v(n.lowerBoxBorder.color)).toString()),b=(0,a.toRaphaelColor)(l[0]),c=(0,i.getColumnColor)(r.color||n.lowerColorArr[0].FCcolor.color,r.alpha.toString(),n.lowerColorArr[0].FCcolor.ratio,n.lowerColorArr[0].FCcolor.angle,s,r.bordercolor||g(n.lowerBoxBorder.color),r.borderalpha&&r.borderalpha.toString()||(100*v(n.lowerBoxBorder.color)).toString()),y=(0,a.toRaphaelColor)(c[0]),u=w(n.median.color,r,o),h=w(n.lowerQuartile.color,r,o),p=w(n.upperQuartile.color,r,o)):(b=(0,a.toRaphaelColor)(n.upperColorArr[0]),y=(0,a.toRaphaelColor)(n.lowerColorArr[0]),u=n.median.color,d=n.upperBoxBorder.color,f=n.lowerBoxBorder.color,p=n.upperQuartile.color,h=n.lowerQuartile.color),m=t.upperBoxElem,e.setAnimation({el:m,label:"highlightedBoxAnsWhiskerPlot",attr:{fill:b,"drop-shadow":m.attrs["drop-shadow"]&&"none"!==m.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+v(b)+")",m.attrs[4],m.attrs["drop-shadow"][5]]:"none"}}),m=t.lowerBoxElem,e.setAnimation({el:m,label:"highlightedBoxAnsWhiskerPlot",attr:{fill:y,"drop-shadow":m.attrs["drop-shadow"]&&"none"!==m.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+v(y)+")",m.attrs[4],m.attrs["drop-shadow"][5]]:"none"}}),m=t.lowerBoxBorderEle,e.setAnimation({el:m,label:"highlightedBoxAnsWhiskerPlot",attr:{stroke:f}}),t.upperBoxBorderEle&&e.setAnimation({el:t.upperBoxBorderEle,label:"highlightedBoxAnsWhiskerPlot",attr:{stroke:d}}),t.lowerQuartileEle&&e.setAnimation({el:t.lowerQuartileEle,label:"highlightedBoxAnsWhiskerPlot",attr:{stroke:h}}),t.upperQuartileEl&&e.setAnimation({el:t.upperQuartileEl,label:"highlightedBoxAnsWhiskerPlot",attr:{stroke:p}}),t.midLineElem&&e.setAnimation({el:t.midLineElem,label:"highlightedBoxAnsWhiskerPlot",attr:{stroke:u}})},_=function(e,t,n){var r,o,i,s,l,c,u,d,f,h=e.getFromEnv("chart"),p=e.getFromEnv("animationManager"),g=(h.config,h.config.dataLabelStyle),m=e.components.data;for(r=0,o=m.length;r<o;r++)if(u=m[r])for(c in i=u.graphics,f=(s=u.config.anchorProps).enabled,l={fillColor:{FCcolor:{alpha:n&&f?(0,a.pluck)(t.anchorbgalpha,t.alpha,s.bgAlpha):s.bgAlpha,color:n&&f?(0,a.pluck)(t.anchorbgcolor,t.color,s.bgColor):s.bgColor}},borderColor:{FCcolor:{alpha:n&&f?(0,a.pluck)(t.borderalpha,t.alpha,s.borderAlpha):s.borderAlpha,color:n&&f?(0,a.pluck)(t.anchorbordercolor,t.color,s.borderColor):s.borderColor}},imageAlpha:n?t.alpha:s.imageAlpha,imageScale:s.imageScale},i)switch((d=!c.match(/error/gi)&&i[c])&&d.type){case"path":p.setAnimation({el:d,label:"highlightedAnchorPlot",attr:{fill:(0,a.toRaphaelColor)(l.fillColor),stroke:(0,a.toRaphaelColor)(l.borderColor)}});break;case"image":p.setAnimation({el:d,label:"highlightedAnchorImagePlot",attr:{opacity:l.imageAlpha/100}});break;case"text":b(p,d,t,g,n)}},E=function(e,t,n,r,o){var i,s=e.getStateCosmetics("default").symbol||{},l=s.fill,c=s.stroke,u=o?(0,a.pluck)(r.color,g(n.text.fill)):g(n.text.fill),d=t.legendItemLine,m=n.symbol.stroke,v=e.getFromEnv("animationManager");d&&m&&(f.test(m)?v.setAnimation({el:d,label:"highlightedLegendItem",attr:{stroke:o?(0,a.toRaphaelColor)({color:(0,a.pluck)(r.color,m),alpha:r.alpha}):m}}):(i=w(m,r,o),v.setAnimation({el:d,label:"highlightedLegendItem",attr:{stroke:i}}))),l&&(l=l.match(f)?o&&!h.test(l)?(0,a.toRaphaelColor)({color:r.color||l,alpha:r.alpha}):l:p.test(l)?l:w(l,r,o)),c&&(c=f.test(c)?o&&!h.test(c)?(0,a.toRaphaelColor)({color:r.color||c,alpha:r.alpha}):c:o&&!p.test(c)&&r.color?(0,a.toRaphaelColor)({color:r.color,alpha:r.alpha}):c),e.setStateCosmetics("highlight",{symbol:{fill:l||"none",stroke:c||"none",opacity:(o?r.alpha:100)/100},text:{fill:(0,a.toRaphaelColor)({color:u,alpha:o?r.alpha:100})}}),e.hasState("hidden")||e.setLegendState("highlight",!0)},k=function(e,t){var n=e.getFromEnv("legend").getItem(t);return n&&n.getGraphicalElement()},S={area:function(e,t,n){var r,o,i,s,l,c,u,d,f,h,p,g,m,y,b,w=this.getFromEnv("chart"),C=this.getFromEnv("animationManager"),S=w.config,A=w.getFromEnv("legend").getChildren("legendItem")||[],T=arguments[4],M=A.length,O=x(e),L=k(w,T),I=S.dataLabelStyle,F=this.getContainer("labelGroup"),N=this.config,D=(N.shadow||{}).opacity>0;if(!n&&this.getState("visible")){for(O.alpha=O.alpha||30,o=0;o<M&&(r=A[o]||{}).getId()!==T;o++);F&&C.setAnimation({el:F,label:"highlightedGroup",attr:{opacity:t?O.alpha/100:v(I.color)}}),s=N.plotbordercolor,f=N.plotborderalpha,y=N.plotfillalpha,i=N.plotgradientcolor,g=this.getGraphicalElement("lineElement")||this.getGraphicalElement("splineElement"),u=t?(0,a.pluck)(O.bordercolor,O.color,s):s,O.color&&(h=O.color+(i?","+i:"")),p=N.fillColor.color,l=t?(0,a.pluck)(h,p):p,m=N.plotfillangle,c=t?O.alpha:y,d=t?(0,a.pluck)(O.borderalpha,O.alpha):f,b=!!D&&(t?O.alpha/100:c/100),C.setAnimation({el:g,label:"highlightedAreaPlot",attr:{fill:(0,a.toRaphaelColor)({color:l,alpha:c,angle:m}),stroke:(0,a.toRaphaelColor)({color:u,alpha:d})}}),g.shadow(b),L&&E(r,L,r.parseLegendCosmetics(),O,t),_(this,O,t)}},bubble:function(e,t,n){var r,o,s,l,c,u,d,f,h,p,g,m,y=this.getFromEnv("chart"),w=this.getFromEnv("animationManager"),C=y.config,_=y.getFromEnv("legend").getChildren("legendItem")||[],S=_.length,A=arguments[4],T=C.dataLabelStyle,M=k(y,A),O=this.getContainer("labelGroup"),L=x(e);if(!1===n&&this.getState("visible")){for(L.alpha||(L.alpha=30),s=this.components.data||[],o=0;o<S&&(r=_[o]||{}).getId()!==A;o++);for(E(r,M,r.parseLegendCosmetics(),L,t),O&&w.setAnimation({el:O,label:"highlightedGroup",attr:{opacity:t?L.alpha/100:v(T.color)}}),o=0,S=s.length;o<S;o++)(l=s[o])&&(g=l.graphics,u=(c=l.config).colorObj,f=c.is3D,d=g.element,m=g.label,f?(p=t?(0,i.getPointColor)((0,a.pluck)(L.color,u.FCcolor.color),(0,a.pluck)(L.alpha,(0,i.getFirstAlpha)(u.alpha))):u,p=(0,a.toRaphaelColor)(p)):(p=t?(0,a.pluck)(L.color,u.color):u.color,h=t?L.alpha:u.alpha,p=(0,a.toRaphaelColor)({color:p,alpha:h})),d&&w.setAnimation({el:d,label:"highlightedBubblePlot",attr:{fill:p}}),m&&b(w,m,L,T,t))}},pie:function(e,t,n,r){var o,i,s,c,u,d,f,h,p,g,m,y,w,C,_=r.getFromEnv("chart"),S=r.getFromEnv("animationManager"),A=_.getFromEnv("legend"),T=this,M={},O=arguments[4],L=A.getChildren("legendItem")||[],I=x(e);if(!1===n){for(I.alpha||(I.alpha=30),i=this.graphics.element,s=this.config,m=0,g=L.length;m<g&&(w=L[m]).getId()!==O;m++);y=k(_,O),E(w,y,w.parseLegendCosmetics(),I,t),u=s.color.color,_=(T=i.data("plotItem")).chart,o=T.style,c=90,f=_.config.is3D,(d=T.center)&&(M={cx:d[0],cy:d[1],r:T.radius}),u=t?(0,l["default"])((0,a.pluck)(I.color,u),I.alpha,c):s.color,C=t?I.alpha:u.alpha,u=(0,a.extend2)(u,M),f?i&&S.setAnimation({el:i,label:"highlightedPiePlot",attr:{color:u.color.split(",")[0],alpha:C}}):i&&S.setAnimation({el:i,label:"highlightedPiePlot",attr:{fill:(0,a.toRaphaelColor)(u)}}),h=this.graphics.label,p=this.graphics.connector,h&&b(S,h,I,o,t),p&&S.setAnimation({el:p,label:"highlightedPieConnectorPlot",attr:{opacity:t?I.alpha/100:v(o.color)}})}},line:function(e,t,n){var r,i,s,l,c,u,d,f=this.getFromEnv("chart"),h=this.getFromEnv("animationManager"),p=f.config,g=f.getFromEnv("legend").getChildren("legendItem")||[],m=g.length,y=arguments[4],b=p.dataLabelStyle,w=x(e),C=k(f,y),S=this.getContainer("labelGroup"),A=this.getContainer("errorPlotGroup"),T=this.config,M=T.linecolor,O=T.alpha||T.lineAlpha,L=(T.shadow||{}).opacity>0,I=this.config.lineOb,F="";if(!n&&this.getState("visible")){for(w.alpha||(w.alpha=30),c=0;c<m&&(r=g[c]||{}).getId()!==y;c++);if(A&&(i=T.errorBarColor&&v(T.errorBarColor),s=t?(0,a.pluck)(w.alpha/100,i):i,h.setAnimation({el:A,label:"highlightedGroup",attr:{opacity:s}})),S&&h.setAnimation({el:S,label:"highlightedGroup",attr:{opacity:t?w.alpha/100:v(b.color)}}),l=this.getGraphicalElement("lineElement"),M=t?(0,a.pluck)(w.color,M):M,O=t?(0,a.pluck)(w.alpha,O):O,u=!!L&&(t?w.alpha/100:O/100),l&&h.setAnimation({el:l,label:"highlightedLinePlot",attr:{stroke:(0,a.toRaphaelColor)({color:M,alpha:O})}}),l&&l.shadow(u),"object"===(void 0===I?"undefined":o(I))&&I)for(F in I)(d=I[F]&&I[F].el)&&h.setAnimation({el:d,label:"highlightedLinePlot",attr:{stroke:t?M:I[F].attr.stroke,"stroke-opacity":O/100}}),d&&d.shadow(u);C&&E(r,C,r.parseLegendCosmetics(),w,t),_(this,w,t)}},boxandwhisker2d:function(e,t,n){var r,o,a,i,s,l,c=this.config,u=this.getFromEnv("chart"),d=this.getFromEnv("animationManager"),f=c.isRoundEdges,h=arguments[4],p=k(u,h),g=this.getContainer("lowerWhiskerGroup"),m=this.getContainer("upperWhiskerGroup"),v=this.getContainer("labelGroup"),y=u.getFromEnv("legend").getChildren("legendItem")||[],b=y.length,w=x(e);if(!1===n&&this.getState("visible")){for(w.alpha||(w.alpha=30),r=0;r<b&&(o=y[r]||{}).getId()!==h;r++);for(E(o,p,o.parseLegendCosmetics(),w,t),g&&d.setAnimation({el:g,label:"highlightedGroup",attr:{opacity:t?w.alpha/100:1}}),m&&d.setAnimation({el:m,label:"highlightedGroup",attr:{opacity:t?w.alpha/100:1}}),v&&d.setAnimation({el:v,label:"highlightedGroup",attr:{opacity:t?w.alpha/100:1}}),r=0,b=(l=this.components.data).length;r<b;r++)s=(i=l[r]).config,a=i.graphics,C(d,a,s,w,t,f)}},heatmap:function(e,t,n,r){var o,i,s,l,c,u,d,f,h,p,m,y=r.getFromEnv("chart"),w=r.getFromEnv("animationManager"),C=y.config,_=C.dataLabelStyle,S=y.getFromEnv("legend"),A=arguments[4],T=x(e),M=S.getChildren("legendItem")||[];if(!n&&r.getState("visible")&&!1!==this.visible){for(T.alpha||(T.alpha=t?30:100),C=this.config,h=0,f=M.length;h<f&&(m=M[h]).getId()!==A;h++);for(u in p=k(y,A),E(m,p,m.parseLegendCosmetics(),T,t),c=g(C.color),l=v(C.color),o=t?(0,a.pluck)(T.color,c):c,i=t?T.alpha:100*l,(s=(d=this.graphics).element)&&w.setAnimation({el:s,label:"highlightedHeatmapPlot",attr:{fill:(0,a.toRaphaelColor)({color:o,alpha:i})}}),d)"text"===(s=d[u]).type&&b(w,s,T,_,t)}},funnelpyramid:function(e,t,n,r){var o,i,s,l,c,u,d,f,h,p,m,y,w,C,_,S=r.getFromEnv("chart"),A=r.getFromEnv("animationManager"),T=S.getFromEnv("legend"),M=x(e),O=T.getChildren("legendItem")||[],L=arguments[4];if(!1===n){for(M.alpha||(M.alpha=30),l=this,w=0,y=O.length;w<y&&(_=O[w]).getId()!==L;w++);C=k(S,L),E(_,C,_.parseLegendCosmetics(),M,t),i=l.style,m=l.color,c=g(m),p=v(m),u=t?(0,a.pluck)(M.color,c):c,d=t?M.alpha:100*p,s=this.getGraphicalElement("graphic"),f=this.getGraphicalElement("dataLabel"),h=this.getGraphicalElement("connector"),o=this.style,s&&A.setAnimation({el:s,label:"highlightedFunnelPyramidPlot",attr:{fill:(0,a.toRaphaelColor)({color:u,alpha:d})}}),f&&b(A,f,M,o,t),h&&A.setAnimation({el:h,label:"highlightedFunnelPyramidConnectorPlot",attr:{opacity:t?M.alpha/100:v(i.color)}})}},"default":function(e,t,n){var r,o,s,l,c,u,d,f,h,p,g,m,y,w,C,_=this.config,S=this.getFromEnv("chart"),A=this.getFromEnv("animationManager"),T=S.config,M=T.dataLabelStyle,O=T.useroundedges,L=S.config.is3D,I=x(e),F=arguments[4],N=k(S,F),D=this.getContainer("labelGroup"),P=this.getContainer("errorPlotGroup"),R="",j=S.getFromEnv("legend").getChildren("legendItem")||[],V=j.length,B=_.showShadow;if(!1===n&&!0===this.getState("visible")){for(I.alpha||(I.alpha="30"),g=this.components.data||[],o=0;o<V&&(w=j[o]||{}).getId()!==F;o++);for(N&&E(w,N,w.parseLegendCosmetics(),I,t),D&&A.setAnimation({el:D,label:"highlightedGroup",attr:{opacity:t?I.alpha/100:v(M.color)}}),P&&(c=_.errorBarColor&&v(_.errorBarColor),u=t?(0,a.pluck)(I.alpha/100,c):c,A.setAnimation({el:P,label:"highlightedGroup",attr:{opacity:u}})),o=0,V=g.length;o<V;o++)(m=g[o])&&m.graphics&&(p=(T=m.config).colorArr[0],C=(s=T.colorArr[1]).FCcolor.alpha,R=-1!==(f=(r=p.FCcolor.color).indexOf(","))&&I.color?I.color+r.substring(f):(0,a.pluck)(I.color,r),h=L?C:(0,a.pluck)(I.borderalpha,I.alpha,C),0===(0,a.pluckNumber)(C)&&(h="0"),d=t?(0,i.getColumnColor)(R,I.alpha,p.FCcolor.ratio,p.FCcolor.angle,O,(0,a.pluck)(I.bordercolor,s.FCcolor.color),h,!1,L):[p,s],(l=m.graphics.element)&&(r=(0,a.toRaphaelColor)(d[0]),s=(0,a.toRaphaelColor)(d[1]),A.setAnimation({el:l,label:"highlightedDefaultPlot",attr:{stroke:s,fill:r}}),l.shadow({opacity:B?(0,i.getFirstAlpha)(d[0].alpha)/100:0})),y=m.graphics.label,b(A,y,I,M,t))}}},A=function(e){e&&d.add(e)};t["default"]={extension:function(e){var t=function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.effectStore={},this.eventHandlers={}}return t.prototype.add=function(e){this.effectStore[e.name]=e},t.prototype.attachEventHandlers=function(t,n){this.eventHandlers[t]||(this.eventHandlers[t]={},this.eventHandlers[t].listenerFn=e.addEventListener(t,n))},t.prototype.applyEffect=function(e,t,n){var r,o,i,s,l,c,d,f,h,p,g,m,v=this.effectStore,b=e.getFromEnv("chart-attrib"),x=e.config.defaultDatasetType,w=b.plothighlighteffect&&b.plothighlighteffect.toLowerCase(),C=e.getDatasets(),_=e.config.isSingleSeries?C[0].components.data:C,E=(0,a.pluck)(t.itemId,t.legendItemId,t.legendItemIndex),k="";if(y(e.getFromEnv("legend").getChildren("legendItem")),"funnel"!==e.getName()&&"Pyramid"!==e.getName()||(_=C[0].getChildren("data")),e.getFromEnv("animationManager").setAnimationState("plotHighlighter"),w&&(m=(w=w.replace(/\s+/g,"").split("|"))[0],k=w[1]||""),m&&v[m])if("HeatMap"===e.getName())for(r=e.getFromEnv("colorRange"),g=function(e){var t=d.getChildren("legendItem"),n=void 0,r=void 0,o=t&&t.length;for(n=0;n<o;++n)if(t[n].config.datasetObj.code===e){r=t[n].getId();break}return r},h=(d=e.getFromEnv("legend")).getItem(E).config.datasetObj,l=0;l<_.length;l++)o=(s=_[l]).config.value,(p=r.getColorObj(o)).outOfRange||(h.code===p.code?v[m][x].call(s,k,n,!0,C[0],E):v[m][x].call(s,k,n,!1,C[0],g(p.code)));else for(l=0,f=_.length;l<f;l++)x=(x=(s=_[l]).getName&&s.getName()||x).toLowerCase(),(i=(0,a.pluck)(s.config.itemId,s.config.legendItemId))!==u&&(c=i===E,v[m][x]?v[m][x].call(s,k,n,c,C[0],i):v[m]["default"].call(s,k,n,c,C[0],i))},t}();(d=new t).attachEventHandlers("legenditemrollover",function(e,t){var n=e.sender.apiInstance;!1!==n.hasInteractiveLegend&&!1!==n.highlightEnabled&&d.applyEffect(n,t,!0)}),d.attachEventHandlers("legenditemrollout",function(e,t){var n=e.sender.apiInstance;!1!==n.hasInteractiveLegend&&!1!==n.highlightEnabled&&d.applyEffect(n,t,!1)}),d.attachEventHandlers("legenditemclicked",function(e,t){var n=e.sender.apiInstance;n.addJob("plothighlighteffect",function(){!1!==n.hasInteractiveLegend&&!1!==n.highlightEnabled&&d.applyEffect(n,t,!0)},c.priorityList.postRender)}),A({name:"fadeout",area:S.area,radar:S.area,bubble:S.bubble,pie2d:S.pie,line:S.line,spline:S.line,splinearea:S.area,pie3d:S.pie,zoomline:S.line,funnelpoint:S.funnelpyramid,pyramidpoint:S.funnelpyramid,scatter:S.line,selectscatter:S.line,dragline:S.line,dragarea:S.area,realtimearea:S.area,realtimeline:S.line,realtimelinedy:S.line,realtimestackedarea:S.area,errorline:S.line,errorscatter:S.line,stepline:S.line,doughnut2d:S.pie,doughnut3d:S.pie,heatmap:S.heatmap,boxandwhisker2d:S.boxandwhisker2d,multiaxisline:S.line,"default":S["default"]})},name:"PlotHighlighter",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(122),o=n(118);t["default"]=function(e,t,n,a){var i,s,l,c,u,d;return e=(0,r.getFirstColor)(e),t=(0,r.getFirstAlpha)(t),n<100&&o.hasSVG?a?(u=(0,r.getDarkColor)(e,Math.floor(100*(85-.2*(100-n)))/100),d=(0,r.getLightColor)(e,Math.floor(100*(100-.5*n))/100),i={color:u+o.COMMASTRING+d+o.COMMASTRING+d+o.COMMASTRING+u,alpha:t+o.COMMASTRING+t+o.COMMASTRING+t+o.COMMASTRING+t,radialGradient:!0,gradientUnits:"userSpaceOnUse",r:n}):(s=Math.floor(.85*(100-.35*n)*100)/100,l=(0,r.getDarkColor)(e,s),c=Math.floor(.5*(100+n)*100)/100,i={color:(0,r.getLightColor)(e,c)+o.COMMASTRING+l,alpha:t+o.COMMASTRING+t,ratio:n+","+(100-n),radialGradient:!0,gradientUnits:"userSpaceOnUse"}):i={color:e+o.COMMASTRING+e,alpha:t+o.COMMASTRING+t,ratio:"0,100"},i}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(174),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);var s="__FC_tooltipText",l=function(e,t,n){n=(0,i.getTouchEvent)(n);var r=t.universe.getBoundingClientRect(),o=n.clientX,a=n.clientY;o-=r.left,a-=r.top,o+=11,a+=11,u._draw.call(t,o,a,this.data(s),e)},c=function(e){u._hide(e)},u=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var n=this,r=n.config={};n.universe=t,n.toolTips={implicit:[],explicit:[]},n.hideImplicitToolTip=function(t){var o=r.lastActiveToolip;o&&t.target!==o.getData("targetElement").node&&(e._hide(o),n.config.lastActiveToolip=undefined)}}return e.prototype._createToolTip=function(e){var t;return t=new a["default"](this.universe),this.toolTips[e].push(t),t},e.prototype.enableToolTip=function(e,t){var n,r=this,o=r.toolTips.implicit,a=o.length,i=r.config,u=void 0;return t?e.data(s)?(a>0&&((u=o[a-1]).setUniverse(this.universe),u.getData("active")&&u.show(t)),e.data(s,t),r):(u=r._getAvailableToolTip("implicit"),r.disableToolTip(e),e.data(s,t),e.data("__FC_onTooltipMove",l.bind(e,u,r)),e.data("__FC_onTooltipOut",c.bind(e,u)),e.data("__FC_onTooltipOver",(n=e,function(t){r.draw(t,e.data(s),u),u.setData("targetElement",n),i.lastActiveToolip=u})),e.on("fc-mousemove",e.data("__FC_onTooltipMove")),e.on("fc-mouseout",e.data("__FC_onTooltipOut")),e.on("fc-mouseover",e.data("__FC_onTooltipOver")),r):(r.disableToolTip(e),r)},e.prototype.disableToolTip=function(e){var t=e.data("__FC_onTooltipOut"),n=e.data("__FC_onTooltipMove"),r=e.data("__FC_onTooltipOver");return n&&e.off("fc-mousemove",n),t&&e.off("fc-mouseout",t),r&&e.off("fc-mouseover",r),e.removeData(s),this},e.prototype.draw=function(t,n,r){var o=this.universe.getBoundingClientRect(),a=void 0,s=void 0;return a=(t=(0,i.getTouchEvent)(t)).clientX,s=t.clientY,(r=r||this._getAvailableToolTip("explicit")).setStyle(this.config.tooltipStyle),r.setUniverse(this.universe),a-=o.left,s-=o.top,a+=11,s+=11,e._draw.call(this,a,s,n,r),r},e.prototype.drawAt=function(t,n,r,o){return(o=o||this._getAvailableToolTip("explicit")).setStyle(this.config.tooltipStyle),e._draw.call(this,t,n,r,o),o},e._draw=function(e,t,n,r){r.setStyle(this.config.tooltipStyle),r.show(n),r.update(e,t)},e.prototype._getAvailableToolTip=function(e){for(var t=this.toolTips[e],n=void 0,r=0,o=t.length;r<o;r++)if(!1===(n=t[r]).getData("active"))return n;return this._createToolTip(e)},e.prototype.setStyle=function(e){var t=this.config,n=t.tooltipStyle||(t.tooltipStyle={});for(var r in e)n[r]=e[r]},e.prototype.hide=function(t){return e._hide(t,"dispose"),this},e.prototype.hideAll=function(){var t,n;for(t in this.toolTips)for(n=0;n<this.toolTips[t].length;n++)e._hide(this.toolTips[t][n],"dispose")},e._hide=function(e,t){e&&(t?e.dispose():e.hide())},e}();t["default"]={extension:u,name:"ToolTipController",type:"plugin"}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118);var o=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.text="",this.x=0,this.y=0,this.visibleWidth=0,this.universeBounds=t.getBoundingClientRect(),this.data={active:!1,target:!1},this.element=this.createElement(t)}return e.prototype.setUniverse=function(e){this.universeBounds=e.getBoundingClientRect()},e.prototype.createElement=function(e){var t=document.createElement("div");return t.setAttribute("class","fc__tooltip"),t.className+=" fusioncharts-div",t.innerHTML=this.text,t.style.color="#545454",t.style.padding="3px",t.style.fontSize="10px",t.style.overflow="hidden",t.style.borderWidth="1px",t.style.borderColor="#000000",t.style.whiteSpace="nowrap",t.style.position="absolute",t.style.borderStyle="solid",t.style.backgroundColor="#ffffff",t.style["user-select"]="none",t.style["-ms-user-select"]="none",t.style["-moz-user-select"]="none",t.style["-webkit-user-select"]="none",t.style["-webkit-touch-callout"]="none",t.style.top=this.x+"px",t.style.left=this.y+"px",t.style.visibility="hidden",t.style["pointer-events"]="none",e.appendChild(t),t},e.prototype.setData=function(e,t){this.data[e]=t},e.prototype.getData=function(e){return this.data[e]},e.prototype.setStyle=function(e){var t=this.element;t.style.color=e.fontColor,r.hasSVG?(t.style.backgroundColor=e.bgColor,t.style.borderColor=e.borderColor,e.showToolTipShadow?t.style.boxShadow="1px 1px 3px rgba(64,64,64,0.4)":t.style.boxShadow="none"):(t.style.backgroundColor=e.rawBgColor,t.style.borderColor=e.rawBorderColor),t.style.fontFamily=e["font-family"],t.style.fontSize=e["font-size"]+"px",t.style.borderWidth=e.borderThickness+"px",t.style.borderRadius=e.borderRadius+"px",t.style.padding=e.padding+"px"},e.prototype.show=function(e){this.text!==e&&(this.text=e,this.element.innerHTML=this.text),this.setData("active",!0),"visible"!==this.element.style.visibility&&(this.element.style.visibility="visible"),this.element.style["will-change"]="left, top",this.element.style["max-width"]=this.universeBounds.right-this.universeBounds.left-24+"px"},e.prototype.update=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.x,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.y,n=this.universeBounds,r=n.left+12,o=n.right-12,a=n.top+12,i=n.bottom-12,s=this.universeBounds.right-this.universeBounds.left-24,l=this.element.offsetWidth,c=this.element.offsetHeight;e+l+r<o?(this.element.style.left=e+"px",this.element.style.whiteSpace="nowrap"):l<s?this.element.style.left=o-l-r+"px":(this.element.style.left="12px",this.element.style.whiteSpace="normal"),this.element.style.top=t+a+c<i?t+"px":i-c-a+"px"},e.prototype.hide=function(){this.y=0,this.x=0,this.x="",this.setData("active",!1),this.setData("target",!1),this.element.style.visibility="hidden",this.element.style["will-change"]="auto",this.element.innerHTML="",this.text=void 0},e.prototype.dispose=function(){this.hide()},e}();t["default"]=o},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118),o={treemap:!0,scatter:!0,bubble:!0,errorscatter:!0,errorline:!0,errorbar2d:!0,candlestick:!0,stackedcolumn3d:!0,stackedbar3d:!0,mscolumnline3d:!0,mscombi3d:!0,mscolumn3dlinedy:!0,stackedcolumn3dline:!0,stackedcolumn3dlinedy:!0},a=function(e){return o[e.getName().toLowerCase()]},i=function(e,t){return e+'<div style="margin: 0;">'+t+"</div>"},s=function(e,t){return t.hovered?e+1:e},l=function(e){return e.anchorProps?e.anchorProps.borderColor:e.originalPlotColor||e.plotColor||e.color};function c(e){var t=e.sender.getFromEnv("chart"),n=t.config.tooltipgrayoutcolor,o=t.config.plotcolorintooltip,a=t.getFromEnv("toolTipController"),c=t.getDatasets().sort(function(e,t){return t.getJSONIndex()-e.getJSONIndex()}),u=t.getFromEnv("consolidated-tooltip"),d=(0,r.getMouseCoordinate)(e.sender.getFromEnv("chart-container"),e.originalEvent,t),f=d.chartX,h=d.chartY,p=!1,g=c.map(function(e){return e.getPlotInCategoryAt(f,h)}).filter(Boolean),m=g.reduce(s,0),v=g.map(function(e){var t=e.pointObj.config,a=t.finalTooltext||t.toolText,i=l(t);return m>0?!p&&e.hovered?(a='<div style="display: inline-block;">'+a+"</div>",p=!0):(i=n,a='<div style="color: '+(0,r.hashify)(n)+'; display: inline-block;">'+a+"</div>"):a='<div style="display: inline-block;">'+a+"</div>",o?'<div style="color: '+(0,r.hashify)(i)+'; display: inline-block;">■ </div>'+a:a}),y=[].concat(v).reverse().reduce(i,"");this.isWithinCanvas(f,h)&&y?u?a.draw(e.originalEvent,y,u):t.addToEnv("consolidated-tooltip",a.draw(e.originalEvent,y)):u&&a.hide(u)}function u(e){var t=e.sender.getFromEnv("chart"),n=t.getFromEnv("toolTipController"),r=t.getFromEnv("consolidated-tooltip");r&&n.hide(r)}function d(e){var t=this.apiInstance,n=t.getDatasets().sort(function(e,t){return e.getJSONIndex()-t.getJSONIndex()}),o=t.config.plotcolorintooltip,a=t.getFromEnv("toolTipController"),s=t.getFromEnv("consolidated-tooltip"),c=n.map(function(t){var n=t.components.data;return n[e]&&n[e]}).filter(Boolean),u=c[0]&&{x:c[0].config._Px-c[0]._width,y:c[0].config._Py,width:c[0].config._width},d=c.map(function(e){var t=e.config,n=t.finalTooltext||t.toolText,a=l(t);return o?'<div style="color: '+(0,r.hashify)(a)+'; display: inline-block;">■ </div><div style="display: inline-block;">'+n+"</div>":'<div style="display: inline-block;">'+n+"</div>"}).reduce(i,"");d&&u?s?a.drawAt(u.x,u.y,d,s):t.addToEnv("consolidated-tooltip",a.drawAt(u.x,u.y,d)):s&&a.hide(s)}t["default"]={extension:function(e){e.addEventListener("predraw",function(e){var t=void 0;if(e.sender.getType&&"chartAPI"===e.sender.getType()&&!a(e.sender)){var n=(t=e.sender).getChildren("canvas");t.getFromEnv("chartInstance").drawConsolidatedToolTip=d,n&&n.forEach(function(e){if(!t.config.drawTrendRegion||!t.config.showtooltip)return e.removeEventListener("fc-mouseover",c),e.removeEventListener("fc-mousemove",c),e.removeEventListener("fc-mouseout",u),void e.setState("consolidatedTooltipEventListenerAttached",!1);!e.getState("consolidatedTooltipEventListenerAttached")&&t.config.showtooltip&&(e.addEventListener("fc-mouseover",c),e.addEventListener("fc-mousemove",c),e.addEventListener("fc-mouseout",u),e.setState("consolidatedTooltipEventListenerAttached",!0))})}})},name:"ConsolidatedToolTip",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(177),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);var s=function(e){e.sender.apiInstance.getChildren("alertManager")&&e.sender.apiInstance.getChildren("alertManager")[0].processRTData(e.data)};t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){"chartAPI"===e.sender.getType()&&e.sender.registerFactory("alertManager",function(e){if(e.getChildren("alertManager"))e.getChildren("alertManager")[0].configure();else{var t=e.getFromEnv("chart");(0,i.componentFactory)(t,a["default"],"alertManager",1,[{}])}})}),e.addEventListener("updateDataReceived",s),e.addEventListener("postConfigure",function(e){if("dataset"===e.sender.getType()){var t,n=e.sender,r=n.config,o=r.JSONData,a=n.getFromEnv("chart").getChildren("alertManager"),s=void 0;if(!a||!o)return;t=(0,i.pluckNumber)(o&&o.checkforalerts,1),(s=(a=a[0]).config||(a.config={})).datasetMap=s.datasetMap||{},s.datasetMap[r.index]=t}})},name:"alertManagerLinker",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(118),a=n(131);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.pIndex=1,n.linkedItems={chart:{}},n}return i(t,e),t.prototype.getType=function(){return"extension"},t.prototype.getName=function(){return"AlertManager"},t.prototype.configure=function(){var e,t,n,r=this.getFromEnv("dataSource"),o=r&&r.alerts&&r.alerts.alert,a=this.getFromEnv("number-formatter"),i=this.config||(this.config={});if(o&&o.length)for(i.alertArr=o,e=o.length,t=0;t<e;t+=1)(n=o[t]).minvalue=a.getCleanValue(n.minvalue),n.maxvalue=a.getCleanValue(n.maxvalue);else i.alertArr=[]},t.prototype.processRTData=function(e){var t,n,r,o,a,i,s=this.config,l=this.getFromEnv("number-formatter");if(e&&e.dataset&&e.dataset.length)for(r=e.dataset.length,t=0;t<r;t+=1)if((o=e.dataset[t]).data&&o.data.length){if(s.datasetMap&&0===s.datasetMap[t])continue;for(a=o.data.length,n=0;n<a;n+=1)null!==((i=o.data[n])&&l.getCleanValue(i.value))&&this._doAlert(l.getCleanValue(i.value))}},t.prototype._doAlert=function(e){var t,n,r,a=this.getLinkedParent(),i=this.config.alertArr,s=i.length;for(n=0;n<s;n+=1)if(r=(t=i[n]).action&&t.action.toLowerCase(),t.minvalue<=e&&t.maxvalue>=e){if("1"!==t.occuronce||!t.hasOccurred){switch(t.hasOccurred=!0,t.state="1",r){case"calljs":setTimeout((0,o.pseudoEval)(t.param));break;case"showannotation":a.showAnnotation&&a.showAnnotation(t.param)}a.fireChartInstanceEvent("AlertComplete",{alertValue:e,alertMaxValue:t.maxvalue,alertMinValue:t.minvalue})}}else"showannotation"===r&&"1"===t.state&&a.hideAnnotation&&a.hideAnnotation(t.param),t.state="2"},t}(((r=a)&&r.__esModule?r:{"default":r})["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(179),a=(r=o)&&r.__esModule?r:{"default":r},i=n(181);t["default"]={extension:function(e){e.addEventListener("preconfigure",function(e){var t=e.sender,n=t.getFromEnv("chart");i.allowedCharts[n&&n.getName()]&&("dataset"===t.getType()&&"cartesianStackGroup"!==t.getLinkedParent().getName()?(t.setState("applySkippingOnConf",!0),a["default"].dataSkipping({component:t,datasetType:t.getName(),compType:"dataset"})):"cartesianStackGroup"===t.getName()&&(t.setState("applySkippingOnConf",!0),a["default"].dataSkipping({component:t,datasetType:t.getName(),compType:"group"})))}),e.addEventListener("preattributeprepared",function(e){var t=e.sender.getFromEnv&&e.sender.getFromEnv("chart");if(i.allowedCharts[t&&t.getName()])if("dataset"===e.sender.getType()){var n=e.sender,r=n.getFromEnv("canvasConfig"),o=n.getFromEnv("chart").isBar?r.canvasHeight:r.canvasWidth;"cartesianStackGroup"!==n.getLinkedParent().getName()&&(n.getState("applySkippingOnConf")?n.setState("applySkippingOnConf",!1):a["default"].dataSkipping({component:n,compType:"dataset",datasetType:n.getName(),width:o}))}else if("cartesianStackGroup"===e.sender.getName()){var s=e.sender,l=s.getFromEnv("canvasConfig"),c=s.getFromEnv("chart").isBar?l.canvasHeight:l.canvasWidth,u=Object.keys(s.getChildren())[0];s.getState("applySkippingOnConf")?s.setState("applySkippingOnConf",!1):a["default"].dataSkipping({component:s,compType:"group",datasetType:s.getChildren(u)[0].getName(),width:c})}}),e.addEventListener("dataplotdragend",function(e,t){if(e.sender.getType&&"dataset"===e.sender.getType()){var n=e.sender,r=n.getSkippingInfo&&n.getSkippingInfo();r&&r.skippingApplied&&a["default"].updateDragMap({component:n,compType:"dataset",evenType:"dataplotdragend",eventArgs:t})}})},name:"DataSkipping",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(180),a=(r=o)&&r.__esModule?r:{"default":r},i=n(181),s=n(118);var l=1.5,c=[],u=0,d={},f=[];function h(){return(arguments.length>0&&arguments[0]!==undefined?arguments[0]:[]).filter(function(e){return!c[e]})}function p(e,t){for(var n=0,r=[],o=1;o<d.noOfPlotBins;++o)e(n,(n+=d.plotsPerBin)-1,t,f,r);return e(n,t.length-1,t,f,r),f=[],r}function g(e){var t,n=e.datasetType,r=i.filterType[n],o=e.component,s=o.getSkippingInfo&&o.getSkippingInfo(),l=s&&s.draw.slice(0),g=s&&(s.labelDraw||[]).slice(0),m={},v=[],y=void 0,b=void 0,x=void 0,w=void 0,C=o.getFromEnv("xAxis").getTicksLen(),_=void 0;if((!l||!l.length)&&(l=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return Array.from(new Array(e),function(e,t){return t})}(u)),(!g||!g.length)&&(g=l),f=s&&s.dragHashMap,"cartesianStackGroup"===o.getName()){for(w=d.jsonData.length,y=0;y<C;++y){for(x=0,b=0;b<w;++b)_=d.jsonData[b].data,x+=Number(_[y]?_[y].value:0);v.push({value:x})}m.draw=p((0,a["default"])(r),v)}else m.draw=p((0,a["default"])(r),d.jsonData.data);return m.draw.forEach(function(e){c[e]=!0}),m.drawOnlyMap=c,m.hide=h(l),t=function(e){var t=d.plotBinSize,n=d.labelBinSize/t,r=[],o=[],a=void 0,i=e.length;for(a=0;a<i;a++)a%n||(r.push(e[a]),o[e[a]]=!0);return{drawableLabelIndices:r,labelHashMap:o}}(m.draw),m.labelDraw=t.drawableLabelIndices,c=m.labelDrawOnlyMap=t.labelHashMap,m.hideLabel=h(g),m.plotsPerBin=d.plotsPerBin,m.skippingApplied=!0,m.dragHashMap=[],m.prevDrawInfo=l.slice(0),m}t["default"]={dataSkipping:function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.component;!function(){var e,t,n,r,o=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},a=o.component,i=o.compType,f=void 0,h=a.getFromEnv("chartConfig"),p=a.getFromEnv("dataSource").chart||{},g=(0,s.pluckNumber)(p.plotbinsize,h.plotbinsize),m=(0,s.pluckNumber)(p.labelbinsize,h.labelbinsize),v=a.getFromEnv("chartWidth"),y=a.getFromEnv("chartHeight");return d.plotBinSize=g,d.labelBinSize=m,d.jsonData=a.config.JSONData,"group"===i?(f=d.jsonData[0].data,u=a.config.stackValues&&a.config.stackValues.length||0):"dataset"===i&&(f=d.jsonData.data,u=a.components.data&&a.components.data.length||0),e=f&&f.length,c=[],d.width=r=a.getFromEnv("chart").isBar?o.height||y:o.width||v,t=e/r,n=Math.floor(t*g),t>=l&&n>1&&(d.plotsPerBin=n,d.noOfPlotBins=Math.ceil(e/d.plotsPerBin),!0)}(e)?t.setSkippingInfo&&t.setSkippingInfo():t.setSkippingInfo&&t.setSkippingInfo(g(e))},updateDragMap:function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.component,n=e.eventArgs,r=t.getSkippingInfo&&t.getSkippingInfo()||{};n&&(r.dragHashMap[n.dataIndex]=n.endValue)}}},function(e,t,n){"use strict";t.__esModule=!0;t["default"]=function(e){var t={maxOnly:function(e,t,n){for(var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[],o=arguments[4],a=n[t].value,i=t,s=void 0,l=t-1;l>=e;--l)(s=void 0!==r[l]?r[l]:n[l].value)>a&&(a=s,i=l);return o.push(i),o},minMax:function(e,t,n){for(var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[],o=arguments[4],a=n[t].value,i=t,s=n[t].value,l=t,c=void 0,u=t-1;u>=e;--u)(c=void 0!==r[u]?r[u]:n[u].value)>a?(a=c,i=u):c<s&&(s=c,l=u);var d=l<i?[l,i]:[i,l];return l=d[0],i=d[1],o.push(l),l!==i&&o.push(i),o}};return t[e]||t.maxOnly}},function(e,t,n){"use strict";t.__esModule=!0;t.allowedCharts={Column2D:!0,Line:!0,Area2D:!0,Bar2D:!0,MSColumn2D:!0,MSLine:!0,MSBar2D:!0,MSArea:!0,StackedColumn2D:!0,StackedBar2D:!0,StackedArea2D:!0,MSStackedColumn2D:!0,MSCombi2D:!0,StackedColumn2DLine:!0,MSCombidy2D:!0,LogMSColumn2d:!0,LogMSLine:!0,DragColumn:!0,DragLine:!0,DragArea:!0},t.filterType={Column:"maxOnly",line:"minMax",area:"minMax"}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(183),a=(r=o)&&r.__esModule?r:{"default":r};t["default"]=a["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(184)),o=a(n(208));function a(e){return e&&e.__esModule?e:{"default":e}}var i=function(e){return"chartAPI"===e.getType()},s=function(e,t){return"groups"!==t&&"items"!==t};t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){var t=e.sender;i(t)&&t.registerFactory("annotation",function(e){var t=e.getFromEnv("dataSource").annotations,n=e.getChildren().annotation,a=n&&n[0];a&&a.destroy(),delete e.getFromEnv("chartInstance").annotations,t&&(a||(a=new r["default"]((0,o["default"])(s,t)),e.attachChild(a,"annotation"),a.config.drawn=!1),t.macroEnabled=!0,a.configure(t),e.getFromEnv("chartInstance").annotations=a)})})},name:"Annotation",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=d(n(185)),o=d(n(131)),a=d(n(208)),i=n(209),s=n(125),l=d(n(210)),c=d(n(211)),u=d(n(212));function d(e){return e&&e.__esModule?e:{"default":e}}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var h={animDuration:0},p=["pie2d","doughnut2d"],g=["pie3d","doughnut3d"],m={},v=function(e){for(var t=+e[0],n=1,r=e.length,o=void 0,a=void 0;n<r;++n)if(a=e[n],n%2)o=a;else switch(o){case"+":t+=+a;break;case"-":t-=+a}return t},y=function(e){var t=void 0;switch(m.axis){case"x":case"toX":t=m.scaleX;break;case"y":case"toY":t=m.scaleY;break;default:t=m.scaleValue||1}return e*t},b=function(e,t){var n=arguments.length>2&&arguments[2]!==undefined&&arguments[2],r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:i.DEFAULT_MACRO_PREFIX,o=e.split(/([+])/),a=void 0,s=[],l=void 0,c=void 0,u=void 0,d=o.length;for(l=0;l<d;l++)if("+"!==o[l]){for(c=0,u=(a=o[l].split(/([-])/)).length;c<u;c++)"-"!==a[c]&&(s.push(a[c]),c<u-1&&s.push("-"));l<d-1&&s.push("+")}return s.map(function(e){var o="",a="",s="",l=void 0,c=void 0,u=void 0;if(e.charAt(0)===r){if(s=(a=e.replace(new RegExp("[\\$ ]","g"),"")).split(i.DEFAULT_MACRO_SEPARATOR)[0],!isNaN(+a))return+a;for(o in t)if(s===o){if(c=new RegExp(o,"g"),"function"==typeof t[o])try{l=s.replace(c,t[o](a))}catch(d){l=s.replace(c,0)}else l=s.replace(c,t[o]||0);break}}else u=Number(e),isNaN(u)?"+"!==e&&"-"!==e&&(e=0):e=n?y(u).toString():u.toString(),l=e;return l})},x=function(e,t){this.config;var n={x:(0,i.pluck)(e.x,e.xPos,0),y:(0,i.pluck)(e.y,e.yPos,0),toX:(0,i.pluck)(e.toX),toY:(0,i.pluck)(e.toY)},r={},o=void 0;for(var a in n)n.hasOwnProperty(a)&&void 0!==(o=n[a])&&(o=o.toString(),m.axis=a,~o.indexOf(i.DEFAULT_MACRO_PREFIX)?r[a]=v(b((0,i.cleanMacro)(o.toLowerCase()),t,!0)):(r[a]=v(b((0,i.cleanMacro)(o.toLowerCase()),t)),r[a]=y(r[a])));return r},w=function(e,t){var n,r,o,a=e.getChildren(),s=a.annotation&&a.annotation[0]||t,l=void 0,c=void 0,u=void 0,d=void 0,f=void 0,h=void 0,v=void 0,y=void 0,b=void 0;if(s)for(n=s.annotation,r=function(e){var t,n=e.config,r=e.getChildren(),o=r.caption[0],a=r.subCaption[0],s=r.legend&&r.legend[0]||{},l=r.gLegend&&r.gLegend[0]||{},c=o.config,u=a.config,d=c.width||0,f=u.width||0,h=void 0,m=void 0;return"end"===c.align?(h=c.x-d,m=c.x-f):"start"===c.align?h=m=c.x:(h=c.x-d/2,m=c.x-f/2),t=n.gLegendEnabled?l.conf:s.config,{canvasendx:n.canvasRight,canvasendy:n.canvasBottom,canvasheight:n.canvasHeight,canvasstartx:n.canvasLeft,canvasstarty:n.canvasTop,canvaswidth:n.canvasWidth,canvascenterx:n.canvasCenterX||n.canvasLeft+(n.canvasRight-n.canvasLeft)/2,canvascentery:n.canvasCenterY||n.canvasTop+(n.canvasBottom-n.canvasTop)/2,chartcenterx:n.width/2,chartcentery:n.height/2,chartstartx:0,chartstarty:0,chartendx:n.width,chartendy:n.height,chartheight:n.height,chartwidth:n.width,chartleftmargin:n.marginLeft,chartrightmargin:n.marginRight,chartbottommargin:n.marginBottom,charttopmargin:n.marginTop,captionendx:h+c.width,captionendy:c.y+c.height,captionheight:c.height,captionstartx:h,captionstarty:c.y,captionwidth:d,subcaptionendx:m+u.width,subcaptionendy:u.y+u.height,subcaptionheight:u.height,subcaptionstartx:m,subcaptionstarty:u.y,subcaptionwidth:f,legendendx:t&&t.xPos+t.width,legendendy:t&&t.yPos+t.height,legendheight:t&&t.height,legendstartx:t&&t.xPos,legendstarty:t&&t.yPos,legendwidth:t&&t.width,dataset:function(t){var n,r=t.split(i.DEFAULT_MACRO_SEPARATOR).slice(1),o=void 0,a=void 0,s=[];return e.iterateComponents(function(e){"dataset"===e.getType()&&s.push(e)}),s.sort(function(e,t){return e.getJSONIndex()-t.getJSONIndex()}),o=s[Number(r[0])],n=o.components.data[Number(r[2])],p.indexOf(o.getName().toLowerCase())>-1?(0,i.computeSliceBounds)(r[3],n.config):g.indexOf(o.getName().toLowerCase())>-1?(0,i.compute3DSliceBounds)(r[3],n.config):(a=(0,i.computePlotBounds)(n,o.getName()),(0,i.xyCalculator)(r[3],a))},xaxis:(0,i.axisMacroParser)(e,"xAxis"),yaxis:(0,i.axisMacroParser)(e,"yAxis"),gaugestartx:n.gaugeStartX,gaugestarty:n.gaugeStartY,gaugeendx:n.gaugeEndX,gaugeendy:n.gaugeEndY,gaugecenterx:n.gaugeCenterX,gaugecentery:n.gaugeCenterY,gaugestartangle:n.gaugeStartAngle,gaugeendangle:n.gaugeEndAngle,gaugeradius:n.gaugeRadius,plotwidth:n.plotWidth,plotsemiwidth:n.plotSemiWidth}}(e),o=n.groups&&n.groups.length,l=0;l<o;l++)for(d=(u=n.groups[l]).rawConfig,m.scaleX=u._getConfig("scaleX"),m.scaleY=u._getConfig("scaleY"),m.scaleValue=u._getConfig("scaleValue"),y=x.call(u,d,r),u.updateAttr(y),y.x=y.x||0,y.y=y.y||0,v=u.items&&u.items.length,c=0;c<v;c++)h=(f=u.items[c]).rawConfig,(b=x.call(f,h,r)).x=b.x+y.x,b.y=b.y+y.y,isNaN(Number(b.toX))?b.toX=b.x:b.toX+=y.x,isNaN(Number(b.toY))||(b.toY+=y.y),f.updateAttr(b)},C=function(e){var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},o={};for(var a in o.annotationType="shape",o.id=e.id,o.type=e.type&&e.type.toLowerCase(),o.toolText=(0,i.pluck)(e.tooltext,e.toolText),o.animationLabel=(0,i.pluck)(e.animationlabel,e.animationLabel),o.dashed=e.dashed,o.dashLen=(0,i.pluck)(e.dashlen,e.dashLen),o.dashGap=(0,i.pluck)(e.dashgap,e.dashGap),o.thickness=e.thickness,o.showBorder=(0,i.pluck)(e.showborder,e.showBorder),o.borderColor=(0,i.pluck)(e.bordercolor,e.borderColor),o.borderAlpha=(0,i.pluck)(e.borderalpha,e.borderAlpha),o.borderThickness=(0,i.pluck)(e.borderthickness,e.borderThickness),o.alpha=e.alpha,o.color=e.color,o.fillColor=(0,i.pluck)(e.fillcolor,e.fillColor),o.fontColor=(0,i.pluck)(e.fontcolor,e.fontColor),o.fillAlpha=(0,i.pluck)(e.fillalpha,e.fillAlpha),o.fillAngle=(0,i.pluck)(e.fillangle,e.fillAngle),o.fillRatio=(0,i.pluck)(e.fillratio,e.fillRatio),o.fillPattern=(0,i.pluck)(e.fillpattern,e.fillPattern),o.sides=e.sides,o.radius=e.radius,o.yRadius=(0,i.pluck)(e.yradius,e.yRadius),o.innerRadius=(0,i.pluck)(e.innerradius,e.innerRadius),o.endAngle=(0,i.pluck)(e.endangle,e.endAngle),o.startAngle=(0,i.pluck)(e.startangle,e.startAngle),o.isVisible=!0==(t=e.visible,!(0===parseInt(t,10))),o.x=e.x,o.y=e.y,o.xPos=(0,i.pluck)(e.xpos,e.xPos),o.yPos=(0,i.pluck)(e.ypos,e.yPos),o.toY=(0,i.pluck)(e.toy,e.toY),o.toX=(0,i.pluck)(e.tox,e.toX),o.path=e.path,o.css=e.css,o.wrap=e.wrap,o.text=e.text,o.font=(0,i.pluck)(e.font,n.font,r.basefont),o.bold=(0,i.pluck)(e.bold,e.isbold,e.bold,e.isBold),o.label=e.label,o.align=e.align,o.italic=e.italic,o.vAlign=(0,i.pluck)(e.valign,e.vAlign),o.bgColor=(0,i.pluck)(e.bgcolor,e.bgColor),o.fontSize=(0,i.pluck)(e.fontsize,e.fontSize,n.fontSize,r.basefontsize),o.wrapWidth=(0,i.pluck)(e.wrapwidth,e.wrapWidth),o.leftMargin=(0,i.pluck)(e.leftmargin,e.leftMargin),o.rotateText=(0,i.pluck)(e.rotatetext,e.rotateText),o.wrapHeight=(0,i.pluck)(e.wrapheight,e.wrapHeight),o.showShadow=(0,i.pluck)(e.showshadow,e.showShadow),o.link=e.link,o.url=e.url,o.link=e.link,o.width=e.width,o.height=e.height,o.xScale=(0,i.pluck)(e.xscale,e.xScale),o.yScale=(0,i.pluck)(e.yscale,e.yScale),o.onload=e.onload,o.onerror=e.onerror,o){if(o.hasOwnProperty(a))void 0===o[a]&&delete o[a]}return o},_=function(e,t,n){var r,o,a,s=e._getFromStore("element");e&&s&&(r=n.onAnnotationClick||(0,i.defaultAnnotationClick)(e,t),o=n.onAnnotationRollover||(0,i.defaultAnnotationRollOver)(e,t),a=n.onAnnotationRollout||(0,i.defaultAnnotationRollOut)(e,t),s.on("fc-click",r),s.on("fc-mouseover",o),s.on("fc-mouseout",a))},E=function(e,t){return"itemConfigs"!==t};(0,s.addDep)({name:"annotationAnimation",type:"animationRule",extension:l["default"]});var k=function(e){function t(){var n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.annotation=new r["default"](n),o.idCounterStore={},o.rawConfig=JSON.parse(JSON.stringify(n)),o.config={},o}return f(t,e),t.prototype.getName=function(){return"annotation"},t.prototype.getType=function(){return"extension"},t.prototype.configureAttributes=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{groups:[]},t=this.getFromEnv("chart"),n=t.getFromEnv("dataSource");this.rawConfig={group:[]},this.config.labelClickFN=(0,i.getLinkAction)(n,t),this.rawConfig.macroEnabled=e.macroEnabled,!this.parsedConfigs&&(this.parsedConfigs=[]),e.groups?this.parsedConfigs=e.groups.map(function(n){var r,o;return r=e,(o=n).css=o.css||r.css,o.autoscale=(0,i.pluck)(o.autoscale,r.autoscale),o.animationLabel=(0,i.pluck)(o.animationLabel,r.animationLabel),o.constrainedscale=(0,i.pluck)(o.constrainedscale,r.constrainedscale),o.scaletext=(0,i.pluck)(o.scaletext,r.scaletext),o.scaleimages=(0,i.pluck)(o.scaleimages,r.scaleimages),o.xshift=(0,i.pluck)(o.xshift,r.xshift),o.yshift=(0,i.pluck)(o.yshift,r.yshift),o.grpxshift=(0,i.pluck)(o.grpxshift,r.grpxshift),o.grpyshift=(0,i.pluck)(o.grpyshift,r.grpyshift),o.origw=(0,i.pluck)(o.origw,r.origw),o.origh=(0,i.pluck)(o.origh,r.origh),o.showbelow=(0,i.pluck)(o.showbelow,r.showbelow,1),o.onAnnotationClick=r.onAnnotationClick,o.onAnnotationRollover=r.onAnnotationRollover,o.onAnnotationRollout=r.onAnnotationRollout,function(e,t){var n={},r=e.items;for(var o in r=e.items=(0,i.arrangeItems)(r),n.annotationType="group",n.id=e.id,n.showBelow="undefined"==typeof e.showbelow||null==e.showbelow?1:Number(e.showbelow),n.x=e.x,n.y=e.y,n.animationLabel=(0,i.pluck)(e.animationlabel,e.animationLabel),n.xPos=(0,i.pluck)(e.xpos,e.xPos),n.yPos=(0,i.pluck)(e.ypos,e.yPos),n.grpXShift=(0,i.pluck)(e.grpxshift,e.grpXShift),n.grpYShift=(0,i.pluck)(e.grpyshift,e.grpYShift),n.xShift=(0,i.pluck)(e.xshift,e.xShift),n.yShift=(0,i.pluck)(e.yshift,e.yShift),n.color=e.color,n.alpha=e.alpha,n.isVisible=1===Number(e.visible||1),n.font=(0,i.pluck)(e.font,t.basefont),n.link=e.link,n.fontSize=(0,i.pluck)(e.fontsize,e.fontSize,t.basefontsize),n.textAlign=(0,i.pluck)(e.textalign,e.textAlign),n.textVAlign=(0,i.pluck)(e.textvalign,e.textVAlign),n.rotateText=(0,i.pluck)(e.rotatetext,e.rotateText),n.wrapText=(0,i.pluck)(e.wraptext,e.wrapText),n.toolText=(0,i.pluck)(e.tooltext,e.toolText),n.link=e.link,n.showShadow=(0,i.pluck)(e.showshadow,e.showShadow),n.items=e.items,n.css=e.css,n.autoScale=(0,i.pluck)(e.autoscale,e.autoScale),n.scaleText=(0,i.pluck)(e.scaletext,e.scaleText),n.xScale=(0,i.pluck)(e.xscale,e.xScale),n.yScale=(0,i.pluck)(e.yscale,e.yScale),n.scaleImages=(0,i.pluck)(e.scaleimages,e.scaleImages),n.constrainedScale=(0,i.pluck)(e.constrainedscale),n.origH=(0,i.pluck)(e.origh,e.origH,t.origh),n.origW=(0,i.pluck)(e.origw,e.origW,t.origw),n.onAnnotationClick=e.onAnnotationClick,n.onAnnotationRollover=e.onAnnotationRollover,n.onAnnotationRollout=e.onAnnotationRollout,n)n.hasOwnProperty(o)&&void 0===n[o]&&delete n[o];return Array.isArray(r)&&(n.itemConfigs=r.map(function(e){return C(e,n,t)})),n}(n,t.config)}):this.parsedConfigs=[],this.createAnnotationItems()},t.prototype.createAnnotationItems=function(){var e=this,t=e.getFromEnv("chartInstance");e.parsedConfigs.forEach(function(n){var r,o=n.itemConfigs||{},i=e.annotation,s=void 0;(n=(0,a["default"])(E,n)).chartWidth=Number(t.width),n.chartHeight=Number(t.height),s={x:n.x,y:n.y,toX:n.toX,toY:n.toY,items:[]},e.rawConfig.group.push(s),r=i.createItem(n),o.forEach(function(e){e.chartWidth=Number(t.width),e.chartHeight=Number(t.height),s.items.push({x:e.x,y:e.y,toX:e.toX,toY:e.toY}),i.createItem(e,r)})})},t.prototype.getGraphicalElement=function(){return{itemElements:this.annotation.items.map(function(e){return e._getFromStore("element")})}},t.prototype.getChildContainer=function(){return{groupElements:this.annotation.groups.map(function(e){return e._getFromStore("element")})}},t.prototype.addItem=function(e){var t,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=(arguments[2],arguments[3]),o=this.annotation.retrieveGroup(e),a=this.getFromEnv("chart"),i=C(n);if(i.hasTemporaryInvisibility=!1,i.isVisible=!0,o=o||this.addGroup({id:e}),t=this.annotation.createItem(i,o))return this.annotation.injectDependency("component",r),this.annotation.attachModule(t),w(a),!o._getFromStore("element")&&o._draw(),this.annotation.drawItem(t,o._getFromStore("element")),_(t,a,o.rawConfig),t},t.prototype.addGroup=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=arguments[1];return this.configureAttributes({groups:[e]}),this.annotation.injectDependency("component",t),this.draw(),this.annotation.groups.forEach(function(e){e.items.forEach(function(e){e.config.isVisible=!0,e.show(h)}),e.config.isVisible=!0,e.show(h)}),this.annotation.groups[this.annotation.groups.length-1]},t.prototype.addCustomGroup=function(e){e&&(this.config.customGroup=e)},t.prototype.update=function(e,t){var n=void 0,r=void 0,o={},a=void 0,s=void 0,l=this.annotation,c=void 0;if(e){for(r in t)o[r.toLowerCase()]=t[r]&&t[r].toString();if(!(n=this.annotation.retrieveItem(e)||this.annotation.retrieveGroup(e))||!n._getFromStore("element"))return;for("undefined"==typeof o.visible&&(o.visible=n._getConfig("isVisible")),(c=C(o)).isVisible=o.visible,n&&n.setAttribute(c),"group"===n.config.elementType&&n.updateScale(),w(this.getFromEnv("chart"),this),l.drawItem(n,n._getFromStore("groupElement")),!1!==t.visible&&n.show(),n._getFromStore("animationManager").setAnimation({el:n._getFromStore("element"),attr:n.config.attr,component:n._getFromStore("component"),label:(0,i.pluck)(n.rawConfig.animationLabel,n.config.elementType)}),a=n.items||[],s=0;s<a.length;s++)a[s]&&l.drawItem(a[s],a[s]._getFromStore("groupElement"));return n}},t.prototype.hide=function(e){var t=void 0;e?(t=this.annotation.retrieveItem(e)||this.annotation.retrieveGroup(e))&&t.hide(h):this.annotation.hide(h)},t.prototype.show=function(e){var t=void 0;e?(t=this.annotation.retrieveItem(e)||this.annotation.retrieveGroup(e))&&t.show(h):this.annotation.show(h)},t.prototype.destroy=function(e){var t=void 0;e?(t=this.annotation.retrieveItem(e)||this.annotation.retrieveGroup(e))&&t.dispose(h,!0):this.annotation.dispose(h,!0)},t.prototype._dispose=function(){this.destroy()},t.prototype.clear=function(){var e=void 0;for(e=this.parsedConfigs&&this.parsedConfigs.length;e--;)this.parsedConfigs.pop();for(e=this.rawConfig.group&&this.rawConfig.group.length;e--;)this.rawConfig.group.pop();delete this.rawConfig.group,this.annotation.dispose(h,!0)},t.prototype.updateScale=function(){var e,t=this.annotation,n=void 0;for(e=t.groups&&t.groups.length,n=0;n<e;n++)t.groups[n].updateScale()},t.prototype.injectAllDependency=function(){var e,t,n=this.annotation,r=void 0,o=void 0,a=void 0,i=void 0,l=void 0,d=this.getFromEnv("chart"),f=n.resolveDependency("component")||this,h=(0,s.getDep)("redraphael","plugin");for((0,c["default"])(h),(0,u["default"])(h),t={width:Number(d.getFromEnv("chartWidth")),height:Number(d.getFromEnv("chartHeight"))},n.injectDependency("paper",t),n.injectDependency("smartLabel",this.getFromEnv("smartLabel")),n.injectDependency("toolTipController",this.getFromEnv("toolTipController")),n.injectDependency("animationManager",this.getFromEnv("animationManager")),n.injectDependency("component",f),n.injectDependency("clickFN",this.config.labelClickFN),e=n.groups&&n.groups.length,r=0;r<e;r++)for(a=n.groups[r],n.attachModule(a),l=(i=a.items)&&i.length,o=0;o<l;o++)n.attachModule(i[o])},t.prototype.draw=function(){var e=this.getFromEnv("chart");this.annotation;this.injectAllDependency(),this.updateScale(),this.rawConfig.macroEnabled&&w(e),this.drawAnnotationItems(this),this.config.drawn=!0},t.prototype.drawAnnotationItems=function(){var e,t=this.getFromEnv("chart"),n=this.annotation,r=void 0,o=void 0,a=void 0,i=void 0,s=void 0,l=void 0;for(e=n.groups&&n.groups.length,o=0;o<e;o++)for(r=n.groups[o],l=this.config.customGroup?this.config.customGroup:r.rawConfig.showBelow?this.getLinkedParent().getChildContainer("lowerAnnotationGroup"):this.getLinkedParent().getChildContainer("upperAnnotationGroup"),n.drawItem(r,l),s=(i=r.items)&&i.length,l=r._getFromStore("element"),a=0;a<s;a++)n.drawItem(i[a],l),_(i[a],t,r.rawConfig)},t}(o["default"]);t["default"]=k},function(e,t,n){"use strict";t.__esModule=!0;var r=h(n(186)),o=h(n(187)),a=n(196),i=h(n(197)),s=h(n(200)),l=h(n(202)),c=h(n(203)),u=h(n(204)),d=h(n(205)),f=h(n(207));function h(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var g=function(e){function t(){var n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.groups=[],r.setAttribute(n),r}return p(t,e),t.prototype.setAttribute=function(){var e,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};e=(0,o["default"])(t,this.rawConfig),this.rawConfig=e,this.config.groupXShift=(0,a.pluckNumber)(e.groupXShift,0),this.config.groupYShift=(0,a.pluckNumber)(e.groupYShift,0),this.config.isVisible=(0,a.pluckBoolean)(e.isVisible,!0),this.config.animConfig.animDuration=(0,a.pluckNumber)(e.animConfig&&e.animConfig.animDuration,1e3)},t.prototype.createItem=function(e,t){var n=void 0;if("group"===e.annotationType)e.groupXShift=(0,a.pluckNumber)(e.groupXShift,this.config.groupXShift),e.groupYShift=(0,a.pluckNumber)(e.groupYShift,this.config.groupYShift),n=new i["default"](e),this.groups.push(n);else if(!(n=function(e){var t=void 0;switch(e){case"circle":case"arc":t=new s["default"];break;case"line":case"path":t=new l["default"];break;case"rectangle":t=new c["default"];break;case"polygon":t=new u["default"];break;case"image":t=new d["default"];break;case"text":t=new f["default"]}return t}(e.type&&e.type.toLowerCase())))return;return t instanceof i["default"]?t.attachItem(n):n._setGroupElement(t),n.setAttribute(e),n._setToStore("controller",this),n},t.prototype.attachModule=function(e){e._setToStore("component",this.resolveDependency("component")),e._setToStore("animationManager",this.resolveDependency("animationManager")),e._setToStore("paper",this.resolveDependency("paper")),e._setToStore("smartLabel",this.resolveDependency("smartLabel")),e._setToStore("toolTipController",this.resolveDependency("toolTipController")),e._setToStore("clickFN",this.resolveDependency("clickFN")),e._setToStore("controller",this)},t.prototype.drawItem=function(e,t){e._setGroupElement(t),e._draw()},t.prototype.retrieveItem=function(e,t){var n,r,o,a,i,s=this.groups&&this.groups.length;for(n=0;n<s;n++)for(a=(i=this.groups[n]).items&&i.items.length,r=0;r<a;r++)if((o=i.items[r]).getId()===e)return t&&i.items.splice(r,1),o},t.prototype.retrieveGroup=function(e,t){var n,r,o=this.groups&&this.groups.length;for(n=0;n<o;n++)if((r=this.groups[n]).getId()===e)return t&&this.groups.splice(n,1),r},t.prototype.injectDependency=function(e,t){this._setToStore(e,t)},t.prototype.resolveDependency=function(e){return this._getFromStore(e)},t.prototype.show=function(t){e.prototype.show.call(this,t),this.groups.forEach(function(e){e.show(t),e.items.forEach(function(e){e.show(t)})})},t.prototype.hide=function(t){e.prototype.hide.call(this,t),this.groups.forEach(function(e){e.hide(t),e.items.forEach(function(e){e.hide(t)})})},t.prototype.dispose=function(e,t){var n=void 0,r=void 0,o=void 0,a=void 0;if(this.groups){for(n=this.groups.length-1;n>=0;n--){for(r=((o=this.groups[n]).items&&o.items.length)-1;r>=0;r--)(a=o.items[n])&&a.dispose();o.items=[],o.dispose()}this.groups=[]}},t}(r["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.rawConfig=JSON.parse(JSON.stringify(t)),this.config={animConfig:{}},this.store={}}return e.prototype.getType=function(){return this._getConfig("type")},e.prototype._setToStore=function(e,t){this.store[e]=t},e.prototype._getFromStore=function(e){return this.store[e]},e.prototype._setConfig=function(e,t){this.config[e]=t},e.prototype._getConfig=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return""===e?this.config:this.config[e]},e.prototype.getAttribute=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";return""===e?this.rawConfig:this.rawConfig[e]},e.prototype.show=function(){var e=this._getFromStore("element");e&&e.show()},e.prototype.hide=function(){var e=this._getFromStore("element"),t=this._getFromStore("animationManager");e&&t.setAnimation({el:e,component:this._getFromStore("component"),doNotRemove:!0,callback:function(){this.hide()},label:this.rawConfig.animationLabel})},e.prototype.dispose=function(){var e,t=this._getFromStore("controller").retrieveItem(this.getId(),!0),n=void 0;t&&(n=t._getFromStore("animationManager"),(e=t._getFromStore("element"))&&n.setAnimation({el:e,component:t._getFromStore("component"),label:this.rawConfig.animationLabel}))},e}();t["default"]=r},function(e,t,n){var r=n(188),o=n(191),a=r(function(e,t){return o(function(e,t,n){return n},e,t)});e.exports=a},function(e,t,n){var r=n(189),o=n(190);e.exports=function(e){return function t(n,a){switch(arguments.length){case 0:return t;case 1:return o(n)?t:r(function(t){return e(n,t)});default:return o(n)&&o(a)?t:o(n)?r(function(t){return e(t,a)}):o(a)?r(function(t){return e(n,t)}):e(n,a)}}}},function(e,t,n){var r=n(190);e.exports=function(e){return function t(n){return 0===arguments.length||r(n)?t:e.apply(this,arguments)}}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e&&!0===e["@@functional/placeholder"]}},function(e,t,n){var r=n(192),o=n(193),a=n(194),i=r(function s(e,t,n){return a(function(t,n,r){return o(n)&&o(r)?s(e,n,r):e(t,n,r)},t,n)});e.exports=i},function(e,t,n){var r=n(189),o=n(188),a=n(190);e.exports=function(e){return function t(n,i,s){switch(arguments.length){case 0:return t;case 1:return a(n)?t:o(function(t,r){return e(n,t,r)});case 2:return a(n)&&a(i)?t:a(n)?o(function(t,n){return e(t,i,n)}):a(i)?o(function(t,r){return e(n,t,r)}):r(function(t){return e(n,i,t)});default:return a(n)&&a(i)&&a(s)?t:a(n)&&a(i)?o(function(t,n){return e(t,n,s)}):a(n)&&a(s)?o(function(t,n){return e(t,i,n)}):a(i)&&a(s)?o(function(t,r){return e(n,t,r)}):a(n)?r(function(t){return e(t,i,s)}):a(i)?r(function(t){return e(n,t,s)}):a(s)?r(function(t){return e(n,i,t)}):e(n,i,s)}}}},function(e,t){e.exports=function(e){return"[object Object]"===Object.prototype.toString.call(e)}},function(e,t,n){var r=n(192),o=n(195),a=r(function(e,t,n){var r,a={};for(r in t)o(r,t)&&(a[r]=o(r,n)?e(r,t[r],n[r]):t[r]);for(r in n)o(r,n)&&!o(r,a)&&(a[r]=n[r]);return a});e.exports=a},function(e,t){e.exports=function(e,t){return Object.prototype.hasOwnProperty.call(t,e)}},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=1.2,i=/\{br\}\s*/gi,s="",l="<br />",c=(r={},function(e){var t,n,o,a,i,s,l=(e=e||this)&&e.FCcolor||e,c=l.color,d=l.ratio,f=l.angle,h=l.alpha,p=l.r,g=l.cx,m=l.cy,v=l.fx,y=l.fy,b=l.gradientUnits,x=l.x1,w=l.y1,C=l.x2,_=l.y2,E=l.radialGradient,k=1;if("string"==typeof e)return r[s="~"+e]||(r[s]=e.replace(/^#?([a-f0-9]{3,6})/gi,"#$1"));if(!(c=c||""))return n;if(t=new RegExp(/[\(\)\s,\xb0#]/g),s=[c,h,d,f,p,g,m,b,v,y,x,C,w,_,E].join("_").replace(t,"_"),r[s])return r[s];if(d=d&&(d+"").split(",")||[],h=(h||0===h)&&(h+"").split(",")||[],c=c.split(","))if(n="",1===c.length)i=c[0].replace(/^#?([a-f0-9]{3,6})/gi,"$1"),n=h.length?"rgba("+u(i).join(",")+","+.01*parseFloat(h[0])+")":i.replace(/^#?([a-f0-9]{3,6})/gi,"#$1");else{for(o=0,a=c.length;o<a;o++)i=c[o].replace(/^#?([a-f0-9]{3,6})/gi,"$1"),isNaN(d[o])||(d[o]=parseFloat(d[o]),i+=":"+d[o],isNaN(d[o+1])||(d[o+1]=parseFloat(d[o+1])+d[o])),isNaN(h[o])||""===h[o]||(k=.01*h[o]),c[o]="rgba("+u(i).join(",")+","+k+")",isNaN(d[o])||(d[o]===d[o-1]&&(d[o]+=.001),c[o]=c[o]+":"+d[o]);n+=c.join("-"),void 0!==p||void 0!==v||void 0!==g||l.radialGradient?n="xr("+[v,y,p,g,m,b].join(",")+")"+n:(n="-"+n,void 0===x&&void 0===w&&void 0===C&&void 0===_||(n="("+[x,w,C,_,b].join(",")+")"+n),void 0===f&&(f=0),n=360-parseFloat(f)%360+n)}return r[s]=n,n});function u(e){var t=parseInt(e,16),n=Math.floor(t/65536),r=Math.floor((t-65536*n)/256);return[n,r,Math.floor(t-65536*n-256*r)]}function d(){return a}t.pluckNumber=function(){for(var e,t,n,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];for(t=0,n=o.length;t<n;t+=1)if(((e=o[t])||!1===e||0===e)&&!isNaN(e=Number(e)))return e},t.pluckBoolean=function(){for(var e,t=void 0,n=void 0,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];for(n=0,e=o.length;n<e;n++)if(!0===(t=o[n])||!1===t)return t;return!1},t.pluck=function(){for(var e,t,n,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];for(t=0,n=o.length;t<n;t+=1)if((e=o[t])||!1===e||0===e||""===e)return e},t.pluckFontSize=function(){for(var e,t,n,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];for(t=0,n=o.length;t<n;t+=1)if(((e=o[t])||!1===e||0===e)&&!isNaN(e=Number(e)))return e<1?1:e;return 1},t.toPrecision=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n},t.getFirstValue=function(){for(var e,t,n,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];for(t=0,n=o.length;t<n;t+=1)if((e=o[t])||!1===e||0===e)return e;return""},t.toRaphaelColor=c,t.getDashStyle=function(e,t){return[e,t]},t.setLineHeight=function(e,t){return"object"!==(void 0===e?"undefined":o(e))?"":((e.fontSize||e["font-size"])&&(!e.fontSize&&e["font-size"]&&(e.fontSize=e["font-size"],delete e["font-size"]),e.lineHeight=(parseFloat(e.fontSize)||t||10)*d()+"px",delete e["line-height"]),!e.lineHeight&&e["line-height"]&&(e.lineHeight=e["line-height"],delete e["line-height"]),e.lineHeight)},t.getLineHeightFactor=d,t.setLineHeightFactor=function(e){!(e=parseFloat(e))||e<0||(a=e)},t.clampNumber=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-Infinity,n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:Infinity;return e<=t?t:e>=n?n:e},t.getValidValue=function(e,t){return e||!1===e||0===e?e:t},t.getSuggestiveRotation=function(){var e,t,n,r;return e=arguments[0],1===arguments.length?(t=e.angle,n=e.x,r=e.y):(t=e,n=arguments[1],r=arguments[2]),"r"+(t=t||0)+","+n+","+r},t.parseUnsafeString=function(e){return"string"==typeof e?e.replace(i,l):s},t.trim=function(e){return e.replace(/^\s+|\s+$/g,"")}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(196),o=i(n(198)),a=i(n(187));function i(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){function t(){var n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return r.groups=[],r.items=[],r}return s(t,e),t.prototype.setAttribute=function(e){var t,n=this.config;t=(0,a["default"])(this.rawConfig,e),this.rawConfig=t,n.id=this.rawConfig.id||this.getId("group"),n.autoScale=(0,r.pluckNumber)(this.rawConfig.autoScale,1),n.scaleText=(0,r.pluckNumber)(this.rawConfig.scaleText,0),n.scaleX=n.origScaleX=(0,r.pluckNumber)(this.rawConfig.xScale)/100,n.scaleY=n.origScaleY=(0,r.pluckNumber)(this.rawConfig.yScale)/100,n.scaleImages=(0,r.pluckNumber)(this.rawConfig.scaleImages,0),n.constrainedScale=(0,r.pluckNumber)(this.rawConfig.constrainedScale,1),n.origH=Number(this.rawConfig.origH),n.origW=Number(this.rawConfig.origW),n.link=this.rawConfig.link,n.color=this.rawConfig.color||"#FF0000",n.alpha=(0,r.pluckNumber)(parseFloat(this.rawConfig.alpha),100),n.showShadow=(0,r.pluckNumber)(this.rawConfig.showShadow,0),n.x=(0,r.pluckNumber)(this.rawConfig.x,this.rawConfig.xPos,0),n.y=(0,r.pluckNumber)(this.rawConfig.y,this.rawConfig.yPos,0),n.font=(0,r.pluck)(this.rawConfig.font,"Verdana, sans"),n.fontSize=(0,r.pluckFontSize)(this.rawConfig.fontSize,10),n.textAlign=(0,r.pluck)(this.rawConfig.textAlign),n.textVAlign=(0,r.pluck)(this.rawConfig.textVAlign),n.rotateText=(0,r.pluck)(this.rawConfig.rotateText),n.wrapText=(0,r.pluck)(this.rawConfig.wrapText),n.grpXShift=(0,r.pluckNumber)(this.rawConfig.grpXShift,0),n.grpYShift=(0,r.pluckNumber)(this.rawConfig.grpYShift,0),n.xShift=(0,r.pluckNumber)(this.rawConfig.xShift,0),n.yShift=(0,r.pluckNumber)(this.rawConfig.yShift,0),n.toolText=this.rawConfig.toolText,n.isVisible=(0,r.pluckBoolean)(this.rawConfig.isVisible,!0),n.elementType="group"},t.prototype.updateScale=function(){var e,t=void 0,n=void 0,r=void 0,o=void 0,a=this._getConfig("origScaleX"),i=this._getConfig("origScaleY"),s=this._getFromStore("paper"),l=s.height,c=s.width,u=this._getConfig("autoScale"),d=this._getConfig("constrainedScale");this._setConfig("origW",Number(this._getConfig("origW"))||c),this._setConfig("origH",Number(this._getConfig("origH"))||l),u?(t=c/this._getConfig("origW")*(Number(a)||1),n=l/this._getConfig("origH")*(Number(i)||1)):t=n=1,e=Math.min(t,n),this._setConfig("scaleValue",e),(u>0||isNaN(this._getConfig("scaleX")))&&(r=d?e:t,this._setConfig("scaleX",r)),(u>0||isNaN(this._getConfig("scaleY")))&&(o=d?e:n,this._setConfig("scaleY",o)),this._setConfig("scaleFont",this._getConfig("scaleText")?Math.min(this._getConfig("scaleX"),this._getConfig("scaleY")):1),this._setConfig("scaleImageX",this._getConfig("scaleImages")?this._getConfig("scaleX"):1),this._setConfig("scaleImageY",this._getConfig("scaleImages")?this._getConfig("scaleY"):1)},t.prototype.updateAttr=function(e){var t,n,r=this.config,o=void 0;for(o in e)e[o]&&(r[o]=e[o]);t=this.getScaledVal(this._getConfig("grpXShift"))+this._getConfig("xShift"),n=this.getScaledVal(this._getConfig("grpYShift"))+this._getConfig("yShift"),this._setConfig("attr",{transform:"T"+t+","+n})},t.prototype.attachItem=function(e){this.items.push(e),e._setToStore("annotation-group",this),e.groupConfig={},e._setGroupElement(this._getFromStore("element"))},t.prototype.retrieveItem=function(e){return find.call(this.items,function(t){return t.getId()===e})},t.prototype.getScaledVal=function(e,t){return this?e*(t?this._getConfig("scaleX"):(!1===t?this._getConfig("scaleY"):this._getConfig("scaleValue"))||1):e},t.prototype.getScaledFont=function(e){return this?e*this._getConfig("scaleFont"):e},t.prototype.getScaledImageVal=function(e,t){return this?e*((t?this._getConfig("scaleImageX"):this._getConfig("scaleImageY"))||1):e},t.prototype._draw=function(){var e,t,n=this._getGroupElement(),r=this._getFromStore("element"),o=this._getConfig("attr")||{},a=this._getFromStore("animationManager");e=this.getScaledVal(this._getConfig("grpXShift"))+this._getConfig("xShift"),t=this.getScaledVal(this._getConfig("grpYShift"))+this._getConfig("yShift"),o.name=this._getConfig("id"),o.transform=o.transform||"T"+e+","+t,r=a.setAnimation({el:r||"group",attr:o,container:n,component:this._getFromStore("component"),dom:"group"}),this._getConfig("isVisible")?r.show():r.hide(),this._setToStore("element",r)},t.prototype.dispose=function(){var e,t=this._getFromStore("controller"),n=t.retrieveGroup(this.getId(),!0),r=void 0,o=void 0,a=n.items||[],i=void 0;for(i=0;i<a.length;i++)(o=t.retrieveItem(a[i].getId(),!0))&&o.dispose();r=n._getFromStore("animationManager"),(e=n._getFromStore("element"))&&r.setAnimation({el:e,component:n._getFromStore("component")})},t}(o["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(186),a=(r=o)&&r.__esModule?r:{"default":r},i=n(199);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l="ontouchstart"in window.document,c=window.navigator,u=l&&!(c.maxTouchPoints||c.msMaxTouchPoints),d={click:!0,dragstart:!0,dragmove:!0,dragend:!0,dblclick:!0,mousedown:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,"fc-click":!0,"fc-dragstart":!0,"fc-dragmove":!0,"fc-dragend":!0,"fc-dbclick":!0,"fc-mousedown":!0,"fc-mousemove":!0,"fc-mouseout":!0,"fc-mouseover":!0,"fc-mouseup":!0,"fc-pinchstart":l||u,"fc-pinchmove":l||u,"fc-pinchend":l||u,touchstart:l||u,touchmove:l||u,touchend:l||u,touchcancel:l||u},f=0;function h(e){return!!d[e]}function p(e,t){if(e&&e.hasOwnProperty&&t&&t.call){var n=void 0,r=void 0,o=void 0,a=void 0;for(n in e)if(e.hasOwnProperty(n))if((r=e[n])instanceof Array)for(a=r.length,o=0;o<a;o++)t(r[o],n,o);else t(r,n)}}var g=function(e){function t(){var n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,n));return f++,r}return s(t,e),t.prototype.setEditor=function(e){this.store.editor=e},t.prototype._setGroupElement=function(e){this.store.groupElement=e},t.prototype._getGroupElement=function(){return this.store.groupElement},t.prototype.getId=function(e){return this.config.id||"annotation_"+e+"_"+f},t.prototype.getGraphicalElement=function(){var e={};return e[this.getId()]=this._getFromStore("element"),e},t.prototype.getElement=function(){return this._getFromStore("element")},t.prototype.getBounds=function(){return this.getElement().getBBox()},t.prototype.addEventListener=function(e,t){var n=this,r=void 0;return!!(e&&e.toLowerCase&&(e=e.toLowerCase(),(0,i.addListener)(e,t,n)))&&(h(e)&&(r=(0,i.getListeners)(e,n))&&1===r.length&&(n._middleListeners||(n._middleListeners={}),n._middleListeners[e]||(n._middleListeners[e]=function(t){n.fireEvent(e,undefined,undefined,undefined,t)}),function(e,t,n){var r;t&&n&&(r=function(e){e.on&&e.on(t,n)},e.getGraphicalElement&&p(e.getGraphicalElement(),r),e.getChildContainer&&p(e.getChildContainer(),r))}(n,e,n._middleListeners[e])),t)},t.prototype.removeEventListener=function(e,t){var n=void 0;e&&e.toLowerCase&&(e=e.toLowerCase(),(0,i.removeListener)(e,t,this),h(e)&&(n=(0,i.getListeners)(e,this))&&0===n.length&&this._middleListeners&&this._middleListeners[e]&&function(e,t,n){var r;t&&n&&(r=function(e){e.off&&e.off(t,n)},p(e.getGraphicalElement(),r),p(e.getChildContainer(),r))}(this,e,this._middleListeners[e]))},t.prototype.fireEvent=function(e,t,n,r,o){(0,i.triggerEvent)(e,this,t,o,n,r)},t}(a["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0;var r=void 0,o={type:"TypeException",range:"ValueRangeException",impl:"NotImplementedException",param:"ParameterException",run:"RuntimeException",comp:"DesignTimeError",undefined:"UnspecifiedException"},a={},i=0;function s(e,t,n,r){try{e[0].call(t,n,r||{})}catch(o){setTimeout(function(){throw o},0)}}function l(e,t,n){var o=0,a=void 0;if(e instanceof Array&&!t.cancelled)for(;o<e.length&&(e[o][1]!==t.sender&&e[o][1]!==r||(a=e[o][1]===t.sender?t.sender:{},s(e[o],a,t,n),!0===t.detached&&(e.splice(o,1),o-=1,t.detached=!1)),!0!==t.cancelled);o+=1);}function c(){this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()}function u(){this.cancelled=!0,this.originalEvent&&this.originalEvent.stopImmediatePropagation&&this.originalEvent.stopImmediatePropagation.call?this.originalEvent.stopImmediatePropagation():this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()}function d(){return!1==(this.detached=!0)}function f(){this.defaultPrevented=!0,this.originalEvent&&this.originalEvent.preventDefault&&this.originalEvent.preventDefault.call&&this.originalEvent.preventDefault()}function h(e,t,n,r,o,s){var h,g,m,v,y;return g=p(e=e.toLowerCase(),t),m=p("*",t),v=a[e],y=a["*"],(g&&g.length||m&&m.length||v&&v.length||y&&y.length)&&(l(y,h={type:e,eventType:e,eventId:i+=1,sender:t||new Error("Orphan Event"),stopPropagation:c,stopImmediatePropagation:u,cancelled:!1,preventDefault:f,defaultPrevented:!1,originalEvent:r,detached:!1,data:n,detachHandler:d},n),l(v,h,n),l(p("*",t),h,n),l(p(e,t),h,n)),h&&h.defaultPrevented?s&&"function"==typeof s&&s.call(t,h,n||{}):o&&"function"==typeof o&&o.call(t,h,n||{}),!0}function p(e,t){if("string"==typeof e)return e=e.toLowerCase(),t?t._evtListeners&&t._evtListeners[e]:a[e];g(t,"03091559","param","::removeListener",new Error("Unspecified Event Type"))}function g(e,t,n,r,a){!function(e,t,n,r,a,i){var s="#"+t+" "+(e?e.id:"unknown-source")+r+" "+i+" >> ";a instanceof Error?(a.name=o[n],a.module="FusionCharts"+r,a.level=i,a.message=s+a.message,s=a.message,setTimeout(function(){throw a},0)):s+=a,h(i,e,{id:t,nature:o[n],source:"FusionCharts"+r,message:s})}(e,t,n,r,a,"Error")}t.addListener=function m(e,t,n){var r,o,i;if(e instanceof Array){for(r=[],o=0;o<e.length;o+=1)r.push(m(e[o],t,n));return r}if("string"==typeof e){if("function"==typeof t)return e=e.toLowerCase(),n?(n._evtListeners||(n._evtListeners={}),n._evtListeners[e]instanceof Array||(n._evtListeners[e]=[]),i=n._evtListeners[e]):(a[e]instanceof Array||(a[e]=[]),i=a[e]),!function(e,t,n){var r=void 0,o=e.length;for(r=0;r<o;r+=1)if(e[r][0]===t&&e[r][1]===n)return!0}(i,t,n)&&(i.push([t,n]),t);g(n,"03091550","param","::addListener",new Error("Invalid Event Listener"))}else g(n,"03091549","param","::addListener",new Error("Unspecified Event Type"))},t.removeListener=function v(e,t,n){var r,o;if("function"==typeof t){if(e instanceof Array)for(o=0;o<e.length;o+=1)v(e[o],t,n);else if((r=p(e,n))instanceof Array&&r.length)for(o=r.length-1;o>=0;o-=1)r[o][0]===t&&r[o][1]===n&&r.splice(o,1)}else g(n,"03091560","param","::removeListener",new Error("Invalid Event Listener"))},t.triggerEvent=h,t.getListeners=p},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(196),a=n(201);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var s=180;function l(e){return e*(Math.PI/s)}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return i(t,e),t.prototype._configureShape=function(e){var t,n=this._getFromStore("paper"),r=n&&n.width||700,a=n&&n.height||350,i=Math.max(r,a),s=Math.sqrt(i);this.config.radius=e.radius,this.config.xRadius=(0,o.pluckNumber)(parseFloat(e.radius),parseFloat(e.xRadius),s),this.config.yRadius=(0,o.pluckNumber)(parseFloat(e.yRadius),this.config.xRadius),this.config.startAngle=(0,o.pluckNumber)(parseFloat(e.startAngle),0),this.config.endAngle=(0,o.pluckNumber)(parseFloat(e.endAngle),360),this.config.innerRadius=(0,o.pluckNumber)(parseFloat(e.innerRadius),0),this.config.innerYRadius=(0,o.pluckNumber)(parseFloat(e.innerYRadius),this.config.innerRadius,0),"arc"===this.config.type?this.config.elementType="ringpath":0!==(t=this.config).startAngle||360!==t.endAngle||function(e){return e.innerRadius>0||e.innerYRadius>0}(this.config)?this.config.elementType="ringpath":this.config.elementType="ellipse"},t.prototype._getExtraEditableRequests=function(){var e=[{name:"radius",value:(0,o.toPrecision)(this.config.xRadius,2)},{name:"startAngle",value:this.config.startAngle},{name:"endAngle",value:this.config.endAngle},{name:"fillColor",value:this.config.rawColor},{name:"fillAlpha",value:this.config.rawAlpha},{name:"fillRatio",value:(0,o.getFirstValue)(this.config.rawRatio,"")},{name:"fillAngle",value:this.config.rawAngle},{name:"fillPattern",value:"radial"===this.config.rawFillPattern},{name:"showBorder",value:1===this.config.showBorder},{name:"borderColor",value:this.config.rawBorderColor},{name:"borderThickness",value:this.config.borderThickness},{name:"borderAlpha",value:this.config.rawBorderAlpha}];return"arc"===this.config.type&&e.push({name:"innerRadius",value:this.config.innerRadius}),e},t.prototype.updateAttr=function(e){var t=this.config,n=void 0,r=this._getFromStore("paper"),a=this.getScaledVal(t.xRadius),i=this.getScaledVal(t.yRadius),s=this.getScaledVal(t.innerRadius),c=this.getScaledVal(t.innerYRadius);switch((0,o.pluck)(t.radius)||(t.radius=r.width<r.height?this.getScaledVal(r.width):this.getScaledVal(r.height),t.radius*=.3,s>t.radius&&(s+=t.radius,t.radius=s-t.radius,s-=t.radius),a=i=t.radius,c=s),t.elementType){case"ringpath":n={ringpath:[(0,o.pluckNumber)(e.x,this.getScaledVal(t.x,!0)),(0,o.pluckNumber)(e.y,this.getScaledVal(t.y,!1)),a,s,l(360-t.endAngle),l(360-t.startAngle),i,c]};break;default:n={cx:(0,o.pluckNumber)(e.x,this.getScaledVal(t.x,!0)),cy:(0,o.pluckNumber)(e.y,this.getScaledVal(t.y,!1))}}this._setConfig("attr",n)},t.prototype._getAnnotationAttrs=function(){var e=this.config,t=this._getConfig("attr")||{},n=e.x,r=e.y,o=this.getScaledVal(e.xRadius),a=this.getScaledVal(e.yRadius),i=this.getScaledVal(e.innerRadius),s=this.getScaledVal(e.innerYRadius),c=e.startAngle,u=e.endAngle,d=e.borderColor,f=e.borderThickness,h=e.dashArrayStr,p=e.color,g=void 0;switch(e.xRadius||(o=0),e.yRadius||(a=0),t.fill=p,t.stroke=d,t["stroke-width"]=f,t["stroke-dasharray"]=h,this.config.elementType){case"ringpath":g=[this.getScaledVal(n,!0),this.getScaledVal(r,!1),o,i,l(360-u),l(360-c),a,s],t.ringpath=t.ringpath||g;break;default:t.rx=o,t.ry=a,t.cx="undefined"==typeof t.cx?this.getScaledVal(n,!0):t.cx,t.cy="undefined"==typeof t.cy?this.getScaledVal(r,!1):t.cy}return t},t}(((r=a)&&r.__esModule?r:{"default":r})["default"]);t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(187)),o=i(n(198)),a=n(196);function i(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.setAttribute=function(e){var t,n,o,i=this.config,s=this._getFromStore("annotation-group");null!=s&&(this.groupConfig.x=s._getConfig("x"),this.groupConfig.y=s._getConfig("y"),this.groupConfig.grpXShift=s._getConfig("grpXShift"),this.groupConfig.grpYShift=s._getConfig("grpYShift"),this.groupConfig.color=s._getConfig("color"),this.groupConfig.alpha=s._getConfig("alpha"),this.groupConfig.font=s._getConfig("font"),this.groupConfig.fontSize=s._getConfig("fontSize"),this.groupConfig.textAlign=s._getConfig("textAlign"),this.groupConfig.textVAlign=s._getConfig("textVAlign"),this.groupConfig.rotateText=s._getConfig("rotateText"),this.groupConfig.wrapText=s._getConfig("wrapText"),this.groupConfig.toolText=s._getConfig("toolText"),this.groupConfig.scaleX=s._getConfig("scaleX"),this.groupConfig.scaleY=s._getConfig("scaleY"),this.groupConfig.scaleImageX=s._getConfig("scaleImageX"),this.groupConfig.scaleImageY=s._getConfig("scaleImageY"),this.groupConfig.link=s._getConfig("link")),o=(0,r["default"])(this.rawConfig,e),this.rawConfig=o,i.id=(0,a.pluck)(this.rawConfig.id,this.getId("shape")),i.type=this.rawConfig.type,i.color=this._getFillColor(this.rawConfig,this.groupConfig),i.link=(0,a.pluck)(this.rawConfig.link,this.groupConfig.link),i.borderThickness=(0,a.pluckNumber)(parseFloat(this.rawConfig.borderThickness),parseFloat(this.rawConfig.thickness),2),i.showBorder=(0,a.pluckNumber)(this.rawConfig.showBorder,void 0===this.rawConfig.borderColor?void 0:1,0),i.borderColor=this._getBorderColor(this.rawConfig),i.dashed=(0,a.pluckNumber)(this.rawConfig.dashed,0),i.dashLen=(0,a.pluckNumber)(this.rawConfig.dashLen,5),i.dashGap=(0,a.pluckNumber)(parseFloat(this.rawConfig.dashGap),3),i.dashArrayStr=i.dashed?(0,a.getDashStyle)(i.dashLen,i.dashGap):"none",i.x=(0,a.pluckNumber)(this.rawConfig.x,this.rawConfig.xPos,0),i.y=(0,a.pluckNumber)(this.rawConfig.y,this.rawConfig.yPos,0),i.tox=(0,a.pluckNumber)(this.rawConfig.toX,i.x,0),i.toy=(0,a.pluckNumber)(this.rawConfig.toY,i.y,0),i.toy>=0&&i.y>=0&&i.toy<i.y&&(t=[i.toy,i.y],i.y=t[0],i.toy=t[1]),i.tox>=0&&i.x>=0&&i.tox<i.x&&(n=[i.tox,i.x],i.x=n[0],i.tox=n[1]),i.showShadow=(0,a.pluckNumber)(this.rawConfig.showShadow,s.config.showShadow,0),i.toolText=(0,a.getFirstValue)(this.rawConfig.toolText,this.groupConfig.toolText,""),i.isVisible=(0,a.pluckBoolean)(this.rawConfig.isVisible,!0),i.animConfig.animDuration=(0,a.pluckNumber)(this.rawConfig.animConfig&&this.rawConfig.animConfig.animDuration,1e3),this._configureShape(this.rawConfig)},t.prototype._getEditorConfig=function(){return this},t.prototype._getBorderColor=function(e){var t=this.getType(),n="none",r=this.config,o={color:"",alpha:""};return"line"!==t&&(o.color=this.config.rawBorderColor=(0,a.pluck)(e.borderColor,e.fillColor&&e.fillColor.split(",")[0],e.color&&e.color.split(",")[0],r.rawColor&&r.rawColor.split(",")[0],"#000000"),0===this.config.showBorder?(o.alpha=1,o.color="none",r.borderThickness=2):o.alpha=r.rawBorderAlpha=(0,a.pluckNumber)(parseFloat(e.borderAlpha),parseFloat(e.alpha),100),n=(0,a.toRaphaelColor)(o)),n},t.prototype._getFillColor=function(e,t){var n=this.getType(),r={color:"",alpha:"",angle:"",ratio:"",radialGradient:"circle"===n||"arc"===n};return"line"===n||"image"===n?(r.color=e.color||t.color||"#FF0000",r.alpha=(0,a.pluckNumber)(parseFloat(e.alpha),t.alpha,100)):(r.color=e.fillColor||e.color||t.color||"#FF0000",r.alpha=(0,a.pluck)(e.fillAlpha,parseFloat(e.alpha),t.alpha,100),r.angle=360-(0,a.pluckNumber)(e.fillAngle,0),r.ratio=(0,a.pluck)(e.fillRatio),e.fillPattern&&(r.radialGradient="radial"===e.fillPattern.toLowerCase()||(0,a.pluckNumber)(e.fillPattern)),r.radialGradient&&(r.gradientUnits="objectBoundingBox",r.cx=.5,r.cy=.5,r.fx=.5,r.fy=.5)),this.config.rawColor=r.color,this.config.rawAlpha=r.alpha,this.config.rawAngle=r.angle,this.config.rawFillPattern=r.radialGradient?"radial":"linear",this.config.rawRatio=r.ratio,(0,a.toRaphaelColor)(r)},t.destroySelectionBox=function(){},t.prototype._applyAttr=function(e){var t,n=this,r=n._getFromStore("annotation-group"),o=n.rawConfig.animationLabel,a=r.rawConfig.animationLabel,i=n.store,s=n._getFromStore("animationManager"),l=n.config.elementType,c=n._getFromStore("element"),u=n._getFromStore("toolTipController"),d=n._getConfig("toolText");("image"!==l||n.config.url)&&(t=n.rawConfig.css||{},n.config.link&&(t.cursor=t.cursor||"pointer"),(c=s.setAnimation({el:c||l,attr:e,css:t,container:n._getGroupElement(),component:n._getFromStore("component"),label:o||a||l})).shadow({opacity:0!==n.config.showShadow?1:0,useFilter:"path"===l?0:1}),c.on("click",function(e){n.config.link&&n._getFromStore("clickFN").call({link:n.config.link},!0)}),i.element||"image"!==l||(c.on("load",function(e){var t=c._.RefImg,r=t.height,o=t.width,a=n._getConfig("align"),i=n._getConfig("vAlign"),s=n._getConfig("xScale"),l=r*n._getConfig("yScale"),u=o*s,d=function(e){var t=e.height,n=e.width,r=e.vAlign,o=e.align,a=e.x,i=e.y,s={x:a,y:i};switch(o){case"center":s.x=a-n/2;break;case"right":s.x=a-n}switch(r){case"middle":s.y=i-t/2;break;case"bottom":s.y=i-t}return s}({x:c.attr("x"),y:c.attr("y"),height:l,width:u,align:a,vAlign:i});c.attr({x:d.x,y:d.y,height:l,width:u}),n.rawConfig.onload&&n.rawConfig.onload.call(n,c.getBBox())}),c.on("error",function(e){n.rawConfig.onerror&&n.rawConfig.onerror.call(n,c)})),i.element=c,n.config.isVisible?c.show():c.hide(),c&&(d&&""!==d?u&&u.enableToolTip(c,d):u&&u.disableToolTip(c)))},t.prototype.getScaledVal=function(e,t){var n=this._getFromStore("annotation-group");return n?n.getScaledVal(e,t):e},t.prototype.getScaledFont=function(e){var t=this._getFromStore("annotation-group");return t?t.getScaledFont(e):e},t.prototype.getScaledImageVal=function(e,t){var n=this._getFromStore("annotation-group");return n?n.getScaledImageVal(e,t):e},t.prototype._draw=function(){var e,t=this._getFromStore("paper");e=this._getAnnotationAttrs(t),this._applyAttr(e)},t}(o["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(196),a=n(201);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}function s(e){return e<="9"&&e>="0"||"-"===e||"."===e?0:e<="z"&&e>="a"||e<="Z"&&e>="A"?1:2}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return i(t,e),t.prototype._configureShape=function(e){this.config.pathStr=(0,o.pluck)(e.path),this.config.x=(0,o.pluckNumber)(e.x,0),this.config.y=(0,o.pluckNumber)(e.y,0),this.config.tox=(0,o.pluckNumber)(e.toX,this.config.x),this.config.toy=(0,o.pluckNumber)(e.toY,this.config.y),this.config.elementType="path"},t.prototype.getExtraEditableRequests=function(){return[{name:"thickness",value:this.config.borderThickness},{name:"color",value:this.config.rawColor},{name:"alpha",value:this.config.rawAlpha}]},t.prototype.getScaledPath=function(){var e=this.config.pathStr,t=[],n=void 0,r=void 0,a="",i=void 0,l=void 0,c=void 0;for(c=e&&e.length,i=0;i<c;i++){for(l=i,r="",n=s(e[i]);l<c&&s(e[l])===n;)r+=e[l],l++;""!==(r=(0,o.trim)(r))&&n<2&&t.push(r),i=l===i?l:l-1}for(c=t.length,i=0;i<c;)switch(a+=t[i],t[i].toLowerCase()){case"m":case"l":case"t":a+=this.getScaledVal(Number(t[i+1]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+2]),!1).toString(),i+=3;break;case"s":case"q":a+=this.getScaledVal(Number(t[i+1]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+2]),!1).toString()+",",a+=this.getScaledVal(Number(t[i+3]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+4]),!1).toString(),i+=5;break;case"h":a+=this.getScaledVal(Number(t[i+1]),!0).toString(),i+=2;break;case"v":a+=this.getScaledVal(Number(t[i+1]),!1).toString(),i+=2;break;case"c":a+=this.getScaledVal(Number(t[i+1]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+2]),!1).toString()+",",a+=this.getScaledVal(Number(t[i+3]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+4]),!1).toString()+",",a+=this.getScaledVal(Number(t[i+5]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+6]),!1).toString(),i+=7;break;case"a":a+=this.getScaledVal(Number(t[i+1]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+2]),!1).toString()+",",a+=this.getScaledVal(Number(t[i+3]),!0).toString()+",",a+=t[i+4]+",",a+=t[i+5]+",",a+=this.getScaledVal(Number(t[i+6]),!0).toString()+",",a+=this.getScaledVal(Number(t[i+7]),!1).toString(),i+=8;break;case"z":default:i++}return a.toString()},t.prototype.updateAttr=function(e){var t,n,r,a,i=this.config,s={};t=(0,o.pluckNumber)(e.x,this.getScaledVal(i.x,!0)),n=(0,o.pluckNumber)(e.y,this.getScaledVal(i.y,!1)),r=(0,o.pluckNumber)(e.toX,t,this.getScaledVal(i.tox,!0)),a=(0,o.pluckNumber)(e.toY,n,this.getScaledVal(i.toy,!1)),i.pathStr?(s.path=this.getScaledPath(),s.transform="T"+t+","+n):s.path="M"+t+","+n+"L"+r+","+a,this._setConfig("attr",s)},t.prototype._getAnnotationAttrs=function(){var e,t,n,r,o,a=this.config,i=this._getConfig("attr")||{},s=a.borderThickness,l=a.dashArrayStr,c=a.color;return i.stroke=c,this.rawConfig.color&&(i.fill=c),i["stroke-width"]=this.getScaledVal(s),i["stroke-dasharray"]=l,e=i.x||this.getScaledVal(a.x,!0),t=i.y||this.getScaledVal(a.y,!1),n=i.toX||this.getScaledVal(a.tox,!0),r=i.toY||this.getScaledVal(a.toy,!1),i.path?i:((o=this.getScaledPath())?(i.path=o,i.transform=i.transform||"T"+e+","+t):i.path=i.path||"M"+e+","+t+"L"+n+","+r,i)},t}(((r=a)&&r.__esModule?r:{"default":r})["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(196),a=n(201);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return i(t,e),t.prototype._configureShape=function(e){this.config.xRadius=(0,o.pluckNumber)(parseFloat(e.radius),0),this.config.elementType="rect"},t.prototype.getExtraEditableRequests=function(){return[{name:"radius",value:(0,o.toPrecision)(this.config.xRadius,2)},{name:"fillColor",value:this.config.rawColor},{name:"fillAlpha",value:this.config.rawAlpha},{name:"fillRatio",value:(0,o.getFirstValue)(this.config.rawRatio,"")},{name:"fillAngle",value:this.config.rawAngle},{name:"fillPattern",value:"radial"===this.config.rawFillPattern},{name:"showBorder",value:1===this.config.showBorder},{name:"borderColor",value:this.config.rawBorderColor},{name:"borderThickness",value:this.config.borderThickness},{name:"borderAlpha",value:this.config.rawBorderAlpha}]},t.prototype.updateAttr=function(e){var t,n,r=this.config,a=void 0,i=void 0,s=void 0,l=void 0;a=(0,o.pluckNumber)(e.x,this.getScaledVal(r.x,!0)),i=(0,o.pluckNumber)(e.y,this.getScaledVal(r.y,!1)),s=(0,o.pluckNumber)(e.toX,this.getScaledVal(r.tox,!0)),(l=(0,o.pluckNumber)(e.toY,this.getScaledVal(r.toy,!1)))>=0&&i>=0&&l<i&&(i=(t=[l,i])[0],l=t[1]),s>=0&&a>=0&&s<a&&(a=(n=[s,a])[0],s=n[1]),this._setConfig("attr",{x:a,y:i,width:Math.abs(s-a),height:Math.abs(l-i)})},t.prototype._getAnnotationAttrs=function(){var e=this.config,t=this._getConfig("attr")||{},n=this.getScaledVal(e.x),r=this.getScaledVal(e.y),o=e.xRadius,a=this.getScaledVal(e.tox),i=this.getScaledVal(e.toy),s=e.borderColor,l=e.borderThickness,c=e.dashArrayStr,u=e.color;return t.x="undefined"==typeof t.x?n:t.x,t.y="undefined"==typeof t.y?r:t.y,t.width="undefined"==typeof t.width?Math.abs(a-n):t.width,t.height="undefined"==typeof t.height?Math.abs(i-r):t.height,t.r=this.getScaledVal(o),t.fill=u,t.stroke=s,t["stroke-width"]=l,t["stroke-dasharray"]=c,t},t}(((r=a)&&r.__esModule?r:{"default":r})["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(201),a=(r=o)&&r.__esModule?r:{"default":r},i=n(196);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype._configureShape=function(e){this.config.sides=(0,i.pluckNumber)((0,i.clampNumber)(e.sides,3),5),this.config.startAngle=(0,i.pluckNumber)(parseFloat(e.startAngle),0),this.config.xRadius=(0,i.pluckNumber)(parseFloat(e.radius),0),this.config.elementType="polypath"},t.prototype.getExtraEditableRequests=function(){return[{name:"radius",value:(0,i.toPrecision)(this.config.xRadius,2)},{name:"sides",value:this.config.sides},{name:"startAngle",value:this.config.startAngle},{name:"fillColor",value:this.config.rawColor},{name:"fillAlpha",value:this.config.rawAlpha},{name:"fillRatio",value:(0,i.getFirstValue)(this.config.rawRatio,"")},{name:"fillAngle",value:this.config.rawAngle},{name:"fillPattern",value:"radial"===this.config.rawFillPattern},{name:"showBorder",value:1===this.config.showBorder},{name:"borderColor",value:this.config.rawBorderColor},{name:"borderThickness",value:this.config.borderThickness},{name:"borderAlpha",value:this.config.rawBorderAlpha}]},t.prototype.updateAttr=function(e){var t,n=this.config;t=[n.sides,(0,i.pluckNumber)(e.x,this.getScaledVal(n.x,!0)),(0,i.pluckNumber)(e.y,this.getScaledVal(n.y,!1)),this.getScaledVal(n.xRadius),n.startAngle,0],this._setConfig("attr",{polypath:t})},t.prototype._getAnnotationAttrs=function(){var e=this.config,t=this._getConfig("attr")||{},n=e.sides,r=e.x,o=e.y,a=e.color,i=e.startAngle,s=e.borderColor,l=e.borderThickness,c=e.dashArrayStr,u=e.xRadius;return t.fill=a,t.stroke=s,t["stroke-width"]=l,t["stroke-dasharray"]=c,t.polypath=t.polypath||[n,this.getScaledVal(r,!0),this.getScaledVal(o,!1),this.getScaledVal(u),i,0],t},t}(a["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(201)),o=n(196),a=i(n(206));function i(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype._configureShape=function(e){var t=this.config,n=this.groupConfig.scaleX||1,r=this.groupConfig.scaleY||1;t.url=(0,o.getValidValue)(e.url),t.xScale=(0,o.pluckNumber)(e.xScale,100)/100,t.yScale=(0,o.pluckNumber)(e.yScale,100)/100,t.width=(0,o.pluckNumber)(e.width,0),t.height=(0,o.pluckNumber)(e.height,0),t.align=(0,o.pluck)(e.align,"left"),t.vAlign=(0,o.pluck)(e.vAlign,"top"),t.xScale=t.xScale*n,t.yScale=t.yScale*r,t.elementType="image"},t.prototype.getEditorConfig=function(){return this.editorConfig=(0,a["default"])([{name:"id",value:this.config.id},{name:"url",value:this.config.url},{name:"tooltext",value:this.config.toolText}]),this.editorConfig},t.prototype.updateAttr=function(e){var t=this.config;this._setConfig("attr",{x:(0,o.pluckNumber)(e.x,this.getScaledVal(t.x,!0)),y:(0,o.pluckNumber)(e.y,this.getScaledVal(t.y,!1))})},t.prototype._getAnnotationAttrs=function(){var e=this.config,t=this._getConfig("attr")||{},n=e.url,r=e.x,a=e.y;return t.x="undefined"==typeof t.x?this.getScaledVal(r,!0):t.x,t.y="undefined"==typeof t.y?this.getScaledVal(a,!1):t.y,t.src=n,t.width=e.width,t.height=e.height,t.opacity=(0,o.pluckNumber)(e.rawAlpha,100)/100,t},t}(r["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r={overflow:"hidden",whitespace:"nowrap","text-overflow":"ellipsis","vertical-align":"middle",position:"relative","text-align":"right","padding-right":"4px","font-size":"0.8em","font-weight":"500"},o={"vertical-align":"middle",border:"1px solid #cccccc",position:"relative","padding-left":"4px","padding-right":"4px","padding-top":"2px","font-size":"0.8em","padding-bottom":"2px"},a={id:{label:{innerHTML:"Identifier",attrs:{"for":"fc-editor-id-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-id-input","data-config-key":"id"},styles:o}},color:{label:{innerHTML:"Color",attrs:{"for":"fc-editor-color-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-color-input","data-config-key":"color"},styles:o}},alpha:{label:{innerHTML:"Alpha",attrs:{"for":"fc-editor-alpha-input"},styles:r},input:{attrs:{type:"number",min:0,max:100,id:"fc-editor-alpha-input","data-config-key":"alpha"},styles:o}},showBorder:{label:{innerHTML:"Show Border",attrs:{"for":"fc-editor-show-border-input"},styles:r},input:{attrs:{type:"checkbox",id:"fc-editor-show-border-input","data-config-key":"showborder"},props:{},styles:o}},dashed:{label:{innerHTML:"Dashed",attrs:{"for":"fc-editor-dashed-input"},styles:r},input:{attrs:{type:"checkbox",id:"fc-editor-dashed-input","data-config-key":"dashed"},props:{},styles:o}},dashLen:{label:{innerHTML:"Dash Length",attrs:{"for":"fc-editor-dash-len-input"},styles:r},input:{attrs:{type:"number",id:"fc-editor-dash-len-input","data-config-key":"dashlen"},styles:o}},dashGap:{label:{innerHTML:"Dash Gap",attrs:{"for":"fc-editor-dash-gap-input"},styles:r},input:{attrs:{type:"number",id:"fc-editor-dash-gap-input","data-config-key":"dashgap"},styles:o}},tooltext:{label:{innerHTML:"Tool Text",attrs:{"for":"fc-editor-tool-text-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-tool-text-input","data-config-key":"tooltext"},styles:o}},url:{label:{innerHTML:"URL",attrs:{"for":"fc-editor-url-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-url-input","data-config-key":"url"},styles:o}},radius:{label:{innerHTML:"Radius",attrs:{"for":"fc-editor-radius-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-url-input","data-config-key":"xradius"},styles:o}},startAngle:{label:{innerHTML:"Start Angle",attrs:{"for":"fc-editor-start-angle-input"},styles:r},input:{attrs:{type:"number",min:0,max:360,id:"fc-editor-start-angle-input","data-config-key":"startangle"},styles:o}},endAngle:{label:{innerHTML:"End Angle",attrs:{"for":"fc-editor-end-angle-input"},styles:r},input:{attrs:{type:"number",min:0,max:360,id:"fc-editor-end-angle-input","data-config-key":"endangle"},styles:o}},innerRadius:{label:{innerHTML:"Inner Radius",attrs:{"for":"fc-editor-inner-radius-input"},styles:r},input:{attrs:{type:"number",id:"fc-editor-inner-radius-input","data-config-key":"innerradius"},styles:o}},fillColor:{label:{innerHTML:"Fill Color",attrs:{"for":"fc-editor-fill-color-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-fill-color-input","data-config-key":"fillcolor"},styles:o}},fillAlpha:{label:{innerHTML:"Fill Alpha",attrs:{"for":"fc-editor-fill-alpha-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-fill-alpha-input","data-config-key":"fillalpha"},styles:o}},fillRatio:{label:{innerHTML:"Fill Ratio",attrs:{"for":"fc-editor-fill-ratio-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-fill-ratio-input","data-config-key":"fillratio"},styles:o}},fillAngle:{label:{innerHTML:"Fill Angle",attrs:{"for":"fc-editor-fill-angle-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-fill-angle-input","data-config-key":"fillangle"},styles:o}},fillPattern:{label:{innerHTML:"Radial Gradient",attrs:{"for":"fc-editor-fill-pattern-input"},styles:r},input:{attrs:{type:"checkbox",id:"fc-editor-fill-pattern-input","data-config-key":"fillpattern"},props:{},styles:o}},borderColor:{label:{innerHTML:"Border Color",attrs:{"for":"fc-editor-border-color-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-border-color-input","data-config-key":"bordercolor"},styles:o}},borderThickness:{label:{innerHTML:"Border Thickness",attrs:{"for":"fc-editor-border-thickness-input"},styles:r},input:{attrs:{type:"number",id:"fc-editor-border-thickness-input","data-config-key":"borderthickness"},styles:o}},borderAlpha:{label:{innerHTML:"Border Alpha",attrs:{"for":"fc-editor-border-alpha-input"},styles:r},input:{attrs:{type:"number",min:0,max:100,id:"fc-editor-border-alpha-input","data-config-key":"borderalpha"},styles:o}},thickness:{label:{innerHTML:"Thickness",attrs:{"for":"fc-editor-thickness-input"},styles:r},input:{attrs:{type:"number",id:"fc-editor-thickness-input","data-config-key":"thickness"},styles:o}},sides:{label:{innerHTML:"Sides",attrs:{"for":"fc-editor-sides-input"},styles:r},input:{attrs:{type:"number",min:3,id:"fc-editor-sides-input","data-config-key":"sides"},styles:o}},text:{label:{innerHTML:"Text",attrs:{"for":"fc-editor-text-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-text-input","data-config-key":"text"},styles:o}},font:{label:{innerHTML:"Font",attrs:{"for":"fc-editor-text-font-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-text-font-input","data-config-key":"font"},styles:o}},fontSize:{label:{innerHTML:"Font Size",attrs:{"for":"fc-editor-text-size-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-text-size-input","data-config-key":"fontsize"},styles:o}},bold:{label:{innerHTML:"Bold",attrs:{"for":"fc-editor-text-bold-input"},styles:r},input:{attrs:{type:"checkbox",id:"fc-editor-text-bold-input","data-config-key":"bold"},props:{},styles:o}},italic:{label:{innerHTML:"Italics",attrs:{"for":"fc-editor-text-italic-input"},styles:r},input:{attrs:{type:"checkbox",id:"fc-editor-text-italic-input","data-config-key":"italic"},props:{},styles:o}},textBackground:{label:{innerHTML:"Background",attrs:{"for":"fc-editor-text-bg-input"},styles:r},input:{attrs:{type:"text",id:"fc-editor-text-bg-input","data-config-key":"bgcolor"},styles:o}}};t["default"]=function(e){var t,n=[],i=void 0,s=void 0,l=0,c=void 0,u=void 0,d=void 0,f=[],h=void 0;for(i=0,t=e.length;i<t;i++)s=e[i].name,c=e[i].value,u=e[i].labelStyle,d=e[i].inputStyle,"checkbox"===(h=JSON.parse(JSON.stringify(a[s]))).input.attrs.type?h.input.props.checked=c:h.input.attrs.value=c,h.label.styles=u||r,h.input.styles=d||o,f.push(h),2==++l?(n.push(f),f=[],l=0):i===t-1&&(n.push(f),f=[],l=0);return n}},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(201)),o=i(n(206)),a=n(196);function i(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l={left:"start",right:"end",center:"middle"},c={top:"bottom",middle:"middle",bottom:"top"},u={0:"0",1:"270",right:"90",cw:"90",left:"270",ccw:"270"};var d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype._configureShape=function(e){var t,n=this.groupConfig;this.config.text=(0,a.parseUnsafeString)((0,a.pluck)(e.text,e.label,"")),this.config.font=(0,a.pluck)(e.font,n.font,"Verdana, sans"),this.config.fontSize=(0,a.pluckFontSize)(e.fontSize,n.fontSize,10),this.config.align=(0,a.pluck)(l[e.align&&e.align.toLowerCase()],l[n.textAlign&&n.textAlign.toLowerCase()],"middle"),this.config.vAlign=(0,a.pluck)(c[e.vAlign&&e.vAlign.toLowerCase()],c[n.textVAlign&&n.textVAlign.toLowerCase()],"middle"),this.config.radius=(0,a.pluckNumber)(parseFloat(e.radius),0),this.config.fontWeight=(0,a.pluckNumber)(e.bold,0)?"bold":"normal",this.config.fontStyle=(0,a.pluckNumber)(e.italic,0)?"italic":"normal",this.config.bgColor=(t=e.bgColor,(/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)?t:/(^[0-9A-F]{6}$)|(^[0-9A-F]{3}$)/i.test(t))?e.bgColor:"none"),this.config.borderThickness=(0,a.pluckNumber)(parseFloat(this.rawConfig.borderThickness),parseFloat(this.rawConfig.thickness),1),this.config.rotateText=(0,a.pluck)(e.rotateText,n.rotateText,"0"),this.config.rotateAngle=u[this.config.rotateText&&this.config.rotateText.toLowerCase()],this.config.wrap=(0,a.pluckNumber)(e.wrap,n.wrapText,e.wrapHeight,e.wrapWidth,1),this.config.wrap&&(this.config.wrapWidth=(0,a.pluckNumber)(e.wrapWidth),this.config.wrapHeight=(0,a.pluckNumber)(e.wrapHeight)),this.config.leftMargin=(0,a.pluckNumber)(e.leftMargin,0),this.config.elementType="text"},t.prototype.getEditorConfig=function(){var e=[{name:"id",value:this.config.id},{name:"text",value:this.config.text},{name:"font",value:this.config.font},{name:"fontSize",value:this.config.fontSize},{name:"bold",value:"bold"===this.config.fontWeight},{name:"italic",value:"italic"===this.config.fontStyle},{name:"textBackground",value:this.config.bgColor?this.config.bgColor:""}];return(0,o["default"])(e)},t.prototype.getText=function(){var e=this.config,t=this._getFromStore("smartLabel"),n=e.wrap,r=this._getFromStore("annotation-group"),o=r&&r._getConfig("scaleText"),i=o?this.getScaledVal(e.wrapWidth,!0):e.wrapWidth,s=o?this.getScaledVal(e.wrapHeight,!1):e.wrapHeight,l={fontStyle:e.fontStyle,fontFamily:e.font,fontWeight:e.fontWeight,fontSize:e.fontSize+"px","text-anchor":e.align,"vertical-align":e.vAlign};return(0,a.setLineHeight)(l),t&&t.setStyle(l),t&&n?t.getSmartText(e.text,i,s,0).text:e.text},t.prototype._getFillColor=function(e,t){var n=this.getType(),r={color:"",alpha:"",angle:"",ratio:"",radialGradient:"circle"===n||"arc"===n};return r.color=e.fontColor||e.fillColor||e.color||t.color||"#FF0000",r.alpha=(0,a.pluck)(e.fillAlpha,parseFloat(e.alpha),t.alpha,100),r.angle=360-(0,a.pluckNumber)(e.fillAngle,0),r.ratio=(0,a.pluck)(e.fillRatio),e.fillPattern&&(r.radialGradient="radial"===e.fillPattern||(0,a.pluckNumber)(e.fillPattern)),r.radialGradient&&(r.gradientUnits="objectBoundingBox",r.cx=.5,r.cy=.5,r.fx=.5,r.fy=.5),this.config.rawColor=r.color,this.config.rawAlpha=r.alpha,this.config.rawAngle=r.angle,this.config.rawFillPattern=r.radialGradient?"radial":"linear",this.config.rawRatio=r.ratio,(0,a.toRaphaelColor)(r)},t.prototype.updateAttr=function(e){var t=this.config,n=(0,a.pluckNumber)(e.x,this.getScaledVal(t.x,!0)),r=(0,a.pluckNumber)(e.y,this.getScaledVal(t.y,!0)),o=void 0;"0"!==t.rotateText&&(o=(0,a.getSuggestiveRotation)(parseFloat(t.rotateAngle),n,r)),this._setConfig("attr",{x:n,y:r,transform:o})},t.prototype._getAnnotationAttrs=function(e){var t=this.config,n=this._getConfig("attr")||{},r=this.getText(),o=this.getScaledVal(t.x,!0),i=this.getScaledVal(t.y,!1);return n.x=("undefined"==typeof n.x?o:n.x)+t.leftMargin/2,n.y="undefined"==typeof n.y?i:n.y,n.text=r,n.fill=t.color,n["text-bound"]=[(0,a.toRaphaelColor)(t.bgColor),t.borderColor,t.borderThickness,2,t.radius,t.dashArrayStr],n["font-style"]=t.fontStyle,n["font-weight"]=t.fontWeight,n["font-family"]=t.font,n["font-size"]=this.getScaledFont(t.fontSize),n["text-anchor"]=t.align,n["vertical-align"]=t.vAlign,"0"!==t.rotateText&&(n.transform=n.transform||(0,a.getSuggestiveRotation)(parseFloat(t.rotateAngle),o,i)),n},t}(r["default"]);t["default"]=d},function(e,t,n){var r=n(188)(function(e,t){var n={};for(var r in t)e(t[r],r,t)&&(n[r]=t[r]);return n});e.exports=r},function(e,t,n){"use strict";t.__esModule=!0;var r=undefined,o=2*Math.PI,a=window,i="",s=",",l=[-o,-3*o/4,-o/2,-o/4,0],c=[o,3*o/4,o/2,o/4,0],u=function(e){return e*e},d=function(e){return e*(Math.PI/180)},f=function(e,t){var n=!(arguments.length>2&&arguments[2]!==undefined)||arguments[2],r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};return n||(t=d(t)),{x:e*Math.cos(t)+(r.x||0),y:e*Math.sin(t)+(r.y||0)}},h=function(e,t,n){var r=u(e),o=u(t);return 0===e||0===t?0:e*t/Math.sqrt(o*u(Math.cos(n))+r*u(Math.sin(n)))},p=function(e){var t,n,r,a,i,s,c=e.ringpath,u=[],d=[],h=void 0,p=void 0,g=void 0,m=Infinity,v=Infinity,y=-Infinity,b=-Infinity;for(t=w(c[2]),n=w(c[3]),r=w(c[4])%o,a=w(c[5])%o,i=w(c[0]),s=w(c[1]),p=f(t,r,!0,{x:i,y:s}),g=f(t,a,!0,{x:i,y:s}),d.push(p),d.push(g),h=0;h<l.length;h++)l[h]>=r&&l[h]<=a&&u.push(h);for(h=0;h<u.length;h++)p=f(t,l[u[h]],!0,{x:i,y:s}),g=f(n,l[u[h]],!0,{x:i,y:s}),d.push(p),d.push(g);for(p=f(n,r,!0,{x:i,y:s}),g=f(n,a,!0,{x:i,y:s}),d.push(p),d.push(g),h=0;h<d.length;h++)y=Math.max(y,d[h].x),m=Math.min(m,d[h].x),b=Math.max(b,d[h].y),v=Math.min(v,d[h].y);return{x:m,y:v,width:Math.abs(y-m),height:Math.abs(v-b)}},g=function(e,t,n){var r,a=void 0,i=void 0;return r=Math.tan(n),a=e*t/Math.sqrt(t*t+e*e*r*r),i=e*t/Math.sqrt(e*e+t*t/(r*r)),n>o/4&&n<3*o/4?a*=-1:a=Math.abs(a),n>o/2&&n<o?i*=-1:i=Math.abs(i),Math.abs(a)<=1e-5&&(a=0),Math.abs(i)<=1e-5&&(i=0),{x:a,y:i}},m=function(e,t){var n=e.config||e,r=void 0,o=void 0,a=void 0,i=void 0,s=void 0;switch(t){case"column3D":case"bar2D":case"bar3D":case"paretoColumn":case"waterFall2D":case"errorBar2D":case"candlestick":case"heatMap":case"dragColumn":case"sparkColumn":case"marimekko":case"task":case"column":r={x:(o=n.props.element.attr).x+w(o.xDepth,0),y:o.y-w(o.yDepth,0),width:o.width,height:o.height};break;case"line":case"zoomLine":case"zoomScatter":case"scatter":case"spline":case"splinearea":case"multiaxisline":case"stepLine":case"errorScatter":case"errorLine":case"radar":case"selectScatter":case"dragLine":case"dragArea":case"kagi":case"sparkLine":case"area":a=e._xPos,i=e._yPos,r={x:a-(s=Number(n.anchorProps.radius)||0),y:i-s,width:2*s,height:2*s};break;case"bubble":r={x:(o=n.props.element.attr).cx-o.r,y:o.cy-o.r,width:2*o.r,height:2*o.r};break;case"dragNode":o=n.props.element.attr,"rect"===n.shapeType?r={x:o.x,y:o.y,width:o.width,height:o.height}:(a=n._xPos,i=n._yPos,r={x:a-(s=+n.radius||0),y:i-s,width:2*s,height:2*s});break;case"boxandwhisker2D":r={x:(o=n.props.upperBoxElem.attr).x,y:o.y,width:o.width,height:o.height};break;case"category":case"polarCategory":case"log":case"numeric":r={x:(o=n.props.label.attr).x-n.width/2,y:o.y-n.height/2,width:n.width,height:n.height},"end"===o["text-anchor"]||"left"===o["text-anchor"]?r.x=o.x-n.width:"start"!==o["text-anchor"]&&"right"!==o["text-anchor"]||(r.x=o.x),"top"===o["vertical-align"]?r.y=o.y:"bottom"===o["vertical-align"]&&(r.y=o.y-n.height);break;case"multiLevelPie":o=n.props.element.attr,r=p(o)}return r};var v,y=function(e,t){var n=0;switch(e){case"startx":n=t.x;break;case"starty":n=t.y;break;case"x":case"middlex":case"centerx":n=t.x+t.width/2;break;case"y":case"middley":case"centery":n=t.y+t.height/2;break;case"endx":n=t.x+t.width;break;case"endy":n=t.y+t.height;break;default:n=0}return n},b=function(e,t,n){var r=t._getFromStore("element"),o=n.getFromEnv("getMouseCoordinate")(n.getFromEnv("chart-container"),e,n),a=t._getFromStore("annotation-group");return{element:r,rawConfig:t.getAttribute(),pageX:o.pageX,pageY:o.pageY,chartX:o.chartX,chartY:o.chartY,annotationId:t.getId(),groupId:a&&a.getId(),annotationOptions:t.rawConfig,groupOptions:a&&a.rawConfig}},x=(v=/^@window_/g,function(e,t,n){var o,s,l,c,u=e.replace(/\[[\'\"]/g,".").replace(/[\'\"]\]/g,i).replace(/\[/g,".@window_").replace(/\]/g,i).split("."),d=a,f=i;for(l=u.length,c=0;c<l;c+=1){if(o=d,(s=u[c]).match(v))d=d[a[s.replace(v,i)]];else{if(d===r||null===d)throw(f||s).replace(v,i)+" is not defined";d=d[s]}f=s}if(!d||"function"!=typeof d.call&&d!==a.alert){if("void"===f)return;setTimeout(function(){throw s.replace(v,i)+"() is not a function"},0)}else d===a.alert?d(t):n?d.apply(o,t.split("__FC_ARG_SEP__")):d.call(o,t)});function w(){for(var e,t,n,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];for(t=0,n=o.length;t<n;t+=1)if(((e=o[t])||!1===e||0===e)&&!isNaN(e=Number(e)))return e}function C(e,t){x(e.substr(0,e.indexOf("__FC_ARG_SEP__")),e.substr(e.indexOf("__FC_ARG_SEP__")).replace(/__FC_ARG_SEP__/,""),t)}t.deg2Rad=d,t.polarToCartesian=f,t.getQuadrant=function(e,t,n){return e.x>=t?e.y<=n?0:3:e.y<=n?1:2},t.computePlotBounds=m,t.computeSliceBounds=function(e,t){var n,r,o,a,i,s=t.props.element.attr,l=s.ringpath,c=void 0;switch(n=l[0],r=l[1],o=l[2],a=l[4],i=l[5],e){case"slicex":case"slicemiddlex":case"slicecenterx":c=f(o,(a+i)/2).x+n;break;case"slicey":case"slicemiddley":case"slicecentery":c=f(o,(a+i)/2).y+r;break;case"slicestartx":c=f(o,i).x+n;break;case"slicestarty":c=f(o,i).y+r;break;case"sliceendx":c=f(o,a).x+n;break;case"sliceendy":c=f(o,a).y+r;break;default:c=y(e,p(s))}return c},t.compute3DSliceBounds=function(e,t){var n=t.props.element.attr,r=n.radiusYFactor,a=n.r,i=a*r,s=n.cx,l=n.cy,u=n.sAngle,d=n.eAngle,p=void 0;switch(e){case"slicex":case"slicemiddlex":case"slicecenterx":p=g(a,i,(u+d)/2).x+s;break;case"slicey":case"slicemiddley":case"slicecentery":p=g(a,i,(u+d)/2).y+l;break;case"slicestartx":p=g(a,i,u).x+s;break;case"slicestarty":p=g(a,i,u).y+l;break;case"sliceendx":p=g(a,i,d).x+s;break;case"sliceendy":p=g(a,i,d).y+l;break;default:p=y(e,function(e){e.ringpath;var t,n,r,a,i=void 0,s=void 0,l=[],u=[],d=void 0,p=void 0,g=void 0,m=Infinity,v=Infinity,y=-Infinity,b=-Infinity;s=w((i=w(e.r))*e.radiusYFactor),t=w(e.sAngle)%o,n=w(e.eAngle)%o,r=w(e.cx),a=w(e.cy),p=f(h(i,s,t),t,!0,{x:r,y:a}),g=f(h(i,s,n),n,!0,{x:r,y:a}),u.push(p),u.push(g);for(var x=0;x<c.length;x++)c[x]>=t&&c[x]<=n&&l.push(x);for(d=0;d<l.length;d++)p=f(h(i,s,c[l[d]]),c[l[d]],!0,{x:r,y:a}),u.push(p);for(s=w((i=w(e.innerR,0))*e.radiusYFactor,0),p=f(h(i,s,t),t,!0,{x:r,y:a}),g=f(h(i,s,n),n,!0,{x:r,y:a}),u.push(p),u.push(g),d=0;d<l.length;d++)p=f(h(i,s,c[l[d]]),c[l[d]],!0,{x:r,y:a}),u.push(p);for(var C=0;C<u.length;C++)y=Math.max(y,u[C].x),m=Math.min(m,u[C].x),b=Math.max(b,u[C].y),v=Math.min(v,u[C].y);return{x:m,y:v,width:Math.abs(y-m),height:Math.abs(v-b)}}(n))}return p},t.cleanMacro=function(e){var t,n=void 0,r="";for(n=0,t=e.length;n<t;n++)" "!==e[n]&&(r+=e[n]);return r},t.pluck=function(){var e,t,n;for(t=0,n=arguments.length;t<n;t+=1)if((e=arguments[t])||!1===e||0===e)return e;return r},t.arrangeItems=function(){var e,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],n=[],r=[],o=void 0;for(e=t.length,o=0;o<e;o++)"text"===t[o].type?r.push(t[o]):n.push(t[o]);return n.concat(r)},t.axisMacroParser=function(e,t){return function(n){var r,o,a,i=n.split(".").slice(1),s=isNaN(Number(i[0]))?0:Number(i[0]),l=isNaN(Number(i[0]))?i[1]:i[2],c=isNaN(Number(i[0]))?i[2]:i[3],u=void 0;return a=(u=e.getChildren(t)[s]).components,l=Number(l),a.labelIndexArr&&(l=a.labelIndexArr[l]),r=a.labels[l].config,o=m(r,u.getName()),y(c,o)}},t.xyCalculator=y,t.UNDEF=r,t.UNDERSCORE="_",t.defaultAnnotationClick=function(e,t){return function(n){t.fireChartInstanceEvent("annotationclick",b(n,e,t),r,r,n)}},t.defaultAnnotationRollOut=function(e,t){return function(n){t.fireChartInstanceEvent("annotationrollout",b(n,e,t),r,r,n)}},t.defaultAnnotationRollOver=function(e,t){return function(n){t.fireChartInstanceEvent("annotationrollover",b(n,e,t),r,r,n)}},t.DEFAULT_MACRO_PREFIX="$",t.DEFAULT_MACRO_SEPARATOR=".",t.getLinkAction=function(e,t){var n=function(e){return e};return function(o){if(!o||!t.config.clickURLOverridesPlotLinks){var l,c,u,d,f,h,p,g,m,v,y,b=w((e.chart||e.map||{}).unescapelinks,1),x=this.entity||r,_=this.entityBox||r,E=this.link,k=E;if(E!==r){switch(b&&(E=a.decodeURIComponent?a.decodeURIComponent(E):a.unescape(E)),-1!==(E=E.replace(/^\s+/,i).replace(/\s+$/,i)).search(/^[a-z]*\s*[\-\:]\s*/i)&&(v=(f=E.split(/\s*[\-\:]\s*/)[0].toLowerCase()).length),o&&(t.config.hotElemClicked=!0),f){case"j":case"javascript":/^j\s*\-/.test(y=E)?C(y.replace(/^j\s*\-/,i).replace(/\-/,"__FC_ARG_SEP__")):C(y.replace(/^javascript\s*\:/i,i).replace(/[\'\"]?\s*\,\s*[\'\"]?/g,"__FC_ARG_SEP__").replace(/\(\s*[\'\"]?(.*)\)\;?/,"__FC_ARG_SEP__$1").replace(/[\'\"]?$/,""),!0);break;case"n":E.replace(/^n\s*\-/i,"n-"),a.open(n(E.slice(2)));break;case"f":-1!==(l=(E=E.replace(/^f\s*\-/i,"f-")).indexOf("-",2))?(c=E.substr(2,l-2))&&a.frames[c]?a.frames[c].location=n(E.slice(l+1)):a.open(n(E.slice(l+1)),c):a.open(n(E.slice(2)));break;case"p":l=(E=E.replace(/p\s*\-/i,"p-")).indexOf("-",2),u=E.indexOf(s,2),-1===l&&(l=1),d=n(E.slice(l+1)),(m=a.open(d,E.substr(2,u-2),E.substr(u+1,l-u-1)))&&m.focus();break;case"newchart":case"newmap":switch(":"===E.charAt(v)&&(l=E.indexOf("-",v+1),g=E.substring(v+1,l),v=l),l=E.indexOf("-",v+1),h=E.substring(v+1,l).toLowerCase()){case"xmlurl":case"jsonurl":p=E.substring(l+1,E.length);break;case"xml":case"json":p=function(e,t){var n,r={chart:{}},o=t;if(e=e.toLowerCase(),o.linkeddata)for(n=0;n<o.linkeddata.length;n+=1)o.linkeddata[n].id.toLowerCase()===e&&(r=o.linkeddata[n].linkedchart||o.linkeddata[n].linkedmap);return r}(E.substring(l+1,E.length),e),h="json"}t.fireChartInstanceEvent("linkedChartInvoked",{alias:g,linkType:h.toUpperCase(),data:p,clickedEntity:x,clickedEntityBox:_});break;default:a.location.href=n(E)}t.fireChartInstanceEvent("linkClicked",{linkProvided:k,linkInvoked:E,linkAction:f&&f.toLowerCase()})}}}}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"}]};t["default"]={"initial.extension.annotation":function(){return{"polypath.appearing":r,"text.appearing":r,"image.appearing":r,"ellipse.appearing":r,"ringpath.appearing":r,"path.appearing":r,"rect.appearing":r,"*":null}}}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=Math,n=t.cos,r=t.sin,o=t.abs,a=t.pow,i=t.PI,s=2*i,l="M",c="A",u=a(2,-24);e.define&&e.define([{name:"ringpath",ringpath:function(){return this.path(void 0,e._lastArgIfGroup(arguments))},ca:function(e,t,a,d,f,h,p,g){var m,v,y,b,x,w,C,_,E,k,S,A,T,M,O=h%s-f%s,L=h-f;return isNaN(p)&&(p=a),isNaN(g)&&(g=d),this._.ringangle=.5*(f+h),o(L)<u?(m=n(f),v=r(f),w=[l,e+a*m,t+p*v,"L",e+d*m,t+g*v,"Z"]):o(L)>u&&+(o(L)%s<u||s-o(L)%s<u)?(w=[l,e-a,t,c,a,p,0,0,0,e+a,t,c,a,p,0,0,0,e-a,t],0===d&&0===g||(w=w.concat([l,e-d,t,c,d,g,0,0,1,e+d,t,c,d,g,0,0,1,e-d,t])),w.push("Z")):(m=n(f),v=r(f),y=n(h),b=r(h),(O%=s)<0&&(O+=s),x=O<i?0:1,S=t+p*v,A=t+p*b,E=e+d*y,T=t+g*b,o((C=e+a*m)-(_=e+a*y))<.01&&o(S-A)<.01&&(C=e+a*n(f+.0001745329),S=t+p*r(f+.0001745329)),w=[l,C,S,c,a,p,0,x,1,_,A,"L",E,T],0===d&&0===g||(M=t+g*v,o(E-(k=e+d*m))<.01&&o(T-M)<.01&&(k=e+d*n(f+.0001745329),M=t+g*r(f+.0001745329)),w.push(c,d,g,0,x,0,k,M)),w.push("Z")),{path:w}}}])}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.define&&e.define([{name:"arcpath",arcpath:function(){return this.path(void 0,e._lastArgIfGroup(arguments))},ca:function(e,t,n,r){var o=r,a=o-90,i=Math.PI*(a/180),s=e+n*Math.cos(i),l=t+n*Math.sin(i);return{path:["M",e,t-n,"A",n,n,0,o>180?1:0,1,s,l]}}}])}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(214),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118),s=n(217);t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){var t=e.sender;(0,s.isValidDataset)(t)&&t.registerFactory("regression",function(e){var t=e.getFromEnv("chart").getFromEnv("dataSource").chart,n=e.config.JSONData;(0,i.componentFactory)(e,a["default"],"regression",Number((0,s.hasRegressionLine)(t,n)),[e])})})},name:"Regression",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=u(n(131)),o=u(n(215)),a=u(n(216)),i=n(118),s=n(217),l=n(125),c=u(n(218));function u(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}(0,l.addDep)({name:"regressionLineAnimation",type:"animationRule",extension:c["default"]});var f=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n._config={regressionPoints:[]},n.regressionLine=[],n}return d(t,e),t.prototype.getType=function(){return"extension"},t.prototype.getName=function(){return"regression"},t.prototype.configureAttributes=function(e){var t=this.getFromEnv("dataSource").chart,n=e.config,r=n.JSONData,l=this._config;l.regressionPoints.splice(0,l.regressionPoints.length),l.showYOnX=(0,i.pluckNumber)(r.showyonx,t.showyonx,1),l.regressionLineColor=(0,i.toRaphaelColor)((0,i.pluck)(r.regressionlinecolor,t.regressionlinecolor,n.anchorbordercolor,n.lineColor,n.anchorBgColor,"fff000")),l.polynomialRegressionLineColor=(0,i.toRaphaelColor)((0,i.pluck)(r.polynomialregressionlinecolor,t.polynomialregressionlinecolor,l.regressionLineColor)),l.regressionLineThickness=(0,i.pluckNumber)(r.regressionlinethickness,t.regressionlinethickness,r.anchorborderthickness,1),l.polynomialRegressionLineThickness=(0,i.pluckNumber)(r.polynomialregressionlinethickness,t.polynomialregressionlinethickness,l.regressionLineThickness),l.regressionLineAlpha=(0,i.pluckNumber)(r.regressionlinealpha,t.regressionlinealpha,100),l.polynomialRegressionLineAlpha=(0,i.pluckNumber)(r.polynomialregressionlinealpha,t.polynomialregressionlinealpha,l.regressionLineAlpha),(0,s.createLinear)(t,r)&&l.regressionPoints.push((0,o["default"])(r.data,l.showYOnX)),(0,s.createPolynomial)(t,r)&&l.regressionPoints.push((0,a["default"])(r.data,l.showYOnX))},t.prototype.draw=function(){var e,t,n=this._config,r=this.getFromEnv("xAxis"),o=this.getFromEnv("yAxis"),a=this.getFromEnv("chart"),s=a.getChildren("canvas")[0].config,l=this.getLinkedParent().getState("visible"),c=this.getContainer("regressionlinecontainer"),u=a.getChildContainer("abovePlotGroup"),d=this.getFromEnv("animationManager"),f=n.regressionPoints,h=[],p=[],g=void 0,m=this.getGraphicalElement("regressionLineLinear"),v=this.getGraphicalElement("regressionLinePolynomial"),y=void 0,b=void 0,x=void 0,w=void 0,C=function(){this.hide()};!l&&(w="disappearing"),c=this.addContainer("regressionlinecontainer",d.setAnimation({el:c||"group",attr:{name:"regressionlinecontainer","clip-rect":[s.canvasLeft,s.canvasTop,s.canvasWidth,s.canvasHeight]},container:u,component:this,label:"group"}));for(var _=0;_<f.length;_++){var E="";if(h=f[_][0],g=(p=f[_][1]).length,0===h.length&&0===p.length)y=!0,E+="M0,0";else if(0!==h.length&&0===p.length)y=!1,E+="M0,0";else if(0===h.length)y=!0,E+="M"+r.getPixel(p[0].x)+","+o.getPixel(p[0].y),E+="L"+r.getPixel(p[g-1].x)+","+o.getPixel(p[g-1].y);else{y=!1,E+="M"+r.getPixel(p[0].x)+","+o.getPixel(p[0].y),E+=" R"+r.getPixel(p[1].x)+","+o.getPixel(p[1].y);for(var k=2;k<g;k++)E+=" "+r.getPixel(p[k].x)+","+o.getPixel(p[k].y)}y?b={opacity:Number(n.regressionLineAlpha)/100,stroke:n.regressionLineColor,"stroke-width":n.regressionLineThickness,path:E}:x={opacity:Number((0,i.pluck)(n.polynomialRegressionLineAlpha,n.regressionLineAlpha))/100,stroke:(0,i.pluck)(n.polynomialRegressionLineColor,n.regressionLineColor),"stroke-width":(0,i.pluck)(n.polynomialRegressionLineThickness,n.regressionLineThickness),path:E}}"disappearing"!==w&&(m&&m.show(),v&&v.show()),e=d.setAnimation({el:m||"path",container:c,component:this,doNotRemove:!0,attr:!("disappearing"===w)&&b,callback:"disappearing"===w&&C,label:"path"}),m||this.addGraphicalElement("regressionLineLinear",e),t=d.setAnimation({el:v||"path",container:c,component:this,doNotRemove:!0,attr:!("disappearing"===w)&&x,callback:"disappearing"===w&&C,label:"path"}),v||this.addGraphicalElement("regressionLinePolynomial",t)},t}(r["default"]);t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){return Number(t)?function(e){e.sort(function(e,t){return parseFloat(e.x)-parseFloat(t.x)});for(var t=[],n=[],r=0,o=0,a=0,i=0,s=e.length,l=void 0,c=void 0,u=[],d=void 0,f=void 0,h=0;h<e.length;h++)d=Number(e[h].x),f=Number(e[h].y),isNaN(d)||isNaN(f)||(t.push(d),n.push(f));s=t.length;for(var p=0;p<s;p++)r+=t[p],o+=n[p];r/=s,o/=s;for(var g=0;g<s;g++)a+=(t[g]-r)*(n[g]-o),i+=(t[g]-r)*(t[g]-r);if(0===i)return[[],[]];return c=o-(l=a/i)*r,u.push({x:t[0],y:l*t[0]+c}),u.push({x:t[s-1],y:l*t[s-1]+c}),[[],u]}(e):function(e){e.sort(function(e,t){return parseFloat(e.y)-parseFloat(t.y)});for(var t=[],n=[],r=0,o=0,a=0,i=0,s=e.length,l=void 0,c=void 0,u=[],d=void 0,f=void 0,h=0;h<e.length;h++)d=Number(e[h].x),f=Number(e[h].y),isNaN(d)||isNaN(f)||(t.push(d),n.push(f));s=t.length;for(var p=0;p<s;p++)r+=t[p],o+=n[p];r/=s,o/=s;for(var g=0;g<s;g++)a+=(t[g]-r)*(n[g]-o),i+=(n[g]-o)*(n[g]-o);if(0===i)return[[],[]];return c=r-(l=a/i)*o,(u=[]).push({x:l*n[0]+c,y:n[0]}),u.push({x:l*n[s-1]+c,y:n[s-1]}),[[],u]}(e)}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){return Number(t)?function(e){e.sort(function(e,t){return parseFloat(e.x)-parseFloat(t.x)});for(var t=[],n=[],r=0,o=0,a=e.length,i=0,s=0,l=0,c=0,u=0,d=void 0,f=void 0,h=void 0,p=void 0,g=void 0,m=void 0,v=void 0,y=void 0,b=void 0,x=void 0,w=[],C=0;C<e.length;C++)b=Number(e[C].x),x=Number(e[C].y),isNaN(b)||isNaN(x)||(t.push(b),n.push(x));a=t.length;for(var _=0;_<a;_++)r+=n[_],o+=t[_]*n[_],u+=t[_]*t[_]*n[_],i+=t[_],s+=t[_]*t[_],c+=t[_]*t[_]*t[_],l+=t[_]*t[_]*t[_]*t[_];if(f=o-i*r/a,p=u-s*r/a,(d=s-i*i/a)*(g=l-s*s/a)-(h=c-s*i/a)*h==0||0===a)return[e,[]];y=r/a-(v=(f*g-p*h)/(d*g-h*h))*(i/a)-(m=(p*d-f*h)/(d*g-h*h))*(s/a);for(var E=0;E<a;E++)w.push({x:t[E],y:m*t[E]*t[E]+v*t[E]+y});return[e,w]}(e):function(e){e.sort(function(e,t){return parseFloat(e.x)-parseFloat(t.x)});for(var t=[],n=[],r=0,o=0,a=e.length,i=0,s=0,l=0,c=0,u=0,d=void 0,f=void 0,h=void 0,p=void 0,g=void 0,m=void 0,v=void 0,y=void 0,b=void 0,x=void 0,w=[],C=0;C<e.length;C++)b=Number(e[C].x),x=Number(e[C].y),isNaN(b)||isNaN(x)||(t.push(b),n.push(x));a=t.length;for(var _=0;_<a;_++)r+=t[_],o+=n[_]*t[_],u+=n[_]*n[_]*t[_],i+=n[_],s+=n[_]*n[_],c+=n[_]*n[_]*n[_],l+=n[_]*n[_]*n[_]*n[_];if(f=o-i*r/a,p=u-s*r/a,(d=s-i*i/a)*(g=l-s*s/a)-(h=c-s*i/a)*h==0||0===a)return[e,[]];y=r/a-(v=(f*g-p*h)/(d*g-h*h))*(i/a)-(m=(p*d-f*h)/(d*g-h*h))*(s/a);for(var E=0;E<a;E++)w.push({x:m*n[E]*n[E]+v*n[E]+y,y:n[E]});return[e,w]}(e)}},function(e,t,n){"use strict";t.__esModule=!0;var r=["scatter","bubble","errorScatter","selectScatter"];t.createPolynomial=function(e,t){var n=Number(e.showpolynomialregressionline)||0;return isNaN(t.showpolynomialregressionline)&&n||Number(t.showpolynomialregressionline)},t.createLinear=function(e,t){var n=Number(e.showregressionline)||0;return isNaN(t.showregressionline)&&n||Number(t.showregressionline)},t.isInArray=function(e,t){return e=e.toLowerCase(),t.indexOf(e)>-1},t.hasRegressionLine=function(e,t){return t.showregressionline||e.showregressionline||t.showpolynomialregressionline||e.showpolynomialregressionline},t.isValidDataset=function(e){return function(e){return"dataset"===e.getType()}(e)&&r.indexOf(e.getName())>=0}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"initial.extension.regression":function(){var e=this;return{"path.appearing":null,"path.updating":null,"path.disappearing":null,"group.appearing":function(){var t,n=e.getFromEnv("chart").getChildren("canvas")[0],r=0,o=[],a=[];for(o.push(n.config.canvasLeft),o.push(n.config.canvasTop),o.push(0),o.push(n.config.canvasHeight),t=o.length;r<t;)a.push(o[r]),r++;return a[2]=n.config.canvasWidth,[{initialAttr:function(){return{"clip-rect":o}},finalAttr:function(){return{"clip-rect":a}},effect:"linear",slot:"plot"}]},"*":null}}}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118),o=m(n(220)),a=m(n(221)),i=m(n(223)),s=m(n(224)),l=m(n(225)),c=m(n(226)),u=m(n(227)),d=m(n(228)),f=m(n(229)),h=m(n(230)),p=n(125),g=m(n(231));function m(e){return e&&e.__esModule?e:{"default":e}}var v={DragZoomIn:a["default"],ZoomResetButton:i["default"],ZoomOutButton:s["default"],DbTapZoom:c["default"],DragPin:u["default"],ZoomInButton:l["default"],DragPan:d["default"],PinchZoom:f["default"],SwipeGesture:h["default"]};t["default"]={extension:function(e){var t,n,a=(0,p.getDep)("redraphael","plugin");(0,g["default"])(a),e.addEventListener("instantiated",function(e){var a=e.sender,i=void 0;"canvas"===a.getType()&&a.registerFactory("inputManager",function(e){if(n=e.getFromEnv("chart"),t=n.constructor.includeInputOptions&&n.constructor.includeInputOptions()){(0,r.componentFactory)(e,o["default"],"inputManager",1,[{}]),i=e.getChildren("inputManager")[0];for(var a=0,s=t&&t.length;a<s;a++)(0,r.componentFactory)(i,v[t[a]],t[a],1,[{}])}})})},name:"inputAdapter",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(131);function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var i=function(e,t,n,r){var o,a;(a=r[e])&&(a.some(function(e,r){if(e.callback===t&&e.component===n)return o=r,!0}),o!==undefined&&a.splice(o,1))},s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return a(t,e),t.prototype.configure=function(){var e=this.getFromEnv("chart"),t=e.getInputConfigurations;this.addToEnv("canvas",this.getLinkedParent()),this.addToEnv("inputOptions",t&&t.call(e)),this.config={controlObj:{},dependancyObj:{}}},t.prototype.addEventToChild=function(){var e=this,t=e.getChildren(),n=["zoomin","zoomout","dragzoomenabled","dragzoomdisabled","pinenabled","pindisabled","panenabled","pandisabled"],r=function(r){n.forEach(function(n){e.addExtEventListener(n,e.manageEvents.bind(e),t[r][0])})};for(var o in t)r(o)},t.prototype.manageEvents=function(e){var t=this.config.dependancyObj,n=e.type;t[n]&&t[n].forEach(function(t){t.component!==e.sender&&t.callback.call(t.component,e)})},t.prototype.fetchZoomableAxes=function(){if(!this.config.axesObArr){var e=this.config.axesObArr=[];this.getLinkedParent().getAxes().forEach(function(t){(t.config.zoomable||t.config.pannable)&&e.push({axis:t.axis,stack:[],isY:t.isY})}),this.addToEnv("axesObArr",e)}},t.prototype.draw=function(){this.fetchZoomableAxes(),this.addEventToChild()},t.prototype.getControl=function(e,t){var n,r=this.config.controlObj,o=this.getLinkedParent();t||e.forEach(function(e){(n=e.nativeInteraction)instanceof Array?n.forEach(function(t){(r[t]||(r[t]=[])).push({callback:e.callback,component:e.component}),e.component.addExtEventListener(t,e.callback,o)}):((r[n]||(r[n]=[])).push({callback:e.callback,component:e.component}),e.component.addExtEventListener(n,e.callback,o))})},t.prototype.releaseControl=function(e){var t,n=this,r=n.getLinkedParent();e.forEach(function(e){(t=e.nativeInteraction)instanceof Array?t.forEach(function(t){e.component.removeExtEventListener(t,e.callback,r),i(t,e.callback,e.component,n.config.controlObj)}):(e.component.removeExtEventListener(t,e.callback,r),i(t,e.callback,e.component,n.config.controlObj))})},t.prototype._updateControlObj=function(e,t){var n,r;(r=this.config.controlObj[e])&&(r.some(function(e,r){if(e.callback===t)return n=r,!0}),n!==undefined&&r.splice(n,1))},t.prototype.registerDependancy=function(e){var t,n=this.config.dependancyObj;e.forEach(function(e){(t=e.derivedInteraction)instanceof Array?t.forEach(function(t){(n[t]||(n[t]=[])).push({callback:e.callback,component:e.component,derivedInteraction:t})}):(n[t]||(n[t]=[])).push(e)})},t.prototype.removeDependancy=function(e){var t,n=this;e.forEach(function(e){(t=e.derivedInteraction)instanceof Array?t.forEach(function(t){i(t,e.callback,e.component,n.config.dependancyObj)}):i(t,e.callback,e.component,n.config.dependancyObj)})},t.prototype.zoomOut=function(){var e=this.getChildren("ZoomOutButton");e&&e[0].zoomOut()},t.prototype.zoomTo=function(e,t){var n=this.getChildren("DragZoomIn");n&&n[0].zoomTo(e,t)},t.prototype.resetChart=function(){var e=this.getChildren("ZoomResetButton");e&&e[0].zoomOut()},t.prototype.setZoomMode=function(e){var t=this.getChildren("DragPin");t&&(e?t[0].disable():t[0].enable())},t}(((r=o)&&r.__esModule?r:{"default":r})["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222),a=(r=o)&&r.__esModule?r:{"default":r},i=n(129),s=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var c=Math.min,u=Math.abs,d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.controlArr=[{nativeInteraction:["fc-dragstart"],callback:r.dragStart.bind(r),component:r},{nativeInteraction:["fc-dragmove"],callback:r.onDrag.bind(r),component:r},{nativeInteraction:["fc-dragend"],callback:r.onDragEnd.bind(r),component:r}],s.isFirefox&&r.controlArr.push({nativeInteraction:["fc-mousedown"],callback:t.mousedown,component:r}),n}return l(t,e),t.prototype.getName=function(){return"dragZoomIn"},t.prototype.configure=function(){e.prototype.configure.call(this);var t=this,n=t.getLinkedParent(),r=t.config;r.boxStyle=r.boxStyle||{"stroke-width":1,stroke:"red",fill:"#00FF00",opacity:.2,cursor:"ne-resize"},!t.config.skipGraphics&&t.addGraphicalElement("button",t.createButton({icon:"zoomModeIcon",handlers:{click:function(){t._checkStackLen()&&t.toggle()},tooltext:t.config.tooltext}})),t.enable("pressed"),n.registerDependancy([{derivedInteraction:["pinenabled","pindisabled","panenabled","pandisabled"],callback:t.dependancyFn,component:t}])},t.mousedown=function(e){e&&e.preventDefault()},t.prototype.setControl=function(){var e=this.getLinkedParent(),t=this.getGraphicalElement("button"),n=this.controlArr;e.releaseControl(n),this.isEnabled()?(e.getControl(n),t&&t.enable()):t&&t.disable()},t.prototype.getCoordinates=function(e){var t=this.getFromEnv("chart"),n=(0,s.getMouseCoordinate)(t.getFromEnv("chart-container"),e,t);return{x:n.chartX,y:n.chartY}},t.prototype.inCanvasLimit=function(e){var t=this.getFromEnv("canvas").getGraphicalElement("canvasElement").attrs,n=t.x,r=t.y,o=e.x-t.x,a=e.y-t.y,i=t.width-o,s=t.height-a;return e.x>n&&e.y>r&&e.width<i&&e.height<s},t.prototype.drawBox=function(){var e,t=this.config,n=this.getGraphicalElement("box"),r=this.getFromEnv("paper"),o=this.getFromEnv("canvas").getGraphicalElement("canvasElement").attrs;n||(n=this.addGraphicalElement("box",r.rect())).attr(t.boxStyle),e=function(e,t,n,r){t.x<n.x&&(t.x=n.x),t.y<n.y&&(t.y=n.y),t.x>n.width+n.x&&(t.x=n.width+n.x),t.y>n.height+n.y&&(t.y=n.height+n.y);var o,a=t.x-e.x,i=e.y-t.y,s=c(e.x,t.x),l=c(e.y,t.y);return a>0&&i>0?o=r?"ne-resize":"e-resize":a<0&&i>0?o=r?"nw-resize":"w-resize":a<0&&i<0?o=r?"sw-resize":"w-resize":a>0&&i<0&&(o=r?"se-resize":"e-resize"),{x:s,y:l,width:a=u(a),height:i=u(i),cursor:o}}(this.dragBoxConfig.startPos,this.dragBoxConfig.currentPos,o,this.getFromEnv("chart").isXY),t.scaleX||(e.x=o.x,e.width=o.width),t.scaleY||(e.y=o.y,e.height=o.height),n.attr(e),n.show()},t.prototype.onDragEnd=function(e){var t,n,r,o,a=this.config,i=this.getFromEnv("canvas").getGraphicalElement("canvasElement").attrs,s=this.getGraphicalElement("box")||{},l=s.attrs;l&&a.dragmove&&(a.dragmove=!1,s.hide(),a.startPosX=t=(l.x-i.x)/i.width,a.endPosX=n=(l.x+l.width-i.x)/i.width,a.startPosY=r=(l.y-i.y)/i.height,a.endPosY=o=(l.y+l.height-i.y)/i.height,n-t<.01||o-r<.01||this.zoomTo(void 0,void 0,e))},t.prototype.zoomTo=function(e,t,n){var r,o,a,i,s,l,c,u,d=this,f=d.getFromEnv("axesObArr"),h=d.config,p=!1,g={},m=h.catZoomLimit-1;f.forEach(function(f){var v=f.axis,y=v.getVisibleConfig(),b=f.isY?y.maxValue:y.minValue,x=y.maxValue-y.minValue;f.isY?(i=r=void 0===e?b-x*h.endPosY:e,l=o=void 0===t?b-h.startPosY*x:t):(s=r=void 0===e?b+h.startPosX*x:e,c=o=void 0===t?b+x*h.endPosX:t,g=d.constructor._getZoomInfo(s,c,v)),m&&!v.config.isVertical&&Math.round(o-r)<m&&(r=Math.round(r),o=r+m),(x>1||o-r>1)&&(h.dragendFn&&"function"==typeof h.dragendFn&&h.dragendFn(n,r,o),u=v.setVisibleConfig(r,o),p=p||u,f.stack.push(y),a=f.stack.length+1)}),p&&d._raiseZoomEvents("zoomin","zoomedin",Object.assign(g,{level:a,startX:s,endX:c,startY:i,endY:l},{originalEvent:n&&n.originalEvent}))},t.prototype.onDrag=function(e){var t=this.config,n=this.getCoordinates(e.originalEvent);t.dragmove=!0,this.getFromEnv("animationManager").setAnimationState("drag"),t.dragmoveFn&&"function"==typeof t.dragmoveFn&&t.dragmoveFn(e),this.dragBoxConfig.currentPos=n,this.drawBox()},t.prototype.dragStart=function(e){var t=this.config,n=this.getCoordinates(e.originalEvent);t.dragstartFn&&"function"==typeof t.dragstartFn&&t.dragstartFn(e),this.dragBoxConfig={startPos:n,currentPos:n}},t.prototype.enable=function(){var e=this;!0!==e.config.enabled&&(e.config.enabled=!0,e.config.state="pressed",e.fireEvent("dragzoomenabled"),e.addJob("settingControl",function(){e.setControl()},i.priorityList.draw))},t.prototype.disable=function(){var e=this;!1!==e.config.enabled&&(e.config.enabled=!1,e.config.state="activated",e.fireEvent("dragzoomdisabled"),e.addJob("settingControl",function(){e.setControl()},i.priorityList.draw))},t.prototype.dependancyFn=function(e){"pinenabled"===e.type||"panenabled"===e.type?this.disable():"pindisabled"!==e.type&&"pandisabled"!==e.type||this.enable()},t}(a["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(129),a=n(131);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var s={activated:{config:{hover:{fill:"#ffffff","fill-symbol":"#ffffff","stroke-width":1,stroke:"#aaaaaa",cursor:"pointer"},normal:{fill:"#ffffff","fill-symbol":"#ffffff",stroke:"#c2c2c2","stroke-width":1,cursor:"pointer"},disable:{fill:"#ffffff","fill-symbol":"#ffffff","stroke-width":1,stroke:"#e3e3e3","stroke-opacity":1,cursor:"pointer"},pressed:{fill:"#efefef","fill-symbol":"#efefef","stroke-width":1,stroke:"#c2c2c2",cursor:"pointer"}},"button-disabled":!1,fill:["#ffffff","#ffffff","#ffffff","#ffffff",!0],stroke:"#c2c2c2","stroke-opacity":1},disabled:{config:{hover:{fill:"#ffffff","fill-symbol":"#ffffff","stroke-width":1,stroke:"#e3e3e3",cursor:"default"},normal:{fill:"#ffffff","fill-symbol":"#ffffff",stroke:"#e3e3e3","stroke-width":1,cursor:"default"},disable:{fill:"#ffffff","fill-symbol":"#ffffff","stroke-width":1,stroke:"#e3e3e3","stroke-opacity":1,cursor:"default"},pressed:{fill:"#ffffff","fill-symbol":"#ffffff","stroke-width":1,stroke:"#e3e3e3",cursor:"default"}},fill:["#ffffff","#ffffff","#ffffff","#ffffff",!0],"button-disabled":!1,stroke:"#e3e3e3","stroke-opacity":1},pressed:{config:{hover:{fill:"#dcdcdc","fill-symbol":"#ffffff","stroke-width":1,stroke:"#b7b7b7",cursor:"pointer"},normal:{fill:"#dcdcdc","fill-symbol":"#ffffff","stroke-width":1,stroke:"#b7b7b7",cursor:"pointer"},pressed:{fill:"#dcdcdc","fill-symbol":"#ffffff","stroke-width":1,stroke:"#b7b7b7",cursor:"pointer"}},fill:"#dcdcdc","fill-symbol":"#ffffff","stroke-width":1,stroke:"#b7b7b7",cursor:"pointer"}},l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return i(t,e),t.prototype.configure=function(){var e=this.config={},t=this.getFromEnv("inputOptions")||{};Object.assign(e,t[this.getName()])},t.prototype._checkStackLen=function(){var e=this.getFromEnv("axesObArr"),t=0;return e&&e.forEach(function(e){t+=e.stack.length}),t},t._getZoomInfo=function(e,t,n){var r={startIndex:Math.ceil(e),endIndex:Math.floor(t)};return n.getLabel&&(r.startLabel=n.getLabel(r.startIndex).label,r.endLabel=n.getLabel(r.endIndex).label),r},t.prototype._raiseZoomEvents=function(e,t,n,r){var o=this.getFromEnv("chart");e&&this.fireEvent(e),t&&o.fireChartInstanceEvent(t,n,r),t&&o.fireChartInstanceEvent("zoomed",n,r)},t.prototype.getType=function(){return"canvasInput"},t.prototype.enable=function(e){var t=this;!0!==t.config.enabled&&(t.config.enabled=!0,e&&t.fireEvent(e),t.addJob("settingControl",function(){t.setControl()},o.priorityList.draw))},t.prototype.disable=function(e){var t=this;!1!==t.config.enabled&&(t.config.enabled=!1,e&&t.fireEvent(e),t.addJob("settingControl",function(){t.setControl()},o.priorityList.draw))},t.prototype.toggle=function(e){this.isEnabled()?this.disable(e):this.enable(e)},t.prototype.isEnabled=function(){return this.config.enabled},t.prototype.setControl=function(){var e=this.getGraphicalElement("button");e&&(this.isEnabled()?e.enable():e.disable())},t.prototype.createButton=function(e){var t,n,r,o,a,i=this.getLinkedParent(),l=this.config,c=i.getFromEnv("chart");return n=c.getFromEnv("toolbox"),o=c.getFromEnv("toolBoxAPI").Symbol,r=(c.getChildren("chartMenuBar")||c.getChildren("actionBar")).config.componentGroups[0],(a=new o).configure(e.icon,void 0,n.idCount++,n.pId,c.getFromEnv("chartInstance").id),a.addToEnv("toolTipController",this.getFromEnv("toolTipController")),a.attachEventHandlers(e.handlers),r.addSymbol(a,!0),t=a.config,setTimeout(function(){t.node&&t.node.attr(s.activated)}),a.isEnabled=!0,a.enable=function(){a.isEnabled=!0,setTimeout(function(){t.node&&t.node.attr(s[l.state]||s.activated),l.state=void 0})},a.disable=function(){a.isEnabled=!1,setTimeout(function(){t.node&&t.node.attr(s[l.state]||s.disabled),l.state=void 0})},a},t}(((r=a)&&r.__esModule?r:{"default":r})["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222);function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var i=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return a(t,e),t.prototype.getName=function(){return"zoomResetButton"},t.prototype.configure=function(){e.prototype.configure.call(this);var t=this.getLinkedParent();this.addGraphics(),this.disable(),t.registerDependancy([{derivedInteraction:["zoomin","zoomout"],callback:this.dependancyFn,component:this}])},t.prototype.addGraphics=function(){var e=this;!e.config.skipGraphics&&e.addGraphicalElement("button",e.createButton({icon:"resetIcon",handlers:{click:function(){e.isEnabled()&&e.zoomOut()},tooltext:e.config.tooltext}})),e.disable()},t.prototype.zoomOut=function(){var e,t,n,r,o,a=this,i=a.getFromEnv("chart"),s=a.getFromEnv("axesObArr"),l=a.config.hookFn,c={};s.forEach(function(s){(o=s.stack[0])&&(i.getFromEnv("animationManager").setAnimationState("zoomOut"),l&&l(o.minValue,o.maxValue),s.isY?(n=o.minValue,r=o.maxValue):(e=o.minValue,t=o.maxValue,c=a.constructor._getZoomInfo(e,t,s.axis)),s.axis.setVisibleConfig(o.minValue,o.maxValue),s.stack.length=0)}),a._raiseZoomEvents("zoomout","zoomreset",Object.assign(c,{level:1,startX:e,endX:t,startY:n,endY:r})),a.disable()},t.prototype.dependancyFn=function(e){"zoomin"===e.type?this.enable():"zoomout"===e.type&&(this._checkStackLen()||this.disable())},t}(((r=o)&&r.__esModule?r:{"default":r})["default"]);t["default"]=i},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(223);function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var i=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return a(t,e),t.prototype.getName=function(){return"zoomOutButton"},t.prototype.addGraphics=function(){var e=this;!e.config.skipGraphics&&e.addGraphicalElement("button",e.createButton({icon:"zoomOutIcon",handlers:{click:function(){e.isEnabled()&&e.zoomOut()},tooltext:e.config.tooltext}}))},t.prototype.zoomOut=function(){var e,t,n,r,o,a,i=this,s=i.config.hookFn,l={},c=0;i.getFromEnv("axesObArr").forEach(function(u){e=u.stack.pop(),t=u.stack.length,c+=t,e&&(u.isY?(o=e.minValue,a=e.maxValue):(n=e.minValue,r=e.maxValue,l=i.constructor._getZoomInfo(n,r,u.axis)),s&&s(e.minValue,e.maxValue),u.axis.setVisibleConfig(e.minValue,e.maxValue))}),i._raiseZoomEvents("zoomout","zoomedout",Object.assign(l,{level:t,startX:n,endX:r,startY:o,endY:a})),c||this.disable()},t}(((r=o)&&r.__esModule?r:{"default":r})["default"]);t["default"]=i},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222);function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var i=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return a(t,e),t.prototype.getName=function(){return"zoomInButton"},t.prototype.configure=function(){e.prototype.configure.call(this);var t=this,n=t.config;n.stepZoom=n.stepZoom||5.33,!n.skipGraphics&&t.addGraphicalElement("button",t.createButton({icon:"zoomInIcon",handlers:{click:function(){t.isEnabled()&&t.zoom()},tooltext:t.config.tooltext}})),t.enable()},t.prototype.zoom=function(){var e,t,n,r,o,a,i,s,l,c=this,u={},d=c.config,f=d.hookFn,h=!1,p=Math.pow(10,d.zoomDecimalLimit)||1;c.getFromEnv("animationManager").setAnimationState("zoom"),c.getFromEnv("axesObArr").forEach(function(g){n=g.axis,e=n.getVisibleConfig(),(t=Math.round((e.maxValue-e.minValue)/d.stepZoom*p)/p)>Number.EPSILON&&(g.stack.push(e),g.isY?(a=e.minValue+t,i=e.maxValue-t):(r=e.minValue+t,o=e.maxValue-t,u=c.constructor._getZoomInfo(r,o,n)),s=g.stack.length+1,f&&f(e.minValue,e.maxValue),l=n.setVisibleConfig(e.minValue+t,e.maxValue-t),h=h||l)}),h&&c._raiseZoomEvents("zoomin","zoomedin",Object.assign(u,{level:s,startX:r,endX:o,startY:a,endY:i}))},t}(((r=o)&&r.__esModule?r:{"default":r})["default"]);t["default"]=i},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.controlArr=[{nativeInteraction:["fc-dbclick"],callback:r.zoom.bind(r),component:r}],n}return s(t,e),t.prototype.getName=function(){return"dbTapZoom"},t.prototype.configure=function(){e.prototype.configure.call(this),this.enable()},t.prototype.setControl=function(){var e=this.controlArr,t=this.getLinkedParent();t.releaseControl(e),this.isEnabled()&&t.getControl(e)},t.prototype.zoom=function(e){var t,n,r,o,a,s,l,c,u,d,f=this,h=f.getFromEnv("chart"),p=(0,i.getMouseCoordinate)(h.getLinkedItem("container"),e,h),g=f.config,m=g.hookFn,v={},y=!1,b=Math.pow(10,g.zoomDecimalLimit)||1;h.getFromEnv("animationManager").setAnimationState("zoom"),f.getFromEnv("axesObArr").forEach(function(e){t=e.axis,n=t.getValue(e.isY?p.chartY:p.chartX),o=t.getVisibleConfig(),r=function(e,t,n,r){var o=t-e.minValue,a=e.maxValue-t;return{min:Math.round((t-o/n*(n-1))*r)/r,max:Math.round((t+a/n*(n-1))*r)/r}}(o,n,g.stepzoom,b),e.isY?(c=r.min,u=r.max):(s=r.min,l=r.max,v=f.constructor._getZoomInfo(s,l,t)),t.getZoom()<=b&&(m&&"function"==typeof g.hookFn&&m(r.min,r.max),a=t.setVisibleConfig(r.min,r.max),y=y||a,e.stack.push(o),d=e.stack.length+1)}),y&&f._raiseZoomEvents("zoomin","zoomedin",Object.assign(v,{level:d,startX:s,endX:l,startY:c,endY:u},e.originalEvent))},t}(a["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118),s=n(129),l=n(125);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var u=Math,d=u.min,f=u.max,h=u.abs,p="rgba(255,0,0,"+(i.isIE?.002:1e-6)+")",g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.controlArr=[{nativeInteraction:["fc-dragstart"],callback:r.dragstart.bind(r),component:r},{nativeInteraction:["fc-dragmove"],callback:r.dragmove.bind(r),component:r},{nativeInteraction:["fc-dragend"],callback:r.dragend.bind(r),component:r}],n}return c(t,e),t.prototype.getName=function(){return"dragPin"},t.prototype.configure=function(){e.prototype.configure.call(this);var t=this,n=t.getFromEnv("chartConfig"),r=t.getFromEnv("dataSource").chart,o=t.getLinkedParent(),a=t.config;a.attr=a.attr||{stroke:"#3399ff",fill:"#b9d5f1","stroke-width":0},a.pinAttr=a.pinAttr||{"stroke-width":0,stroke:"none",fill:"#b9d5f1","shape-rendering":"crisp"},a.borderWidth=n.borderWidth||(n.borderWidth=(0,i.pluckNumber)(r.showborder,1)?(0,i.pluckNumber)(r.borderthickness,1):0),t.config.skipGraphics?t.getFromEnv("toolbox").idCount++:t.addGraphicalElement("button",t.createButton({icon:"pinModeIcon",handlers:{click:function(){t.toggle()},tooltext:t.config.tooltext||"Pin mode"}})),o.registerDependancy([{derivedInteraction:["zoomin","zoomout"],callback:t.dependancyFn,component:t}]),t.disable(void 0,!1)},t.prototype.enable=function(e,t){var n=this,r=n.config;!0!==r.enabled&&(r.enabled=!0,r.state="pressed",n.fireEvent("pinenabled"),n.addJob("settingControl",function(){n.setControl()},s.priorityList.draw),!t&&n.getFromEnv("chart").fireChartInstanceEvent("zoommodechanged",{pinModeActive:!0},e&&e.originalEvent))},t.prototype.dependancyFn=function(e){"zoomin"!==e.type&&"zoomout"!==e.type||this.disable(e)},t.prototype.draw=function(){var e,t=this,n=t.config;t.createPin(),t.config.pinElemVisible&&t.addJob("resizePinElem",function(){e=t.getFromEnv("xAxis")[0],t.pinRangePixels(e.getPixel(n.boxStartValue),e.getPixel(n.boxEndValue))},s.priorityList.postRender)},t.prototype._setConfig=function(){var e=this.getFromEnv("chart"),t=this.getFromEnv("chartConfig"),n=this.config,r=Object.assign({},n.attr||{}),o=r["stroke-width"]=(0,i.pluckNumber)(r.strokeWidth,r["stroke-width"],1),a=e.getFromEnv("chart-container"),s=(0,i.getPosition)(a,e);n.zoomX="horizontal"===n.orientation||"both"===n.orientation,n.zoomY="vertical"===n.orientation||"both"===n.orientation,n.canvasY=t.canvasTop,n.canvasX=t.canvasLeft,n.canvasW=t.canvasWidth,n.canvasH=t.canvasHeight,n.canvasX2=t.canvasLeft+t.canvasWidth,n.canvasY2=t.canvasTop+t.canvasHeight,n.strokeWidth=o,n.chartPosLeft=s.left,n.chartPosTop=s.top},t.prototype.disable=function(e,t){var n=this,r=n.config,o=n.getContainer("pingroup"),a=n.getGraphicalElement("pintracker");!1!==r.enabled&&(r.enabled=!1,r.state="activated",o&&o.hide(),a&&a.hide(),n.fireEvent("pindisabled"),!t&&n.getFromEnv("chart").fireChartInstanceEvent("zoommodechanged",{pinModeActive:!1},e&&e.originalEvent),n.addJob("settingControl",function(){n.setControl()},s.priorityList.draw),r.pinElemVisible=!1)},t.prototype.setControl=function(){var e=this.getLinkedParent(),t=this.controlArr,n=this.getGraphicalElement("button");e.releaseControl(t),this.isEnabled()?(e.getControl(t),n&&n.enable()):n&&n.disable()},t.prototype.createPin=function(){var e,t,n,r,o,a=this,s=a.config,c=a.getFromEnv("chart"),u=a.getFromEnv("chartConfig"),d=a.getFromEnv("animationManager"),f=u.canvasTop,h=u.canvasBottom,g=u.canvasHeight,m=u.canvasLeft,v=s.borderWidth,y=u["clip-pinrect"],b=a.getContainer("pingroup"),x=a.getContainer("pinElemGroup"),w=a.getGraphicalElement("pinrect"),C=a.getGraphicalElement("pintracker");r=u._visw=u.canvasWidth,o=u._visx=u.canvasLeft,e=(0,l.getDep)("redraphael","plugin").crispBound(0,f-h,0,g,v),y=u["clip-pinrect"]=[e.x,f,e.width,e.height],b||a.addContainer("pingroup",b=d.setAnimation({el:"group",finalAttr:{name:"zoompin"},component:a,label:"group"}).insertBefore(c.getChildContainer("plotGroup")).hide()),b.transform(u._pingrouptransform=["T",o,h]),x||a.addContainer("pinElemGroup",x=d.setAnimation({el:"group",attr:{name:"zoompinelements"},component:a,container:b,label:"group"})),a.config.pinAttr.x=0,a.config.pinAttr.y=f-h,a.config.pinAttr.width=r,a.config.pinAttr.height=g,t=d.setAnimation({el:w||"rect",attr:a.config.pinAttr,container:b,component:a}),w||a.addGraphicalElement("pinrect",t),n=d.setAnimation({el:C||"rect",attr:{transform:b.transform(),x:0,y:f-h,width:0,height:g,stroke:"none",fill:p,cursor:i.hasSVG?"ew-resize":"e-resize"},container:c.getChildContainer("trackerGroup"),component:a}).hide(),C||a.addGraphicalElement("pintracker",n),n.undrag(),n.drag(function(e){var t=e.data[0],r=o+t+this.__pindragdelta,s=this.__pinboundleft,l=this.__pinboundright,c=this.data("cliprect").slice(0);r<s?r=s:r>l&&(r=l),b.transform(["T",r,h]),n.transform(b.transform()),i.hasSVG||(c[0]=c[0]+r-o-this.__pindragdelta,d.setAnimation({el:b,attr:{"clip-rect":c},component:a})),this.__pindragoffset=t},function(){this.__pinboundleft=0-y[0]+o+m,this.__pinboundright=this.__pinboundleft+r-y[2],this.data("cliprect",b.attr("clip-rect")),b._.clipispath=!0},function(){b._.clipispath=!1,this.__pindragdelta+=this.__pindragoffset,delete this.__pindragoffset,delete this.__pinboundleft,delete this.__pinboundright})},t.prototype.pinRangePixels=function(e,t,n){var r,o,a,i,s,l=this.getFromEnv("chart"),c=l.config,u=c.canvasLeft,d=this.getFromEnv("xAxis")[0],f=d.getLimit(),h=f.max,p=f.min,g=this.getContainer("pingroup"),m=this.getGraphicalElement("pinrect"),v=this.getContainer("pinElemGroup"),y=c["clip-pinrect"],b=this.getFromEnv("animationManager"),x=c._pingrouptransform,w=[],C=t-e,_=this.getGraphicalElement("pintracker");if(l.iterateComponents(function(e){e.getType&&"dataset"===e.getType()&&w.push(e)}),g&&m){for(e===t&&(g.hide(),_.hide()),s=w.length;s--;)w[s].fireEvent("createpinelements",{group:v});y[0]=e+u,y[2]=C,b.setAnimation({el:g,attr:{"clip-rect":y,transform:x},component:this}).show(),_.__pindragdelta=0,_.show(),b.setAnimation({el:_,attr:{transform:x,x:e,width:C},component:this}),this.config.pinElemVisible=!0,r=Math.round(d.getValue(e+u,{wrtVisible:!0})),o=Math.round(d.getValue(t+u,{wrtVisible:!0})),r=r<p?p:r,o=o>h?h:o,a=d.getLabel(r).label,i=d.getLabel(o).label,n&&l.fireChartInstanceEvent("pinned",{startIndex:r||Math.abs(r),endIndex:o||Math.abs(o),startLabel:a,endLabel:i},n.originalEvent)}},t.prototype.dragstart=function(e){this._setConfig();var t,n,r=this.getFromEnv("chart"),o=this.getFromEnv("animationManager"),a=this.getFromEnv("chart-container"),s=this.config,l=s.attr,c=this.getGraphicalElement("resizeBox"),u=e.originalEvent,d=s.layerX=(u.pageX||u.data[0])-s.chartPosLeft,f=s.layerY=(u.pageY||u.data[1])-s.chartPosTop,h=s.canvasY,p=s.canvasX,g=s.canvasX2,m=s.canvasY2;t=(0,i.getPosition)(a),s.chartPosLeft=t.left,s.chartPosTop=t.top,s.oy=f,s.ox=d,s.allowMove=!1,l.x=0,l.y=0,l.width=0,l.height=0,n=o.setAnimation({el:c||"rect",attr:l,container:r.getChildContainer("trackerGroup"),component:this,callback:function(){this.show()}}),c||this.addGraphicalElement("resizeBox",n),d>p&&d<g&&f>h&&f<m&&(s.allowMove=!0),s.dragstartFn&&"function"==typeof s.dragstartFn&&s.dragstartFn(e)},t.prototype.dragmove=function(e){this._setConfig();var t=this.config,n=this.getFromEnv("animationManager"),r=this.getGraphicalElement("resizeBox"),o=e.originalEvent,a=o.pageX||o.data[2],i=o.page||o.data[3],s=t.layerX=a-t.chartPosLeft,l=t.layerY=i-t.chartPosTop,c=s-t.ox,u=l-t.oy,p=t.ox,g=t.oy,m=t.zoomX,v=t.zoomY,y=t.strokeWidth,b=t.canvasW,x=t.canvasH,w=t.canvasY,C=t.canvasX,_=t.canvasX2,E=t.canvasY2;n.setAnimationState("dragMove"),t.allowMove&&(t.isDragged||(t.isDragged=1),c=-(p-d(p-(p-f(p+c,C)),_)),u=-(g-d(g-(g-f(g+u,w)),E)),n.setAnimation({el:r,attr:{x:(m?d(p,p+c):C)+.5*y,y:(v?d(g,g+u):w)+.5*y,width:m?h(c):b,height:v?h(u):x},component:this}),t.dragmoveFn&&"function"==typeof t.dragmoveFn&&t.dragmoveFn(e))},t.prototype.dragend=function(e){this._setConfig();var t,n,r,o=this.getFromEnv("chart"),a=o.config,i=this.config,s=this.getFromEnv("xAxis")[0],l=this.getGraphicalElement("resizeBox"),c=i.bBox;o.getFromEnv("animationManager").setAnimationState("dragEnd"),r={chart:o,selectionLeft:(c=l.getBBox()).x,selectionTop:c.y,selectionHeight:c.height,selectionWidth:c.width,originalEvent:e.originalEvent},i.isDragged&&(i.dragendFn&&"function"==typeof i.dragendFn&&i.dragendFn(e,r),i.isDragged=0),l.hide(),delete i.oy,delete i.ox,(t=c.x-a.canvasLeft)!==(n=t+c.width)&&(i.boxStartValue=s.getValue(t),i.boxEndValue=s.getValue(n),this.pinRangePixels(t,n,e))},t}(a["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222),a=(r=o)&&r.__esModule?r:{"default":r},i=n(129),s=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.controlArr=[{nativeInteraction:["fc-dragstart","fc-dragmove"],callback:r.onDrag.bind(r),component:r},{nativeInteraction:["fc-dragend"],callback:r.onDragEnd.bind(r),component:r}],s.isFirefox&&r.controlArr.push({nativeInteraction:["fc-mousedown"],callback:t.mousedown,component:r}),n}return l(t,e),t.mousedown=function(e){e&&e.preventDefault()},t.prototype.configure=function(){e.prototype.configure.call(this);var t=this;!t.config.skipGraphics&&t.addGraphicalElement("button",t.createButton({icon:"panModeIcon",handlers:{click:function(){t.toggle()},tooltext:t.config.tooltext}})),t.getLinkedParent().registerDependancy([{derivedInteraction:["zoomin","zoomout","dragzoomenabled","dragzoomdisabled"],callback:t.dependancyFn,component:t}]),t.disable(void 0,!1)},t.prototype.getName=function(){return"dragPan"},t.prototype.enable=function(e,t){var n=this;n._checkStackLen()&&!0!==n.config.enabled&&(n.config.enabled=!0,n.config.state="pressed",n.fireEvent("panenabled"),!t&&n.getFromEnv("chart").fireChartInstanceEvent("zoommodechanged",{panModeActive:!0},e&&e.originalEvent),n.addJob("settingControl",function(){n.setControl()},i.priorityList.draw))},t.prototype.disable=function(e,t){var n=this;!1!==n.config.enabled&&(n.config.enabled=!1,n.config.state=n._checkStackLen()?"activated":"disabled",n.fireEvent("pandisabled"),!t&&n.getFromEnv("chart").fireChartInstanceEvent("zoommodechanged",{panModeActive:!1},e&&e.originalEvent),n.addJob("settingControl",function(){n.setControl()},i.priorityList.draw))},t.prototype.setControl=function(){var e=this.getLinkedParent(),t=this.getGraphicalElement("button"),n=this.controlArr;e.releaseControl(n),this.isEnabled()?(e.getControl(n),t&&t.enable()):t&&t.disable()},t.prototype.setDrag=function(e){this.config.isDragging=!!e},t.prototype.isDragging=function(){return!!this.config.isDragging},t.prototype.onDragEnd=function(){this.setDrag(!1),this.getFromEnv("chart").getContainer("parentgroup").attr({cursor:"default"})},t.prototype.onDrag=function(e){var t,n,r,o,a,i,s,l,c,u,d,f=function(e){return e.originalEvent&&(e=e.originalEvent),e.type.match(/touch/)?{x:e.touches[0].pageX,y:e.touches[0].pageY}:e.type.match(/mouse|pointer/)?{x:e.pageX,y:e.pageY}:void 0}(e.originalEvent);(function(e){return!e.touches||1===e.touches.length})(e.originalEvent)&&(this.getFromEnv("chart").getContainer("parentgroup").attr({cursor:"move"}),this.getFromEnv("animationManager").setAnimationState("drag"),this.isDragging()?this.getFromEnv("axesObArr").forEach(function(e){var h,p;if(t=e.origConfig.minValue,n=e.origConfig.maxValue,a=e.axis,i=a.config.axisRange,s=a.getScale(),l=s.getRange(),c=s.getDomain(),u=(l[1]-l[0])/(c[1]-c[0]),h=f,p=e.startCoord,d={x:h.x-p.x,y:h.y-p.y},o=n-t,(r=-(r=e.isY?d.y/u:d.x/u))>0)r=Math.min(i.max-n,r);else{if(!(r<0))return;r=-Math.min(t-i.min,-r)}n=(t+=r)+o,a.setVisibleConfig(t,n)}):(this.getFromEnv("axesObArr").forEach(function(e){e.origConfig=e.axis.getVisibleConfig(),e.startCoord=f}),this.setDrag(!0)))},t.prototype.dependancyFn=function(e){"zoomout"===e.type?!this._checkStackLen()&&this.disable():"zoomin"===e.type?this.enable(e):"dragzoomdisabled"===e.type?this._checkStackLen()&&this.enable(e):"dragzoomenabled"===e.type&&this.disable(e)},t}(a["default"]);t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){return e<0?-e:e},c=Math.max,u=Math.min,d=function(e,t,n,r,o){var a=e.getVisibleConfig(),i=e.getValue(t[r?"y":"x"]+e.getTranslation()),s=i-a.minValue,l=a.maxValue-i,d=e.config.axisRange;return{min:Math.round(c(d.min,i-s/n)*o)/o,max:Math.round(u(d.max,i+l/n)*o)/o}},f=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.controlArr=[{nativeInteraction:["fc-pinchstart"],callback:r.pinchstart.bind(r),component:r},{nativeInteraction:["fc-pinchmove"],callback:r.pinchmove.bind(r),component:r}],n}return s(t,e),t.prototype.getName=function(){return"pinchZoom"},t.prototype.configure=function(){e.prototype.configure.call(this),this.enable()},t.prototype.getCenter=function(e,t){var n=this.getFromEnv("chart"),r=(0,i.getMouseCoordinate)(n.getLinkedItem("container"),{pageX:(e.pageX+t.pageX)/2,pageY:(e.pageY+t.pageY)/2},n);return{x:r.chartX,y:r.chartY}},t.prototype.pinchmove=function(e){var t,n,r,o,a,i,s,c,u=this,f=e.originalEvent.data,h=f.distanceX,p=f.distanceY,g=u.config,m=g.touchConfig,v={},y=!1,b={},x=u.getFromEnv("chart"),w=u.getFromEnv("axesObArr"),C=Math.pow(10,g.zoomDecimalLimit)||1,_=x.getChildContainer().plotGroup;t=l(h/m.distanceX),n=l(p/m.distanceY),w.forEach(function(){_.transform(""),_.scale(t,n,m.center.x,m.center.y)}),clearTimeout(g.chartDraw),g.chartDraw=setTimeout(function(){_.transform(""),w.forEach(function(e){var l=e.axis,f=d(l,m.center,e.isY?n:t,e.isY,C),h=f.min,p=f.max,g=e.stack,x=l.getVisibleConfig(),w=l.getLimit(),_=g.length-1,E=g[_],k=Math.floor(h)===w.min&&Math.ceil(p)===w.max,S=l.getZoom()>=C;if(E)if(k)e.stack=[],v.zoomout=!0;else if(E.minValue>h&&E.maxValue<p){for(;E&&E.minValue>h&&E.maxValue<p;)g.pop(),E=g[--_];v.zoomout=!0}else S||(g.push(x),v.zoomin=!0);else k||S||(g.push(x),v.zoomin=!0);e.isY?(i=h,s=p):(o=h,a=p,b=u.constructor._getZoomInfo(o,a,l)),c=e.stack.length+1,r=l.setVisibleConfig(h,p),y=y||r}),y&&(v.zoomout&&u._raiseZoomEvents("zoomout","zoomedout",Object.assign(b,{level:c,startX:o,endX:a,startY:i,endY:s})),v.zoomin&&u._raiseZoomEvents("zoomin","zoomedin",Object.assign(b,{level:c,startX:o,endX:a,startY:i,endY:s}))),g.chartDraw=null},250)},t.prototype.pinchstart=function(e){var t,n=this.getFromEnv("axesObArr"),r=e.originalEvent.data,o=r;this.getFromEnv("animationManager").setAnimationState("touch"),o.center=this.getCenter(r.finger0,r.finger1),this.config.touchConfig=r,n.forEach(function(e){t=e.axis,e.visibleConfig=t.getVisibleConfig(),e.centerVal=t.getValue(e.isY?o.center.y:o.center.x)})},t.prototype.setControl=function(){var e=this.getLinkedParent(),t=this.controlArr;e.releaseControl(t),this.isEnabled()&&e.getControl(t)},t}(a["default"]);t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(222),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.controlArr=[{nativeInteraction:["fc-dragend"],callback:r.end.bind(r),component:r},{nativeInteraction:["fc-dragmove"],callback:r.move.bind(r),component:r},{nativeInteraction:["fc-dragstart"],callback:r.start.bind(r),component:r}],n}return s(t,e),t.prototype.getName=function(){return"swipeGesture"},t.prototype.configure=function(){e.prototype.configure.call(this),this.enable()},t.prototype.getPresentScrollValue=function(){var e=this.config.xAxis,t=e.getVisibleConfig(),n=e.getLimit(),r=t.maxValue-t.minValue,o=n.max-n.min;return(t.minValue-n.min)/(o-r)},t.prototype.start=function(e){var t,n,r=this.getFromEnv("chart"),o=this.config;t=(0,i.getMouseCoordinate)(r.getFromEnv("chart-container"),e.originalEvent,r),o.previousX=t.chartX,o.presentScrollValue=n=this.getPresentScrollValue(),r.fireChartInstanceEvent("scrollStart",{scrollPosition:n})},t.prototype.move=function(e){var t=this.config,n=this.getFromEnv("chart"),r=t.xAxis,o=(0,i.getMouseCoordinate)(n.getFromEnv("chart-container"),e.originalEvent,n).chartX,a=(o-t.previousX)/t.plotDifference,s=r.getVisibleConfig(),l=t.previousScrollValue=t.presentScrollValue,c=s.minValue-a,u=t.axisMin,d=t.axisMax,f=s.maxValue-a;c<u&&u===s.minValue||f>d&&d===s.maxValue||(c<u?(f+=a,f-=a=s.minValue-u,c=u):d<f&&(c+=a,c+=a=d-s.maxValue,f=d),n.getFromEnv("animationManager").setAnimationState("scroll"),r.setVisibleConfig(c,f),n.fireChartInstanceEvent("onScroll",{scrollPosition:l}),t.previousX=o,t.presentScrollValue=this.getPresentScrollValue())},t.prototype.end=function(){var e=this.config;this.getFromEnv("chart").fireChartInstanceEvent("scrollEnd",{previousScrollPosition:e.previousScrollValue,scrollPosition:e.presentScrollValue})},t.prototype.setControl=function(){var e=this.getLinkedParent(),t=this.controlArr,n=this.config,r=this.getFromEnv("canvas").getAxes().filter(function(e){return!e.isY}),o=n.xAxis=r&&r[0]&&r[0].axis,a=o.config.axisRange;n.plotDifference=o.getPixel(1)-o.getPixel(0),n.axisMin=a.min,n.axisMax=a.max,e.releaseControl(t),this.isEnabled()&&e.getControl(t)},t}(a["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t=window,n=t.navigator.userAgent,a=/msie/i.test(n)&&!t.opera,i=Math,s=i.min,l=i.round,c=t.parseFloat,u=String,d="rgba(192,192,192,"+(a?.002:1e-6)+")",f={enabled:!1,"false":!1,0:!1,disabled:!0,"true":!0,1:!0};e.define&&e.define([{name:"button",button:function(t,n,o,a,i,s){if("object"===(void 0===t?"undefined":r(t))&&t.button){var l=t.button;t=l[0],n=l[1],o=l[2],a=l[3],i=l[4],s=l[5]}var c,u=this.group("button",s);for(c in u._.button={bound:this.rect(u),tracker:this.rect(u).attr({fill:d,stroke:d,cursor:"pointer"}).data("compositeButton",u)},!e.is(i,"object")&&(i={}),e.fn.button.fn)u[c]=e.fn.button.fn[c];for(c in e.fn.button.ca)u.ca[c]=e.fn.button.ca[c];return u.attr({"button-padding":[i.horizontalPadding,i.verticalPadding],"button-label":o,"button-symbol":a,"button-disabled":i.disabled||"false","button-symbol-position":i.symbolPosition,"button-symbol-padding":i.symbolPadding}).attr("button-repaint",[t,n,i.width,i.height,i.r])},data:{hoverin:function(){var e=this,t=e._.button,n=t.hoverbackIn,r=e._hover||{};r.fill||r["fill-symbol"]||r.stroke||r["stroke-width"]||r.cursor?(r.fill&&e.bottom.attr("fill",r.fill)&&!r["fill-symbol"]&&t.symbol.attr("fill",r.fill),r["fill-symbol"]&&t.symbol.attr("fill",r["fill-symbol"]),r.stroke&&e.bottom.attr("stroke",r.stroke)&&t.symbol.attr("stroke",r.stroke),r["stroke-width"]&&e.bottom.attr("stroke-width",r["stroke-width"])&&t.symbol.attr("stroke-width",r["stroke-width"]),r.cursor&&t.tracker.attr("cursor",r.cursor),n&&n()):n&&!1===n(arguments)||e.attr("fill","hover"),e.hovered=!0},hoverout:function(){var e=this,t=e._.button,n=t.hoverbackOut,r=e._normal||{};r.fill||r["fill-symbol"]||r.stroke||r["stroke-width"]||r.cursor?(r.fill&&e.bottom.attr("fill",r.fill)&&!r["fill-symbol"]&&t.symbol.attr("fill",r.fill),r.stroke&&e.bottom.attr("stroke",r.stroke)&&t.symbol.attr("stroke",r.stroke),r["fill-symbol"]&&t.symbol.attr("fill",r["fill-symbol"]),r["stroke-width"]&&e.bottom.attr("stroke-width",r["stroke-width"])&&t.symbol.attr("stroke-width",r["stroke-width"]),r.cursor&&t.tracker.attr("cursor",r.cursor),n&&n()):n&&!1===n(arguments)||e.attr("fill",e.pressed||e.active?"active":"normal"),e.hovered=!1},mousedown:function(){var e=this,t=e._.button,n=e._pressed||{};n.fill||n["fill-symbol"]||n.stroke||n["stroke-width"]||n.cursor?(n.fill&&e.bottom.attr("fill",n.fill)&&!n["fill-symbol"]&&t.symbol.attr("fill",n.fill),n.stroke&&e.bottom.attr("stroke",n.stroke)&&t.symbol.attr("stroke",n.stroke),n["fill-symbol"]&&t.symbol.attr("fill",n["fill-symbol"]),n["stroke-width"]&&e.bottom.attr("stroke-width",n["stroke-width"])&&t.symbol.attr("stroke-width",n["stroke-width"]),n.cursor&&t.tracker.attr("cursor",n.cursor)):e.attr("fill","active"),e.pressed=!0},mouseup:function(){var e=this,t=e._.button,n=t.callback,r=e._normal||{};r.fill||r["fill-symbol"]||r.stroke||r["stroke-width"]||r.cursor?(r.fill&&e.bottom.attr("fill",r.fill)&&!r["fill-symbol"]&&t.symbol.attr("fill",r.fill),r.stroke&&e.bottom.attr("stroke",r.stroke)&&t.symbol.attr("stroke",r.stroke),r["fill-symbol"]&&t.symbol.attr("fill",r["fill-symbol"]),r["stroke-width"]&&e.bottom.attr("stroke-width",r["stroke-width"])&&t.symbol.attr("stroke-width",r["stroke-width"]),r.cursor&&t.tracker.attr("cursor",r.cursor)):e.attr("fill",(e.hovered?"hover":e.active&&"active")||"normal"),e.pressed=!1,n&&n(arguments)},mousemove:function(){var e=this._.button.mousemove;e&&e(arguments)}},fn:{tooltip:function(){return e.el.tooltip&&e.el.tooltip.apply(this._.button.tracker,arguments),this},buttonclick:function(e,t){var n=this,r=n._.button;return t=t||n,r.callback=function(){return e.apply(t,arguments)},n},labelcss:function(){var e=this._.button,t=e.label;return e.cssArg=arguments,t&&t.css.apply(t,arguments),this.attr("button-repaint",this.attrs["button-repaint"])},buttonhover:function(e,t,n,r,o,a){var i=this,s=i._.button;return n=n||i,r=r||i,a=a||i,o&&(s.mousemove=function(){return o.apply(a,arguments)}),s.hoverbackIn=function(){return e.apply(n,arguments)},s.hoverbackOut=function(){return t.apply(r,arguments)},i},remove:function(){var t,n=this,r=n._.button;for(t in n.attr("button-disabled","true"),r)r[t]&&r[t].remove&&r[t].remove(),r[t]=null;delete n._.button,e.el.remove.apply(n,arguments)}},ca:{"button-active":function(e){var t=this;t.attr("fill",(t.active=!!e)?"active":t.hovered?"hover":"normal")},"button-disabled":function(e){var t=this,n=t.paper,r=t._.button,o=r.tracker,a=t.attrs["button-disabled"],i=n.button.data,s=t._disabled||{};if(a=f[a],void 0!==(e=f[e])&&e!==a)switch(e){case!0:s.fill||s.stroke||s["stroke-width"]||s.cursor?(s.fill&&t.bottom.attr("fill",s.fill)&&r.symbol.attr("fill",s.fill),s.stroke&&t.bottom.attr("stroke",s.stroke)&&r.symbol.attr("stroke",s.stroke),s["stroke-width"]&&t.bottom.attr("stroke-width",s["stroke-width"]&&r.symbol.attr("fill",s.fill)),s.cursor&&r.tracker.attr("cursor",s.cursor)):o.attr("fill","rgba(204,204,205,.5)"),o.off("fc-mousedown",i.mousedown).off("fc-unmouseup",i.mouseup).unhover(i.hoverin,i.hoverout).unmousemove(i.mousemove);break;case!1:o.attr("fill",d).on("fc-mousedown",i.mousedown,t).on("fc-mouseup",i.mouseup,t).hover(i.hoverin,i.hoverout,t,t).mousemove(i.mousemove,t)}},"button-label":function(e){var t=this,n=t._.button,r=t.attrs,o=n.label,a=n.cssArg,i=t.attrs["button-repaint"];"none"===(e=u(e||""))?o&&(n.label=o.remove()):e&&(!o&&(o=n.label=t.paper.text(t).insertBefore(n.tracker)),o.attr({text:e,"text-anchor":"middle","vertical-align":"middle"}),a&&a.length&&o.css.apply(o,a)),i&&r["button-label"]!==e&&t.attr("button-repaint",i)},"button-symbol":function(e){var t=this,n=t._.button,r=n.symbol,o=t.attrs["button-repaint"];"none"===(e=u(e||""))?(r&&(n.symbol=r.remove()),delete n.symbol):e&&!r&&(r=n.symbol=t.paper.symbol(t).insertAfter(n.bound)),o&&t.attr("button-repaint",o)},"button-symbol-position":function(e){return{"button-symbol-position":{top:"top",right:"right",bottom:"bottom",left:"left",none:"none"}[u(e).toLowerCase()]||"none"}},"button-symbol-padding":function(e){return{"button-symbol-padding":c(e)}},"button-padding":function(e,t){return{"button-padding":[(null===e||void 0===e)&&(e=5)||c(e),(null===t||void 0===t)&&e||c(t)]}},"button-repaint":function(t,n,r,a,i){var c,u,d,f,h,p,g,m=this._.button,v=m.bound,y=m.label,b=m.symbol,x=this.attrs,w=x["button-padding"],C=w[0],_=w[1];if(void 0===t&&(t=0),void 0===n&&(n=0),void 0!==r&&void 0!==a||(p=y&&y.getBBox()||{width:0,height:0},void 0===r&&(r=2*C+p.width),void 0===a&&(a=2*_+p.height)),(g=e.crispBound(t,n,r,a,v.attr("stroke-width"))).r=i=(0,o.pluck)(i,l(.1*s(a,r))),t=g.x,n=g.y,r=g.width,a=g.height,y&&y.attr({x:t+r/2,y:n+a/2}),b){switch(!e.is(h=x["button-symbol-padding"],"finite")&&(h=.2*a),f=.5*(d=a-_),x["button-symbol-position"]+(y?"+":"-")){case"right+":c=t+(r+=2*f+_)-f-C,u=n+.5*a,y.attr("transform",["t",-(d+h),0]);break;case"left+":r+=2*f+_,c=t+C+f,u=n+.5*a,y.attr("transform",["t",d+h,0]);break;case"top+":a+=2*f+h,c=t+.5*r,u=n+w[1]+f,y.attr("transform",["t",0,d+h]);break;case"bottom+":c=t+.5*r,u=n+(a+=2*f+h)-_-f,y.attr("transform",["t",0,-(d+h)]);break;default:c=t+.5*r,u=n+.5*a}b.attr("symbol",[x["button-symbol"],c,u,f])}m.bound.attr(g),m.tracker.attr(g)},fill:function(t,n,r,o){var a=!(arguments.length>4&&arguments[4]!==undefined)||arguments[4],i=this,s=i._.button,l=s.bound,c=s.symbol,u=s.label,d={normal:s.gradient,active:s.gradientActive,hover:s.gradientHover}[t];return d||(a||((t=e.getRGB(t)).error&&(t=e.color("#cccccc")),t="opacity"in t?"rgba("+[t.r,t.g,t.b,t.opacity]+")":"rgb("+[t.r,t.g,t.b]+")"),s.gradient=a?t:[90,e.tintshade(t,-.8).rgba+":0",e.tintshade(t,.8).rgba+":100"].join("-"),s.gradientActive=[270,e.tintshade(t,-.8).rgba+":0",e.tintshade(t,.8).rgba+":100"].join("-"),(o=e.getRGB(o)).error&&(o=t)||(o="opacity"in o?"rgba("+[o.r,o.g,o.b,o.opacity]+")":"rgb("+[o.r,o.g,o.b]+")"),s.gradientHover=a?o:[90,e.tintshade(o,-.9).rgba+":0",e.tintshade(o,.7).rgba+":100"].join("-"),r=r||e.tintshade(t,.2).rgba,n=n||e.tintshade(t,-.2).rgba,s.symbolFill=r,s.labelFill=n,d=(i.pressed||i.active)&&s.gradientActive||i.hovered&&s.gradienthover||s.gradient),l.attr("fill",d),c&&c.attr("fill",s.symbolFill),u&&u.attr("fill",s.labelFill),!1},stroke:function(t,n){var r=this._.button,o=r.symbol;return(t=e.color(t)).error&&(t=e.color("#999999")),r.bound.attr("stroke",t),o&&o.attr("stroke",n||t),!1},"stroke-width":function(e,t){var n=this._.button,r=n.symbol;return n.bound.attr("stroke-width",e),n.tracker.attr("stroke-width",e),r&&r.attr("stroke-width",t),!1},config:function(e){var t=this;e.hover&&(t._hover={fill:e.hover.fill,stroke:e.hover.stroke,"stroke-width":e.hover["stroke-width"],cursor:e.hover.cursor,"fill-symbol":e.hover["fill-symbol"]}),e.disabled&&(t._disabled={fill:e.disabled.fill,stroke:e.disabled.stroke,"stroke-width":e.disabled["stroke-width"],cursor:e.disabled.cursor}),e.pressed&&(t._pressed={fill:e.pressed.fill,stroke:e.pressed.stroke,"stroke-width":e.pressed["stroke-width"],cursor:e.pressed.cursor,"fill-symbol":e.pressed["fill-symbol"]}),e.normal&&(t._normal={fill:e.normal.fill,stroke:e.normal.stroke,"stroke-width":e.normal["stroke-width"],cursor:e.normal.cursor,"fill-symbol":e.normal["fill-symbol"]}),e.symbol&&(e.symbol={stroke:e.normal.stroke,"stroke-width":e.normal["stroke-width"]})}}}])};var o=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118),o=function(e,t){var n=e.sender,o=n.getLinkedItem("owner"),a=n.getFromEnv("chart"),i=o&&o.getEventArgs?o.getEventArgs(n):{},s=(0,r.getMouseCoordinate)(n.getFromEnv("chart-container"),e,a);i.chartX=s.chartX,i.chartY=s.chartY,i.pageX=s.pageX,i.pageY=s.pageY,i.id=a.getId(),i.legendItemId=n.getId(),i.legendItemIndex=n.config.index,a.fireChartInstanceEvent(t,i,e)};t["default"]={extension:function(e){var t=void 0;e.addEventListener("instantiated",function(e){var n;"legendItem"===(t=e.sender).getType()&&((n=t).addEventListener("fc-click",function(e){o(e,"legendItemClicked")}),n.addEventListener("fc-mouseover",function(e){o(e,"legendItemRollover")}),n.addEventListener("fc-mouseout",function(e){o(e,"legendItemRollout")}))})},name:"legendEventManagerLinker",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(234),a=(r=o)&&r.__esModule?r:{"default":r};var i=function(e){return"chartAPI"===e.getType()},s=void 0,l=void 0;function c(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return s!==l&&(s.exportChart(e),!0)}t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){var t=e.sender;i(t)&&t.registerFactory("export",function(e){t.getFromEnv("chartInstance").exportChart=c,!e.getChildren("export")&&Number(e.getFromEnv("dataSource").chart.exportenabled)&&(s=new a["default"],e.attachChild(s,"exportModule"),s.addToEnv("chartInstance",e.getFromEnv("chartInstance")),s.addToEnv("chartMenuList",e.getFromEnv("chartMenuList")),s.configure({chartConfig:e.getFromEnv("dataSource").chart})),e.getChildren("export")&&s&&s.configure({chartConfig:e.getFromEnv("dataSource").chart})})})},name:"Export",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(118),i=n(122),s=n(131),l=(r=s)&&r.__esModule?r:{"default":r},c=n(235),u=n(237),d=n(238); +/** ! + * @license FusionCharts JavaScript Library + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + * + * @version //? write(JSON.parse(require('fs').readFileSync('./package.json')).version); + */function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var h=/\s\bx\b=['"][^'"]+?['"]/gi,p=/\s\by\b=['"][^'"]+?['"]/gi,g=window,m=g.document,v="https:"===g.location.protocol?"https://export.api3.fusioncharts.com/":"http://export.api3.fusioncharts.com/",y="https:"===g.location.protocol?"https://export.api3.fusioncharts.com/api/v1.0/logs":"http://export.api3.fusioncharts.com/api/v1.0/logs",b=g.navigator.userAgent.match(/ (iPad|iPhone|iPod)/g),x=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.config={exportOption:{},chartConfig:{caption:"",subcaption:"",width:"",height:""}},n}return f(t,e),t.prototype.getName=function(){return"exportModule"},t.prototype.getType=function(){return"extension"},t.prototype.configureMenuBar=function(e){var t=this,n=!!g.btoa,r=t.getFromEnv("chart-attrib").exportformats,o=void 0,a=void 0,i=void 0,s=void 0,l=void 0,c=void 0,u={PNG:"Export As "+d.EXPORTFORMAT.PNG.toUpperCase(),JPG:"Export As "+d.EXPORTFORMAT.JPG.toUpperCase(),PDF:"Export As "+d.EXPORTFORMAT.PDF.toUpperCase(),SVG:"Export As "+d.EXPORTFORMAT.SVG.toUpperCase(),XLS:"Export As "+d.EXPORTFORMAT.XLS.toUpperCase()},f=void 0,h=[],p=void 0;if(t.config.exportOption.exportenabled){if(c=function(e){return function(){t.config.exportOption.exportformat=e,t.exportChart({})}},r)for(s=0,l=(o=r.split("|")).length;s<l;s++)u[i=(a=o[s].split("="))[0].toUpperCase()]&&(u[i]=a[1]||u[i]),u[i]&&(p||(p={}))&&(p[i]=!0);for(i in u)"XLS"===i&&!n||p&&!p[i]||((f={})[u[i]]={handler:c(i),action:"click"},h.push(f));e.appendAsList(h)}},t.prototype.configure=function(e){var t,n,r,o=this.getFromEnv("chartMenuList"),i=this.getFromEnv("chartInstance"),s=this.config,l=s.chartConfig,c=s.exportOption;(e=e.chartConfig).caption&&(l.caption=(0,a.pluck)(e.caption,"")),e.subcaption&&(l.subcaption=(0,a.pluck)(e.subcaption,"")),c.exportenabled=(0,a.pluckNumber)(e.exportenabled,0),c.exportshowmenuitem=(0,a.pluckNumber)(e.exportshowmenuitem,1),c.exportformat=(0,a.pluck)(e.exportformat,d.EXPORTFORMAT.PNG),c.exporthandler=(0,a.pluck)(e.html5exporthandler,e.exporthandler,v),c.exportaction=(t=void 0,e.exportaction&&"string"==typeof e.exportaction?(t=e.exportaction.toLowerCase(),[d.EXPORTACTION.DOWNLOAD,d.EXPORTACTION.SAVE,d.EXPORTACTION.DOWNLOADSAVE].indexOf(t)>=0?t:d.EXPORTACTION.DOWNLOAD):d.EXPORTACTION.DOWNLOAD),c.exporttargetwindow=(0,a.pluck)(e.exporttargetwindow,b?"_blank":"_self"),c.exportfilename=(0,a.pluck)(e.exportfilename,"FusionCharts"),c.exportparameters=(0,a.pluck)(e.exportparameters,""),c.exportcallback=(0,a.pluck)(e.exportcallback,""),c.exportwithimages=(0,a.pluckNumber)(e.exportwithimages,1),c.exportmode=(n=void 0,"undefined"!=typeof e.exportatclientside&&(n={1:d.EXPORTMODE.AUTO,0:d.EXPORTMODE.AUTO}[e.exportatclientside]),n=(n=e.exportmode||n||d.EXPORTMODE.AUTO).toLowerCase()),c.logenabled=(0,a.pluckNumber)(e.logenabled,0),c.loghandler=(0,a.pluck)(e.html5loghandler,e.loghandler,y),c.logmode=void 0!==(r=e.logmode)&&"string"==typeof r&&r.toUpperCase()in d.LOGMODE?d.LOGMODE[r.toUpperCase()]:d.LOGMODE.AUTO,c.bgcolor=function(e){var t=(0,a.pluckNumber)(e.options.containerBackgroundOpacity,1);return e.jsVars.transparent||0===t?"":e.options.containerBackgroundColor||"#FFFFFF"}(i),c.bgalpha=function(e){return e.jsVars.transparent?0:(0,a.pluckNumber)(e.options.containerBackgroundOpacity,1)+""}(i),c.exportshowmenuitem&&o&&this.configureMenuBar(o)},t.prototype.exportChart=function(e){var t,n=this.getFromEnv("chartInstance"),r=this.getFromEnv("chart"),s=this.config.exportOption,l="object"===(void 0===(t=e)?"undefined":o(t))&&function(e){var t={},n=void 0;for(n in e)t[n.toLowerCase()]=e[n];return t}(e)||{},f=(0,a.extend2)((0,a.extend2)({},s),l),v=(f.exportformat||d.EXPORTFORMAT.PNG).toLowerCase(),y=f.exporthandler,b=f.exportaction,x=f.exporttargetwindow||"",w=f.exportfilename,C=f.exportparameters,_=f.exportcallback,E=f.exportwithimages,k=f.exportmode,S=f.logenabled,A=f.loghandler,T=f.logmode,M=void 0,O=void 0,L=void 0,I=this;r.fireChartInstanceEvent("beforeExport",f,void 0,function(){var e,t=n.id,o=I.config.chartConfig.caption,s=I.config.chartConfig.subcaption,l=this.apiInstance.getFromEnv("paper"),F=this.apiInstance.getFromEnv("core-options")["export"].useCanvas,N=void 0,D=void 0,P=void 0,R=r.getChildren("chartMenuBar"),j=void 0,V=(0,c.isCanvasElemSupported)(),B={DOMId:t,height:l.height,width:l.width,fileName:w+"."+v,statusCode:void 0,statusMessage:void 0,notice:void 0},G={exportAction:b,exportTargetWindow:x,exportCallback:_,fusionCharts:n,paper:l,chartId:t,exportHandler:y,logEnabled:S,logMode:T,logHandler:A},H=function(e,t,r){var i,c,u,h=void 0;return r=r||b,i=b,c=(0,d.createExportActionOldString)(b),u=["exportfilename="+w,"exportformat="+v,"exportaction="+c,"exportactionnew="+i,"configuredexportaction="+r,"exportparameters="+C].join("|"),h=!!S,T===d.LOGMODE.CLIENT&&(h=!1),{charttype:n.chartType(),stream_type:e||"",stream:t||"",meta_bgColor:f.bgcolor||"",meta_bgAlpha:f.bgalpha||"1",meta_DOMId:n.id,meta_width:l.width||I.config.chartConfig.width,meta_height:l.height||I.config.chartConfig.height,chart_caption:o,chart_sub_caption:s,is_single_export:!0,is_full_version:!1,version:a.PROJECT_VERSION,user_time_zone:-(new Date).getTimezoneOffset(),log_enabled:h,parameters:u}},z=function(){var e=b;return{chartType:n.chartType(),chartCaption:o,chartSubCaption:s,isSingleExport:!0,isFullVersion:!1,exportAction:e,userTimeZone:-(new Date).getTimezoneOffset(),exportFileName:[w,v].join("."),exportFormat:v,version:a.PROJECT_VERSION}},$=function(e){var t=H(d.EXPORTFORMAT.SVG,e);(0,c.downloadCharts)(null,null,null,t,G)},X=function(e,t,n){var r=void 0;(r=m.createElement("canvas")).width=l.width,r.height=l.height,(0,c.drawSvgOnCanvas)({svg:P,canvas:r,x:0,y:0,width:l.width,height:l.height,useCanvas:F},function(){switch(e){case d.EXPORTFORMAT.PNG:t(e,r.toDataURL("image/png"),w,n);break;case d.EXPORTFORMAT.JPEG:case d.EXPORTFORMAT.PDF:default:t(e,r.toDataURL("image/jpeg"),w,n)}})},U=function(e,t,n){var r,o=void 0;r=w+"."+v,v===d.EXPORTFORMAT.SVG?(o=(0,d.svgStrToDataUrl)(e),N=n===d.EXPORTMODE.AUTO?H("IMAGE-DATA",o):null,(0,c.downloadCharts)("url",o,r,N,t)):X(v,function(){!function(e,t,n,r,o){var a=n+"."+e;e===d.EXPORTFORMAT.PDF&&((0,u.JpegToPdf)(l.height,l.width),(0,u.addImage)(t),t=(0,u.getDataUrl)()),N=o===d.EXPORTMODE.AUTO?H("IMAGE-DATA",t):null,(0,c.downloadCharts)("url",t,a,N,r)}(arguments[0],arguments[1],arguments[2],arguments[3],n)},t)},W=function(e){r.fireChartInstanceEvent("exportDataReady",e)},Y=function(e){e===d.LOGMODE.CLIENT&&(0,d.logCharts)(z(),G)},q=void 0,K=void 0;if("xls"===v){if("undefined"==typeof g.btoa)return r.fireChartInstanceEvent("exportCancelled",f),!1;O=n.getCSVData(),W(),e=0,M=[],O.replace(/[^\r\n]+/g,function(t){M[e]=[],M[e]=t.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/).map(function(e){return e.replace(/"/g,"")}),e+=1}),L=function(){var e;return"data:application/vnd.ms-excel;base64,"+(e="<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\"><html xmlns:o='urn:schemas-microsoft-com:office:office'xmlns:x='urn:schemas-microsoft-com:office:excel'xmlns='http://www.w3.org/TR/REC-html40'><head>\x3c!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--\x3e"+'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>'+function(){var e,t,n=void 0,r=void 0,o=void 0,a=void 0,i=void 0;if(!M.length)return"";for(e="<table align='center' >",o=0,t=M.length;o<t;o+=1)if(0===o){for(n="<thead valign='top'><tr>",a=0,i=M[o].length;a<i;a+=1)n+="<th>"+M[o][a]+"</th>";n+="</tr></thead>",r="<tbody>"}else{for(r+="<tr>",a=0,i=M[o].length;a<i;a+=1)r+="<td>"+M[o][a]+"</td>";r+="</tr>"}return e+n+(r+="</tbody>")+"</table>"}()+"</body></html>",g.btoa(g.unescape(encodeURIComponent(e))))}(),"undefined"!=typeof g.btoa&&("Chrome"===c.browserDetails.name||"Firefox"===c.browserDetails.name||"Edge"===c.browserDetails.name||"ie"===c.browserDetails.name)?(b!==d.EXPORTACTION.DOWNLOAD&&b!==d.EXPORTACTION.DOWNLOADSAVE||((0,c.downloadCharts)("url",L,w+"."+v,null,G),r.fireChartInstanceEvent("exported",B)),b===d.EXPORTACTION.SAVE||b===d.EXPORTACTION.DOWNLOADSAVE?(q=b,b===d.EXPORTACTION.DOWNLOADSAVE&&(b=d.EXPORTACTION.SAVE),N=H("IMAGE-DATA",L,q),(0,c.downloadCharts)(null,null,null,N,G),Y(T)):T!==d.LOGMODE.SERVER&&(0,d.logCharts)(z(),G)):(N=H("IMAGE-DATA",L),(0,c.downloadCharts)(null,null,null,N,G),Y(T))}else(j=R.config.group).attr("visibility","hidden"),D=l.toSVG(E),P=(P=l.toSVG(E&&V)).replace(/ /gi," "),j.attr("visibility","visible"),D=(D=(D=D.replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/gi,"$1M 0 0 L 0 0$2")).replace(/NS\d+:/gi,"xlink:")).replace(/ /gi," "),P=(P=(P=P.replace(/NS\d+:/gi,"xlink:")).replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/gi,"$1M 0 0 L 0 0$2")).replace(/(xlink:title\s*=\s*)['"].*["']/gi,""),D=(D=(D=(D=(D=(D=(D=(D=D.replace(/[\w\-]+\=\"undefined\"/gi,"")).replace(/(xlink:title\s*=\s*)['"].*["']/gi,"")).replace(/rgba\(([^\)]+)\)/gi,function(e){return"#"+new i.RGBtoHex(e.split(","))})).replace(/<svg[^>]+/i,function(e){return e.match(/height/i)||!l.height&&!I.config.chartConfig.height||(e+=' height="'+(l.height||I.config.chartConfig.height)+'"'),e.match(/width/i)||!l.width&&!I.config.chartConfig.width||(e+=' width="'+(l.width||I.config.chartConfig.width)+'"'),e})).replace(/(([\w]+\-)?opacity\s*=\s*)['"][\d\.]+e[\-\+][\d]+["']/gi,'$1"0.001"')).replace(/(([\w]+\-)?opacity\s*:\s*)[\d\.]+e[\-\+][\d]+/gi,"$10.001")).replace(/<text[^\>]+/gi,function(e){return e=(e=(e=(e=(e=(e=(e=(e=e.replace(/stroke\=[\"\']([a-z0-9\#]+)?[\"\']/gi,"")).replace(/stroke\s*\:\s*([a-z0-9\#]+)?;?/gi,"")).replace(/stroke-width\=[\"\']([a-z0-9\#]+)?[\"\']/gi,"")).replace(/stroke-width\s*\:\s*([a-z0-9\#]+)?;?/gi,"")).replace(/stroke-opacity\=[\"\']([a-z0-9\#]+)?[\"\']/gi,"")).replace(/stroke-opacity\s*\:\s*([a-z0-9\#]+)?;?/gi,"")).replace(/(<text[^\>]+fill\=)([\"\'][^\"\']+[\"\'])([^\>]+)/gi,'$1$2 stroke=$2 stroke-width="0.2"$3')).replace(/(<text[^\>]+fill-opacity\=)([\"\'][^\"\']+[\"\'])([^\>]+)/gi,"$1$2 stroke-opacity=$2 $3")})).replace(/<(\b[^<>s\s]+\b)[^\>]+?opacity\s*=\s*['"][^1][^\>]+?(\/>|>[\s\r\n]*?<\/\1>)/gi,function(e,t){var n=void 0;return n=' opacity="1" stroke-opacity="1" fill="#cccccc" stroke-width="0" r="0"',e+"<"+t+(h.exec(e)||"")+(p.exec(e)||"")+(n+=' height="0.5" width="0.5" d="M 0 0 L 1 1" />')}),D=(0,d.makeImageUrlsAbsolute)(D),P=(0,d.makeImageUrlsAbsolute)(P),K=k===d.EXPORTMODE.SERVER,(0,d.cacheAllImages)(D,K,function(){N=H(d.EXPORTFORMAT.SVG,D),W(N),N=null;var e=void 0,t="undefined"!=typeof g.btoa&&("Chrome"===c.browserDetails.name||"Firefox"===c.browserDetails.name||"Edge"===c.browserDetails.name||"ie"===c.browserDetails.name),n=(0,d.hasUndownloadableImage)(D);(k===d.EXPORTMODE.CLIENT||k===d.EXPORTMODE.AUTO&&!n)&&t?(P=(0,d.replaceImagesWithNonDataUrl)(P),b!==d.EXPORTACTION.DOWNLOAD&&b!==d.EXPORTACTION.DOWNLOADSAVE||(U(P,G,k),r.fireChartInstanceEvent("exported",B)),b===d.EXPORTACTION.SAVE||b===d.EXPORTACTION.DOWNLOADSAVE?(e=b,b===d.EXPORTACTION.DOWNLOADSAVE&&(b=d.EXPORTACTION.SAVE),function(e,t,n){var r=void 0;v===d.EXPORTFORMAT.SVG?(r=(0,d.svgStrToDataUrl)(e),n(r,t)):X(v,function(){n(arguments[1],t)},t)}(P,G,function(t,n){N=H("IMAGE-DATA",t,e),(0,c.downloadCharts)(null,null,null,N,n),Y(T)}),r.fireChartInstanceEvent("exported",B)):T!==d.LOGMODE.SERVER&&(0,d.logCharts)(z(),G)):k===d.EXPORTMODE.AUTO?(!function(e){var t=void 0,n=void 0,r=(0,d.hasUndownloadableImage)(e);c.browserDetails.hasCanvas&&"undefined"!=typeof g.btoa?((t=m.createElement("canvas")).width=l.width,t.height=l.height,e=(0,d.embedImagesWithNonDataURL)(e),P=(0,d.replaceImagesWithNonDataUrl)(P),r||v===d.EXPORTFORMAT.SVG?(n=H(d.EXPORTFORMAT.SVG,e),(0,c.downloadCharts)(null,null,null,n,G)):(0,c.drawSvgOnCanvas)({svg:P,canvas:t,x:0,y:0,width:l.width,height:l.height,useCanvas:F},function(){var e=void 0;switch(v){case d.EXPORTFORMAT.PNG:e=t.toDataURL("image/png");break;case d.EXPORTFORMAT.JPEG:e=t.toDataURL("image/jpeg");break;case d.EXPORTFORMAT.PDF:(0,u.JpegToPdf)(l.height,l.width),(0,u.addImage)(t.toDataURL("image/jpeg")),e=(0,u.getDataUrl)();break;default:e=t.toDataURL("image/jpeg")}n=H("IMAGE-DATA",e),(0,c.downloadCharts)(null,null,null,n,G)})):$(e)}(D),Y(T)):k===d.EXPORTMODE.SERVER&&($(D),Y(T))})},function(){r.fireChartInstanceEvent("exportCancelled",f)})},t}(l["default"]);t["default"]=x},function(e,t,n){"use strict";t.__esModule=!0,t.isCanvasElemSupported=t.drawSvgOnCanvas=t.browserDetails=t.downloadCharts=undefined;var r=s(n(236)),o=n(118),a=n(124),i=s(n(166));function s(e){return e&&e.__esModule?e:{"default":e}}var l=window,c=l.Image,u=document,d="download",f="download-save",h=function(){var e=u.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))},p=function(){var e,t=l.navigator.userAgent;return-1!==(e=t.indexOf("Edge"))?{name:"Edge",version:t.substring(e+5,e+11)}:-1!==(e=t.indexOf("Chrome"))?{name:"Chrome",version:t.substring(e+7,e+11)}:-1!==(e=t.indexOf("MSIE"))?{name:"ie",version:t.substring(e+5,e+9)}:-1!==(e=t.indexOf("rv"))&&-1!==t.indexOf("Trident")?{name:"ie",version:t.substring(e+5,e+9)}:-1!==(e=t.indexOf("Firefox"))?{name:"Firefox",version:t.substring(e+8,e+12)}:-1!==(e=t.indexOf("Safari"))?{name:"Safari",version:t.substring(e+7,e+11)}:{name:"default",version:"Not Known"}},g=p(),m=function(e,t,n){var r,o,a=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},i=p(),s=a.chartId,c=a.exportCallback,d=a.paper;"Chrome"===i.name||"Firefox"===i.name?("blob"===e&&(t=l.URL.createObjectURL(t)),(o=u.createElement("a")).download=n,o.href=t,u.body.appendChild(o),o.onclick=function(){c&&l[c]&&"function"==typeof l[c]&&l[c]({statusCode:1,statusMessage:"success",DOMId:s,width:d&&d.width,height:d&&d.height}),o.parentNode.removeChild(o)},o.click()):"ie"!==i.name&&"Edge"!==i.name||l.navigator.msSaveBlob&&(r="url"===e?function(e){var t,n,r,o;for(t=e.split(",")[0].indexOf("base64")>=0?l.atob(e.split(",")[1]):l.unescape(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),o=0;o<t.length;o++)r[o]=t.charCodeAt(o);return new l.Blob([r],{type:n})}(t):t,l.navigator.msSaveBlob(r,n)&&c&&l[c]&&"function"==typeof l[c]&&l[c]({statusCode:1,statusMessage:"success",DOMId:s,width:d&&d.width,height:d&&d.height}))};g.hasCanvas=h(),g.hasSvg=o.hasSVG,t.downloadCharts=function(e,t,n,r,s){var c;!t||(c=t,g.name.toLowerCase()==="Chrome".toLowerCase()&&function(e){var t,n,r;for(t=e.length,r=e.length-1;r>=0;r--)(n=e.charCodeAt(r))>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--;return t}(c)>void 0)?r&&function(e,t){var n,r,s,c,h,p,g,m,v=t.exportAction,y=t.exportTargetWindow,b=t.exportCallback,x=t.fusionCharts.apiInstance,w=t.paper,C=t.chartId,_=t.exportHandler,E=e.parameters;if(v===d||v===f){for(n in/(webkit|gecko)/gi.test(l.navigator.userAgent)&&"_self"===y&&(y=s=C+"export_iframe",m||(m=c=(0,o.createElement)("IFRAME",{name:s,width:"1px",height:"1px"},u.body),c.style.cssText="position:absolute;left:-10px;top:-10px;")),r=(0,o.createElement)("form",{method:"POST",action:_,target:y,style:"display:none;"},u.body),e)(0,o.createElement)("input",{type:"hidden",name:n,value:e[n]},r);return r.submit(),u.body.removeChild(r),r=void 0,p=E.match(/exportfilename=([^|]+)/)[1],g=E.match(/exportformat=([^|]+)/)[1],(0,a.triggerEvent)("exported",x,{DOMId:C,height:w.height,width:w.width,fileName:p+"."+g,statusCode:void 0,statusMessage:void 0,notice:void 0}),b&&l[b]&&"function"==typeof l[b]&&l[b]({statusCode:1,statusMessage:"success",DOMId:C,width:w&&w.width,height:w&&w.height}),!0}for(n in h=new i["default"](function(e){var t={};e.replace(new RegExp("([^?=&]+)(=([^&]*))?","g"),function(e,n,r,o){t[n]=o}),b&&l[b]&&"function"==typeof l[b]&&l[b](t),(0,a.triggerEvent)("exported",x,t)},function(e){var t={statusCode:0,statusMessage:"failure",error:e,DOMId:C,width:w&&w.width,height:w&&w.height};b&&l[b]&&"function"==typeof l[b]&&l[b](t),(0,a.triggerEvent)("exported",x,t,[t])}),e)e.hasOwnProperty(n)&&(e[n]=encodeURIComponent(e[n]));h.post(_,e)}(r,s):m(e,t,n,s)},t.browserDetails=g,t.drawSvgOnCanvas=function(){var e,t,n,o,i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},s=arguments[1],u=i.svg,d=i.canvas,f=i.x,h=i.y,p=i.width,m=i.height,v=i.useCanvas;"ie"===g.name||"Edge"===g.name||v?new r["default"](u,d,f,h,p,m,function(){s()}):(o=function(e){return'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+e}(u),n=o="data:image/svg+xml;base64,"+l.btoa(l.unescape(encodeURIComponent(o))),e=d.getContext("2d"),(t=new c).onload=function(){e.drawImage(t,f,h,p,m),s()},t.onerror=function(){(0,a.raiseWarning)(this,"","run","libSVGToCanvas:drawSvgOnCanvas","Unable to load image for canvas drawing. Aborting attempt.")},t.src=n)},t.isCanvasElemSupported=h},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a="undefined"!=typeof window?window:null,i=a.document,s={},l={};(r=function(e,t,n,o,a,i,s){var l={svg:"",context:"",callBack:"",imageArr:[],canvas:"",dimention:{}};if(!(this instanceof r))throw new Error("This function should be used as class");this._getStore=function(e){return"undefined"!=typeof l[e]&&l[e]},this._setStore=function(e,t){"undefined"!=typeof l[e]&&(l[e]=t)},this._setStore("dimention",{x:n,y:o,width:a,height:i}),e&&this.setSVG(e),t&&this.setContext(t),s&&this.setCallback(s),this.drawOnCanvas()}).prototype.setContext=function(e){var t;if(!e.getContext||!e.getContext("2d"))throw new Error("Please provide valid canvas");t=e.getContext("2d"),this._setStore("canvas",e),this._setStore("context",t)},r.prototype.getContext=function(){return this._getStore("context")},r.prototype.setSVG=function(e){var t;if("undefined"!=typeof e.documentElement)t=e,this._setStore("svg",t);else{if("<"!==e.substr(0,1))throw new Error("Please provide valid SVG");t=l.StrToDom(e),this._setStore("svg",t)}},r.prototype.getSVG=function(){return this._getStore("svg")},r.prototype.setCallback=function(e){"function"==typeof e&&this._setStore("callBack",e)},r.prototype.getCallback=function(){return this._getStore("callBack")},r.prototype.drawOnCanvas=function(e,t,n,r,o,a,i){var s,c,u,d,f,h,p,g;e&&this.setSVG(e),t&&this.setContext(t),i&&this.setCallback(i),t=t||this._getStore("canvas"),p=this._getStore("dimention"),i=this.getCallback(),s=this.getContext(),(c=this.getSVG())&&s&&(u=(g=l.getSvgDimention(c)).width,d=g.height,n=n||p.x||0,r=r||p.y||0,o=o||p.width||u,a=a||p.height||d,f=g.width?o/u:1,h=g.height?a/d:1,l.startTransform("translate("+n+","+r+") scale("+f+","+h+")",s),s.save(),s.fillStyle="#ffffff",s.fillRect(0,0,o,a),s.restore(),l.storeImagesInArr(this),l.drawNodes([c],[],this,s,function(){"function"==typeof i&&i(),l.resetTransform(s)}))},s.common=function(e,t,n,r,a){var i,c,u,d,f=e.childNodes,h=function(){e.attributes&&r.restore(),a&&a()};for(c in t)t.hasOwnProperty(c)&&"class"!==t[c].name&&"id"!==t[c].name&&"transform"!==t[c].name&&"clip-path"!==t[c].name&&"object"===o(t[c])&&e.attributes&&!e.attributes[t[c].name]&&e.setAttribute([t[c].name],t[c].value);if(e.attributes&&e.attributes.style)for(c in u=e.attributes.style.value.replace(/;$/,"").split(";"))if(u.hasOwnProperty(c)&&(d=u[c].split(":")[0].trim(),!e.attributes[d]||"undefined"===e.attributes[d].value))try{e.setAttribute(d,u[c].split(":")[1].trim())}catch(p){}e.attributes&&(r.save(),e.attributes.transform&&l.startTransform(e.attributes.transform.value,r),e.attributes["clip-path"]&&l.applyClip(e.attributes["clip-path"].value,r,n)),0===f.length||1===f.length&&!f[0].tagName?"undefined"!=typeof e.tagName?(i="draw"+e.tagName,s[i]?e.attributes.display&&"none"===e.attributes.display.value?h():s[i](e,r,n,"draw",h):h()):h():l.drawNodes(f,"svg"===e.tagName?[]:e.attributes,n,r,h)},s.drawtext=function(e,t,n,r,o){this.drawtspan(e,t,n,r,o)},s.drawtspan=function(e,t,n,r,o){var s,c,u,d,f,h=e.innerHTML||e.textContent,p=e.attributes.x?e.attributes.x.value:0,g=e.attributes.y?e.attributes.y.value:0,m=e.attributes.dx?e.attributes.dx.value:0,v=e.attributes.dy?e.attributes.dy.value:0,y="serief",b="normal",x="16px",w=[];i.getElementsByTagName("body")[0]&&((s=a.getComputedStyle(i.getElementsByTagName("body")[0],null)).getPropertyValue("font-family")&&(y=s.getPropertyValue("font-family")),s.getPropertyValue("font-weight")&&(b=s.getPropertyValue("font-weight")),s.getPropertyValue("font-size")&&(x=s.getPropertyValue("font-size"))),c=e.attributes["font-family"]?e.attributes["font-family"].value:y,u=e.attributes["font-weight"]?e.attributes["font-weight"].value:b,d=e.attributes["text-anchor"]?e.attributes["text-anchor"].value:"start",f=e.attributes["font-size"]?e.attributes["font-size"].value:x,p=Number(p)+Number(m),g=Number(g)+Number(v),h=h.trim(),d="middle"===d?"center":d,t.save(),t.font=u+" "+f+" "+c,t.textAlign=d,"draw"===r&&((!e.attributes.fill||e.attributes.fill&&"none"!==e.attributes.fill.value)&&(l.applyFillEffect(e,t,n,w),t.fillText(h,p,g),l.endFillEffect(e,t)),(!e.attributes.stroke||e.attributes.stroke&&"none"!==e.attributes.stroke.value)&&(l.applyStrokeEffect(e,t,n,w),t.strokeText(h,p,g),l.endStrokeEffect(e,t))),t.restore(),"function"==typeof o&&o()},s.drawcircle=function(e,t,n,r,o){var a=Number(e.attributes.cx.value),i=Number(e.attributes.cy.value),s=Number(e.attributes.r.value),c=[];t.beginPath(),t.arc(a,i,s,0,2*Math.PI),l.bBoxFromPoint([a,1*a+1*s,1*a-1*s],[i,1*i+1*s,1*i-1*s],c),"draw"===r&&((!e.attributes.fill||e.attributes.fill&&"none"!==e.attributes.fill.value)&&(l.applyFillEffect(e,t,n,c),t.fill(),l.endFillEffect(e,t)),(!e.attributes.stroke||e.attributes.stroke&&"none"!==e.attributes.stroke.value)&&(l.applyStrokeEffect(e,t,n,c),t.stroke(),l.endStrokeEffect(e,t))),t.closePath(),"function"==typeof o&&o()},s.drawrect=function(e,t,n,r,o){var a=Number(e.attributes.x.value),i=Number(e.attributes.y.value),s=e.attributes.rx?Number(e.attributes.rx.value):0,c=e.attributes.ry?Number(e.attributes.ry.value):0,u=Number(e.attributes.height.value),d=Number(e.attributes.width.value),f=[],h=t.lineCap;t.lineCap="square",l.bBoxFromPoint([a,a+d],[i,i+u],f),t.beginPath(),t.moveTo(a+s,i),t.lineTo(a+d-s,i),t.quadraticCurveTo(a+d,i,a+d,i+c),t.lineTo(a+d,i+u-c),t.quadraticCurveTo(a+d,i+u,a+d-s,i+u),t.lineTo(a+s,i+u),t.quadraticCurveTo(a,i+u,a,i+u-c),t.lineTo(a,i+c),t.quadraticCurveTo(a,i,a+s,i),"draw"===r&&((!e.attributes.fill||e.attributes.fill&&"none"!==e.attributes.fill.value)&&(l.applyFillEffect(e,t,n,f),t.fill(),l.endFillEffect(e,t)),(!e.attributes.stroke||e.attributes.stroke&&"none"!==e.attributes.stroke.value)&&(l.applyStrokeEffect(e,t,n,f),t.stroke(),l.endStrokeEffect(e,t))),t.closePath(),t.lineCap=h,"function"==typeof o&&o()},s.drawellipse=function(e,t,n,r,o){var a=Number(e.attributes.cx.value),i=Number(e.attributes.cy.value),s=Number(e.attributes.rx.value),c=Number(e.attributes.ry.value),u=.5522848*s,d=.5522848*c,f=a+s,h=i+c,p=[];t.beginPath(),t.moveTo(a-s,i),t.bezierCurveTo(a-s,i-d,a-u,i-c,a,i-c),t.bezierCurveTo(a+u,i-c,f,i-d,f,i),t.bezierCurveTo(f,i+d,a+u,h,a,h),t.bezierCurveTo(a-u,h,a-s,i+d,a-s,i),l.bBoxFromPoint([a+s,a-s],[i+c,i-c],p),"draw"===r&&((!e.attributes.fill||e.attributes.fill&&"none"!==e.attributes.fill.value)&&(l.applyFillEffect(e,t,n,p),t.fill(),l.endFillEffect(e,t)),(!e.attributes.stroke||e.attributes.stroke&&"none"!==e.attributes.stroke.value)&&(l.applyStrokeEffect(e,t,n,p),t.stroke(),l.endStrokeEffect(e,t))),t.closePath(),"function"==typeof o&&o()},s.drawimage=function(e,t,n,r,o){var a,i=e.attributes.x?Number(e.attributes.x.value):0,s=e.attributes.y?Number(e.attributes.y.value):0,l=e.attributes.height?Number(e.attributes.height.value):0,c=e.attributes.width?Number(e.attributes.width.value):0,u=n._getStore("imageArr");t.save(),e.attributes.opacity&&(t.globalAlpha=e.attributes.opacity.value),e.attributes["xlink:href"]?(a=e.attributes["xlink:href"].value,"complete"===u[a].status?(t.drawImage(u[a].obj,i,s,c,l),t.globalAlpha=1,t.restore(),"function"==typeof o&&o()):"error"===u[a].status?(t.globalAlpha=1,t.restore(),"function"==typeof o&&o()):"progress"===u[a].status?(u[a].callback=function(){t.drawImage(u[a].obj,i,s,c,l),t.globalAlpha=1,t.restore(),"function"==typeof o&&o()},u[a].errCallback=function(){t.globalAlpha=1,t.restore(),"function"==typeof o&&o()}):(t.globalAlpha=1,t.restore(),"function"==typeof o&&o())):(t.globalAlpha=1,t.restore(),"function"==typeof o&&o())},s.drawpath=function(e,t,n,r,o){var a,i,s,c,u=e.attributes.d.value.match(/[a-z][^a-z"]*/gi),d=[],f=0,h=0,p={};for(a in t.beginPath(),u)if(u.hasOwnProperty(a))switch(i=u[a].substring(0,1),s=l.getArgsAsArray(u[a].substring(1,u[a].length)),i){case"M":f=Number(s[0]),h=Number(s[1]),t.moveTo(f,h),p.cx=f,p.cy=h;break;case"m":f+=Number(s[0]),h+=Number(s[1]),t.moveTo(f,h),p.cx=f,p.cy=h;break;case"L":for(c=0;s[c];c+=2)l.bBoxFromPoint([f,s[c]],[h,s[c+1]],d),f=Number(s[c]),h=Number(s[c+1]),t.lineTo(f,h);break;case"l":for(c=0;s[c];c+=2)l.bBoxFromPoint([f,1*f+1*s[c]],[h,1*h+1*s[c+1]],d),f+=Number(s[c]),h+=Number(s[c+1]),t.lineTo(f,h);break;case"V":for(c=0;s[c];c+=1)l.bBoxFromPoint([f],[h,s[c]],d),h=Number(s[c]),t.lineTo(f,h);break;case"v":for(c=0;s[c];c+=1)l.bBoxFromPoint([f],[h,1*h+1*s[c]],d),h+=Number(s[c]),t.lineTo(f,h);break;case"H":for(c=0;s[c];c+=1)l.bBoxFromPoint([f,s[c]],[h],d),f=Number(s[c]),t.lineTo(f,h);break;case"h":for(c=0;s[c];c+=1)l.bBoxFromPoint([f,1*f+1*s[c]],[h],d),f+=Number(s[c]),t.lineTo(f,h);break;case"Q":for(c=0;s[c];c+=4)l.qBezierBBox(f,h,s[c],s[c+1],s[c+2],s[c+3],d),t.quadraticCurveTo(Number(s[c]),Number(s[c+1]),Number(s[c+2]),Number(s[c+3])),f=Number(s[c+2]),h=Number(s[c+3]);break;case"q":for(c=0;s[c];c+=4)l.qBezierBBox(f,h,f+1*s[c],h+1*s[c+1],1*f+1*s[c+2],1*h+1*s[c+3],d),t.quadraticCurveTo(f+1*s[c],h+1*s[c+1],f+=Number(s[c+2]),h+=Number(s[c+3]));break;case"C":for(c=0;s[c];c+=6)l.cBezierBBox(f,h,s[c],s[c+1],s[c+2],s[c+3],s[c+4],s[c+5],d),t.bezierCurveTo(s[c],s[c+1],s[c+2],s[c+3],s[c+4],s[c+5]),f=Number(s[c+4]),h=Number(s[c+5]);break;case"c":for(c=0;s[c];c+=6)l.cBezierBBox(f,h,f+1*s[c],1*h+1*s[c+1],f+1*s[c+2],1*h+1*s[c+3],f+1*s[c+4],1*h+1*s[c+5],d),t.bezierCurveTo(f+Number(s[c]),h+Number(s[c+1]),f+Number(s[c+2]),h+Number(s[c+3]),f+=Number(s[c+4]),h+=Number(s[c+5]));break;case"a":case"A":for(c=0;s[c];c+=7){var g,m,v,y,b,x,w,C,_,E,k,S,A,T,M,O,L,I,F=Number(s[c]),N=Number(s[c+1]);if(g=Number(s[c+2])*(Math.PI/180),m=Number(s[c+3]),v=Number(s[c+4]),y=Number(s[c+5]),b=Number(s[c+6]),x=Math.cos(g)*(f-y)/2+Math.sin(g)*(h-b)/2,w=-Math.sin(g)*(f-y)/2+Math.cos(g)*(h-b)/2,F=F<0?-F:F,N=N<0?-N:N,(M=Math.pow(x,2)/Math.pow(F,2)+Math.pow(w,2)/Math.pow(N,2))>1&&(F*=Math.sqrt(M),N*=Math.sqrt(M)),O=F>N?F:N,L=F>N?1:F/N,I=F>N?N/F:1,C=(m===v?-1:1)*Math.sqrt((Math.pow(F,2)*Math.pow(N,2)-Math.pow(F,2)*Math.pow(w,2)-Math.pow(N,2)*Math.pow(x,2))/(Math.pow(F,2)*Math.pow(w,2)+Math.pow(N,2)*Math.pow(x,2))),isNaN(C)&&(C=0),E=N*x*-C/F,k=(_=C*(F*w)/N)*Math.cos(g)-E*Math.sin(g)+(f+y)/2,S=_*Math.sin(g)+E*Math.cos(g)+(h+b)/2,A=l.angleBetweenVectors(1,0,(x-_)/F,(w-E)/N),T=l.angleBetweenVectors((x-_)/F,(w-E)/N,(-x-_)/F,(-w-E)/N),0===v&&T>0&&(T-=Math.PI/180*360),1===v&&T<0&&(T+=Math.PI/180*360),0===F&&0===N){t.lineTo(y,b);break}t.save();var D=l.combineTransformMatrix([[1,0,k,0,1,S],[Math.cos(g),Math.sin(g),0,Math.sin(g),Math.cos(g),0],[L,0,0,0,I,0]]);t.transform(D[0],D[3],D[1],D[4],D[2],D[5]),t.arc(0,0,O,A,A+T,1-v),t.restore(),l.arcBBox(0,0,O,A,A+T,1-v,[D[0],D[3],D[1],D[4],D[2],D[5]],d),"A"===i?(f=Number(s[c+5]),h=Number(s[c+6])):(f+=Number(s[c+5]),h+=Number(s[c+6]))}break;case"Z":case"z":t.closePath(),f=p.cx,h=p.cy}"draw"===r&&((!e.attributes.fill||e.attributes.fill&&"none"!==e.attributes.fill.value)&&(l.applyFillEffect(e,t,n,d),t.fill(),l.endFillEffect(e,t)),(!e.attributes.stroke||e.attributes.stroke&&"none"!==e.attributes.stroke.value)&&(l.applyStrokeEffect(e,t,n,d),t.stroke(),l.endStrokeEffect(e,t)),o())},l.drawNodes=function(e,t,n,r,o){var a=e.length,i=-1,l=0,c=0;!function u(){var d;(i+=1)<a?((d=e[i]).tagName&&"defs"===d.tagName&&(d=e[i+=1]),d.attributes&&(d.attributes.dy&&(c=d.attributes.dy.value=1*d.attributes.dy.value+1*c),d.attributes.dx&&(l=d.attributes.dx.value=1*d.attributes.dx.value+1*l)),s.common(d,t,n,r,u)):o&&o()}()},l.getSvgDimention=function(e){var t,n={width:0,height:0};return t=e.childNodes&&e.childNodes[0]&&e.childNodes[0].attributes,n.width=Number(t.width&&t.width.value||0),n.height=Number(t.height&&t.height.value||0),n},l.storeImagesInArr=function(e){var t,n,r,o,a=e.getSVG();for(o in r=e._getStore("imageArr"),t=a.getElementsByTagName("image"))t.hasOwnProperty(o)&&t[o].attributes&&t[o].attributes["xlink:href"]&&(n=t[o].attributes["xlink:href"].value,r[n]||(r[n]=[],r[n].status="progress",r[n].callback=null,r[n].obj=new Image,r[n].obj.onload=function(e){return function(){var t=r[e].callback;t?(r[e].status="complete",t()):r[e].status="complete"}}(n),r[n].obj.onerror=function(e){return function(){var t=r[e].errCallback;t?(r[e].status="error",t()):r[e].status="error"}}(n),r[n].obj.src=n))},l.startTransform=function(e,t){var n,r,o=e.match(/[^\s][a-z,0-9.\-(\s]+\)/gi);for(r in o)o.hasOwnProperty(r)&&(o[r].indexOf("matrix")>-1&&(n=l.stringToArgs(o[r]),t.transform(n[0],n[1],n[2],n[3],n[4],n[5])),o[r].indexOf("translate")>-1&&(n=l.stringToArgs(o[r]),t.translate(n[0]||0,n[1]||0)),o[r].indexOf("rotate")>-1&&(3===(n=l.stringToArgs(o[r])).length?(t.translate(n[1],n[2]),t.rotate(n[0]*(Math.PI/180)),t.translate(-n[1],-n[2])):t.rotate(n[0]*(Math.PI/180))),o[r].indexOf("scale")>-1&&(1===(n=l.stringToArgs(o[r])).length?t.scale(n[0]||1,n[0]||1):t.scale(n[0]||1,n[1]||1)),o[r].indexOf("skewX")>-1&&(n=l.stringToArgs(o[r]),t.transform(1,0,Math.tan(n[0]*(Math.PI/180)),1,0,0)),o[r].indexOf("skewY")>-1&&(n=l.stringToArgs(o[r]),t.transform(1,Math.tan(n[0]*(Math.PI/180)),0,1,0,0)))},l.resetTransform=function(e){e.setTransform(1,0,0,1,0,0)},l.stringToArgs=function(e){var t=/\(([^)]+)/.exec(e)[1];return l.getArgsAsArray(t)},l.getArgsAsArray=function(e){var t;for(e=e.trim().split(/[\s,]+/),t=0;t<e.length;t++)e[t].trim(),0===e[t].length&&e.splice(t,1);return e},l.applyFillEffect=function(e,t,n,r){var o;e.attributes["fill-opacity"]&&"none"!==e.attributes["fill-opacity"].value?t.globalAlpha=e.attributes["fill-opacity"].value:t.globalAlpha=1,e.attributes.fill&&e.attributes.fill.value.indexOf("url(")>-1?(o=l.getFillStyleById(/url\(.*#([^)'"]+)/.exec(e.attributes.fill.value)[1],t,n,r),t.fillStyle=o):e.attributes.fill?t.fillStyle=e.attributes.fill.value:t.fillStyle="#000000"},l.endFillEffect=function(e,t){t.globalAlpha=1},l.applyStrokeEffect=function(e,t,n,r){e.attributes["stroke-opacity"]&&"none"!==e.attributes["stroke-opacity"].value&&(t.globalAlpha=e.attributes["stroke-opacity"].value),e.attributes["stroke-width"]&&(t.lineWidth=e.attributes["stroke-width"].value,"0"===e.attributes["stroke-width"].value&&(t.globalAlpha=0)),e.attributes["stroke-linecap"]&&"none"!==e.attributes["stroke-linecap"].value&&(t.lineCap=e.attributes["stroke-linecap"].value),e.attributes["stroke-linejoin"]&&"none"!==e.attributes["stroke-linejoin"].value&&(t.lineJoin=e.attributes["stroke-linejoin"].value),e.attributes["stroke-dasharray"]&&"none"!==e.attributes["stroke-dasharray"].value&&t.setLineDash&&t.setLineDash(l.getArgsAsArray(e.attributes["stroke-dasharray"].value)),e.attributes.stroke?t.strokeStyle=e.attributes.stroke.value:t.strokeStyle="#000000"},l.endStrokeEffect=function(e,t){e.attributes["stroke-opacity"]&&"none"!==e.attributes["stroke-opacity"].value&&(t.globalAlpha=1,t.setLineDash&&t.setLineDash([]),t.lineWidth=1),t.globalAlpha=1},l.applyClip=function(e,t,n){var r,o,a,i,c,u=n.getSVG();if(-1!==e.indexOf("url(")){for(i in r=/url\(.*#([^)'"]+)/.exec(e)[1],(o=u.getElementById(r)).attributes&&(t.save(),o.attributes.transform&&l.startTransform(o.attributes.transform.value,t)),a=o.childNodes)a.hasOwnProperty(i)&&a[i].tagName&&a[i].constructor!==Array&&(c="draw"+a[i].tagName,a[i].attributes&&(t.save(),a[i].attributes.transform&&l.startTransform(a[i].attributes.transform.value,t)),s[c]&&(s[c](a[i],t,n,"clip"),t.closePath()),a[i].attributes&&t.restore());o.attributes&&t.restore(),t.clip()}},l.getFillStyleById=function(e,t,n,r){var o=n.getSVG().getElementById(e);return"linearGradient"===o.tagName?l.getLinearGradient(o,t,r):"radialGradient"===o.tagName?l.getRadialGradient(o,t,r):"#FFFFFF"},l.getLinearGradient=function(e,t,n){var r,o,a,i,s,c=e.attributes.x1?l.getPercentValue(e.attributes.x1.value,n.xMax-n.xMin,n.xMin):0,u=e.attributes.y1?l.getPercentValue(e.attributes.y1.value,n.yMax-n.yMin,n.yMin):0,d=e.attributes.x2?l.getPercentValue(e.attributes.x2.value,n.xMax-n.xMin,n.xMin):0,f=e.attributes.y2?l.getPercentValue(e.attributes.y2.value,n.yMax-n.yMin,n.yMin):0;for(a in r=t.createLinearGradient(c,u,d,f),o=e.childNodes)o.hasOwnProperty(a)&&o[a].attributes&&o[a].attributes["stop-color"]&&(i=l.toRGB(o[a].attributes["stop-color"].value),s=o[a].attributes["stop-opacity"]?o[a].attributes["stop-opacity"].value:1,i.status?r.addColorStop(l.getPercentValue(o[a].attributes.offset.value,1,0),"rgba("+i.r+","+i.g+","+i.b+","+Number(s)+")"):r.addColorStop(l.getPercentValue(o[a].attributes.offset.value,1,0),o[a].attributes["stop-color"].value));return r},l.getRadialGradient=function(e,t,n){var r,o,a,i,s,c=e.attributes.cx?l.getPercentValue(e.attributes.cx.value,n.xMax-n.xMin,n.xMin):n.xMin+.5*(n.xMax-n.xMin),u=e.attributes.cy?l.getPercentValue(e.attributes.cy.value,n.yMax-n.yMin,n.yMin):n.yMin+.5*(n.yMax-n.yMin),d=e.attributes.fx?l.getPercentValue(e.attributes.fx.value,n.xMax-n.xMin,n.xMin):n.xMin+.5*(n.xMax-n.xMin),f=e.attributes.fy?l.getPercentValue(e.attributes.fy.value,n.yMax-n.yMin,n.yMin):n.yMin+.5*(n.yMax-n.yMin),h=e.attributes.r?l.getPercentValue(e.attributes.r.value,(n.yMax-n.yMin+n.xMax-n.xMin)/2,0):l.getPercentValue("50%",(n.yMax-n.yMin+n.xMax-n.xMin)/2,0);for(a in r=t.createRadialGradient(d,f,0,c,u,h),o=e.childNodes)o.hasOwnProperty(a)&&o[a].attributes&&o[a].attributes["stop-color"]&&(i=l.toRGB(o[a].attributes["stop-color"].value),s=o[a].attributes["stop-opacity"]?o[a].attributes["stop-opacity"].value:1,i.status?r.addColorStop(l.getPercentValue(o[a].attributes.offset.value,1,0),"rgba("+i.r+","+i.g+","+i.b+","+Number(s)+")"):r.addColorStop(l.getPercentValue(o[a].attributes.offset.value,1,0),o[a].attributes["stop-color"].value));return r},l.getPercentValue=function(e,t,n){var r;return-1!==e.indexOf("%")?((r=/(\d.*)%/.exec(e)[1])>100&&(r=100),r*t/100+1*n):e>1?e:e*t+1*n},l.bBoxFromPoint=function(e,t,n){"undefined"!=typeof n.xMin&&(e.push(n.xMin,n.xMax),t.push(n.yMin,n.yMax)),n.xMin=Math.min.apply(this,e),n.xMax=Math.max.apply(this,e),n.yMin=Math.min.apply(this,t),n.yMax=Math.max.apply(this,t)},l.arcBBox=function(e,t,n,r,o,a,i,s){var l,c,u,d,f,h,p,g,m,v,y;i instanceof Array&&(e=e*i[0]+e*i[2]+i[4],t=t*i[1]+t*i[3]+i[5]),y=function(e,t,n){return(e=(e+2*Math.PI)%(2*Math.PI))<=(t=(t+2*Math.PI)%(2*Math.PI))?e<=n&&n<=t:e>=t?!(e>=n&&n>=t):void 0},l=r%(2*Math.PI),c=o%(2*Math.PI),a&&(l=o%(2*Math.PI),c=r%(2*Math.PI)),u=e+n*Math.cos(l),d=t+n*Math.sin(l),m=[u,e+n*Math.cos(c)],v=[d,t+n*Math.sin(c)],y(l,c,0)&&(m.push(1*e+1*n),v.push(t)),y(l,c,.5*Math.PI)&&(m.push(e),v.push(1*t+1*n)),y(l,c,Math.PI)&&(m.push(e-1*n),v.push(t)),y(l,c,1.5*Math.PI)&&(m.push(e),v.push(t-1*n)),p=Math.max.apply(this,m),f=Math.min.apply(this,m),g=Math.max.apply(this,v),h=Math.min.apply(this,v),"undefined"!=typeof s.xMin?(s.xMin=Math.min(f,s.xMin),s.xMax=Math.max(p,s.xMax),s.yMin=Math.min(h,s.yMin),s.yMax=Math.max(g,s.yMax)):(s.xMin=f,s.xMax=p,s.yMin=h,s.yMax=g)},l.qBezierBBox=function(e,t,n,r,o,a,i){var s,l,c,u,d,f,h,p,g=1*e-2*n+1*o,m=1*t-2*r+1*a;0===g||0===m?(d=Math.max(e,o),c=Math.min(e,o),f=Math.max(t,a),u=Math.min(t,a)):(s=(e-n)/g,l=(t-r)/m,h=e*Math.pow(1-s,2)+2*n*(1-s)*s+o*Math.pow(s,2),p=t*Math.pow(1-l,2)+2*r*(1-l)*l+a*Math.pow(l,2),d=Math.max(e,o,h),c=Math.min(e,o,h),f=Math.max(t,a,p),u=Math.min(t,a,p)),"undefined"!=typeof i.xMin?(i.xMin=Math.min(c,i.xMin),i.xMax=Math.max(d,i.xMax),i.yMin=Math.min(u,i.yMin),i.yMax=Math.max(f,i.yMax)):(i.xMin=c,i.xMax=d,i.yMin=u,i.yMax=f)},l.cBezierBBox=function(e,t,n,r,o,a,i,s,l){var c,u,d,f,h,p,g,m,v,y,b,x,w;null===o&&null===a&&(o=t+2/3*(r-t),r=(n=e+2/3*(n-e))+1/3*(i-e),a=o+1/3*(s-t)),b=function(e,t,n,r,o){return e*Math.pow(1-o,3)+3*t*o*Math.pow(1-o,2)+3*n*o*o*(1-o)+r*o*o*o},h=3*i-9*o+9*n-3*e,p=6*e-12*n+6*o,g=3*n-3*e,m=Math.pow(p,2)-4*h*g,u=e,i<(c=e)&&(c=i),i>u&&(u=i),m>=0&&((v=(-p+Math.sqrt(m))/(2*h))>0&&v<1&&((x=b(e,n,o,i,v))<c&&(c=x),x>u&&(u=x)),(y=(-p-Math.sqrt(m))/(2*h))>0&&y<1&&((x=b(e,n,o,i,y))<c&&(c=x),x>u&&(u=x))),h=3*s-9*a+9*r-3*t,p=6*t-12*r+6*a,g=3*r-3*t,m=Math.pow(p,2)-4*h*g,f=t,s<(d=t)&&(d=s),s>f&&(f=s),m>=0&&((v=(-p+Math.sqrt(m))/(2*h))>0&&v<1&&((w=b(t,r,a,s,v))<d&&(d=w),w>f&&(f=w)),(y=(-p-Math.sqrt(m))/(2*h))>0&&y<1&&((w=b(t,r,a,s,y))<d&&(d=w),w>f&&(f=w))),"undefined"!=typeof l.xMin?(l.xMin=Math.min(c,l.xMin),l.xMax=Math.max(u,l.xMax),l.yMin=Math.min(d,l.yMin),l.yMax=Math.max(f,l.yMax)):(l.xMin=c,l.xMax=u,l.yMin=d,l.yMax=f)},l.combineTransformMatrix=function(e){var t,n,r=e.length-1;if(r<=0)return e[0];for(n=e[0],t=1;t<=r;t++)n[0]=n[0]*e[t][0]+n[1]*e[t][3],n[1]=n[0]*e[t][1]+n[1]*e[t][4],n[2]=n[0]*e[t][2]+n[1]*e[t][5]+1*n[2],n[3]=n[3]*e[t][0]+n[4]*e[t][3],n[4]=n[3]*e[t][1]+n[4]*e[t][4],n[5]=n[3]*e[t][2]+n[4]*e[t][5]+1*n[5];return n},l.angleBetweenVectors=function(e,t,n,r){var o=e*r<t*n?-1:1,a=e*n+t*r,i=Math.sqrt(Math.pow(e,2)+Math.pow(t,2)),s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2));return o*Math.acos(a/(i*s))},l.toRGB=function(e){var t,n,r,o={r:0,g:0,b:0,status:0};return n=function(e){for(r in e)e.hasOwnProperty(r)&&(e[r]<0||isNaN(e[r])?e[r]=0:e[r]>255&&(e[r]=255));return o={r:e[0],g:e[1],b:e[2],status:1}},(e=e.trim()).match(/^rgb\(|^rgba\(/i)?(t=/\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})/.exec(e),n([parseInt(t[1]),parseInt(t[2]),parseInt(t[3])])):e.match(/^#/)&&(t=/(\w{2})(\w{2})(\w{2})/.exec(e),n([parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)])),o},l.StrToDom=function(e){var t;return a.DOMParser?t=(new DOMParser).parseFromString(e,"text/xml"):((t=new a.ActiveXObject("Microsoft.XMLDOM")).async=!1,t.loadXML(e)),t},t["default"]=r},function(e,t,n){"use strict";t.__esModule=!0;var r=[],o=0,a=void 0,i=void 0,s=void 0,l=500,c=500;function u(e){o+=e.length+1,r.push(e)}t.JpegToPdf=function(e,t){a=e||l,i=t||c},t.addImage=function(e){var t=/base64,(.+?)$/g.exec(e);s=atob(t[1])},t.getDataUrl=function(){return"data:application/pdf;base64,"+btoa(function(){var e,t,n=[];for(u("%PDF-1.7"),n[1]=o,u("1 0 obj"),u("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),u("endobj"),n[4]=o,u("4 0 obj"),u("<< /Length 36>>"),u("stream"),u("q "+i+" 0 0 "+a+" 0 0 cm /Im3 Do Q"),u("endstream"),u("endobj"),n[5]=o,u("5 0 obj"),u("<</Type /Page /Parent 2 0 R /MediaBox [0 0 "+i+" "+a+"] /Contents [4 0 R ] /Resources <</ProcSet 1 0 R /Font <<>> /XObject <</Im3 3 0 R >> >> >>"),u("endobj"),n[3]=o,u("3 0 obj"),u("<</Type /XObject /Subtype /Image /Width "+i+" /Height "+a+" /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length "+s.length+">>"),u("stream"),u(s),u("endstream"),u("endobj"),n[2]=o,u("2 0 obj"),u("<</Type /Pages /Kids [5 0 R ] /Count 1>>"),u("endobj"),n[6]=o,u("6 0 obj"),u("<</Type /Catalog /Pages 2 0 R >>"),u("endobj"),e=o,u("xref"),u("0 7"),u("0000000000 65535 f "),t=1;t<=6;t++)u(("0000000000"+n[t]).slice(-10)+" 00000 n ");return u("trailer"),u("<</Size 7 /Root 6 0 R >>"),u("startxref"),u(e),u("%%EOF"),r.join("\n")}())}},function(e,t,n){"use strict";t.__esModule=!0,t.svgStrToDataUrl=t.logCharts=t.extractNonDataImageFromSVG=t.parseUrl=t.extractNonDataURLFromSVG=t.removeImagesWithNonDataURL=t.hasUndownloadableImage=t.replaceImagesWithNonDataUrl=t.embedImagesWithNonDataURL=t.makeImageUrlsAbsolute=t.isCacheAllImagesCompleted=t.getImageCachedDetails=t.cacheAllImages=t.objCacheFunctions=t.createExportActionOldString=t.LOGMODE=t.EXPORTFORMAT=t.EXPORTMODE=t.EXPORTACTION=undefined;var r,o=n(235),a=n(166),i=(r=a)&&r.__esModule?r:{"default":r};var s,l=function(e){var t,n,r,o,a,i;t=/(<image [^\>]*href=["']([^\>'"]*)["'][^\>]*\>)/g,n=/^\s*data:([a-z]+\/[a-z]+(;[a-z\-]+\=[a-z\-]+)?)?(;base64)?,[a-z0-9\!\$\&\'\,\(\)\*\+\,\;\=\-\.\_\~\:\@\/\?\%\s]*\s*$/i,r=[];do{null!==(o=t.exec(e))&&(a=o[1],i=o[2],n.test(i)||r.push(a))}while(o&&null!==o);return r},c=function(e){var t,n=void 0,r=void 0;for(t=l(e),n=0;n<t.length;n++)r=t[n],e=e.replace(r,"");return e},u=function(e,t){var n,r,o,a,i;t=t===undefined||t,n=/<image [^\>]*href=["']([^\>'"]*)["'][^\>]*\>/g,r=/^\s*data:([a-z]+\/[a-z]+(;[a-z\-]+\=[a-z\-]+)?)?(;base64)?,[a-z0-9\!\$\&\'\,\(\)\*\+\,\;\=\-\.\_\~\:\@\/\?\%\s]*\s*$/i,o=[];do{if(null!==(a=n.exec(e))){if(i=a[1],r.test(i))continue;t&&(i=d(i).href),o.push(i)}}while(a&&null!==a);return o},d=function(e){var t=document.createElement("div");return t.innerHTML="<a></a>",t.firstChild.href=e,t.innerHTML=t.innerHTML,t.firstChild},f={DOWNLOAD:"download",SAVE:"save",DOWNLOADSAVE:"download-save"},h={CLIENT:"client",SERVER:"server",AUTO:"auto"},p=(s=void 0,(s={}).cacheCompleted=!1,{cacheAllImages:function(e,t,n){var r,a,i,l;if(t=t||!1,r=u(e),a=r.length,(0,o.isCanvasElemSupported)()&&!t&&a)for(i=0,l=0;l<a;l++)!function(){var e,t;(e=r[l])in s?a===++i&&(s.cacheCompleted=!0,n()):((t=new Image).crossOrigin="",t.onload=function(){var r,o;(r=document.createElement("canvas")).width=t.width,r.height=t.height,r.getContext("2d").drawImage(this,0,0);try{o=r.toDataURL("image/png"),s[e]={loaded:!0,notCORS:!0,imageUri:o}}catch(l){s[e]={loaded:!0,notCORS:!1}}finally{a===++i&&(s.cacheCompleted=!0,n())}},t.onerror=function(){s[e]={loaded:!1},a===++i&&(s.cacheCompleted=!0,n())},t.src=e)}();else n()},getImageCachedDetails:function(e){return s[e]},isCacheAllImagesCompleted:function(){return s.cacheCompleted}}),g=p.cacheAllImages,m=p.getImageCachedDetails,v=p.isCacheAllImagesCompleted,y=function(e){return e=e.replace(/<image [^\>]*\>/gi,function(e){return e=e.replace(/(:href=")([^"]*)(")/gi,function(e,t,n,r){return t+d(n).href+r})})},b=function(e){var t,n=void 0,r=void 0,o=void 0;for(e=y(e),t=u(e),n=0;n<t.length;n++)r=t[n],(o=m(r))!==undefined&&o.loaded&&o.notCORS&&o.imageUri&&(e=e.replace(r,o.imageUri));return e};t.EXPORTACTION=f,t.EXPORTMODE={CLIENT:"client",SERVER:"server",AUTO:"auto"},t.EXPORTFORMAT={PNG:"png",SVG:"svg",JPEG:"jpeg",JPG:"jpg",PDF:"pdf",XLS:"xls"},t.LOGMODE=h,t.createExportActionOldString=function(e){return{download:f.DOWNLOAD,"download-save":f.DOWNLOAD,save:f.SAVE}[e]},t.objCacheFunctions=p,t.cacheAllImages=g,t.getImageCachedDetails=m,t.isCacheAllImagesCompleted=v,t.makeImageUrlsAbsolute=y,t.embedImagesWithNonDataURL=b,t.replaceImagesWithNonDataUrl=function(e){return e=b(e),e=c(e)},t.hasUndownloadableImage=function(e){return(e=b(e))!==c(e)},t.removeImagesWithNonDataURL=c,t.extractNonDataURLFromSVG=u,t.parseUrl=d,t.extractNonDataImageFromSVG=l,t.logCharts=function(e,t){t.logEnabled&&t.logMode!==h.SERVER&&function(e,t){var n=new i["default"](function(){},function(){});for(var r in e)e.hasOwnProperty(r)&&(e[r]=encodeURIComponent(e[r]));n.post(t.logHandler,e)}(e,t)},t.svgStrToDataUrl=function(e){var t=function(e){return'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+e}(e);return t="data:image/svg+xml;base64,"+window.btoa(window.unescape(encodeURIComponent(t)))}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(235),o=n(237),a=n(118),i=n(238),s=n(124),l=window,c=void 0,u=Math.max,d=l.Image,f=l.navigator.userAgent.match(/ (iPad|iPhone|iPod)/g),h="IMAGE-DATA",p="https:"===l.location.protocol?"https://export.api3.fusioncharts.com/api/v1.0/logs":"http://export.api3.fusioncharts.com/api/v1.0/logs",g="https:"===l.location.protocol?"https://export.api3.fusioncharts.com/":"http://export.api3.fusioncharts.com/",m="",v=void 0;function y(){var e,t,n,y,b,x=arguments[0]||{},w=void 0,C=void 0,_=void 0,E=void 0,k=void 0,S=0,A=!1,T=void 0,M=void 0,O=void 0,L={exportTargetWindow:(0,a.pluck)(x.exportTargetWindow,f?"_blank":"_self"),exportAction:x.exportAction&&"string"==typeof x.exportAction?(n=x.exportAction.toLowerCase(),[i.EXPORTACTION.DOWNLOAD,i.EXPORTACTION.SAVE,i.EXPORTACTION.DOWNLOADSAVE].indexOf(n)>=0?n:i.EXPORTACTION.DOWNLOAD):i.EXPORTACTION.DOWNLOAD,exportFileName:(0,a.pluck)(x.exportFileName,"FusionCharts"),exportHandler:(0,a.pluck)(x.exportHandler,g),exportParameters:(0,a.pluck)(x.exportParameters,m),exportFormat:(0,a.pluck)(x.exportFormat,i.EXPORTFORMAT.PNG),exportCallback:(0,a.pluck)(x.exportCallback,m),exportAtClientSide:(0,a.pluckNumber)(x.exportAtClientSide,1),exportMode:("undefined"!=typeof x.exportAtClientSide&&(t={1:i.EXPORTMODE.AUTO,0:i.EXPORTMODE.SERVER}[x.exportAtClientSide]),t=(t=x.exportMode||t||i.EXPORTMODE.AUTO).toLowerCase()),logEnabled:(0,a.pluckNumber)(x.logEnabled,0),logMode:(e=x.logMode,void 0!==e&&"string"==typeof e&&e.toUpperCase()in i.LOGMODE?i.LOGMODE[e.toUpperCase()]:i.LOGMODE.AUTO),logHandler:(0,a.pluck)(x.logHandler,p)},I=L.exportFormat.toLowerCase(),F=0,N=0,D=void 0,P=l.document,R=v.items,j=function(e,t,n,r){var o=e,i=t;return isNaN(o)&&(o=(0,a.pluckNumber)(t,r)*(n/r)),isNaN(i)&&(i=(0,a.pluckNumber)(e,n)*(r/n)),{width:o,height:i}},V=function(e,t,n){var r,o,s,l;return n=n||L.exportAction,r=L.exportAction,o=(0,i.createExportActionOldString)(L.exportAction),s=["exportfilename="+L.exportFileName,"exportformat="+L.exportFormat,"exportaction="+o,"exportactionnew="+r,"configuredexportaction="+n,"exportparameters="+L].join("|"),l=!!L.logEnabled,L.logMode===i.LOGMODE.CLIENT&&(l=!1),{charttype:"combined",stream_type:e||"",stream:t||"",is_single_export:!1,is_full_version:!1,version:a.PROJECT_VERSION,user_time_zone:-(new Date).getTimezoneOffset(),log_enabled:l,parameters:s}},B=function(){return{chartType:"combined",isSingleExport:!1,isFullVersion:!1,exportAction:L.exportAction,userTimeZone:-(new Date).getTimezoneOffset(),exportFileName:[L.exportFileName,L.exportFormat].join("."),exportFormat:L.exportFormat,version:a.PROJECT_VERSION}},G=function(e){e===i.LOGMODE.CLIENT&&(0,i.logCharts)(B(),L)},H=function(e){var t,n,o;(0,s.triggerEvent)("beforeexport",c,c,c,function(){n="undefined"!=typeof l.btoa&&("Chrome"===r.browserDetails.name||"Firefox"===r.browserDetails.name||"Edge"===r.browserDetails.name||"ie"===r.browserDetails.name),L.exportMode===i.EXPORTMODE.CLIENT||L.exportMode===i.EXPORTMODE.AUTO&&n?(L.exportAction!==i.EXPORTACTION.DOWNLOAD&&L.exportAction!==i.EXPORTACTION.DOWNLOADSAVE||(t=L.exportMode===i.EXPORTMODE.AUTO?V(h,e):null,(0,r.downloadCharts)("url",e,L.exportFileName+"."+I,t,L),(0,s.triggerEvent)("exported",c,{fileName:L.exportFileName+"."+I})),L.exportAction===i.EXPORTACTION.SAVE||L.exportAction===i.EXPORTACTION.DOWNLOADSAVE?(o=L.exportAction,L.exportAction===i.EXPORTACTION.DOWNLOADSAVE&&(L.exportAction=i.EXPORTACTION.SAVE),t=V(h,e,o),L.paper={width:undefined,height:undefined},L.fusionCharts={},(0,r.downloadCharts)(null,null,null,t,L),delete L.paper,delete L.fusioncharts,G(L.logMode)):L.logMode!==i.LOGMODE.SERVER&&(0,i.logCharts)(B(),L)):(t=V(h,e),L.paper={width:undefined,height:undefined},L.fusionCharts={},(0,r.downloadCharts)(null,null,null,t,L),delete L.paper,delete L.fusioncharts,G(L.logMode))},function(){(0,s.triggerEvent)("exportcancelled")})},z=function(e,t){var n,a;(w=v.items[e]).jsVars.instanceAPI&&(k=(k=(k=(k=w.jsVars.instanceAPI.getFromEnv("paper").toSVG(!0)).replace(/NS\d+:/gi,"xlink:")).replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/gi,"$1M 0 0 L 0 0$2")).replace(/(xlink:title\s*=\s*)['"].*["']/gi,""),S+=1,n=k,a=v.options["export"].useCanvas,(0,i.cacheAllImages)(n,!1,function(){n=(0,i.replaceImagesWithNonDataUrl)(n),function(){(0,r.drawSvgOnCanvas)({svg:arguments[0],canvas:_,x:this.x,y:this.y,width:this.width,height:this.height,useCanvas:arguments[1]},function(){if(0==(S-=1)&&A)switch(I){case"png":H(_.toDataURL("image/png"));break;case"jpeg":H(_.toDataURL("image/jpeg"));break;case"pdf":(0,o.JpegToPdf)(F,N),(0,o.addImage)(_.toDataURL("image/jpeg")),H((0,o.getDataUrl)());break;default:H(_.toDataURL("image/png"))}})}.call(t||w,n,a)}))};if(y=L.exportMode,(b={})[i.EXPORTMODE.CLIENT]=1,b[i.EXPORTMODE.AUTO]=0,b[i.EXPORTMODE.SERVER]=0,L.exportatclientside=b[y],r.browserDetails.hasCanvas){for(function(){var e,t,n,r,o=x.charts;if(C=[],o)for(n in o)o.hasOwnProperty(n)&&(e=R[o[n].id])&&(t=o[n],r=j(Number(t.width),Number(t.height),e.width,e.height),C.push({id:e.id,width:r.width,height:r.height,x:t.x,y:t.y}));else for(n in R)R.hasOwnProperty(n)&&(e=R[n],C.push({id:e.id,width:e.width,height:e.height}))}(),D=0,T=C.length;D<T;D+=1)(O=C[D]).x=(0,a.pluckNumber)(O.x,5),O.y=(0,a.pluckNumber)(O.y,F+5),O.height=(0,a.pluckNumber)(O.height),O.width=(0,a.pluckNumber)(O.width),F=u(F,O.y+O.height),N=u(N,O.x+O.width);var $,X,U;F=x.imageHeight||F+5,N=x.imageWidth||N+5,$=function(){for(D=0,T=C.length;D<T;D+=1)O=C[D],D===T-1&&(A=!0),z(O.id,O)},U=x.background,(_=P.createElement("canvas")).id="newCanvas",_.width=N,_.height=F,_.style.border="1px solid black",(E=_.getContext("2d")).fillStyle=U&&U.bgColor||"#ffffff",E.fillRect(0,0,N,F),!U||!U.bgImage||(X=U.bgImage).match(/http:\/\/|https:\/\//)&&/(http:\/\/|https:\/\/)([^\/\:]*)/.exec(X)[2]&&l.location.hostname!==/(http:\/\/|https:\/\/)([^\/\:]*)/.exec(X)[2]?$():((M=new d).src=U.bgImage,M._userData=U,E.globalAlpha=(0,a.pluckNumber)(U.bgImageAlpha,100)/100,M.onload=function(){var e=this._userData,t=(0,a.pluckNumber)(e.bgImageX,0),n=(0,a.pluckNumber)(e.bgImageY,0),r=j(Number(e.bgImageWidth),Number(e.bgImageHeight),this.width,this.height),o=r.width,i=r.height;try{E.drawImage(this,t,n,o,i)}finally{E.globalAlpha=1,$()}},M.onerror=function(){$()})}}t["default"]={extension:function(e){e.batchExport=y,v=e},name:"batchExportLinker",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(241),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){var t=e.sender;(function(e,t){return e.getType()===t})(t,"chartAPI")&&t.registerFactory("logo",function(e){var t=e.getFromEnv("chart-attrib"),n=(0,i.getValidValue)(t.logourl,"");(0,i.componentFactory)(e,a["default"],"logo",n?1:0,[t])})})},name:"LogoExtension",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(131),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l={vAlign:"top",hAlign:"left"},c={link:{cursor:"pointer",_cursor:"pointer"},normal:{cursor:"default",_cursor:"normal"}},u={tr:{vAlign:"top",hAlign:"right"},bl:{vAlign:"bottom",hAlign:"left"},br:{vAlign:"bottom",hAlign:"right"},cc:{vAlign:"middle",hAlign:"middle"}},d=!(!window.SVGAngle&&!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),f=function(e){var t=e.config;return{load:function(){var n=void 0,r=e.getGraphicalElement("logoImage"),o=e.getFromEnv("chartConfig"),a=o.borderWidth||0,s=e.getFromEnv("chart"),l=o.height,c=o.width,u=t.logoPosition,f=t.logoScale,h=t.logoLeftMargin,p=t.logoTopMargin,g=t.logoURL,m=t.logoAlpha,v=t.logoPositionSTR,y=t.logoLink;r.show(),n=(0,i.setImageDisplayMode)("none",u.vAlign,u.hAlign,f,a,c,l,r._.RefImg),d&&(n.w=n.width||0,n.h=n.height||0),n.transform="T"+h+","+p,r.attr(n),s.fireChartInstanceEvent("LogoLoaded",{logoURL:g,logoAlpha:m,logoPosition:v,logoScale:f,logoLink:y})},error:function(n){var r=t.logoURL,o=t.logoAlpha,a=t.logoPositionSTR,i=t.logoScale,s=t.logoLink;e.getFromEnv("chart").fireChartInstanceEvent("LogoLoadError",{logoURL:r,logoAlpha:o,logoPosition:a,logoScale:i,logoLink:s,error:n})},mouseover:function(n){var r=e.getFromEnv("chartInstance"),o=(0,i.getMouseCoordinate)(r.ref,n),a=e.getFromEnv("chart"),s=t.logoURL,l=t.logoAlpha,c=t.logoPositionSTR,u=t.logoScale,d=t.logoLink;a.fireChartInstanceEvent("LogoRollover",{logoURL:s,logoAlpha:l,logoPosition:c||"tl",logoScale:u,logoLink:d,chartX:o.chartX,chartY:o.chartY,pageX:o.pageX,pageY:o.pageY})},mouseout:function(n){var r=e.getFromEnv("chartInstance"),o=(0,i.getMouseCoordinate)(r.ref,n),a=e.getFromEnv("chart"),s=t.logoURL,l=t.logoAlpha,c=t.logoPositionSTR,u=t.logoScale,d=t.logoLink;a.fireChartInstanceEvent("LogoRollout",{logoURL:s,logoAlpha:l,logoPosition:c||"tl",logoScale:u,logoLink:d,chartX:o.chartX,chartY:o.chartY,pageX:o.pageX,pageY:o.pageY})},click:function(n){var r=e.getFromEnv("chartInstance"),o=(0,i.getMouseCoordinate)(r.ref,n),a=e.getFromEnv("chart"),s=t.logoURL,l=t.logoAlpha,c=t.logoPositionSTR,u=t.logoScale,d=t.logoLink;a.fireChartInstanceEvent("LogoClick",{logoURL:s,logoAlpha:l,logoPosition:c||"tl",logoScale:u,logoLink:d,chartX:o.chartX,chartY:o.chartY,pageX:o.pageX,pageY:o.pageY},void 0,t.linkClickFN)}}},h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),r=n;return r.config._context={},r.config.handler=f(r),r.config.linkClickFN=function(){var e=r.config.logoLink;e&&r.getFromEnv("linkClickFN").call({link:e},!0)},n}return s(t,e),t.prototype.configureAttributes=function(){var e=this.config,t=this.getFromEnv("chart-attrib");e.logoURL=(0,i.getValidValue)(t.logourl,""),e.logoPositionSTR=(0,i.pluck)(t.logoposition,"tl").toLowerCase(),e.logoPosition=u[e.logoPositionSTR]||l,e.logoAlpha=(0,i.pluckNumber)(t.logoalpha,100),e.logoLink=(0,i.getValidValue)(t.logolink),e.logoScale=(0,i.pluckNumber)(t.logoscale,100),e.logoLeftMargin=(0,i.pluckNumber)(t.logoleftmargin,0),e.logoTopMargin=(0,i.pluckNumber)(t.logotopmargin,0),this.setState("dirty",!0)},t.prototype._contextChanged=function(){var e=this.config,t=this.getFromEnv("chartConfig"),n=t.borderWidth,r=t.width,o=t.height,a=void 0;return n!==e._context.chartBorderWidth&&(e._context.chartBorderWidth=n,a=!0),r!==e._context.chartWidth&&(e._context.chartWidth=r,a=!0),o!==e._context.chartHeight&&(e._context.chartHeight=o,a=!0),a},t.prototype.draw=function(){var e=this.config,t=this.getFromEnv("animationManager"),n=this.getGraphicalElement("logoImage"),r=this.getLinkedParent().getChildContainer("logoGroup"),o=e.logoAlpha,a=e.logoURL,i=e.logoLink,s=!this.getState("removed"),l=this._contextChanged();(!s||this.getState("dirty")||l)&&a&&s&&(n=t.setAnimation({el:n||"image",attr:{opacity:.01*o||1,src:a},component:this,container:r}),this.getGraphicalElement("logoImage")||(this.addGraphicalElement("logoImage",n),n.on("load",e.handler.load),n.on("error",e.handler.error),n.on("fc-click",e.handler.click),n.on("fc-mouseover",e.handler.mouseover),n.on("fc-mouseout",e.handler.mouseout)),n.css(c[i?"link":"normal"]))},t}(a["default"]);t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]={extension:function(e){e.addEventListener("register",function(t,n){var o=void 0,a=n[0],i=n[1];if(a&&"string"==typeof a&&"theme"===a&&i&&"object"===(void 0===i?"undefined":r(i))){if(i instanceof Array)for(o=0;o<i.length;o++)e.addDep({extension:i[o],name:i[o].name+"Theme",type:"theme"});else e.addDep({extension:i,name:i.name+"Theme",type:"theme"});t.preventDefault()}})},name:"ThemeEngine",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(124);(r={outputHelpers:{text:function(e,t){var n=(e.sender.id||e.sender).toString();r.outputTo("#"+e.eventId+" ["+n+'] fired "'+e.eventType+'" event. '+("error"===e.eventType||"warning"===e.eventType?t.message:""))},event:function(e,t){this.outputTo(e,t)},verbose:function(e,t){r.outputTo(e.eventId,e.sender.id,e.eventType,t)}},outputHandler:function(e,t){"function"==typeof r.outputTo&&r.currentOutputHelper(e,t)},currentOutputHelper:void 0,outputTo:void 0,enabled:!1}).currentOutputHelper=r.outputHelpers.text,t["default"]={extension:function(e){e["debugger"]={outputFormat:function(e){return!(!e||"function"!=typeof e.toLowerCase||"function"!=typeof r.outputHelpers[e=e.toLowerCase()])&&(r.currentOutputHelper=r.outputHelpers[e],!0)},outputTo:function(t){"function"==typeof t?r.outputTo=t:null===t&&(e["debugger"].enable(!1),delete r.outputTo)},enable:function(t,n,i){var s;return"object"===(void 0===t?"undefined":o(t))&&1===arguments.length&&(t=(s=t).state,n=s.outputTo,i=s.outputFormat),"function"==typeof t&&("string"!=typeof n||2!==arguments.length&&!s||(i=n),n=t,t=!0),"boolean"==typeof t&&t!==r.enabled&&(r.enabled=t,r.enabled?(0,a.addListener)("*",r.outputHandler):(0,a.removeListener)("*",r.outputHandler)),"function"==typeof n&&(r.outputTo=n),e["debugger"].outputFormat(i),r.enabled}}},name:"Debugger",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(166),a=(r=o)&&r.__esModule?r:{"default":r};t["default"]={name:"Ajax",type:"extension",requiresFusionCharts:!0,extension:function(e){e.ajax=a["default"]}}},function(e,t,n){"use strict";t.__esModule=!0;var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(246),i=(r=a)&&r.__esModule?r:{"default":r},s=n(118),l=n(129);var c=0,u=void 0;function d(e,t){var n=this.apiInstance,r=n.getChildren("dataset")[0],a=r.getChildren(),d=a.centerLabel&&a.centerLabel[0],f=n.config;d===u&&((0,s.componentFactory)(r,i["default"],"centerLabel",1,[f]),d=a.centerLabel&&a.centerLabel[0]),n.addJob("eiMethods-center-lebel"+c++,function(){var r,a,i=n.getDatasets()[0],s=i.config.piePlotOptions.innerSize;if(r=d.config,"object"!==(void 0===t?"undefined":o(t)))t=r;else{for(a in r)t[a]===u&&(t[a]=r[a]);r=Object.assign(r,t)}t.label=e,r.label=e,i.centerLabelConfig=r,s&&d&&d.draw(e||"")},l.priorityList.postRender)}t["default"]={extension:function(e){var t;e.addEventListener("instantiated",function(e){var n=e.sender;!t&&(t=function(e){return"chartAPI"===e.getType()}(n)&&(function(e){return"Doughnut2D"===e.getName()}(n)||function(e){return"MultilevelPie"===e.getName()}(n))),t&&function(e){return"dataset"===e.getType()}(n)&&n.registerFactory("centerLabel",function(){var e=n.getFromEnv("chartConfig"),r=n.getFromEnv("chartInstance"),o=!(!e.centerlabel&&!e.defaultcenterlabel);r.centerLabel=d,(0,s.componentFactory)(n,i["default"],"centerLabel",o?1:0,[e]),t=u})})},name:"CenterLabelExtension",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=l(n(131)),o=n(118),a=n(122),i=n(125),s=l(n(247));function l(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}(0,i.addDep)({name:"centerLabelAnimation",type:"animationRule",extension:s["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getName=function(){return"centerLabel"},t.prototype.getType=function(){return"centerLabel"},t.prototype.configure=function(e){var t=this.getFromEnv("chart-attrib"),n=this.getFromEnv("number-formatter"),r=e.dataLabelStyle,i=this;i.config={label:(0,o.parseUnsafeString)((0,o.pluck)(t.defaultcenterlabel,"")),font:(0,o.pluck)(t.centerlabelfont,r.fontFamily),fontSize:(0,o.pluckNumber)(t.centerlabelfontsize,parseInt(r.fontSize,10)),color:(0,a.getFirstColor)((0,o.pluck)(t.centerlabelcolor,t.valuefontcolor,e.style.inCanvasStyle.color,"555555")),alpha:(0,o.pluckNumber)(t.centerlabelalpha,100),bold:(0,o.pluckNumber)(t.centerlabelbold,r.fontWeight),italic:(0,o.pluckNumber)(t.centerlabelitalic,r.style),bgColor:(0,o.pluck)(t.centerlabelbgcolor,""),bgAlpha:(0,o.pluckNumber)(t.centerlabelbgalpha,100),borderColor:(0,o.pluck)(t.centerlabelbordercolor,r.borderColor),borderAlpha:(0,o.pluckNumber)(t.centerlabelborderalpha,100),borderThickness:(0,o.pluckNumber)(t.centerlabelborderthickness,r.borderThickness),borderRadius:(0,o.pluckNumber)(t.centerlabelborderradius,r.borderRadius),textPadding:(0,o.pluckNumber)(t.centerlabeltextpadding,r.borderPadding),padding:(0,o.pluckNumber)(t.centerlabelpadding,2),bgOval:(0,o.pluckNumber)(t.centerlabelbgoval,0),shadow:(0,o.pluckNumber)(t.showcenterlabelshadow,0),hoverColor:t.centerlabelhovercolor&&(0,a.getFirstColor)((0,o.pluck)(t.centerlabelhovercolor)),hoverAlpha:(0,o.pluckNumber)(t.centerlabelhoveralpha),toolText:(0,o.parseUnsafeString)((0,o.pluck)(t.centerlabeltooltext,o.BLANKSTRING))},i.addExtEventListener("datasetrollover",function(e){var t=e.sender.getFromEnv("dataSource"),r=e.data,a=(0,o.pluck)(function(e,t,n){if(e)for(var r,o=t.length||0;o--;)r=new RegExp(t[o],"gi"),e=e.replace(r,n[o]);return e}(t.chart.centerlabel,["\\$value","\\$percentValue","\\$displayValue","\\$label"],[n.scale(r.value),r.pValue,r.displayValue,r.label]),"");i.draw(a,!1)},this.getFromEnv("chart").getDatasets()[0]),i.addExtEventListener("datasetrollout",function(e){var t=e.sender.config.label,n=(0,o.pluck)(t,"");i.draw(n,!1)},this.getFromEnv("chart").getDatasets()[0])},t.prototype.draw=function(e){var t,n=this,r=n.getFromEnv("chart"),a=r.config.canvasLeft+.5*r.config.canvasWidth,i=r.config.canvasTop+.5*r.config.canvasHeight,s=r.getDatasets()[0].config.innerSize,l=r.getDatasets()[0].config.innerSize,c=r.getDatasets()[0].config,u=this.config,d=n.getFromEnv("animationManager"),f=n.getFromEnv("smartLabel"),h=this.getGraphicalElement("centerLabel"),p=h,g=this.getGraphicalElement("centerLabelBg"),m=r.getChildContainer("plotGroup"),v=u.padding,y=2*u.textPadding,b={fontFamily:u.font,fontSize:u.fontSize+"px",lineHeight:1.2*u.fontSize+"px",fontWeight:u.bold?"bold":"",fontStyle:u.italic?"italic":""},x=1.414*(.5*s-v)-y,w=1.414*(.5*l-v)-y,C=n.getFromEnv("toolTipController");e=(0,o.pluck)(e,u.label),f.setStyle(b),f.useEllipsesOnOverflow(r.config.useEllipsesWhenOverflow),t=f.getSmartText(e,x,w),e?(u.bgOval&&(g=d.setAnimation({el:g||"circle",attr:{cx:a,cy:i,r:.5*s-v,visibility:"visible",container:m,fill:(0,o.hashify)(u.bgColor),"fill-opacity":u.bgAlpha/100,stroke:(0,o.hashify)(u.borderColor),"stroke-width":u.borderThickness,"stroke-opacity":u.borderAlpha/100},component:n})),p=d.setAnimation({el:h||"text",component:n,container:m,css:b,attr:{x:a,y:i,text:t.text,visibility:"visible",direction:r.config.textDirection,fill:(0,o.toRaphaelColor)({FCcolor:{color:u.color,alpha:u.alpha}}),"text-bound":u.bgOval?"none":[(0,o.toRaphaelColor)({FCcolor:{color:u.bgColor,alpha:u.bgAlpha}}),(0,o.toRaphaelColor)({FCcolor:{color:u.borderColor,alpha:u.borderAlpha}}),u.borderThickness,u.textPadding,u.borderRadius]},label:"text"}),C.enableToolTip(p,u.toolText||t.tooltext)):(p&&d.setAnimation({el:p,attr:{visibility:"hidden"},component:n}),g&&d.setAnimation({el:g,attr:{visibility:"hidden"},component:n})),h?p.attr("text")!==e&&n.centerLabelChange(e):(n.addEventListener("fc-mouseover",function(){n._centerLabelRollover(r)}),n.addEventListener("fc-mouseout",function(){n._centerLabelRollout(r)}),n.addEventListener("fc-click",function(){n._centerLabelClick(r)}),n.addGraphicalElement("centerLabel",p),n.addGraphicalElement("centerLabelBg",g)),c.lastCenterLabelConfig=u,c.centerLabelConfig=u},t.prototype.centerLabelChange=function(e){var t=this.getFromEnv("chart"),n=t.config,r=this.getFromEnv("chartInstance"),o={height:n.height,width:n.width,pixelHeight:t.getFromEnv("chartWidth"),pixelWidth:t.getFromEnv("chartHeight"),id:r.id,renderer:r.args.renderer,container:r.options.containerElement,centerLabelText:e};t.fireChartInstanceEvent("centerLabelChanged",o)},t.prototype._centerLabelRollover=function(e){var t=e.config,n=e.getFromEnv("chartInstance"),r=this.config,o={height:t.height,width:t.width,pixelHeight:e.getFromEnv("chartWidth"),pixelWidth:e.getFromEnv("chartHeight"),id:n.id,renderer:n.args.renderer,container:n.options.containerElement,centerLabelText:r&&r.label};this.getFromEnv("paper").attr("text")&&e.fireChartInstanceEvent("centerLabelRollover",o,void 0,this.hoverOnCenterLabel.bind(this,e))},t.prototype._centerLabelRollout=function(e){var t=e.config,n=e.getFromEnv("chartInstance"),r=this.config,o={height:t.height,width:t.width,pixelHeight:e.getFromEnv("chartWidth"),pixelWidth:e.getFromEnv("chartHeight"),id:n.id,renderer:n.args.renderer,container:n.options.containerElement,centerLabelText:r&&r.label};this.getFromEnv("paper").attr("text")&&e.fireChartInstanceEvent("centerLabelRollout",o,void 0,this.hoverOffCenterLabel.bind(this,e))},t.prototype._centerLabelClick=function(e){var t,n=e.config,r=e.getFromEnv("chartInstance"),o={height:n.height,width:n.width,pixelHeight:e.getFromEnv("chartWidth"),pixelWidth:e.getFromEnv("chartHeight"),id:r.id,renderer:r.args.renderer,container:r.options.containerElement};t=this.config,o.centerLabelText=t&&t.label,this.getFromEnv("paper").attr("text")&&e.fireChartInstanceEvent("centerLabelClick",o)},t.prototype.hoverOnCenterLabel=function(e){var t=e.getChildren("dataset")[0].config.lastCenterLabelConfig;(t.hoverColor||t.hoverAlpha)&&this.getGraphicalElement("centerLabel").attr({fill:(0,o.toRaphaelColor)({FCcolor:{color:t.hoverColor||t.color,alpha:t.hoverAlpha||t.alpha}})})},t.prototype.hoverOffCenterLabel=function(e){var t=e.getChildren("dataset")[0].config.lastCenterLabelConfig;(t.hoverColor||t.hoverAlpha)&&this.getGraphicalElement("centerLabel").attr({fill:(0,o.toRaphaelColor)({FCcolor:{color:t.color,alpha:t.alpha}})})},t}(r["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"initial.centerLabel.centerLabel.text.appearing":function(e){if(e.attr)return[{initialAttr:{x:e.attr.x,y:e.attr.y}}]}}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118),o=i(n(249)),a=i(n(251));function i(e){return e&&e.__esModule?e:{"default":e}}var s={dragnode:!0,hlineargauge:!0,column3d:!0,mscolumn3d:!0,bar3d:!0,pareto3d:!0,msbar3d:!0,stackedcolumn3d:!0,stackedbar3d:!0,mscombi3d:!0,mscolumnline3d:!0,stackedcolumn3dline:!0,mscolumn3dlinedy:!0,stackedcolumn3dlinedy:!0,realtimearea:!0,realtimecolumn:!0,realtimeline:!0,realtimestackedarea:!0,realtimestackedcolumn:!0,angulargauge:!0,realtimelinedy:!0,kagi:!0,scrollcolumn2d:!0,scrollline2d:!0,scrollarea2d:!0,scrollstackedcolumn2d:!0,scrollcombi2d:!0,scrollcombidy2d:!0,scrollcombi2dspline:!0,treemap:!0,heatmap:!0,boxandwhisker2d:!0,scatter:!0,bubble:!0,errorscatter:!0,sparkwinloss:!0,zoomscatter:!0,zoomline:!0,zoomlinedy:!0};t["default"]={extension:function(e){e.addEventListener("preconfigure",function(e){if("chartAPI"===e.sender.getType()){var t=e.sender,n=t.getFromEnv("chartInstance");n.drawCrossline=function(e){n.drawConsolidatedToolTip(e),t.iterateComponents(function(t){"crossline-manager"===t.getType()&&(e!==undefined?t.show({value:e}):t.hide())})}}}),e.addEventListener("instantiated",function(e){if("canvas"===e.sender.getName()){var t=e.sender,n=void 0,i=void 0;t.registerFactory("crossLineManager",function(){var l=e.sender.getFromEnv("chart"),c=l&&l.getName();c&&!s[c.toLowerCase()]&&((0,r.componentFactory)(t,a["default"],"crosslineManagerBand"),n=t.getChildren("crosslineManagerBand")[0],i=n._handlerAPI,n.configure(),(0,r.componentFactory)(n,o["default"],"crossline"),n.addExtEventListener("fc-mouseover",i.onhover,t),n.addExtEventListener("fc-mousemove",i.onhover,t),n.addExtEventListener("fc-mouseout",i.onhoverout,t))})}})},name:"crossline-manager",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=s(n(131)),o=n(118),a=n(125),i=s(n(250));function s(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return(0,a.addDep)({name:"crosslineAnimation",type:"animationRule",extension:i["default"]}),n}return l(t,e),t.prototype.getName=function(){return"crossline"},t.prototype.getType=function(){return"crossline"},t.prototype.show=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=!!e.onTop,n=e.type;t!==this.config.prevRenderedOnTop&&this.hide(),!this[n]&&(n="band"),this[n](e),this.config.prevRenderedOnTop=t},t.prototype.band=function(){var e,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=t.managerId,r=t.x1,a=t.y1,i=t.x2,s=t.y2,l=t.thickness,c=!!t.onTop,u=(0,o.pluck)(t.fillcolor,"#EEEEEE"),d=(0,o.pluckNumber)(t.alpha,50),f=(0,o.toRaphaelColor)({color:u,alpha:d}),h=void 0,p=this.getLinkedParent().getChildContainer("crosslineBottom"),g=this.getLinkedParent().getChildContainer("crosslineTop");e=c?g:p,(h=this.getGraphicalElement("crosslineBand"+n))?t.animDuration?h.animate({path:["M",r,a,"L",i,s]},t.animDuration,"ease-in"):h.attr({path:["M",r,a,"L",i,s]}):this.addGraphicalElement("crosslineBand"+n,this.getFromEnv("paper").path({path:["M",r,a,"L",i,s],stroke:f,fill:f,"stroke-width":l,"stroke-linecap":"butt"},e))},t.prototype.hide=function(){for(var e=this.getGraphicalElement(),t=Object.keys(e),n=t.length-1;n>-1;n--)e[t[n]].stop(undefined,!0,!0),e[t[n]].remove(),delete e[t[n]]},t}(r["default"]);t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={crossline:{crossline:{path:{updating:function(e){var t=e.attr.path;return[{initialAttr:{path:e.el.attr("path")},finalAttr:{path:t}}]}}}}}},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(118),a=n(131),i=(r=a)&&r.__esModule?r:{"default":r};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l=o.hasSVG?0:.5,c=function(e){return{onhover:function(t,n){e.show(n.axes?{axesInfo:n.axes}:{event:t})},onhoverout:function(t){e.hide({event:t})}}},u=function(e,t,n){return n.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,state:"appearing",component:n,label:"group"})},d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n._handlerAPI=c(n),n}return s(t,e),t.prototype.getAttachedAxisInfo=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.getLinkedParent().getAxes(),n=void 0,r=void 0,a=void 0,i=e.originalEvent&&(0,o.getMouseCoordinate)(this.getFromEnv("chart-container"),e.originalEvent,this.getFromEnv("chart")),s=i&&i.chartX||0,l=i&&i.chartY||0;for(n=t.length-1;n>=0;n--)if(r=t[n].axis,!t[n].isY)return{value:(a=!!r.config.isVertical)?r.getValue(l):r.getValue(s),axis:r,isVertical:a,isY:!1}},t.prototype.configure=function(){var e=this.config,t=this.getFromEnv("chartConfig"),n=this.getFromEnv("chart-attrib"),r=(0,o.pluck)(n.crosslinecolor,t.crosslinecolor,"#EEEEEE"),a=(0,o.pluckNumber)(t.defaultcrosslinethickness),i=(0,o.pluckNumber)(n.crosslineanimation,0)&&1e3*(0,o.pluckNumber)(n.crosslineanimationduration,.09),s=(0,o.pluckNumber)(n.drawcrosslineontop,t.drawcrosslineontop,0),l=(0,o.pluckNumber)(n.crosslinealpha,t.crosslinealpha,50);e.drawCrossLine=(0,o.pluckNumber)(n.drawcrossline,t.drawcrossline,0),e.bandStyle={fillcolor:r,alpha:l,thickness:a,managerId:this.getId(),onTop:s,cursor:"pointer",animDuration:i}},t.prototype.createGroup=function(){var e=this.getLinkedParent().getChildContainer("crosslineBottom"),t=this.getLinkedParent().getChildContainer("crosslineTop");!this.getChildContainer("crosslineTop")&&this.addChildContainer("crosslineTop",u("crosslineTop",t,this)),!this.getChildContainer("crosslineBottom")&&this.addChildContainer("crosslineBottom",u("crosslineBottom",e,this))},t.prototype.show=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.event;this.config.attachedCanvasAxisInfo=this.getAttachedAxisInfo(t),this._setAptAxesInfo(e.axesInfo,e.value),this._show(t)},t.prototype._setAptAxesInfo=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],t=arguments[1],n=e.length,r=void 0,o=this.config.attachedCanvasAxisInfo,a=void 0;if(e.length)for(a=0;a<n;a++)if((r=e[a]).axis===o.axis){o.value=r.value;break}void 0!==t&&(o.value=t)},t.prototype._show=function(e){var t,n,r=this.config,o=this.getFromEnv("chartConfig"),a=this.getChildren("crossline")[0],i=r.attachedCanvasAxisInfo,s=i.value,c=i.axis,u=i.isVertical,d=c.config.endPad,f=c.getVisibleConfig().maxValue-d,h=Math.round(s),p=i.axis.getPixel(h),g=void 0,m=void 0,v=void 0,y=Object.assign({},r.bandStyle),b=void 0,x=this.getFromEnv("canvasConfig"),w=x.canvasTop,C=x.canvasLeft,_=x.canvasWidth,E=w+x.canvasHeight,k=r.drawCrossLine;h<0||h>f||this.config.lastIndex!==h&&k&&(void 0===(v=y.thickness)&&(!1===o._hascolumn?v=1:(g=c.getPixel(0),m=c.getPixel(1),v=Math.abs(m-g))),t=p,n=v,b=Math.round(t+(n%2/2+l))-(n%2/2+l),this.createGroup(),y.thickness=v,y=u?Object.assign(y,{x1:C,y1:b,x2:C+_,y2:b}):Object.assign(y,{x1:b,y1:w,x2:b,y2:E}),a.show(y),this.getFromEnv("chart").fireChartInstanceEvent("onChangeCrossLine",{currentIndex:h,lastIndex:this.config.lastIndex,source:e?"mouse interaction":"public API"}),this.config.lastIndex=h)},t.prototype.hide=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.getLinkedParent(),n=e.event,r=n&&n.originalEvent&&(0,o.getMouseCoordinate)(t.getFromEnv("chart-container"),n&&n.originalEvent,t.getFromEnv("chart")),a=r&&r.chartX||0,i=r&&r.chartY||0;t.isWithinCanvas(a,i)||(this.getFromEnv("chart").fireChartInstanceEvent("onChangeCrossLine",{lastIndex:this.config.lastIndex,source:n?"mouse interaction":"public API"}),delete this.config.lastIndex,this.getChildren("crossline")[0].hide())},t.prototype.getType=function(){return"crossline-manager"},t.prototype.getName=function(){return"crossline-manager-band-category-axis"},t}(i["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0;var r,o=n(131),a=(r=o)&&r.__esModule?r:{"default":r},i=n(118);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),r=0;r<n.length;r++){var o=n[r],a=Object.getOwnPropertyDescriptor(t,o);a&&a.configurable&&e[o]===undefined&&Object.defineProperty(e,o,a)}}(e,t))}var l={candlestick:!0},c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n,r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return r._handlers=(n=r,{onhover:function(e){e.originalEvent&&n.show(e)},onhoverout:function(e){e.originalEvent&&n.hide(e)}}),r}return s(t,e),t.prototype.getAxesInfo=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=arguments[1].getAxes(),n=void 0,r=[],o=void 0,a=void 0,s=void 0,l=(0,i.getMouseCoordinate)(this.getFromEnv("chart-container"),e.originalEvent,this.getFromEnv("chart")),c=l.chartX||0,u=l.chartY||0;for(n=t.length-1;n>=0;n--)o=t[n].axis,a=t[n].isY,s=!!o.config.isVertical,r.push({value:s?o.getValue(u):o.getValue(c),axis:o,isVertical:s,isY:a});return r},t.prototype.getName=function(){return"multiCanvasCrosslineManager"},t.prototype.getType=function(){return"multiCanvasCrosslineManager"},t.prototype.show=function(e){var t,n=e.sender,r=this.getFromEnv("chart");t=this.getAxesInfo(e,n),r.iterateComponents(function(e){"canvas"===e.getName()&&e!==n&&e.fireEvent("fc-mousemove",{axes:t})})},t.prototype.hide=function(e){var t=e.sender,n=(0,i.getMouseCoordinate)(t.getFromEnv("chart-container"),e&&e.originalEvent,t.getFromEnv("chart")),r=n.chartX,o=n.chartY;t.isWithinCanvas(r,o)||this.getFromEnv("chart").iterateComponents(function(e){"canvas"===e.getName()&&e!==t&&e.fireEvent("fc-mouseout")})},t}(a["default"]);t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){if(e.sender.getType&&"chartAPI"===e.sender.getType()&&l[e.sender.getName&&e.sender.getName()]){var t=e.sender,n=void 0,r=void 0;t.registerFactory("multiCanvasCrossline",function(){(0,i.componentFactory)(t,c,"multiCanvasCrosslineManager"),n=t.getChildren("multiCanvasCrosslineManager")[0],r=n._handlers,t.iterateComponents(function(e){"canvas"===e.getName()&&(e.addEventListener("fc-mouseover",r.onhover),e.addEventListener("fc-mousemove",r.onhover),e.addEventListener("fc-mouseout",r.onhoverout))})},["canvas"])}})},name:"multi-canvas-crossline-manager",type:"extension",requiresFusionCharts:!0}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={column2d:"charts",column3d:"charts",bar2d:"charts",bar3d:"charts",pie2d:"charts",pie3d:"charts",line:"charts",area2d:"charts",doughnut2d:"charts",doughnut3d:"charts",pareto2d:"charts",pareto3d:"charts",mscolumn2d:"charts",mscolumn3d:"charts",msline:"charts",msarea:"charts",msbar2d:"charts",msbar3d:"charts",stackedcolumn2d:"charts",marimekko:"charts",stackedcolumn3d:"charts",stackedarea2d:"charts",stackedcolumn2dline:"charts",stackedcolumn3dline:"charts",stackedbar2d:"charts",stackedbar3d:"charts",msstackedcolumn2d:"charts",mscombi2d:"charts",mscombi3d:"charts",mscolumnline3d:"charts",mscombidy2d:"charts",mscolumn3dlinedy:"charts",stackedcolumn3dlinedy:"charts",msstackedcolumn2dlinedy:"charts",scatter:"charts",bubble:"charts",ssgrid:"charts",scrollcolumn2d:"charts",scrollcolumn3d:"charts",scrollline2d:"charts",scrollarea2d:"charts",scrollstackedcolumn2d:"charts",scrollcombi2d:"charts",scrollcombidy2d:"charts",spline:"charts",splinearea:"charts",msspline:"charts",mssplinearea:"charts",mssplinedy:"charts",multiaxisline:"powercharts",multilevelpie:"powercharts",waterfall2d:"powercharts",msstepline:"powercharts",inversemsline:"powercharts",inversemscolumn2d:"powercharts",inversemsarea:"powercharts",errorbar2d:"powercharts",errorscatter:"powercharts",errorline:"powercharts",logmsline:"powercharts",logmscolumn2d:"powercharts",logstackedcolumn2d:"powercharts",radar:"powercharts",dragnode:"powercharts",candlestick:"powercharts",selectscatter:"powercharts",dragcolumn2d:"powercharts",dragline:"powercharts",dragarea:"powercharts",boxandwhisker2d:"powercharts",kagi:"powercharts",heatmap:"powercharts",angulargauge:"widgets",bulb:"widgets",cylinder:"widgets",drawingpad:"widgets",funnel:"widgets",hbullet:"widgets",hled:"widgets",hlineargauge:"widgets",vlineargauge:"widgets",pyramid:"widgets",realtimearea:"widgets",realtimecolumn:"widgets",realtimeline:"widgets",realtimelinedy:"widgets",realtimestackedarea:"widgets",realtimestackedcolumn:"widgets",sparkcolumn:"widgets",sparkline:"widgets",sparkwinloss:"widgets",thermometer:"widgets",vbullet:"widgets",vled:"widgets",zoomline:"zoomline",zoomlinedy:"zoomline",gantt:"gantt",treemap:"treemap",zoomscatter:"zoomscatter",overlappedbar2d:"overlappedbar2d",overlappedcolumn2d:"overlappedcolumn2d",msstackedcolumn2dsplinedy:"msstackedcolumn2dsplinedy"}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(118),o=12e4,a={};t["default"]=function(e){if(!a[e]){var t=document.getElementsByTagName("head")[0],n=document.createElement("script"),i=setTimeout(function(){n.onerror({type:"timeout",target:n})},o);n.charset="utf-8",n.timeout=o,a[e]=new Promise(function(e,t){n.onload=function(t){n.onerror=n.onload=null,clearTimeout(i),e(t)},n.onerror=function(e){n.onerror=n.onload=null,clearTimeout(i),t(e)}}),(0,r.isXSSSafe)(e,!1)||(e="function"==typeof window.encodeURIComponent?window.encodeURIComponent(e):window.escape(e)),n.src=e,t.appendChild(n)}return a[e]}},function(e,t){(function(t){e.exports=t}).call(this,{})}])["default"]}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.js.map +(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[2],Array(258).concat([function(e,t,n){"use strict";t.__esModule=!0;var o=i(n(259)),a=i(n(330));function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.registerFactory("dataset",a["default"],["vCanvas"]),n}return r(t,e),t.getName=function(){return"SSCartesian"},t.prototype.getName=function(){return"SSCartesian"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.hasLegend=!1,t.linethickness=4},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource").data;if(!e||!e.length)return!0},t.prototype._setCategories=function(){var e=this.getFromEnv("dataSource"),t=this.getChildren("xAxis"),n=e.dataset,o=e.data||n&&n[0].data;t[0].setTickValues(o)},t}(o["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(260)),a=n(118),i=c(n(291)),r=c(n(323)),l=c(n(326)),s=c(n(328));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=Math.max,p=Math.min,d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.registerFactory("axis",i["default"],["canvas"]),n.registerFactory("canvas",r["default"]),n.registerFactory("vCanvas",l["default"],["axis"]),n.registerFactory("mouseTracker",s["default"],["canvas"]),n}return h(t,e),t.getName=function(){return"Cartesian"},t.prototype.getName=function(){return"Cartesian"},t.prototype.getType=function(){return"chartAPI"},t.prototype._allocateXAxisLabelSpace=function(e){var t,n=this.config,o=e.getAxisEndLabelDisplaySpace(),a=o.left,i=o.right,r=o.top,l=o.bottom,s=n.availableWidth,c=n.availableHeight,h=n.canvasLeft,u=n.canvasRight,p=n.canvasTop,d=n.canvasBottom,g=n.width,f=n.height,m=function(e,t){return e<t&&t>0?t-e:0};r+l>c&&(r=c*r/(t=r+l),l=c*l/t),a+i>s&&(a=s*a/(t=a+i),i=s*i/t),a=m(h,a),i=m(g-u,i),r=m(p,r),l=m(f-d,l),this._allocateSpace({left:a,right:i,top:r,bottom:l})},t.prototype._setCategories=function(){var e=this.getFromEnv("dataSource"),t=this.getChildren("xAxis"),n=e.categories&&e.categories.length&&e.categories[0].category;t&&t[0].setTickValues(n)},t.prototype._feedAxesRawData=function(){var e,t,n=this.config,o=this.getFromEnv("dataSource");return e=this.getSpecificxAxisConf(),t=this.getSpecificyAxisConf(),e.vtrendlines=(0,a.extend2)([],o.vtrendlines),t.trendlines=(0,a.extend2)([],o.trendlines),n.isstacked&&(t.isPercent=(0,a.pluckNumber)(n.stack100percent,0)),{yAxisConf:[t],xAxisConf:[e]}},t.prototype.getSpecificxAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config,n=this.config.is3D,o=this.getBasexAxisConf();return o.isReverse=t.reverseXAxis,o.axisLineColor=(0,a.pluck)(e.xaxislinecolor,e.axislinecolor,"#000000"),o.showAlternateGridColor=(0,a.pluckNumber)(e.showalternatevgridcolor,0),o.numDivLines=(0,a.pluckNumber)(e.numvdivlines,t.numVDivLines),o.axisName=e.xaxisname,o.setAdaptiveMin=(0,a.pluckNumber)(e.setadaptivexmin,t.setadaptivexmin,t.setadaptivexmin),o.showLimits=(0,a.pluckNumber)(e.showvlimits,t.showvlimits),o.showDivLineValues=(0,a.pluckNumber)(e.showvdivlinevalues,e.showvdivlinevalues,t.showvdivlinevalues),o.zeroPlaneThickness=(0,a.pluckNumber)(e.vzeroplanethickness,e.vdivlinethickness,t.zeroplanethickness,2),o.zeroPlaneAlpha=(0,a.pluckNumber)(e.vzeroplanealpha,e.vdivlinealpha,t.zeroplanealpha),o.showZeroPlaneValue=(0,a.pluckNumber)(e.showvzeroplanevalue,t.showzeroplanevalue),o.showAxisLine=n?0:(0,a.pluckNumber)(e.showxaxisline,e.showaxislines,e.drawAxisLines,t.showxaxisline,0),o.maxLabelHeight=e.maxlabelheight,o.showZeroPlane=(0,a.pluckNumber)(e.showvzeroplane,t.showzeroplane),o},t.prototype.getSpecificyAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config,n=this.config.is3D,o=n?a.chartPaletteStr.chart3D:a.chartPaletteStr.chart2D,i=t.isInverse,r=this.getFromEnv("color-manager"),l=(0,a.pluckNumber)(e.showzeroplane,t.showzeroplane,1),s=(0,a.pluckNumber)(e.showzeroplanevalue,t.showzeroplanevalue);return l||void 0!==s||(s=0),{isVertical:!0,isReverse:!i,isOpposit:!1,outCanfontFamily:(0,a.pluck)(e.outcnvbasefont,e.basefont,"Verdana,sans"),outCanfontSize:(0,a.pluckFontSize)(e.outcnvbasefontsize,e.basefontsize,10),outCancolor:(0,a.pluck)(e.outcnvbasefontcolor,e.basefontcolor,r.getColor(o.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisBreaks:e.yaxisbreaks,axisNamePadding:e.yaxisnamepadding,axisValuePadding:e.yaxisvaluespadding,axisNameFont:e.yaxisnamefont,axisNameFontSize:e.yaxisnamefontsize,axisNameFontColor:e.yaxisnamefontcolor,axisNameFontBold:e.yaxisnamefontbold,axisNameFontItalic:e.yaxisnamefontitalic,axisNameBgColor:e.yaxisnamebgcolor,axisNameBorderColor:e.yaxisnamebordercolor,axisNameAlpha:e.yaxisnamealpha,axisNameFontAlpha:e.yaxisnamefontalpha,axisNameBgAlpha:e.yaxisnamebgalpha,axisNameBorderAlpha:e.yaxisnameborderalpha,axisNameBorderPadding:e.yaxisnameborderpadding,axisNameBorderRadius:e.yaxisnameborderradius,axisNameBorderThickness:e.yaxisnameborderthickness,axisNameBorderDashed:e.yaxisnameborderdashed,axisNameBorderDashLen:e.yaxisnameborderdashlen,axisNameBorderDashGap:e.yaxisnameborderdashgap,axisNameWidth:e.yaxisnamewidth,useEllipsesWhenOverflow:e.useellipseswhenoverflow,rotateAxisName:(0,a.pluckNumber)(e.rotateyaxisname,1),axisName:e.yaxisname,divLineColor:(0,a.pluck)(e.divlinecolor,r.getColor(o.divLineColor)),divLineAlpha:(0,a.pluck)(e.divlinealpha,n?r.getColor("divLineAlpha3D"):r.getColor("divLineAlpha")),divLineThickness:(0,a.pluckNumber)(e.divlinethickness,1),divLineIsDashed:Boolean((0,a.pluckNumber)(e.divlinedashed,e.divlineisdashed,0)),divLineDashLen:(0,a.pluckNumber)(e.divlinedashlen,4),divLineDashGap:(0,a.pluckNumber)(e.divlinedashgap,2),showAlternateGridColor:(0,a.pluckNumber)(e.showalternatehgridcolor,1),alternateGridColor:(0,a.pluck)(e.alternatehgridcolor,r.getColor("altHGridColor")),alternateGridAlpha:(0,a.pluck)(e.alternatehgridalpha,r.getColor("altHGridAlpha")),numDivLines:(0,a.pluckNumber)(e.numdivlines,t.numDivLines),axisMinValue:t.yRangeMin||e.yaxisminvalue,axisMaxValue:t.yRangeMax||e.yaxismaxvalue,setAdaptiveMin:(0,a.pluckNumber)(e.setadaptivesymin,e.setadaptiveymin,t.setAdaptiveMin),adjustDiv:e.adjustdiv,labelStep:e.yaxisvaluesstep,showAxisValues:(0,a.pluckNumber)(e.showyaxisvalues,e.showyaxisvalue,t.showyaxisvalues),showLimits:(0,a.pluckNumber)(e.showyaxislimits,e.showlimits,this.showLimits),showDivLineValues:(0,a.pluckNumber)(e.showdivlinevalues,e.showdivlinevalue,t.showdivlinevalues),showZeroPlane:l,zeroPlaneColor:e.zeroplanecolor,zeroPlaneThickness:(0,a.pluckNumber)(e.zeroplanethickness,e.divlinethickness,t.zeroplanethickness,2),zeroPlaneAlpha:(0,a.pluckNumber)(e.zeroplanealpha,e.divlinealpha,t.zeroplanealpha),showZeroPlaneValue:s,showZeroPlaneOnTop:t.showzeroplaneontop,trendlineColor:e.trendlinecolor,trendlineToolText:e.trendlinetooltext,trendlineThickness:e.trendlinethickness,trendlineAlpha:e.trendlinealpha,showTrendlinesOnTop:e.showtrendlinesontop,showAxisLine:n?0:(0,a.pluckNumber)(e.showyaxisline,e.showaxislines,e.drawAxisLines,t.showyaxisline,0),axisLineThickness:(0,a.pluckNumber)(e.yaxislinethickness,e.axislinethickness,1),axisLineAlpha:(0,a.pluckNumber)(e.yaxislinealpha,e.axislinealpha,100),axisLineColor:(0,a.pluck)(e.yaxislinecolor,e.axislinecolor,"#000000"),forceTrendBelow:!!t.is3D}},t.prototype.getBasexAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config.is3D,n=t?a.chartPaletteStr.chart3D:a.chartPaletteStr.chart2D,o=this.getFromEnv("color-manager");return{isVertical:!1,isOpposit:!1,outCanfontFamily:(0,a.pluck)(e.outcnvbasefont,e.basefont,"Verdana,sans"),outCanfontSize:(0,a.pluckFontSize)(e.outcnvbasefontsize,e.basefontsize,10),outCancolor:(0,a.pluck)(e.outcnvbasefontcolor,e.basefontcolor,o.getColor(n.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:e.xaxisnamepadding,axisValuePadding:e.labelpadding,axisNameFont:e.xaxisnamefont,axisNameFontSize:e.xaxisnamefontsize,axisNameFontColor:e.xaxisnamefontcolor,axisNameFontBold:e.xaxisnamefontbold,axisNameFontItalic:e.xaxisnamefontitalic,axisNameBgColor:e.xaxisnamebgcolor,axisNameBorderColor:e.xaxisnamebordercolor,axisNameAlpha:e.xaxisnamealpha,axisNameFontAlpha:e.xaxisnamefontalpha,axisNameBgAlpha:e.xaxisnamebgalpha,axisNameBorderAlpha:e.xaxisnameborderalpha,axisNameBorderPadding:e.xaxisnameborderpadding,axisNameBorderRadius:e.xaxisnameborderradius,axisNameBorderThickness:e.xaxisnameborderthickness,axisNameBorderDashed:e.xaxisnameborderdashed,axisNameBorderDashLen:e.xaxisnameborderdashlen,axisNameBorderDashGap:e.xaxisnameborderdashgap,useEllipsesWhenOverflow:e.useellipseswhenoverflow,divLineColor:(0,a.pluck)(e.vdivlinecolor,e.divlinecolor,o.getColor(n.divLineColor)),divLineAlpha:(0,a.pluck)(e.vdivlinealpha,e.divlinealpha,t?o.getColor("divLineAlpha3D"):o.getColor("divLineAlpha")),divLineThickness:(0,a.pluckNumber)(e.vdivlinethickness,e.divlinethickness,1),divLineIsDashed:Boolean((0,a.pluckNumber)(e.vdivlinedashed,e.vdivlineisdashed,e.divlinedashed,e.divlineisdashed,0)),divLineDashLen:(0,a.pluckNumber)(e.vdivlinedashlen,e.divlinedashlen,4),divLineDashGap:(0,a.pluckNumber)(e.vdivlinedashgap,e.divlinedashgap,2),alternateGridColor:(0,a.pluck)(e.alternatevgridcolor,o.getColor("altVGridColor")),alternateGridAlpha:(0,a.pluck)(e.alternatevgridalpha,o.getColor("altVGridAlpha")),labelFont:e.labelfont,labelFontSize:e.labelfontsize,labelFontColor:e.labelfontcolor,labelFontAlpha:e.labelalpha,labelFontBold:e.labelfontbold,labelFontItalic:e.labelfontitalic,axisMinValue:e.xaxisminvalue,axisMaxValue:e.xaxismaxvalue,adjustDiv:e.adjustvdiv,labelDisplay:e.labeldisplay,showLabels:e.showlabels,rotateLabels:e.rotatelabels,slantLabel:(0,a.pluckNumber)(e.slantlabels,e.slantlabel),labelStep:(0,a.pluckNumber)(e.labelstep,e.xaxisvaluesstep),showAxisValues:(0,a.pluckNumber)(e.showxaxisvalues,e.showxaxisvalue),zeroPlaneColor:e.vzeroplanecolor,trendlineColor:e.trendlinecolor,trendlineToolText:e.trendlinetooltext,trendlineThickness:e.trendlinethickness,trendlineAlpha:e.trendlinealpha,showTrendlinesOnTop:e.showtrendlinesontop,axisLineThickness:(0,a.pluckNumber)(e.xaxislinethickness,e.axislinethickness,1),axisLineAlpha:(0,a.pluckNumber)(e.xaxislinealpha,e.axislinealpha,100)}},t.prototype.getConfig=function(e){return e?this.config[e]:this.config},t.prototype._getSumValueSpace=function(e){var t,n={},o=this.isBar,i=this.getFromEnv("dataSource").chart,r=0!==this.showsum?(0,a.pluckNumber)(i.showsum,this.showsum,0):0,l=(0,a.pluckNumber)(this.config.stack100percent),s=this.config.isstacked,c=0,h=[],u=0;if(this.iterateComponents(function(e){"cartesianStackGroup"!==e.getName()&&"marimekkoStackgroup"!==e.getName()||h.push(e)}),r&&l&&s&&h.length){for(t=h.length-1;t>=0;t--)n=h[t].getMaxSumValueSpace(),o?c=Math.max(c,n.maxWidth):u=Math.max(u,n.maxHeight);u>e&&(u=e),c>e&&(c=e)}return{top:u,right:c}},t.prototype.setAxisDimention=function(){var e=this.getChildren("xAxis")&&this.getChildren("xAxis")[0],t=this.getChildren("yAxis")&&this.getChildren("yAxis")[0],n=this.getFromEnv("chartConfig"),o=n.xDepth,a=this.getChildren("canvas")&&this.getChildren("canvas")[0].config,i=a&&a.canvasBorderWidth,r=a&&a.canvasPadding,l=a.canvasLeft,s=a&&a.canvasPaddingLeft,c=a&&a.canvasPaddingRight,h=a.canvasTop,u=a&&a.canvasPaddingTop;e&&e.setAxisConfig({canvasPaddingLeft:Math.max(s,r),canvasPaddingRight:Math.max(c,r)}),e&&e.setAxisDimention({x:l+(o||0)+Math.max(s,r),y:n.canvasBottom+(n.shift||0)+i,opposite:h-i,axisLength:a.canvasWidth-(o||0)-Math.max(s,r)-Math.max(c,r)}),t&&t.setAxisDimention({x:l-i,y:h+u,opposite:n.canvasRight+i,axisLength:n.canvasHeight-u-a.canvasPaddingBottom})},t.prototype._getTrendLineMinMax=function(e,t){var n,o,a,i,r,l="v"===e?this.getFromEnv("dataSource").vtrendlines:this.getFromEnv("dataSource").trendlines,s={max:-Infinity,min:Infinity};if(t=t||"p",l)for(o=0,i=l.length;o<i;o+=1)for(a=0,r=l[o].line?l[o].line.length:0;a<r;a+=1)n=l[o].line[a],"s"===t&&"s"!==n.parentyaxis||"s"!==t&&"s"===n.parentyaxis||(s.max=u(n.startvalue||-Infinity,n.endvalue||-Infinity,s.max),s.min=p(n.startvalue||Infinity,n.endvalue||Infinity,s.min));return s},t}(o["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(261),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype._spaceManager=function(){var e,t,n,o,a,i,l,s,c,h,u,p,d,g,f,m,b,v,y,x=this.config,C=this.getChildren("xAxis")&&this.getChildren("xAxis")[0],k=this.getChildren("yAxis")&&this.getChildren("yAxis")||[],w=x.legendposition,S=x.xDepth,L=x.yDepth,A=x.canvasBgDepth,N=x.canvasBaseDepth,_=x.canvasBasePadding,P=this.getChildren("canvas")[0],F=P.config.canvasBorderWidth,E=x.realTimeConfig&&x.realTimeConfig.showRTValue,T=x.borderWidth,D=x.canvasMarginTop,O=x.canvasMarginBottom,I=x.canvasMarginLeft,M=x.canvasMarginRight,R=x.minCanvasHeight,V=x.minCanvasWidth,B=x.minChartWidth,G=x.minChartHeight,j=x.height,H=x.width,W=!1,z=!1,U=x.origCanvasTopMargin,q=x.origCanvasBottomMargin,Y=x.origCanvasLeftMargin,K=x.origCanvasRightMargin,X=[];for(x.canvasWidth-2*T<B&&(g=(x.canvasWidth-B)/2),x.canvasHeight-2*T<G&&(d=(x.canvasHeight-G)/2),this._allocateSpace({top:d||T,bottom:d||T,left:g||T,right:g||T}),h=0,o=k.length;h<o;h++)n=k[h],e=.7*x.availableWidth,v=n&&n.placeAxis(e)||{},X.push({axisIndex:h,spaceTaken:v}),n&&this._allocateSpace(v);x.yAxisSpaceAllocation=X,this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*x.availableHeight)||{}),this._manageLegendSpace&&x.showLegend&&this._manageLegendSpace(void 0),t=w===r.POSITION_BOTTOM?.6*x.availableHeight:.6*x.availableWidth,L&&(this._allocateSpace({bottom:L}),x.shift=S+_+N),A&&this._allocateSpace({right:A}),x.canvasWidth-2*F<V&&(m=(x.canvasWidth-V)/2),this._allocateSpace({left:m||F,right:m||F}),V>H-I-M&&(z=!0,a=x.canvasWidth-V,y=I+M,I=x.canvasMarginLeft=a*I/y,M=x.canvasMarginRight=a*M/y),s=I>x.canvasLeft?I-x.canvasLeft:0,c=M>H-x.canvasRight?M+x.canvasRight-H:0,this._allocateSpace({left:s,right:c}),z&&(y=Y+K,(p=x.canvasWidth)>V&&(s=(a=p-V)*Y/y,c=a*K/y),this._allocateSpace({left:s,right:c})),x.actualCanvasMarginRight=c,x.actualCanvasMarginBottom=l,this._manageChartMenuBar(t),t=.2*x.availableHeight,this._getSumValueSpace&&this._allocateSpace(this._getSumValueSpace(t)),t=.3*x.availableHeight,x.realtimeEnabled&&(E?this._allocateSpace(this._realTimeValuePositioning(t)):this._hideRealTimeValue()),this._resetViewPortConfig&&this._resetViewPortConfig(),this._setAxisScale&&this._setAxisScale(),t=.6*x.availableHeight,x.xAxisSpaceAllocation=b=C&&C.placeAxis(t),C&&this._allocateSpace(b),x.canvasHeight-2*F<R&&(f=(x.canvasHeight-R)/2),this._allocateSpace({top:f||F,bottom:f||F}),this._allocateSpace({bottom:N}),R>j-D-O&&(W=!0,a=x.canvasHeight-R,y=D+O,D=x.canvasMarginTop=a*D/y,O=x.canvasMarginBottom=a*O/y),i=D>x.canvasTop?D-x.canvasTop:0,l=O>j-x.canvasBottom?O+x.canvasBottom-j:0,this._allocateSpace({top:i,bottom:l}),W&&(y=U+q,(u=x.canvasHeight)>R&&(i=(a=u-R)*U/y,l=a*q/y),this._allocateSpace({top:i,bottom:l})),x.actualCanvasMarginTop=i,x.actualCanvasMarginLeft=s,P.setDimension({top:x.canvasTop,left:x.canvasLeft,width:x.canvasWidth,height:x.canvasHeight})},t.prototype._postSpaceManagement=function(){var e,t=this.config,n=this.getChildren(),o=n.xAxis&&n.xAxis[0],a=n.legend&&n.legend[0],i=t.xDepth,r=this.getChildren("canvas");for(this.setAxisDimention&&this.setAxisDimention(),o&&this._allocateXAxisLabelSpace(o),o&&o.shiftLabels(-i,0),a&&a.postSpaceManager(),e=0;e<(r&&r.length);e++)r[e].setCanvasPadding();this.setAxisDimention&&this.setAxisDimention()},t}(i["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0,t.configurer=t._createToolBox=t._drawDataset=undefined;var o=y(n(151)),a=y(n(262)),i=n(125),r=y(n(265)),l=y(n(267)),s=y(n(269)),c=y(n(271)),h=y(n(137)),u=y(n(273)),p=n(124),d=y(n(281)),g=n(118),f=n(122),m=n(119),b=y(n(120)),v=y(n(282));function y(e){return e&&e.__esModule?e:{"default":e}}function x(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var C=(0,i.getDep)("redraphael","plugin"),k="VML"===C.type,w="rgba(255,0,0,"+(g.isIE?.002:1e-6)+")",S=Math.max,L=Math.min,A=Math.round,N={datalabelclick:!0,connectorclick:!0,categoryclick:!0,processclick:!0,milestoneclick:!0,labelclick:!0,dataplotclick:!0},_=g.preDefStr.SEVENTYSTRING,P=g.preDefStr.AUTOSTRING,F="onpointerover"in window.document,E=function(e,t,n){return n.getFromEnv("animationManager").setAnimation({el:"group",attr:e,container:t,state:"appearing",component:n,label:"group"})},T=function(e){var t=e.data.config;t._containerMouseState="mousedown",t._mdx1=e.clientX!==g.UNDEF?e.clientX:e.changedTouches&&e.changedTouches[0].clientX,t.mdy1=e.clientY!==g.UNDEF?e.clientY:e.changedTouches&&e.changedTouches[0].clientY,"touchstart"===e.type&&(t._touchStartedAt=(new Date).getTime())},D=function(e){var t=e.data.config,n=e.clientX!==g.UNDEF?e.clientX:e.changedTouches&&e.changedTouches[0].clientX,o=e.clientY!==g.UNDEF?e.clientY:e.changedTouches&&e.changedTouches[0].clientY;(Math.abs(t._mdx1-n)>=2.5||Math.abs(t.mdy1-o)>=2.5)&&(e.data.config._containerMouseState=undefined)},O=function(e){(new Date).getTime()-e.data.config._touchStartedAt<500&&setTimeout(function(){I(e)})},I=function(e){var t,n=e.data,o=n.getFromEnv("chartInstance"),a=e.originalEvent,i=n.config,r=(0,g.getMouseCoordinate)(n.getFromEnv("chart-container"),a,n);o.ref&&"mousemove"!==i._containerMouseState&&(t=(0,g.extend2)({height:o.args.height,width:o.args.width,pixelHeight:n.getFromEnv("chartWidth"),pixelWidth:n.getFromEnv("chartHeight"),id:o.args.id,renderer:o.args.renderer,container:o.options.containerElement},r),n.fireChartInstanceEvent("chartclick",t),i.link&&(!i.hotElemClicked||i.clickURLOverridesPlotLinks)&&n.getFromEnv("linkClickFN").call({link:i.link}),i.hotElemClicked=!1)},M=function(e){var t=e.type,n=e.data,o=n.getFromEnv("eventListeners");"mouseover"!==t&&"touchstart"!==t||!1!==n.config.mouseStateIn||(n.config.mouseStateIn=!0,G.onContainerRollOver(e),o.push(b["default"].listen(k?document:window,"mouseover",G.winMouseHover,n)))};function R(){this.getFromEnv("chartMenuTools").reset(this.getFromEnv("toolbox"),this);var e,t,n,o,a,i,r,l,s,c,h,u,p,d=this,f=d.getFromEnv("chartMenuTools"),m=d.getFromEnv("chartInstance").id,b=f.get,y=f.set,x=this.components,C=d.config,k=d.getChildren("chartMenuBar"),S=d.getChildren("actionBar"),L=C.printOption.enabled,N=d.config.realTimeConfig||{};k&&k.drawn||S&&S.drawn||((0,g.componentFactory)(d,v["default"],"tb",1,[{graphics:d.graphics||(d.graphics={}),chart:d,components:x}]),u=(e=d.getChildren("tb")[0]).getICount(),d.addToEnv("toolbox",e),!d.getFromEnv("toolBoxAPI")&&d.addToEnv("toolBoxAPI",e.getAPIInstances(e.config.ALIGNMENT_HORIZONTAL)),s=(i=d.getFromEnv("toolBoxAPI")).SymbolWithContext,r=i.SymbolStore,l=i.ComponentGroup,c=i.Toolbar,e.idCount=e.idCount||0,e.pId=u,n=e.getDefaultConfiguration(),r.register("ContextIcon",function(e,t,n){var o=e,a=t,i=2*n,r=A(i/4),l=.7*A(i/2),s=o-l,c=o+l,h=a+r,u=a-r;return["M",s,a,"L",c,a,"M",s,h,"L",c,h,"M",s,u,"L",c,u]}),(p=new s).configure("ContextIcon",e.idCount++,u,m),o=(t=p).getListRefernce(),d.addToEnv("chartMenuList",o),L&&y([{Print:{handler:function(){d.getFromEnv("chartInstance").print()},action:"click"}}]),d._setRTmenu&&d._setRTmenu(N.showRTmenuItem,N.useMessageLog),o.appendAsList(b()),(a=new l).configure(e.idCount++,u,m),a.setConfiguaration({buttons:n,group:{fill:w,borderColor:w}}),a.addSymbol(t),"t"===a.config.btnConfig.vAlign?(h=new c,k=d.attachChild(h,"chartMenuBar",!1),h.configure(e.idCount++,e.pId,m),k.addComponent(a)):(h=new c,k=d.attachChild(h,"actionBar",!1),h.configure(e.idCount++,e.pId,m),k.addComponent(a)))}function V(){this.getChildren("canvas")[0]._mapChildren(function(e){e.syncDraw()})}function B(e){this.config.skipConfigureIteration={},this.parseChartAttr(e),this.createComponent(e),this._createToolBox(),this.setTooltipStyle(),this.configureChildren()}(0,i.addDep)({name:"commonAnimation",type:"animationRule",extension:d["default"]});var G=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.addToEnv("stringConstants",{COMPONENT:"component",CANVAS:"canvas",CAPTION:"caption"}),n.addToEnv("chartMenuTools",t.chartMenuTools()),n.addToEnv("getMouseCoordinate",g.getMouseCoordinate),n._drawDataset=V,n.config.mouseStateIn=!1,n.registerFactory("canvas",a["default"]),n._firstConfigure=!0,n}return x(t,e),t.getName=function(){return"CommonAPI"},t.prototype.plotEventHandler=function(e){var t,n,o=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},a=arguments[2],i=arguments[3],r=o.type,l=(0,g.getMouseCoordinate)(this.getFromEnv("chart-container"),o,this),s=e&&e.data("eventArgs")||i,c=(0,g.extend2)(l,s),h=this.fireGroupEvent,u=e&&e.data("groupId"),d=function(e,t){o.FusionChartsPreventEvent=!0};"index"in c&&!("dataIndex"in c)&&(c.dataIndex=c.index),"value"in c&&!("dataValue"in c)&&(c.dataValue=c.value),"dataplotrollover"===(a=(0,g.pluck)(a,"dataplotclick").toLowerCase())?(o.FusionChartsPreventEvent=!1,h?(0,p.raiseEventGroup)(u,a,c,this.getFromEnv("chartInstance"),g.UNDEF,g.UNDEF,d):this.fireChartInstanceEvent(a,c,g.UNDEF,g.UNDEF,d)):h&&!N[a]?(0,p.raiseEventGroup)(u,a,c,this.getFromEnv("chartInstance")):this.fireChartInstanceEvent(a,c),"fc-click"!==r&&"click"!==r&&"mouseup"!==r&&"touchend"!==r||!/click/i.test(a)||(n=(t=this.getFromEnv())&&t.linkClickFN,c.link&&n&&n.call({link:c.link},!0))},t.prototype.getName=function(){return"Cartesian"},t.prototype.preConfigure=function(t){var n=this.getFromEnv("number-formatter");this.addToEnv("chart-attrib",t.chart),n?n.configure():this.addToEnv("number-formatter",new h["default"](this)),e.prototype.preConfigure.call(this,t)},t.prototype.postConfigure=function(t){e.prototype.postConfigure.call(this,t),this._firstConfigure=!1},t.prototype.setDefaults=function(){e.prototype.setDefaults.call(this);var t=this.getFromEnv("number-formatter");t&&t.setDefaults&&t.setDefaults()},t.prototype.getType=function(){return"chartAPI"},t.prototype.parseChartAttr=function(e){var t,n,o,a,i,r,l,s,h=e||this.getFromEnv("dataSource"),u=void 0,p=this.config.is3D,d=p?g.chartPaletteStr.chart3D:g.chartPaletteStr.chart2D,b=void 0,v=this.isBar,y=void 0,x=this.getFromEnv("color-manager"),C=void 0,k=void 0,w=void 0;x||(x=new c["default"](this),this.addToEnv("color-manager",x)),h.chart=h.chart||h.graph||h.map||{},delete h.map,delete h.graph,!(u=h.chart)&&(u=h.chart={}),b=this.config||(this.config={}),(0,m.parseConfiguration)(u,b,{},{showvalues:!0,crosslinecolor:!0,drawcrosslineontop:!0,crosslinealpha:!0,drawcrossline:!0}),b.showValues=(0,g.pluckNumber)(u.showvalues,b.showvalues),b.viewPortConfig={scaleY:1,scaleX:1,x:0,y:0},p&&(v?(b.xDepth=5,b.yDepth=5):(b.xDepth=10,b.yDepth=10),b.showCanvasBase=w=Boolean((0,g.pluckNumber)(u.showcanvasbase,1)),b.canvasBasePadding=(0,g.pluckNumber)(u.canvasbasepadding,2),b.canvasBaseDepth=w?(0,g.pluckNumber)(u.canvasbasedepth,10):0,b.canvasBgDepth=(0,g.pluckNumber)(u.canvasbgdepth,3)),x&&x.configure(),b.placeAxisLabelsOnTop=(0,g.pluckNumber)(u.placexaxislabelsontop,0),b.enableAnimation=(0,g.pluckNumber)(u.animation,u.defaultanimation,1),b.showToolTip=(0,g.pluckNumber)(u.showtooltip,1),b.printOption={enabled:(0,g.pluckNumber)(u.printshowbutton,u.showprintmenuitem,0)},b.drawCrossLineOnTop=(0,g.pluckNumber)(u.drawcrosslineontop,1),C=b.style={},this.addToEnv("style",C),b.textDirection="1"===u.hasrtltext?"rtl":g.BLANKSTRING,C.inCanfontFamily=t=(0,g.pluck)(u.basefont,"Verdana,sans"),C.inCanfontSize=n=(0,g.pluckFontSize)(u.basefontsize,10),C.inCancolor=y=(0,g.pluck)(u.basefontcolor,x.getColor(d.baseFontColor)),C.outCanfontFamily=(0,g.pluck)(u.outcnvbasefont,t),C.fontSize=o=(0,g.pluckFontSize)(u.outcnvbasefontsize,n),C.outCanfontSize=o+g.PXSTRING,C.outCancolor=(0,g.pluck)(u.outcnvbasefontcolor,y).replace(/^#? ([a-f0-9]+)/gi,"#$1"),C.baseFontSize=n,C.inCanfontSize=n+g.PXSTRING,C.inCancolor=y.replace(/^#? ([a-f0-9]+)/gi,"#$1"),C.inCanvasStyle=r={fontFamily:t,fontSize:n,color:y},C.inCanLineHeight=l=(0,g.setLineHeight)(r),k=(k=(0,g.getFirstValue)(u.valuebordercolor,g.BLANKSTRING))?(0,f.convertColor)(k,(0,g.pluckNumber)(u.valueborderalpha,u.valuealpha,100)):g.BLANKSTRING,b.reverseXAxis=this.config.allowreversexaxis&&(0,g.pluckNumber)(u.reversexaxis,0),b.showBorder=(0,g.pluckNumber)(u.showborder,p?0:1),b.borderWidth=S(b.showBorder?(0,g.pluckNumber)(u.borderthickness,1):0,0),b.useplotgradientcolor=(0,g.pluckNumber)(u.plotgradientcolor,b.useplotgradientcolor,0),b.valuefontbold=(0,g.pluckNumber)(u.valuefontbold,b.valuefontbold),b.dataLabelStyle=s={fontFamily:(0,g.pluck)(u.valuefont,t),fontSize:(0,g.pluck)(u.valuefontsize,(0,g.pInt)(n,10))+g.PXSTRING,lineHeight:l,color:(0,f.convertColor)((0,g.pluck)(u.valuefontcolor,y),(0,g.pluckNumber)(u.valuefontalpha,u.valuealpha,100)),fontWeight:b.valuefontbold?"bold":"normal",fontStyle:(0,g.pluckNumber)(u.valuefontitalic)?"italic":"normal",border:k||u.valuebgcolor?(0,g.pluckNumber)(u.valueborderthickness,1)+"px solid":g.BLANKSTRING,borderColor:k,borderThickness:(0,g.pluckNumber)(u.valueborderthickness,1),borderPadding:(0,g.pluckNumber)(u.valueborderpadding,2),borderRadius:(0,g.pluckNumber)(u.valueborderradius,0),backgroundColor:u.valuebgcolor?(0,f.convertColor)(u.valuebgcolor,(0,g.pluckNumber)(u.valuebgalpha,u.valuealpha,100)):g.BLANKSTRING,borderDash:(0,g.pluckNumber)(u.valueborderdashed,0)?(0,g.getDashStyle)((0,g.pluckNumber)(u.valueborderdashlen,4),(0,g.pluckNumber)(u.valueborderdashgap,2)):g.DASH_DEF},(0,g.setLineHeight)(s),b.legendposition=(0,g.pluck)(u.legendposition,g.POSITION_BOTTOM),b.alignLegendWithCanvas=(0,g.pluckNumber)(u.alignlegendwithcanvas,1),b.origMarginTop=(0,g.pluckNumber)(u.charttopmargin,this.chartTopMargin,15),b.origMarginLeft=(0,g.pluckNumber)(u.chartleftmargin,this.chartLeftMargin,15),b.origMarginBottom=(0,g.pluckNumber)(u.chartbottommargin,this.chartBottomMargin,15),b.origMarginRight=(0,g.pluckNumber)(u.chartrightmargin,this.chartRightMargin,15),b.origCanvasLeftMargin=(0,g.pluckNumber)(u.canvasleftmargin,0),b.origCanvasRightMargin=(0,g.pluckNumber)(u.canvasrightmargin,0),b.origCanvasTopMargin=(0,g.pluckNumber)(u.canvastopmargin,0),b.origCanvasBottomMargin=(0,g.pluckNumber)(u.canvasbottommargin,0),b.minChartWidthPercent=(0,g.pluckNumber)(u.minchartwidth,this.minChartWidth,50)/100,b.minChartHeightPercent=(0,g.pluckNumber)(u.minchartheight,this.minChartHeight,50)/100,b.minCanvasWidthPercent=(0,g.pluckNumber)(u.mincanvaswidth,this.minCanvasWidth,60)/100,b.minCanvasHeightPercent=(0,g.pluckNumber)(u.mincanvasheight,this.minCanvasHeight,30)/100,a=(0,g.pluck)(u.zeroplanecolor,u.divlinecolor,x.getColor(d.divLineColor)),i=(0,g.pluck)(u.zeroplanealpha,u.divlinealpha,x.getColor("divLineAlpha")),b.zeroPlaneColor=(0,f.convertColor)(a,i),b.zeroPlaneBorderColor=(0,f.convertColor)((0,g.pluck)(u.zeroplanebordercolor,a),(0,g.pluckNumber)(u.zeroplaneshowborder,1)?i:0),b.zeroPlaneShowBorder=(0,g.pluckNumber)(u.zeroplaneshowborder,1),b.realtimeEnabled=(0,g.pluckNumber)(u.realtimeenabled,this.isRealTime),b.showLegend=(0,g.pluckNumber)(u.showlegend,this.showLegend,1),b.link=u.clickurl,b.transposeAxis=(0,g.pluckNumber)(this.transposeAxis,u.transposeaxis,0),b.useEllipsesWhenOverflow=(0,g.pluckNumber)(u.useellipseswhenoverflow,u.useellipsewhenoverflow,1),b.drawTrendRegion=(0,g.pluckNumber)(u.drawcrossline,0),b.plotcolorintooltip=(0,g.pluckNumber)(u.plotcolorintooltip,this.config.singleseries?0:1),b.plotbinsize=L((0,g.pluckNumber)(u.plotbinsize,this.plotbinsize,.5),1),b.labelbinsize=L((0,g.pluckNumber)(u.labelbinsize,1),1),b.labelbinsize=b.plotbinsize>b.labelbinsize?b.plotbinsize:b.labelbinsize,b.enableMouseOutEvent=(0,g.pluckNumber)(u.enablemouseoutevent,this.enableMouseOutEvent,1),b.plotSpacePercent=Math.max((0,g.pluckNumber)(u.plotspacepercent,this.plotSpacePercent),0),b.maxColWidth=Math.abs((0,g.pluckNumber)(u.maxcolwidth,50)),b.maxBarHeight=Math.abs((0,g.pluckNumber)(u.maxbarheight,50)),b.overlapColumns=(0,g.pluckNumber)(u.overlapcolumns,u.overlapbars,b.is3D?0:1),b.plotPaddingPercent=u.plotpaddingpercent,b.tooltipgrayoutcolor=(0,g.pluck)(u.tooltipgrayoutcolor,g.preDefStr.colors.AAAAAA),b.clickURLOverridesPlotLinks=(0,g.pluckNumber)(u.clickurloverridesplotlinks,0),this.addToEnv("chartConfig",b),this.addToEnv("linkClickFN",(0,g.getLinkAction)(this.getFromEnv("dataSource"),this)),this.addToEnv("dataLabelStyle",s)},t.prototype.createComponent=function(){var e=void 0;e=this.config.skipConfigureIteration,this.createBaseComponent(),this.getFromEnv("animationManager").setAnimationState(this._firstConfigure?"initial":"update"),(0,g.componentFactory)(this,r["default"],"caption"),e.caption=!0,(0,g.componentFactory)(this,l["default"],"subCaption"),e.subCaption=!0,(0,g.componentFactory)(this,s["default"],"background"),e.background=!0,this._createConfigurableComponents&&this._createConfigurableComponents(),this.config.realtimeEnabled&&this._realTimeConfigure&&this._realTimeConfigure()},t.prototype.configureChildren=function(){var e=this;e._mapChildren(function(t){!t.getState("removed")&&e.config.skipConfigureIteration[t.getName()]&&t.configure&&t.configure()})},t.prototype._createToolBox=function(){R.call(this)},t.prototype.configureAttributes=function(e){B.call(this,e)},t.prototype.setTooltipStyle=function(){var e=this.config;this.getFromEnv("toolTipController").setStyle({bgColor:(0,f.convertColor)(e.tooltipbgcolor||"FFF",e.tooltipbgalpha||100),rawBgColor:(e.tooltipbgcolor||"FFF").replace(/\s+/g,"").replace(/^#?([a-f0-9]+)/gi,"#$1"),fontColor:(e.tooltipcolor||e.basefontcolor||"545454").replace(/\s+/g,"").replace(/^#?([a-f0-9]+)/gi,"#$1"),borderColor:(0,f.convertColor)(e.tooltipbordercolor||"666",e.tooltipborderalpha||100),rawBorderColor:(e.tooltipbordercolor||"666").replace(/\s+/g,"").replace(/^#?([a-f0-9]+)/gi,"#$1"),bgAlpha:(0,g.pluckNumber)(e.tooltipbgalpha,100),borderThickness:(0,g.pluckNumber)(e.tooltipborderthickness,1),showToolTipShadow:(0,g.pluckNumber)(e.showtooltipshadow,e.showshadow,1),borderRadius:(0,g.pluckNumber)(e.tooltipborderradius,0),"font-size":e.basefontsize||10,"font-family":e.basefont||this.getFromEnv("style").inCanfontFamily,padding:(0,g.pluckNumber)(e.tooltippadding||3),borderAlpha:(0,g.pluckNumber)(e.tooltipborderalpha,100)})},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.valuefontbold=0,t.stickytracking=1,t.usemessagelog=0,t.zeroplanethickness=g.UNDEF,t.animationeffect="linear",t.showshadow=1,t.showhovereffect=g.UNDEF,t.plothovereffect=g.UNDEF,t.anchorhovereffect=g.UNDEF,t.plotborderdashed=g.UNDEF,t.stack100percent=g.UNDEF,t.showpercentvalues=g.UNDEF,t.showpercentintooltip=g.UNDEF,t.plotbordercolor=g.UNDEF,t.showtooltip=1,t.seriesnameintooltip=1,t.rotatevalues=0,t.minimizetendency=0,t.plotfillangle=270,t.valuepadding=2,t.useplotgradientcolor=1,t.plotborderthickness=1,t.plotfillalpha=_,t.showvalues=1,t.valueposition=P,t.drawcrossline=g.UNDEF,t.tooltipsepchar=", ",t.usedataplotcolorforlabels=0,t.placevaluesinside=0,t.showplotborder=1,t.use3dlighting=1,t.useroundedges=0,t.plotspacepercent=20,t.plotpaddingpercent=g.UNDEF,t.plotfillratio=g.UNDEF,t.maxcolwidth=50,t.plotborderdashlen=5,t.plotborderdashgap=4,t.useScaleRecursively=!0,t.formatnumberscale=1,t.decimals=2,t.decimalprecision=10,t.tooltipbgcolor="FFF",t.tooltipcolor=g.UNDEF,t.tooltipbordercolor="666",t.tooltipbgalpha=100,t.tooltipborderthickness=1,t.showtooltipshadow=g.UNDEF,t.basefontsize=10,t.basefont="Verdana, sans",t.tooltipborderradius=0,t.tooltippadding=3,t.tooltipborderalpha=100,t.origw=g.UNDEF,t.origh=g.UNDEF},t.prototype.configure=function(t){t.chart=t.chart||t.graph||t.map||{},e.prototype.configure.call(this,t)},t.prototype._checkInvalidData=function(){var e=this.getFromEnv("dataSource"),t=this.getFromEnv("chartInstance");if(!(this.isWidget||this.isMap||e.data&&0!==e.data.length||e.dataset||e.value||e.lineset||e.annotations||e.category||e.tasks||e.process||e.axis))return this.setChartMessage(),this.drawChartMessage(),t.__state.dataReady=!1,t.jsVars.hasNativeMessage=!0,t.jsVars.drawCount+=1,!0},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource"),t=e.dataset,n=e.categories;if(!t||!n||0===n.length||!n[0].category)return!0},t.prototype.setChartEvents=function(){var e=this.getFromEnv("eventListeners"),n=this.getFromEnv("dataSource"),o=n&&n.chart,a=this.getFromEnv("paper")&&this.getFromEnv("paper").canvas,i=this.getFromEnv("chart-container"),r=o&&(0,g.pluckNumber)(o.enablechartmousemoveevent,0);(o||a)&&(b["default"].unlisten(i,F?"click":"touchend",F?I:O),e.push(b["default"].listen(i,"mousedown touchstart",T,this)),e.push(b["default"].listen(i,"mousemove touchmove",D,this)),e.push(b["default"].listen(i,F?"click":"touchend",F?I:O,this)),b["default"].unlisten(a,"mouseover",M,this),b["default"].unlisten(a,"touchstart",M,this),b["default"].unlisten(a,"mouseout",M,this),b["default"].unlisten(a,"touchend",M,this),e.push(b["default"].listen(a,"mouseover touchstart mouseout touchend",M,this)),b["default"].unlisten(i,"mousemove",t.onContainerMouseMove,this),b["default"].unlisten(i,"touchmove",t.onContainerMouseMove,this),r&&e.push(b["default"].listen(i,"mousemove touchmove",t.onContainerMouseMove,this)))},t.chartMenuTools=function(){var e=[];return{get:function(){return e},set:function(t){var n,o=t.length||0;for(n=0;n<o;n+=1)e.push(t[n])},reset:function(t,n){var o=n.getChildren("actionBar"),a=n.getChildren("chartMenuBar");a&&n.detachChild(a.getId())&&(a.drawn=!1),o&&n.detachChild(o.getId())&&(o.drawn=!1),e.length=0,t&&(t.idCount=0,t.clean())},update:function(e,t,n){var o,a,i,r,l,s,c,h=(n.getChildren("chartMenuBar")||n.getChildren("actionBar")).config.componentGroups;for(r=0,l=h.length;r<l;r++)for(s=0,c=(i=h[r].config.symbolList||[]).length;s<c;s++)i[s]instanceof u["default"]&&(o=i[s].getListRefernce().getFirstContainer().config.atomicLists);for(r=0,l=(o=o||[]).length;r<l;r++)if((a=o[r]).config.name===e){a.updateName(t);break}}}},t.prototype.get=function(e,t){var n=this[e];return t?n&&n[t]:n},t.prototype.prepareAttributes=function(){this.config.hasChartMessage||e.prototype.prepareAttributes.call(this)},t.prototype.disposeChartStyleSheet=function(){var e=this.getFromEnv("paper");e&&e.cssClear()},t.prototype.createChartStyleSheet=function(){this.getFromEnv("paper").cssRender()},t.prototype._dispose=function(){for(var t=this.getFromEnv("eventListeners"),n=t&&t.length;n--;)t[n].unlisten();e.prototype._dispose.call(this)},t.prototype._allocateSpace=function(e){var t,n,o=this.getChildren("canvas"),a=o&&o[0].config,i=this.config,r=i.canvasHeight,l=i.canvasWidth,s=i.availableHeight,c=i.availableWidth;n=i.canvasLeft+=e.left||0,t=i.canvasTop+=e.top||0,l=i.canvasWidth=S(l-((e.left||0)+(e.right||0)),0),r=i.canvasHeight=S(r-((e.top||0)+(e.bottom||0)),0),i.availableHeight=S(s-((e.top||0)+(e.bottom||0)),0),i.availableWidth=S(c-((e.left||0)+(e.right||0)),0),i.canvasRight=n+l,i.canvasBottom=t+r,a&&(a.canvasPaddingLeft=S(a.canvasPaddingLeft,e.paddingLeft||0),a.canvasPaddingRight=S(a.canvasPaddingRight,e.paddingRight||0),a.canvasPaddingTop=S(a.canvasPaddingTop,e.paddingTop||0),a.canvasPaddingBottom=S(a.canvasPaddingBottom,e.paddingBottom||0)),o&&o[0].setDimension({top:t,left:n,width:l,height:r})},t.prototype._fetchCaptionPos=function(e){var t=this.config,n=t.width,o=this.getChildren("chartMenuBar"),a=o.config.componentGroups[0].config.btnConfig,i=o.getLogicalSpace().width,r=(this.getChildren("caption")&&this.getChildren("caption")[0]).config,l=r.width,s="l"===a.hAlign,c=t.width-e,h=s?e:c,u=t.origMarginRight,p=t.origMarginLeft,d=s?p:u;return r.align===g.POSITION_MIDDLE?h-l/2-d-i:"start"===r.align?s?-1:n-t.canvasLeft-d-l-i+r.horizontalPadding:s?n-(u+p+i+l):-1},t.prototype._manageCaptionSpacing=function(e,t){return this.getChildren("caption")[0].manageSpace(e,t)},t.prototype._manageChartMenuBar=function(e){var t,n,o=this.config,a=this.getChildren("chartMenuBar"),i=a&&a.getLogicalSpace(),r=(this.getChildren("caption")&&this.getChildren("caption")[0]).config,l=r.isOnTop,s=o.width/2,c=o.canvasRight,h=c?(o.canvasLeft+c)/2:s,u=0,p=r.alignWithCanvas?h:s,d=a&&a.config.componentGroups.length&&a.config.componentGroups[0].config.btnConfig,f=i&&d.spaceNotHardCoded;return d&&d.spaceNotHardCoded&&(d.x=(0,g.pluckNumber)("l"===d.hAlign?0:o.width),d.y=(0,g.pluckNumber)("t"===d.vAlign?0:o.height)),delete r._offsetHeight,n=r.alignWithCanvas?o.canvasWidth:o.width-o.origMarginLeft-o.origMarginRight,l?(t=this._manageCaptionSpacing(e,n),f&&(u=this._fetchCaptionPos(p),r._offsetHeight=u<0?i.height:0,t.top=u<0?(0,g.pluckNumber)(t.top,0)+i.height:S(t.top,i.height)),this._allocateSpace(t)):(this._allocateSpace({top:f?i.height:0}),t=this._manageCaptionSpacing(e,n),this._allocateSpace(t)),{top:i?S(i.height,t.top):t.top,bottom:t.bottom}},t.prototype._manageSpace=function(){var e,t,n,o,a,i,r,l,s,c,h,u,p=this.getChildren("canvas")&&this.getChildren("canvas")[0],d=p&&p.config,g=this.config,f=this.getFromEnv("chartWidth"),m=this.getFromEnv("chartHeight");g.width=f,g.height=m,g.minChartHeight=s=g.minChartHeightPercent*m,g.minChartWidth=c=g.minChartWidthPercent*f,g.minCanvasWidth=e=g.minCanvasWidthPercent*c,g.minCanvasHeight=t=g.minCanvasHeightPercent*s,g.marginTop=n=g.origMarginTop,g.marginLeft=o=g.origMarginLeft,g.marginBottom=a=g.origMarginBottom,g.marginRight=i=g.origMarginRight,g.canvasMarginTop=g.origCanvasTopMargin,g.canvasMarginLeft=g.origCanvasLeftMargin,g.canvasMarginBottom=g.origCanvasBottomMargin,g.canvasMarginRight=g.origCanvasRightMargin,g.canvasHeight=r=g.height-g.marginTop-g.marginBottom,g.canvasWidth=l=g.width-g.marginLeft-g.marginRight,g.availableHeight=r-t,g.availableWidth=l-e,r<s&&(h=m-s,g.canvasHeight=s,u=n+a,g.marginTop=h*n/u,g.marginBottom=h*a/u,g.availableHeight=s-t),l<c&&(h=f-c,u=i+o,g.canvasWidth=c,g.marginLeft=h*o/u,g.marginRight=h*i/u,g.availableWidth=c-e),g.canvasLeft=g.marginLeft,g.canvasTop=g.marginTop,d&&(d.canvasPaddingLeft=L(d.origCanvasLeftPad,A(.1*g.height)),d.canvasPaddingRight=L(d.origCanvasRightPad,A(.1*g.height)),d.canvasPaddingTop=L(d.origCanvasTopPad,A(.1*g.height)),d.canvasPaddingBottom=L(d.origCanvasBottomPad,A(.1*g.height))),this._spaceManager()},t.prototype._preDraw=function(){this._mapChildren(function(e){e.getState("removed")||e.preDraw&&e.preDraw()}),this._setAxisLimits&&this._setAxisLimits(),this._createToolBoxGantt&&this._createToolBoxGantt()},t.prototype._clearTimers=function(){var e,t=this.config&&this.config.realTimeConfig,n=this.config.timers,o=n&&n.setTimeout,a=n&&n.setInterval;for(e in t&&(t.refreshIntervalFlag=!1),o)clearTimeout(o[e]);for(e in a)clearInterval(a[e])},t.prototype.setChartCursor=function(){var e=this.config.link,t=this.getFromEnv("paper").canvas.style;C.svg?t.cursor=e?g.POINTER:"default":this.getFromEnv("paper").canvas.style.cursor=e?g.HAND:"default"},t.prototype._createLayers=function(){var e,t=this.getFromEnv("animationManager");e=this.getContainer("parentgroup")||this.addContainer("parentgroup",t.setAnimation({el:"group",attr:{name:"parentgroup"},component:this})),!this.getChildContainer("backgroundGroup")&&this.addChildContainer("backgroundGroup",E({name:"background"},e,this)),!this.getChildContainer("axisBottomGroup")&&this.addChildContainer("axisBottomGroup",E({name:"axisbottom"},e,this)),!this.getChildContainer("belowPlotGroup")&&this.addChildContainer("belowPlotGroup",E({name:"belowplot"},e,this)),!this.getChildContainer("lowerAnnotationGroup")&&this.addChildContainer("lowerAnnotationGroup",E({name:"lowerannotations"},this.getChildContainer("belowPlotGroup"),this)),!this.getChildContainer("plotGroup")&&this.addChildContainer("plotGroup",E({name:"plots"},e,this)),!this.getChildContainer("axisTopGroup")&&this.addChildContainer("axisTopGroup",E({name:"axistop"},e,this)),!this.getChildContainer("sumLabelsLayer")&&this.addChildContainer("sumLabelsLayer",E({name:"sumlabels","class":"fusioncharts-datalabels"},e,this)),!this.getChildContainer("datalabelsGroup")&&this.addChildContainer("datalabelsGroup",E({name:"datalabel"},e,this)),!this.getChildContainer("abovePlotGroup")&&this.addChildContainer("abovePlotGroup",E({name:"aboveplot"},e,this)),!this.getChildContainer("upperAnnotationGroup")&&this.addChildContainer("upperAnnotationGroup",E({name:"upperannotations"},this.getChildContainer("abovePlotGroup"),this)),!this.getChildContainer("captionGroup")&&this.addChildContainer("captionGroup",E({name:"caption"},e,this)),!this.getChildContainer("defaultGroup")&&this.addChildContainer("defaultGroup",E({name:"chartdefault"},e,this)),!this.getChildContainer("defaultShadowGroup")&&this.addChildContainer("defaultShadowGroup",E({name:"chartdefault-shadow"},e,this)),!this.getChildContainer("trackerGroup")&&this.addChildContainer("trackerGroup",E({name:"tracker"},e,this)),!this.getChildContainer("buttonGroup")&&this.addChildContainer("buttonGroup",t.setAnimation({el:"group",container:e,attr:{name:"buttons"},component:this})),!this.getChildContainer("logoGroup")&&this.addChildContainer("logoGroup",t.setAnimation({el:"group",attr:{name:"logo"},component:this}))},t.prototype._setDataLabelStyle=function(){var e=this.config.dataLabelStyle,t={fontFamily:e.fontFamily,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle};this.getChildContainer("datalabelsGroup").css(t)},t.prototype._manageCaptionPosition=function(){var e,t=this.config,n=this.getChildren(),o=n.caption&&n.caption[0],a=n.subCaption&&n.subCaption[0],i=o.config,r=i.widgetValueHeight||0,l=a.config,s=void 0,c=void 0,h=t.canvasWidth,u=i.align,p=i.text,d=i.alignWithCanvas,f=i.horizontalPadding,m=t.width,b=t.canvasLeft,v=t.canvasRight,y=t.marginRight,x=t.marginLeft,C=t.marginTop,k=(A(b)||0)+(0,g.pluckNumber)(h,m)/2,w=i.height,S=l.height,L=n.legend&&n.legend[0]&&n.legend[0].config||{},N=L.height||0,_=L.legendPadding||0,P=t.legendposition,F=this.getFromEnv("gLegend")||{},E=0,T=!!(F.conf||{}).showLegend,D=this.config.borderWidth,O=n.actionBar,I=0;switch(L.isActive||(N=0),T&&this.config.gLegendEnabled&&(E=F.getLogicalSpace().height),u){case"end":s=d?v-f:m-f;break;case"start":s=d?b+f:f;break;default:s=d?k:x+.5*(m-x-y)||m/2}i.isOnTop?c=(D||0)+(C||0):("right"===P.toLowerCase()&&(_=0,N=0,E=0),O&&((I=(O.getLogicalSpace()||{}).height)===g.UNDEF||I===Infinity||I<0)&&(I=0),c=this.config.height-this.config.marginBottom-w-(S||0)-(D||0)-(_||0)-(N||0)-E-r-I),c+=i._offsetHeight||0,o.setDimention({x:s,y:c}),e=p?c+w+2:c||C||0,a.setDimention({x:s,y:e})},t.prototype._updateVisuals=function(){var e,t,n=this.getFromEnv("core-options"),o=this.getFromEnv("paper"),a=this.getFromEnv("animationManager"),i=this.config,r=this.getFromEnv("chartWidth"),l=this.getFromEnv("chartHeight");n&&!n._SVGDefinitionURLUpdated&&(/^\s*absolute\s*$/i.test(n.SVGDefinitionURL)&&(C._url=(C._g&&C._g.win||window).location.href.replace(/#.*?$/,g.BLANKSTRING)),n._SVGDefinitionURLUpdated=!0),o?(g.hasSVG||!i._prevWidth&&!i._prevHeight||o.setSize(i._prevWidth,i._prevHeight),t={width:r,height:l},a.setAnimation({el:o,attr:t,component:this})):((o=new C(this.getFromEnv("chart-container"),r,l)).setHTMLClassName("fusioncharts-div"),this.addToEnv("paper",o),o.setConfig("stroke-linecap",g.ROUND),this.setChartEvents()),i._prevWidth=r,i._prevHeight=l,this.setChartCursor(),this._createLayers(),this._setDataLabelStyle(),(e=this.getChildren("chartMenuBar")?"chartMenuBar":this.getChildren("actionBar")?"actionBar":g.UNDEF)&&this.allocateDimensionOfChartMenuBar(e),this.getChildren("chartMenuBar")&&(this.getChildren("chartMenuBar").config.parentLayer=this.getContainer("parentgroup")),this._drawCreditLabel()},t.prototype.allocateDimensionOfChartMenuBar=function(e){var t=this.config,n=this.getChildren(e),o=n.getLogicalSpace(),a=n.config.toolbarConfig,i=n.config.componentGroups[0].config.btnConfig,r=i.vDirection,l=i.hDirection,s=i.y,c=i.x;a.fill=w,a.borderColor=w,i.spaceNotHardCoded&&("chartMenuBar"===e?(s+=i.vMargin*r+L(0,o.height*r),c+=i.hMargin*l-S(0,o.width*l),c="l"===i.hAlign?c+o.width:c-o.width):(s=t.height-t.marginBottom-o.height,c="b"===i.vAlign&&"r"===i.hAlign?t.width-t.marginRight-o.width:t.marginLeft)),n.setMenuBarDimension(c,s)},t.prototype.draw=function(){var e=this.getFromEnv("chartInstance");this.config.hasChartMessage?(this._hide(),this.drawChartMessage(),this.fireChartInstanceEvent("nodatatodisplay",{},[e.id]),e.jsVars.drawCount+=1,e.__state.dataReady=!1,e.jsVars.hasNativeMessage=!0):(this._hideChartMessage(),this._clearTimers&&this._clearTimers(),this.config.plotOverFlow=!1,this._show(),this._updateVisuals(),this.setState("initiated",!0),e.jsVars.drawCount+=1,e.jsVars.hasNativeMessage=!1)},t.prototype.manageSpace=function(){this.config.hasChartMessage||(this._preDraw(),this.addToolbar&&this.addToolbar(),this._manageSpace(),this._postSpaceManagement&&this._postSpaceManagement())},t.prototype._show=function(){this.getContainer("parentgroup")&&this.getContainer("parentgroup").show()},t.prototype._manageActionBarSpace=function(){var e=this.config,t=this.getChildren("actionBar"),n=(t&&t.getLogicalSpace()||{}).height||0;return e.actionBarHeight=n,{bottom:n}},t.prototype._hide=function(){this.getContainer("parentgroup")&&this.getContainer("parentgroup").hide()},t.onContainerMouseMove=function(e){var t,n=e.data,o=n.getFromEnv("chartInstance"),a=e.originalEvent,i=(0,g.getMouseCoordinate)(n.getFromEnv("chart-container"),a,n);o.ref&&(t=(0,g.extend2)({height:o.args.height,width:o.args.width,pixelHeight:n.getFromEnv("chartWidth"),pixelWidth:n.getFromEnv("chartHeight"),id:o.args.id,renderer:o.args.renderer,container:o.options.containerElement},i),n.fireChartInstanceEvent("chartMouseMove",t))},t.onContainerRollOver=function(e){var t,n=e.data,o=n.getFromEnv("chartInstance"),a=e.originalEvent,i=(0,g.getMouseCoordinate)(n.getFromEnv("chart-container"),a,n);o.ref&&(t=(0,g.extend2)({height:o.args.height,width:o.args.width,pixelHeight:n.getFromEnv("chartWidth"),pixelWidth:n.getFromEnv("chartHeight"),id:o.args.id,renderer:o.args.renderer,container:o.options.containerElement},i),n.fireChartInstanceEvent("chartRollOver",t))},t.onContainerRollOut=function(e){var t,n=e.chart,o=n.getFromEnv("chartInstance"),a=e.event,i=(0,g.getMouseCoordinate)(n.getFromEnv("chart-container"),a,n);o.ref&&(t=(0,g.extend2)({height:o.args.height,width:o.args.width,pixelHeight:n.getFromEnv("chartWidth"),pixelWidth:n.getFromEnv("chartHeight"),id:o.args.id,renderer:o.args.renderer,container:o.options.containerElement},i),n.fireChartInstanceEvent("chartRollOut",t))},t.winMouseHover=function(e){var n=e.originalEvent,o=n.target||n.originalTarget||n.srcElement||n.relatedTarget||n.fromElement,a=e.data,i=a.getFromEnv("paper"),r={chart:a,event:e.originalEvent};k?i.getById(o.parentNode.raphaelid)||(t.onContainerRollOut(r),a.config.mouseStateIn=!1,b["default"].unlisten(document,"mouseover",t.winMouseHover)):o.viewportElement||(a.config.mouseStateIn=!1,t.onContainerRollOut(r),b["default"].unlisten(window,"mouseover",t.winMouseHover))},t}(o["default"]);t["default"]=G,t._drawDataset=V,t._createToolBox=R,t.configurer=B},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=void 0;(0,r.componentFactory)(e,i["default"],"canvas",e.config.showVolumeChart?2:1);for(var n=0,o=(t=e.getChildren("canvas")).length;n<o;n++)t[n].configure()};var o,a=n(263),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var o=s(n(131)),a=n(118),i=n(122),r=n(125),l=s(n(264));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=Math.max,u=a.preDefStr.miterStr,p=a.preDefStr.noneStr,d=a.preDefStr.ROUND,g=function(e,t,n){return n.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,component:n,label:"group"})};(0,r.addDep)({name:"canvasAnimation",type:"animationRule",extension:l["default"]});var f=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=n;return o.config={},o.config.axes=o.config.axes||[],o.setLinkedItem("axes",[]),o.setLinkedItem("primaryAxis",{}),o.addToEnv("canvasConfig",n.config),n}return c(t,e),t.prototype.getName=function(){return"canvas"},t.prototype.getType=function(){return"canvas"},t.prototype.createGroup=function(){var e=this.getFromEnv("chart"),t=e.getChildContainer(),n=e.getContainer("parentgroup"),o=this.getEffectiveDimensions(),i=this.getFromEnv("chart-attrib"),r=(0,a.pluckNumber)(i.areaovercolumns,1),l=this.getChildContainer("axisReferenceVisualsFloor"),s=this.getChildContainer("axisReferenceVisualsBottom"),c=this.getChildContainer("axisReferenceVisualsMiddle"),h=this.getChildContainer("axisReferenceVisualsTop"),u=this.getChildContainer("axisReferenceVisualsCeil"),p=this.getChildContainer("areaGroup"),d=this.getChildContainer("areaShadowGroup"),f=this.getChildContainer("columnGroup"),m=this.getChildContainer("columnShadowGroup"),b=t.plotGroup,v=[o.left,o.top,o.width,o.height].toString();!this.getContainer("canvasGroup")&&this.addContainer("canvasGroup",g("canvas",n,this)).insertAfter(t.backgroundGroup),s||(s=this.addChildContainer("axisReferenceVisualsBottom",g("axisReferenceVisualsBottom",n,this)).insertAfter(t.axisBottomGroup)),l||(l=this.addChildContainer("axisReferenceVisualsFloor",g("axisReferenceVisualsFloor",n,this)).insertAfter(t.axisBottomGroup)),l.attr({"clip-rect":v}),!this.getChildContainer("crossline")&&this.addChildContainer("crossline",g("crossline",n,this)).insertBefore(t.plotGroup),!this.getChildContainer("crosslineBottom")&&this.addChildContainer("crosslineBottom",g("crosslineBottom",n,this)).insertBefore(t.plotGroup),!this.getChildContainer("crosslineTop")&&this.addChildContainer("crosslineTop",g("crosslineTop",n,this)).insertBefore(t.abovePlotGroup),!this.getChildContainer("datalabelsGroup")&&this.addChildContainer("datalabelsGroup",g("canvasdatalabel",e.getChildContainer("datalabelsGroup"),this)),c||(c=this.addChildContainer("axisReferenceVisualsMiddle",g("axisReferenceVisualsMiddle",n,this)).insertBefore(t.plotGroup)),c.attr({"clip-rect":v}),h||(h=this.addChildContainer("axisReferenceVisualsTop",g("axisReferenceVisualsTop",n,this)).insertBefore(t.datalabelsGroup)),!this.getChildContainer("quadrantGroup")&&this.addChildContainer("quadrantGroup",g("quadrant",n,this)).insertAfter(c),u||this.addChildContainer("axisReferenceVisualsCeil",g("axisReferenceVisualsCeil",n,this)).insertBefore(t.datalabelsGroup),!this.getChildContainer("sumLabelsLayer")&&this.addChildContainer("sumLabelsLayer",t.sumLabelsLayer),m||(m=this.addChildContainer("columnShadowGroup",g("column-shadow-group",b,this))),f||(f=this.addChildContainer("columnGroup",g("column",b,this))),d||(d=this.addChildContainer("areaShadowGroup",g("area-shadow-group",b,this))),p||(p=this.addChildContainer("areaGroup",g("area",b,this))),r?(m.insertBefore(d),f.insertBefore(d)):(d.insertBefore(m),p.insertBefore(m)),!this.getChildContainer("lineShadowGroup")&&this.addChildContainer("lineShadowGroup",g("line-shadow-group",b,this)),!this.getChildContainer("lineGroup")&&this.addChildContainer("lineGroup",g("line",b,this)),!this.getChildContainer("defaultShadowGroup")&&this.addChildContainer("defaultShadowGroup",g("default-shadow-group",b,this)),!this.getChildContainer("defaultGroup")&&this.addChildContainer("defaultGroup",g("default",b,this))},t.prototype.isWithinCanvas=function(e,t){var n=this.config,o=n.canvasLeft,a=o+n.canvasWidth,i=n.canvasTop,r=i+n.canvasHeight;return e>=o&&e<=a&&t>=i&&t<=r},t.prototype.setCanvasPadding=function(){var e,t=this.config;e=this.getCanvasPadding(),t.canvasPaddingLeft=h(t.canvasPaddingLeft,e.paddingLeft||0),t.canvasPaddingRight=h(t.canvasPaddingRight,e.paddingRight||0),t.canvasPaddingTop=h(t.canvasPaddingTop,e.paddingTop||0),t.canvasPaddingBottom=h(t.canvasPaddingBottom,e.paddingBottom||0)},t.prototype.getEffectiveDimensions=function(){var e=this.config;return{left:e.canvasLeft,top:e.canvasTop,width:e.canvasWidth,height:e.canvasHeight,paddingLeft:e.canvasPaddingLeft,paddingTop:e.canvasPaddingTop,paddingRight:e.canvasPaddingRight,paddingBottom:e.canvasPaddingBottom}},t.prototype.setDimension=function(e){var t=this.config;t.canvasTop=e.top,t.canvasLeft=e.left,t.canvasWidth=e.width,t.canvasHeight=e.height},t.prototype.getCanvasPadding=function(){var e,t,n,o,a=this.getFromEnv("chartConfig").canvasWidth,i=this.config.maxPaddingPercent*a/100,r={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return this._mapChildren(function(n){for(t in e=n.getCanvasPadding&&n.getCanvasPadding()||{})e.hasOwnProperty(t)&&(r[t]=h(e[t],r[t]))}),n=r.paddingLeft||0,o=r.paddingRight||0,i<n&&(r.paddingLeft=i),i<o&&(r.paddingRight=i),r},t.prototype.configureAttributes=function(){var e,t,n,o,r,l=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},s=this.getLinkedParent(),c=this.getFromEnv("chartConfig"),u=this.config,p=this.getFromEnv("chart-attrib"),d=this.getFromEnv("color-manager"),g=c.is3D,f=g?a.chartPaletteStr.chart3D:a.chartPaletteStr.chart2D,m=u.isRoundEdges=(0,a.pluckNumber)(p.useroundedges,0),b=(0,a.pluckNumber)(p.showxaxisline,p.showyaxisline,p.showaxislines,0)?0:1;u.canvasBorderRadius=(0,a.pluckNumber)(p.plotborderradius,m?2:0),n=u.showCanvasBorder=Boolean((0,a.pluckNumber)(p.showcanvasborder,b,e,m?0:1)),r=u.oriCanvasBorderThickness=h((0,a.pluckNumber)(p.canvasborderthickness,m?0:(0,a.pluckNumber)(s.canvasborderthickness,2),0)),e=u.canvasBorderWidth=g?0:n?r:0,u.canvasBorderColor=(0,i.convertColor)((0,a.pluck)(p.canvasbordercolor,d.getColor(a.canvasBorderColorStr)),(0,a.pluck)(p.canvasborderalpha,d.getColor("canvasBorderAlpha"))),t=u.canBGAlpha=(0,a.pluck)(p.canvasbgalpha,d.getColor(a.canvasBGAlphaStr)),u.canBGColor={FCcolor:{color:(0,a.pluck)(p.canvasbgcolor,d.getColor(f.canvasBgColor)),alpha:(0,a.pluck)(p.canvasbgalpha,100),angle:(0,a.pluck)(p.canvasbgangle,0),ratio:(0,a.pluck)(p.canvasbgratio)}},o=u.shadow=(0,a.pluckNumber)(p.showshadow,m,0)&&m?{enabled:!0,opacity:t/100}:0,u.shadowOnCanvasFill=o&&o.enabled,u.canvasPadding=(0,a.pluckNumber)(p.canvaspadding,0),u.origCanvasTopPad=(0,a.pluckNumber)(p.canvastoppadding,0),u.origCanvasBottomPad=(0,a.pluckNumber)(p.canvasbottompadding,0),u.origCanvasLeftPad=(0,a.pluckNumber)(p.canvasleftpadding,0),u.origCanvasRightPad=(0,a.pluckNumber)(p.canvasrightpadding,0),Object.assign(u,l),this.config.inputComponents=[],this.config.maxPaddingPercent=12.5,this._mapChildren(function(e){e.getState("removed")||e.getType&&"dataset"===e.getType()||"axisRefVisuals"===e.getType()||e.configure&&e.configure()})},t.prototype.disposeAllInputs=function(){this.config.inputComponents.forEach(function(e){e.dispose()}),this.config.inputComponents.length=0},t.prototype.axisExists=function(e){var t,n=this.getLinkedItem("axes"),o=void 0,a=!1;for(o=0,t=n.length;o<t;o++)if(n[o].axis===e){a=!0;break}return a},t.prototype.attachAxis=function(e,t,n){var o=this.getLinkedItem("axes"),a=t?"yAxis":"xAxis",i=this.getFromEnv(a)||[];return this.axisExists(e)||(o.push({axis:e,isY:t,config:n||{}}),i.push(e),this.addToEnv(a,i)),this},t.prototype.setPrimaryAxis=function(e,t){this.getLinkedItem("primaryAxis")[e]=this.getLinkedItem("axes").find(function(e){return e.axis===t})},t.prototype.getAxes=function(){var e;return Object.keys(e=this.getLinkedItem("primaryAxis")).length?[e.xAxis,e.yAxis]:this.getLinkedItem("axes").slice(0)},t.prototype.detachAxis=function(e,t){var n=this.getLinkedItem("axes"),o=Infinity;return t?n.splice(t,1):(n.forEach(function(t,n){t.axis===e&&(o=n)}),n.splice(o,1))},t.prototype.preDraw=function(){this._mapChildren(function(e){e.getState("removed")||e.preDraw&&e.preDraw()})},t.prototype.draw=function(){this.createGroup(),!this.getFromEnv("chart").config.skipCanvasDrawing&&this.drawCanvas()},t.prototype.drawCanvas=function(){var e,t,n,o,i=this,r=i.getFromEnv("chart"),l=r.isBar,s=r.getFromEnv("dataSource").chart,c=i.getFromEnv("animationManager"),g=r.config,f=i.config,m=f.clip={},b=r.getChildContainer("plotGroup"),v=r.getChildContainer("datalabelsGroup"),y=i.getGraphicalElement("canvasBorderElement"),x=void 0,C=i.getGraphicalElement("canvasElement"),k=void 0,w=f.canvasLeft||(f.canvasLeft=g.canvasLeft),S=f.canvasTop||(f.canvasTop=g.canvasTop),L=f.canvasWidth||(f.canvasWidth=g.canvasWidth),A=f.canvasHeight||(f.canvasHeight=g.canvasHeight),N=f.xDepth=g.xDepth||0,_=f.yDepth=g.yDepth||0,P=i.getContainer("canvasGroup"),F=i.getChildContainer("quadrantGroup"),E=f.canvasBorderRadius,T=f.canvasBorderWidth,D=.5*T,O=f.canvasBorderColor,I=f.canBGColor,M=f.canBGAlpha,R=f.shadow,V=void 0,B=f.showCanvasBG=Boolean((0,a.pluckNumber)(s.showcanvasbg,1)),G=f.shadowOnCanvasFill,j=f.showCanvasBorder;t=I,V={x:w-D,y:S-D,width:L+T,height:A+T,r:E,"stroke-width":T,stroke:O,"stroke-linejoin":T>2?d:u},j?(y&&y.show(),x=c.setAnimation({el:y||"rect",component:i,attr:{x:w-D,y:S-D,width:L+T,height:A+T,r:E,"stroke-width":T,stroke:O,"stroke-linejoin":T>2?d:u},label:"rect",container:P}).shadow(R),y||i.addGraphicalElement("canvasBorderElement",x)):y&&(i.removeGraphicalElement(y),c.setAnimation({el:y,component:i,callback:function(){y.hide()}})),n=j?0:f.oriCanvasBorderThickness,m["clip-canvas"]=[h(0,w-N-n),h(0,S-_-n),h(1,L+2*N+2*n),h(1,A+_+2*n)],m["clip-sum-value"]=[h(0,w-N),l?S:0,h(1,l?g.width-w:L+2*N),h(1,l?A+_:S+A)],m["clip-canvas-init"]=[h(0,w-N),h(0,S-_),1,h(1,A+2*_)],e=m["clip-canvas"].slice(0),o=function(e,t){c.setAnimation({el:e,attr:{"clip-rect":t},label:"container",component:i,state:e.attrs["clip-rect"]?"updating":"appearing"})},g.skipClipping||(o(b,e),o(v,e),o(F,e),o(i.getChildContainer("sumLabelsLayer"),m["clip-sum-value"])),B?(V={x:w,y:S,width:L,height:A,r:E,"stroke-width":0,stroke:p,fill:(0,a.toRaphaelColor)(t)},C&&C.show(),k=c.setAnimation({el:C||"rect",attr:V,label:"rect",container:P,component:i}),C||i.addGraphicalElement("canvasElement",k),G?k.shadow({opacity:M/100}):k.shadow(!1)):C&&c.setAnimation({el:C,component:i,callback:function(){C.hide()}})},t}(o["default"]);t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"initial.canvas.canvas":function(){return{"rect.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"}]},"*":null}},"update.canvas.canvas":{"rect.updating":[{slot:"middle"}]}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118),a=n(122),i=s(n(131)),r=n(125),l=s(n(266));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=Math.max,u=Math.min,p=Math.ceil;(0,r.addDep)({name:"captionAnimation",type:"animationRule",extension:l["default"]});var d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"caption"},t.prototype.getName=function(){return"caption"},t.prototype.configure=function(){var e=this.getFromEnv("chart"),t=e.getFromEnv("chart-attrib"),n=this.config||{},i=e.getFromEnv("style"),r=i.outCanfontFamily,l=i.outCancolor,s=i.fontSize,c=["top","center"];switch(this.config.text=(0,o.parseUnsafeString)(t.caption),n.style={fontFamily:(0,o.pluck)(t.captionfont,r),color:(0,a.convertColor)((0,o.pluck)(t.captionfontcolor,l).replace(/^#? ([a-f0-9]+)/gi,"#$1")),fontSize:(0,o.pluckNumber)(t.captionfontsize,s+3)+"px",fontWeight:0===(0,o.pluckNumber)(t.captionfontbold)?o.NORMAL:o.BOLD},n.align||(n.align=""),n.align=(0,o.pluck)(t.captionposition,t.captionalignment,"center"),n.align&&((c=n.align.split("-"))[0]&&(c[0]=c[0].toLowerCase()),c[1]&&(c[1]=c[1].toLowerCase()),c.length<2&&(c[1]=c[0])),c[0]){case"top":n.isOnTop=1;break;case"bottom":n.isOnTop=0;break;default:n.isOnTop=(0,o.pluckNumber)(t.captionontop,1)}switch(c[1]){case"right":n.align="end";break;case"left":n.align="start";break;default:n.align="middle"}n.isOnLeft=!(0,o.pluckNumber)(t.captiononright,0),n.captionPosition=(0,o.getValidValue)(t.captionposition,"top").toLowerCase(),n.alignWithCanvas=(0,o.pluckNumber)(t.aligncaptionwithcanvas,e.config.alignCaptionWithCanvas,1),n.horizontalPadding=(0,o.pluckNumber)(t.captionhorizontalpadding,n.alignWithCanvas?0:15),n.drawCaption=!0,(0,o.setLineHeight)(n.style)},t.prototype.allocatePosition=function(){this.getFromEnv("chart")._manageCaptionPosition()},t.prototype.draw=function(){var e,t=this.getFromEnv("chart"),n=t.config,a=t.getFromEnv("animationManager"),i=t.config.textDirection,r=t.getChildContainer().captionGroup,l=t.getFromEnv("smartLabel"),s=this.getGraphicalElement("captionElement"),c=this.getFromEnv("toolTipController"),h=this.config,u=h.style,p=h.text,d=h.x,g=h.align;p?(e={text:h.text,fill:u.color,x:d,y:h.y,"text-anchor":g||"middle","vertical-align":h.verticalAlign||"top",visibility:h.drawCaption?o.visibleStr:o.hiddenStr,direction:i},(s=this.addGraphicalElement("captionElement",a.setAnimation({el:s||"text",attr:e,container:r,state:void 0,component:this,label:"text"}))).css(u),n.showtooltip?c.enableToolTip(s,h.originalText):c.disableToolTip(s),l&&(l.useEllipsesOnOverflow(n.useEllipsesWhenOverflow),l.setStyle(u))):s&&a.setAnimation({el:s,component:this,callback:function(){this.hide()},doNotRemove:!0}),n.savedCaption=s},t.prototype.manageSpace=function(e,t){var n,a,i,r,l,s=this.getFromEnv("chart"),c=s.config,d=s.getChildren("caption")[0],g=s.getChildren("subCaption")[0],f=d.config,m=g.config,b=s.getFromEnv("dataSource").chart,v=s.getFromEnv("smartLabel"),y=e,x=(0,o.parseUnsafeString)(b.caption),C=(0,o.parseUnsafeString)(b.subcaption),k=(0,o.pluckNumber)(b.captionpadding,10),w=k,S=!1,L=0,A=0,N=0,_=0,P=0,F=s.getChildren("canvas"),E=h(F&&F[0].config.canvasBorderThickness,0),T=0,D=0;return y>3?(k<E&&(k=E+2),x!==o.BLANKSTRING&&(i=f.style,_=p((0,o.pluckNumber)(parseFloat(i.fontHeight,10),parseFloat(i.lineHeight,10),12))),C!==o.BLANKSTRING&&(l=m.style,P=(0,o.pluckNumber)(parseInt(l.fontHeight,10),parseInt(l.lineHeight,10),12)),(_>0||P>0)&&((L=_+P+k)>(y=h(y,0))?(S=!0,(A=y-L)<k?k=h(A,5):(A-=k,k=0,P>A?(N=P-A+10,P=0,m._originalText=m.text,m.text=o.BLANKSTRING):(A-=P,P=0,_>A&&(N=_-A)))):N=y-L,v.useEllipsesOnOverflow(c.useEllipsesWhenOverflow),_>0&&(v.setStyle(i),N=(_+=N)-(n=v.getSmartText(x,t,_)).height,f.height=_=n.height,f.text=n.text,f.originalText=!!n.tooltext&&n.tooltext,T=n.width),P>0&&(v.setStyle(l),N=(P+=N)-(a=v.getSmartText(C,t,P)).height,P=a.height,m.text=a.text,m.height=a.height,m.originalText=!!a.tooltext&&a.tooltext,D=a.width),S&&N>0&&(k+=u(w-k,N)),f.captionPadding=k,f.height=_,f.width=T,m.width=D,m.height=P,L=_+P+k),L>c.canvasHeight?(L=0,f.drawCaption=!1):f.drawCaption=!0,r=f.isOnTop?{top:L}:{bottom:L,top:5}):(r={bottom:0,top:0},f.drawCaption=!1),r},t.prototype.setDimention=function(e){var t=this.config;t.x=e.x,t.y=e.y},t}(i["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"initial.caption.caption":function(){return{"text.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"}]}}}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118),a=n(122),i=s(n(265)),r=n(125),l=s(n(268));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=Math.max;(0,r.addDep)({name:"subcaptionAnimation",type:"animationRule",extension:l["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"caption"},t.prototype.getName=function(){return"subCaption"},t.prototype.configure=function(){var e=this.getFromEnv("chart"),t=e.getFromEnv("chart-attrib"),n=this.config||{},i=e.getFromEnv("style"),r=e.getChildren("caption")[0],l=i.outCanfontFamily,s=i.outCancolor,c=i.fontSize,u=["top","center"];switch(n.text=(0,o.parseUnsafeString)(t.subcaption),n.align||(n.align=""),n.align=(0,o.pluck)(t.captionposition,t.captionalignment,"center"),r.config.align&&((u=r.config.align.split("-"))[0]&&(u[0]=u[0].toLowerCase()),u[1]&&(u[1]=u[1].toLowerCase()),u.length<2&&(u[1]=u[0])),u[0]){case"top":n.isOnTop=1;break;case"bottom":n.isOnTop=0;break;default:n.isOnTop=(0,o.pluckNumber)(t.captionontop,1)}n.alignWithCanvas=(0,o.pluckNumber)(e.aligncaptionwithcanvas,t.aligncaptionwithcanvas,1),n.horizontalPadding=(0,o.pluckNumber)(t.captionhorizontalpadding,r.config.alignWithCanvas?0:15),n.style={fontFamily:(0,o.pluck)(t.subcaptionfont,t.captionfont,l),color:(0,a.convertColor)((0,o.pluck)(t.subcaptionfontcolor,t.captionfontcolor,s).replace(/^#? ([a-f0-9]+)/gi,"#$1")),fontSize:(0,o.pluckNumber)(t.subcaptionfontsize,(0,o.pluckNumber)(h((0,o.pluckNumber)(t.captionfontsize)-3,-1),c)+(0,o.pluckNumber)(e.subTitleFontSizeExtender,1))+"px",fontWeight:0===(0,o.pluckNumber)(t.subcaptionfontbold,e.subTitleFontWeight,t.captionfontbold)?o.NORMAL:o.BOLD},(0,o.setLineHeight)(n.style)},t.prototype.draw=function(){var e=this.getFromEnv("chart"),t=e.getFromEnv("animationManager"),n=e.getChildren("caption")[0],a=e.config,i=a.textDirection,r=e.getChildContainer().captionGroup,l=this.getGraphicalElement("subCaptionElement"),s=this.getFromEnv("toolTipController"),c=this.config,h=c.style,u=c.text,p=n.config.align,d=void 0;u?(d={text:c.text,fill:h.color,x:c.x,y:c.y,"text-anchor":p||"middle","vertical-align":"top",direction:i,visibility:n.config.drawCaption?o.visibleStr:o.hiddenStr},(l=this.addGraphicalElement("subCaptionElement",t.setAnimation({el:l||"text",attr:d,container:r,state:void 0,component:this,hookFn:function(){this.css(h)},label:"text"}))).css(h),a.showtooltip?s.enableToolTip(l,c.originalText):s.disableToolTip(l)):l&&this.removeGraphicalElement(l),a.savedSubCaption=l},t.prototype.setDimention=function(e){this.config.x=e.x,this.config.y=e.y},t}(i["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(266),i=(o=a)&&o.__esModule?o:{"default":o};t["default"]={"initial.caption.subCaption":i["default"]["initial.caption.caption"]}},function(e,t,n){"use strict";t.__esModule=!0;var o=s(n(131)),a=n(118),i=n(122),r=n(125),l=s(n(270));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h="BackgroundLoaded",u="BackgroundLoadError",p="none",d=function(e){var t=e.config;return{load:function(){var n=t.bgImageDisplayMode,o=t.bgImageVAlign,a=t.bgImageHAlign,i=t.bgImageScale,r=t.bgSWFAlpha,l=t.bgSWF,s=e.getGraphicalElement("backgroundImage")._.RefImg;e.getFromEnv("chart").fireChartInstanceEvent(h,{url:l,bgImageAlpha:r,bgImageDisplayMode:n,bgImageVAlign:o,bgImageHAlign:a,bgImageScale:i,imageheight:s.height,imagewidth:s.width})},error:function(n){var o=t.bgImageDisplayMode,a=t.bgImageVAlign,i=t.bgImageHAlign,r=t.bgImageScale,l=t.bgSWFAlpha,s=t.bgSWF;e.getFromEnv("chart").fireChartInstanceEvent(u,{url:s,bgImageAlpha:l,error:n,bgImageDisplayMode:o,bgImageVAlign:a,bgImageHAlign:i,bgImageScale:r})}}};(0,r.addDep)({name:"backgroundAnimation",type:"animationRule",extension:l["default"]});var g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.config.handler=d(n),n}return c(t,e),t.prototype.getName=function(){return"background"},t.prototype.getType=function(){return"background"},t.prototype._getBackgroundCosmetics=function(){var e=this.getFromEnv("chart-attrib"),t=this.getFromEnv("color-manager"),n=this.getFromEnv("chartConfig").is3D?a.chartPaletteStr.chart3D:a.chartPaletteStr.chart2D;return{FCcolor:{color:(0,a.pluck)(e.bgcolor,t.getColor(n.bgColor)),alpha:(0,a.pluck)(e.bgalpha,t.getColor(n.bgAlpha)),angle:(0,a.pluck)(e.bgangle,t.getColor(n.bgAngle)),ratio:(0,a.pluck)(e.bgratio,t.getColor(n.bgRatio))}}},t.prototype.configureAttributes=function(){var e,t,n,o=this.config,r=this.getFromEnv("chart-attrib"),l=this.getFromEnv("chartConfig"),s=l.is3D,c=this.getFromEnv("color-manager"),h=o.bgImageDisplayMode=(0,a.pluck)(r.bgimagedisplaymode,"none").toLowerCase();o.bgSWF=(0,a.pluck)(r.bgimage,r.bgswf),o.bgSWFAlpha=(0,a.pluckNumber)(r.bgimagealpha,r.bgswfalpha,100),e=o.showBorder=(0,a.pluckNumber)(r.showborder,l.showBorder,s?0:1),o.borderWidth=Math.max(e?(0,a.pluckNumber)(r.borderthickness,1):0,0),o.borderRadius=(0,a.pluckNumber)(r.borderradius,0),o.borderDashStyle=(0,a.pluckNumber)(r.borderdashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(r.borderdashlen,4),(0,a.pluckNumber)(r.borderdashgap,2),void 0):p,o.borderAlpha=(0,a.pluck)(r.borderalpha,s?"100":c&&c.getColor("borderAlpha")),o.borderColor=(0,i.convertColor)((0,a.pluck)(r.bordercolor,s?"#666666":c&&c.getColor("borderColor")),o.borderAlpha),o.bgImageVAlign=t=(0,a.getValidValue)(r.bgimagevalign,"").toLowerCase(),o.bgImageHAlign=n=(r.bgimagehalign||"").toLowerCase(),o.bgImageScale=(0,a.pluckNumber)(r.bgimagescale,100),o.containerBackgroundColor=(0,a.getContainerBackgroundColor)(this.getFromEnv("chartInstance")),o.backgroundColor=this._getBackgroundCosmetics(),"tile"===h||"fill"===h||"fit"===h?("top"!==t&&"middle"!==t&&"bottom"!==t&&(o.bgImageVAlign="middle"),"left"!==n&&"middle"!==n&&"right"!==n&&(o.bgImageHAlign="middle")):("top"!==t&&"middle"!==t&&"bottom"!==t&&(o.bgImageVAlign="top"),"left"!==n&&"middle"!==n&&"right"!==n&&(o.bgImageHAlign="left"))},t.prototype.draw=function(){var e,t,n,o,i,r,l=this.getFromEnv("paper"),s=this.getGraphicalElement("backgroundElement"),c=this.getGraphicalElement("borderElement"),h=this.config,u=this.getFromEnv("chart"),p=this.getFromEnv("chartConfig"),d=h.backgroundColor,g=this.getFromEnv("animationManager"),f=this.getGraphicalElement("backgroundImage"),m=h.bgSWF,b=u.getChildContainer("backgroundGroup"),v=p.width,y=p.height,x=h.borderWidth||0,C=h.borderRadius,k=h.borderDashStyle,w=h.borderColor,S=h.bgSWFAlpha,L=x+","+x+","+(v-2*x)+","+(y-2*x),A=h.bgImageDisplayMode,N=h.bgImageVAlign,_=h.bgImageHAlign,P=h.bgImageScale;l.canvas.style.backgroundColor=h.containerBackgroundColor,i=y-2*x,n={x:x,y:x,width:(r=v-2*x)<0?0:r,height:i>0?i:0,stroke:a.preDefStr.noneStr,fill:(0,a.toRaphaelColor)(d)},(e=g.setAnimation({el:s||"rect",attr:n,container:b,component:this,label:"rect"})).show(),s||this.addGraphicalElement("backgroundElement",e),i=y-x,n={x:x/2,y:x/2,width:(r=v-x)<0?0:r,height:i>0?i:0,stroke:w,"stroke-width":x,"stroke-dasharray":k,fill:a.preDefStr.noneStr,r:C||0},(t=g.setAnimation({el:c||"rect",attr:n,container:b,component:this,label:"rect"})).show(),c||this.addGraphicalElement("borderElement",t),m&&!this.getState("removed")?((o=g.setAnimation({el:f||"imagegrid",attr:{imagegrid:[A,N,_,P,x,v,y],src:m,opacity:.01*S,"clip-rect":L},container:b,component:this,label:"imagegrid"})).show(),f||(this.addGraphicalElement("backgroundImage",o),o.on("load",h.handler.load),o.on("error",h.handler.error))):f&&this.removeGraphicalElement(f)},t}(o["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"initial.background.background":function(){return{"rect.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"}]}}}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118),a=n(122),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}(n(272));function r(e,t){var n,o,i,r,l,s,h,u,p,d,g,f=[],m=c.stringConstants;if((t=(t=t.replace(/\s/g,m.BLANK)).toLowerCase())===m.BLANK||null===t||void 0===t)f=[e];else for(i=t.split(m.COMMASTRING),r=e.split(m.COMMASTRING),l=Math.max(i.length,r.length,1),s=i[0],h=r[0],d=/[\{\}]/gi,g=0;g<l;g++)u=(i[g]||s).replace(d,""),p=r[g]||h,"color"===u?f.push(p):"light"===u.substr(0,5)?(o=100-(o=-1===(n=u.indexOf("-"))?1:u.substr(n+1,u.length-n)),f.push((0,a.getLightColor)(p,o))):"dark"===u.substr(0,4)?(o=100-(o=-1===(n=u.indexOf("-"))?1:u.substr(n+1,u.length-n)),f.push((0,a.getDarkColor)(p,o))):f.push(u);return f}function l(e,t){var n,a,i=e.toString().split(c.stringConstants.COMMASTRING),r=[],l=100;for(a=0;a<t;a++)n=(0,o.pluckNumber)(i[a]),c.defined(n)&&(l=n),r[a]=l;return r.join()}function s(e,t){var n,o,a=e.split(c.stringConstants.COMMASTRING),i=[],r=0;for(o=0;o<t;o++)n=a[o],n=(n=isNaN(n)||void 0===n?0:Math.abs(Number(n)))>100?100:n,i[o]=n,r+=n;if(r=r>100?100:r,a.length<t)for(o=a.length;o<t;o++)i[o]=(100-r)/(t-a.length);return i[-1]=0,i.join()}var c=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.parseColorMix=r,this.parseAlphaList=l,this.parseRatioList=s,this.linkedItems={iapi:t},this.configure(),this.paletteColors=["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"]}return e.prototype.configure=function(){var t=this,n=e.stringConstants,r=t.linkedItems.iapi,l=r.getFromEnv("dataSource").chart||{},s=t.paletteOptions=(0,o.extend2)((0,o.extend2)({},i),r.defaultPaletteOptions||{},!1,!0),c=t.themeEnabled=l.palettethemecolor;t.paletteIndex=(l.palette>0&&l.palette<6?l.palette:(0,o.pluckNumber)(r.paletteIndex,1))-1,t.iterator=0,t.paletteColors=s.paletteColors[t.themeEnabled?0:t.paletteIndex],e.defined(l.palettecolors)&&l.palettecolors!==n.BLANK&&(t.paletteColors=l.palettecolors.split(/\s*\,\s*/)),t.paletteLen=t.paletteColors.length,t.useFlatColors=(0,o.pluckNumber)(l.useflatdataplotcolor,r.useFlatColor,0),c&&(t.paletteIndex=5,s.bgColor[5]=(0,a.getLightColor)(c,35)+n.COMMASTRING+(0,a.getLightColor)(c,10),s.bgAngle[5]=270,s.bgRatio[5]=n.BGRATIOSTRING,s.bgAlpha[5]="50,50",s.canvasBgColor[5]=n.COLOR_WHITE,s.canvasBgAngle[5]=0,s.canvasBgAlpha[5]=n.HUNDREDSTRING,s.canvasBgRatio[5]=n.BLANK,s.canvasBorderColor[5]=(0,a.getDarkColor)(c,80),s.canvasBorderAlpha[5]=100,s.showShadow[5]=1,s.divLineColor[5]=(0,a.getDarkColor)(c,20),s.divLineAlpha[5]=40,s.altHGridColor[5]=(0,a.getLightColor)(c,20),s.altHGridAlpha[5]=15,s.altVGridColor[5]=(0,a.getLightColor)(c,80),s.altVGridAlpha[5]=10,s.anchorBgColor[5]=n.COLOR_WHITE,s.toolTipBgColor[5]=n.COLOR_WHITE,s.toolTipBorderColor[5]=(0,a.getDarkColor)(c,80),s.baseFontColor[5]=c.split&&c.split(n.COMMASTRING)[0],s.borderColor[5]=(0,a.getDarkColor)(c,60),s.borderAlpha[5]=50,s.legendBgColor[5]=n.COLOR_WHITE,s.legendBorderColor[5]=(0,a.getDarkColor)(c,80),s.plotGradientColor[5]=n.COLOR_WHITE,s.plotBorderColor[5]=(0,a.getDarkColor)(c,85),s.plotFillColor[5]=(0,a.getDarkColor)(c,85),s.bgColor3D[5]=n.COLOR_WHITE,s.bgAlpha3D[5]=n.HUNDREDSTRING,s.bgAngle3D[5]=90,s.bgRatio3D[5]=n.BLANK,s.canvasBgColor3D[5]=(0,a.getLightColor)(c,20),s.canvasBaseColor3D[5]=(0,a.getLightColor)(c,40),s.divLineColor3D[5]=(0,a.getDarkColor)(c,20),s.divLineAlpha3D[5]=40,s.legendBgColor3D[5]=n.COLOR_WHITE,s.legendBorderColor3D[5]=(0,a.getDarkColor)(c,80),s.toolTipbgColor3D[5]=n.COLOR_WHITE,s.toolTipBorderColor3D[5]=(0,a.getDarkColor)(c,80),s.baseFontColor3D[5]=c.split&&c.split(n.COMMASTRING)[0],s.anchorBgColor3D[5]=n.COLOR_WHITE,s.tickColor&&(s.tickColor[5]=(0,a.getDarkColor)(c,90)),s.trendDarkColor&&(s.trendDarkColor[5]=(0,a.getDarkColor)(c,90)),s.trendLightColor&&(s.trendLightColor[5]=(0,a.getLightColor)(c,s.TrendLightShadeOffset)),s.msgLogColor&&(s.msgLogColor[5]=(0,a.getLightColor)(c,80)),s.dialColor&&(s.dialColor[5]=(0,a.getDarkColor)(c,95)+",FFFFFF,"+(0,a.getDarkColor)(c,95)),s.dialBorderColor&&(s.dialBorderColor[5]=(0,a.getDarkColor)(c,95)+",FFFFFF,"+(0,a.getDarkColor)(c,95)),s.pivotColor&&(s.pivotColor[5]=(0,a.getLightColor)(c,95)+",FFFFFF,"+(0,a.getLightColor)(c,95)),s.pivotBorderColor&&(s.pivotBorderColor[5]=(0,a.getDarkColor)(c,95)+",FFFFFF,"+(0,a.getDarkColor)(c,95)),s.pointerBorderColor&&(s.pointerBorderColor[5]=(0,a.getDarkColor)(c,75)),s.pointerBgColor&&(s.pointerBgColor[5]=(0,a.getDarkColor)(c,75)),s.thmBorderColor&&(s.thmBorderColor[5]=(0,a.getDarkColor)(c,90)),s.thmFillColor&&(s.thmFillColor[5]=(0,a.getLightColor)(c,55)),s.gaugeBorderColor&&(s.gaugeBorderColor[5]=(0,a.getDarkColor)(c,90)),s.gaugeFillColor&&(s.gaugeFillColor[5]=(0,a.getLightColor)(c,55)),s.cylFillColor&&(s.cylFillColor[5]=(0,a.getLightColor)(c,55)),s.periodColor&&(s.periodColor[5]=(0,a.getLightColor)(c,10)),s.winColor&&(s.winColor[5]="666666"),s.lossColor&&(s.lossColor[5]="CC0000"),s.drawColor&&(s.drawColor[5]="666666"),s.scorelessColor&&(s.scorelessColor[5]="FF0000"),s.gridColor&&(s.gridColor[5]=(0,a.getLightColor)(c,30)),s.categoryBgColor&&(s.categoryBgColor[5]=(0,a.getLightColor)(c,10)),s.dataTableBgColor&&(s.dataTableBgColor[5]=(0,a.getLightColor)(c,10)),s.gridResizeBarColor&&(s.gridResizeBarColor[5]=(0,a.getDarkColor)(c,90)),s.scrollBarColor&&(s.scrollBarColor[5]=(0,a.getLightColor)(c,50)))},e.prototype.getColor=function(e){return this.paletteOptions[e][this.paletteIndex]},e.prototype.getPlotColor=function(e){var t=this,n=t.paletteColors,o=t.useFlatColors?t.getColor("plotFillColor"):n[e%t.paletteLen];return o||(t.iterator===t.paletteLen&&(t.iterator=0),o=n[t.iterator],t.iterator+=1),o},e}();c.stringConstants={BLANK:"",COMMASTRING:",",BGRATIOSTRING:"0,100",COLOR_WHITE:"FFFFFF",HUNDREDSTRING:"100"},c.defined=function(e){return void 0!==e&&null!==e},t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0;var o=["AFD8F8","F6BD0F","8BBA00","FF8E46","008E8E","D64646","8E468E","588526","B3AA00","008ED6","9D080D","A186BE","CC6600","FDC689","ABA000","F26D7D","FFF200","0054A6","F7941C","CC3300","006600","663300","6DCFF6"];t.paletteColors=[o,o,o,o,o],t.bgColor=["CBCBCB,E9E9E9","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],t.bgAngle=[270,270,270,270,270],t.bgRatio=["0,100","0,100","0,100","0,100","0,100"],t.bgAlpha=["50,50","60,50","40,20","20,10","30,30"],t.canvasBgColor=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.canvasBgAngle=[0,0,0,0,0],t.canvasBgAlpha=["100","100","100","100","100"],t.canvasBgRatio=["","","","",""],t.canvasBorderColor=["545454","545454","415D6F","845001","68001B"],t.canvasBorderAlpha=[100,100,100,90,100],t.showShadow=[0,1,1,1,1],t.divLineColor=["717170","7B7D6D","92CDD6","965B01","68001B"],t.divLineAlpha=[40,45,65,40,30],t.altHGridColor=["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"],t.altHGridAlpha=[50,35,10,20,15],t.altVGridColor=["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],t.altVGridAlpha=[10,20,10,15,10],t.anchorBgColor=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.toolTipBgColor=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.toolTipBorderColor=["545454","545454","415D6F","845001","68001B"],t.baseFontColor=["555555","60634E","025B6A","A15E01","68001B"],t.borderColor=["767575","545454","415D6F","845001","68001B"],t.borderAlpha=[50,50,50,50,50],t.legendBgColor=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.legendBorderColor=["545454","545454","415D6F","845001","D55979"],t.plotGradientColor=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.plotBorderColor=["333333","8A8A8A","FFFFFF","FFFFFF","FFFFFF"],t.plotFillColor=["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],t.bgColor3D=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.bgAlpha3D=["100","100","100","100","100"],t.bgAngle3D=[90,90,90,90,90],t.bgRatio3D=["","","","",""],t.canvasBgColor3D=["DDE3D5","D8D8D7","EEDFCA","CFD2D8","FEE8E0"],t.canvasBaseColor3D=["ACBB99","BCBCBD","C8A06C","96A4AF","FAC7BC"],t.divLineColor3D=["ACBB99","A4A4A4","BE9B6B","7C8995","D49B8B"],t.divLineAlpha3D=[100,100,100,100,100],t.legendBgColor3D=["F0F3ED","F3F3F3","F7F0E8","EEF0F2","FEF8F5"],t.legendBorderColor3D=["C6CFB8","C8C8C8","DFC29C","CFD5DA","FAD1C7"],t.toolTipbgColor3D=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],t.toolTipBorderColor3D=["49563A","666666","49351D","576373","681C09"],t.baseFontColor3D=["49563A","4A4A4A","49351D","48505A","681C09"],t.anchorBgColor3D=["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"]},function(e,t,n){"use strict";t.__esModule=!0;var o=n(274),a=l(n(275)),i=l(n(277)),r=n(279);function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.configure=function(t,n,a,r){var l,s,c=this.config;e.prototype.configure.call(this,t,void 0,n,a),c.chartId=r,c.rawContextDefinitation=void 0,(s=new i["default"]).configure(c.position,r),c.listContainerManager=s.init(a),l=c.listContainerManager.getFirstContainer(),c.evt.hover=[function(e){l.show((0,o.normalizeTarget)(e.target||e.fromElement,e))},function(e){l.hide(300,e.target)}]},t.prototype.getListRefernce=function(){return this.config.listContainerManager},t.prototype.attachEventHandler=function(e){var t=this.config.evt,n=e.tooltext;n&&(t.tooltext=n)},t.prototype.getLogicalSpace=function(){var e=this.config.listContainerManager.getFirstContainer().config.atomicLists;return e&&0===e.length?{width:0,height:0}:a["default"].prototype.getLogicalSpace.call(this)},t.prototype.draw=function(){var e,n=this.config,o=n.listContainerManager.getFirstContainer().config.atomicLists;return o&&0===o.length?(this.hide(),{getBBox:function(){return{width:0,height:0}}}):(e=a["default"].prototype.draw.apply(this,arguments),t.allNodes.push(n.node),e)},t.prototype.dispose=function(){var e=this.config;e.listContainerManager&&e.listContainerManager.dispose(),e.listContainerManager=void 0,a["default"].prototype.dispose.call(this)},t}(a["default"]);c.POSITION_TOP=r.POSITION_TOP,c.POSITION_BOTTOM=r.POSITION_BOTTOM,c.allNodes=r.allNodes,t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0,t.SymbolStore=t.RSymbolFns=t.getEventHandlersFor=t.mergeConf=t.normalizeTarget=t.isDIV=t.hashCode=undefined;var o,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(120),r=(o=i)&&o.__esModule?o:{"default":o};var l=(0,n(125).getDep)("redraphael","plugin"),s=void 0,c={CB_NOT_CHECKED:function(e,t,n){return["M",e-n,t-n]},CB_CHECKED:function(e,t,n){var o=n/4;return["M",e-3*o,t,"L",e-o,t+n,e+n,t-n]}},h=(l.addSymbol("Internal_CB",c.CB_NOT_CHECKED),{register:function(){var e,t,n,o;if(1===arguments.length){if(null===(n=arguments[0])&&n===s||"object"!==(void 0===n?"undefined":a(n)))return;o=n}else{if(!(arguments.length>1))return;if(e=arguments[0],t=arguments[1],"string"!=typeof e||"function"!=typeof t)return;(o={})[e]=t}for(e in o)t=o[e],{}.hasOwnProperty.call(o,e)&&l.addSymbol(e,t)}});t.hashCode=function(e){return"number"==typeof e&&(e="'"+e+"'"),e.split("").reduce(function(e,t){return(e=(e<<5)-e+t.charCodeAt(0))&e},0)},t.isDIV=function(e){return!(!e||!e.nodeName||"DIV"!==e.nodeName.toUpperCase())},t.normalizeTarget=function(e,t){var n;return e.getBBox?e:(n=e.getBoundingClientRect(),e.getBBox=function(){return{x:t.x,y:t.y,width:n.right-n.left,height:n.bottom-n.top,isArtificial:!0}},e)},t.mergeConf=function(e,t,n){var o,a;for(o in e)if((a=e[o])!==s&&null!==a)if(n){if(t[o])continue;t[o]=a}else t[o]=a},t.getEventHandlersFor=function(e,t){var n=function(){r["default"].listen(t,"mousemove",function(e){e.originalEvent.stopPropagation()})};switch(e){case"click":return function(e){r["default"].listen(t,"click",function(t){t.target&&t.target.parentNode&&e.call(t.target)}),n()};case"hover":return function(e,o){r["default"].listen(t,"pointerhover",function(t){t.target&&t.target.parentNode&&("start"===t.state?e:o).call(t.target)}),n()}}},t.RSymbolFns=c,t.SymbolStore=h},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(118),i=n(122),r=n(274),l=n(276),s=n(131);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.configure=function(e,t,n,o,i){var r=this.config;r.symbol=e,r._id="TB_SYMBOL"+(n||0),r.node=void 0,r.pId=o,r.isPlaintext=t,r.chartId=i,r.conf={btnTextStyle:{"stroke-width":"1px",stroke:"none"}},r.evt={tooltext:void 0,click:a.stubFN,hover:[a.stubFN,a.stubFN]}},t.prototype.registerSymbol=function(e){var t=this.config;r.SymbolStore.register(t.symbol,e)},t.prototype._setConfiguaration=function(e){var t=this.config;t.conf?(0,r.mergeConf)(e,t.conf,!0):t.conf=e},t.prototype.attachEventHandlers=function(e,t){var n,o=this,i=this.config,r=o.config.evt,l=e.tooltext,s=e.click||a.stubFN,c=e.hover,h=t&&t.click||a.stubFN;return n="function"==typeof s?function(){h(),s.apply(o,arguments)}:function(){var e=s.fn,t=s.context,n=(s.args||[]).slice(0);s.hasOwnProperty("context")?n.push(o):t=o,[].push.apply(n,arguments),h(),e.apply(t,n)},l&&(r.tooltext=l),r.click=n,c&&c instanceof Array&&(r.hover=c),i.node&&(i.node.buttonclick(i.evt.click).hover(i.evt.hover[0],i.evt.hover[1]),o.getFromEnv("toolTipController").enableToolTip(i.node,i.evt.tooltext)),this},t.prototype.getLogicalSpace=function(){var e=this.config;return{width:(e=e.conf||e.buttonConfig).width*(e.scale||1),height:e.height*(e.scale||1)}},t.prototype.show=function(){var e=this.config,t=e.node;e.display="block",t&&t.css({display:"block"})},t.prototype.hide=function(){var e=this.config,t=e.node;e.display="none",t&&t.css({display:"none"})},t.prototype.draw=function(e,t,n){var o,a,r,s,c=this.config,h=c.conf||{},u=l.ToolBarFactoryHelper.getComponentPool(c.chartId),p=u.getKeys(),d=l.ToolBarFactoryHelper.getOptions(c.chartId).chart,g=d.getFromEnv("animationManager"),f=d.getFromEnv("toolTipController");return c.isPlaintext?r=c.symbol:a=c.symbol,void 0!==n.idCount&&(c._id+=n.idCount),s=u.getComponent(c._id,c.pId,p.KEY_BUTTON,!0),o=c.node=s(e,t,r,a,{width:h.width*h.scale,height:h.height*h.scale,r:h.radius,verticalPadding:h.symbolVPadding*h.scale,horizontalPadding:h.symbolHPadding},n.parentLayer).labelcss(c.conf.btnTextStyle),c.display&&c.node.css({display:c.display})&&(c.display=void 0),g.setAnimation({el:c.node,attr:{"button-label":r,"button-padding":[h.symbolHPadding,h.symbolVPadding*h.scale],"button-repaint":[e,t,h.width*h.scale,h.height*h.scale,h.radius*h.scale]},state:"updating",component:this,label:"button"}),n.isResize||(h.hoverFill?h.hoverFill=(0,i.convertColor)(h.hoverFill):h.hoverFill=(0,i.convertColor)((0,i.getLightColor)((0,i.rawRGBtoHEX)(h.fill),80)),o.attr({fill:[h.fill,h.labelFill,h.symbolFill,h.hoverFill,!0],stroke:[h.stroke,h.symbolStroke],"stroke-width":[h.strokeWidth,h.symbolStrokeWidth]}).buttonclick(c.evt.click).hover(c.evt.hover[0],c.evt.hover[1]),u.getCreationStatus()||(c.node.unclick(),c.node.buttonclick(c.evt.click))),f.enableToolTip(o,c.evt.tooltext),o.getBBox=function(){return{x:e,y:t,width:h.width*h.scale,height:h.height*h.scale}},o},t.prototype.dispose=function(){var e=this.config,t=e.node;t&&t.remove(),e.node=void 0},t}(((o=s)&&o.__esModule?o:{"default":o})["default"]);t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0,t.ToolBarFactoryHelper=t.defTextStyle=t.defaultHToolbarConf=t.defaultGroupConf=undefined;var o=n(122),a={hPadding:3,vPadding:3,borderRadius:2,fill:(0,o.convertColor)("DBDBDB",100),borderColor:(0,o.convertColor)("B2B1B1",100),borderThickness:1,offsetAdjustment:1,radius:1,spacing:6},i={hPadding:3,vPadding:3,borderRadius:0,fill:(0,o.convertColor)("EBEBEB",100),borderColor:(0,o.convertColor)("D1D0D0",100),borderThickness:1,offsetAdjustment:1,radius:0},r={fontFamily:"Verdana,sans",fontSize:"12px",fill:void 0,fontStyle:"normal",fontWeight:"normal"};t.defaultGroupConf=a,t.defaultHToolbarConf=i,t.defTextStyle=r,t.ToolBarFactoryHelper={setComponentPool:function(e,t){return this.store[t]||(this.store[t]={}),this.store[t].componentPool=e},getOptions:function(e){return this.store[e]||(this.store[e]={options:{},componentPool:{}}),this.store[e].options},getComponentPool:function(e){return this.store[e]||(this.store[e]={options:{},componentPool:{}}),this.store[e].componentPool},setOptions:function(e,t){return this.store[t]||(this.store[t]={}),this.store[t].options=e},store:{}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(276),a=s(n(278)),i=s(n(280)),r=n(118),l=s(n(131));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=window.document,u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.configure=function(e,t){var n=this.config;n.chartId=t,n.container=void 0,n.listContainer=void 0,n.measurement=e},t.prototype.init=function(e){var t,n=this.config,i=o.ToolBarFactoryHelper.getComponentPool(n.chartId),r=i.getKeys();return n.container||((t=i.getComponent("div0",e,r.KEY_DIV)())&&(t.innerHTML=""),n.container=new a["default"],n.container.configure(t,n.measurement,n.chartId)),this},t.prototype.getFirstContainer=function(){return this.config.container},t.prototype.appendAsList=function(e,t){var n,o,l=this,s=l.config.container.config.hoverOverStyle,c=l.config.container.config.hoverOutStyle;return function u(e,t,p){var d,g,f,m,b,v,y,x,C,k=0;for(x=t||l.config.container,g=(d=e instanceof Array?e:[e]).length;k<g;k++){for(b in f=d[k],(m=new i["default"]).configure({hoverOverStyle:s,hoverOutStyle:c},p),f)m.config.name=b,v=f[b],m.config.action=v.action,m.setStyle(v.style),-1!==b.search(/^<[^<]+>$/)&&(m.config.hoverOverStyle={},m.config.hoverOutStyle={},v.handler=r.stubFN),"function"!=typeof(y=v.handler)?((o=new a["default"]).configure(h.createElement("div"),undefined,p),C=u(y,o)):m.config.handler=v.handler;x.addAtomicListItem(m),C&&(C.parentListCon=x,x.refContainers.push(C),m.assignSubContainer(C)),C=void 0}return n=x}(e,t,l.config.chartId),n},t.prototype.dispose=function(){var e=this.config;e.container.dispose(),e.container=void 0},t}(l["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(276),i=n(274),r=n(279),l=n(131);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.configure=function(e,n,o){var r,l,s,c,h=n&&n.top||0,u=n&&n.left,p=n&&n.right,d=a.ToolBarFactoryHelper.getOptions(o).chart;for(l in s=this,(c=this.config).container=e,c.position=t.POSITION_BOTTOM,c.atomicLists=[],c.refContainers=[],c.parentListCon=void 0,c.hideFnIds=[],c.target=void 0,c.chartId=o,u&&p||(c.positionCalculation=!0),c.hoverOverStyle={background:"#333333",color:"#FFFFFF",cursor:"pointer"},c.hoverOutStyle={background:"#FFFFFF",color:"#000000"},c._defaultStyle={position:"absolute","z-index":50,top:void 0===h?"auto":h+"px",right:void 0===p?"auto":p+"px",left:void 0===u?"auto":u+"px",overflow:"hidden",background:"#ffffff",border:"1px solid #646464","box-shadow":"#999999 2px 2px 5px",padding:"5px 3px",display:"none"},r=c.container.style,c._defaultStyle)r[l]=c._defaultStyle[l];d.getFromEnv("chart-container").appendChild(c.container),(0,i.getEventHandlersFor)("hover",c.container)(function(){s.show(this)},function(){s.hide(300,this)})},t.prototype.addAtomicListItem=function(e){var t=this.config;e.isAtomicList&&e.isAtomicList()&&(t.atomicLists.push(e),e.stickIntoContainer(t.container,this))},t.prototype.show=function(e){var t,n,o,l,s=this.config,c=s.hideFnIds,h=a.ToolBarFactoryHelper.getOptions(s.chartId).chart,u=h.config.width,p=s.positionCalculation,d=0;for(s.target=s.target||e,t=c.length;d<t;d++)clearTimeout(c[d]);c.length=0,(n=s.parentListCon)?(n.show(s.target),s.container.style.left=n.container.offsetLeft+n.container.offsetWidth+"px",s.container.style.top=n.container.offsetTop+s.target.offsetTop+"px"):(0,i.isDIV)(e)||(l=e.getBBox(),p&&(s.container.style.display="block",s.container.offsetWidth+l.x>u?(s.container.style.left="auto",s.container.style.right=u-l.x-l.width+"px"):(s.container.style.left=l.x+"px",s.container.style.right="auto"),s.container.style.display="none"),s.position===r.POSITION_BOTTOM?(o=l.isArtificial?.5:1.5,s.container.style.top=l.y+l.height*o+"px",s.container.style.bottom="auto"):(s.container.style.bottom=h.config.height-l.y+"px",s.container.style.top="auto")),s.container.style.display="block"},t.prototype.hide=function(e){var t,n=this.config,o=n.container;(t=n.parentListCon)&&t.hide(300),n.hideFnIds.push(setTimeout(function(){o.style.display="none"},e))},t.prototype.dispose=function(){var e,t,n=this.config,o=n.atomicLists,a=n.refContainers;for(n.hideFnIds.length=0,e=0,t=o.length;e<t;e++)o[e].dispose();for(o.length=0,e=0,t=a.length;e<t;e++)a[e].dispose();a.length=0},t.prototype.isListContainer=function(){return!0},t}(((o=l)&&o.__esModule?o:{"default":o})["default"]);c.POSITION_TOP=r.POSITION_TOP,c.POSITION_BOTTOM=r.POSITION_BOTTOM,t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0;t.btnSpecAttr={},t.scrollerSpecAttr={},t.contextMenuSpecAttr={},t.POSITION_TOP="top",t.POSITION_BOTTOM="bottom",t.allNodes=[]},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(274),i=n(279),r=n(118),l=n(276),s=n(131),c=(o=s)&&o.__esModule?o:{"default":o};function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=window.document,p=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return h(t,e),t.prototype.configure=function(e,t){var n=e||{},o=this.config;o.name=n.name,o.handler=n.handler||r.stubFN,o.action=n.action&&n.action.toLowerCase()||"click",o.eventMap={},o.style={padding:"3px 8px",margin:"2px 0px",fontFamily:i.contextMenuSpecAttr.baseFontFamily,fontSize:i.contextMenuSpecAttr.baseFontSize+"px",color:"#000000"},o.hoverOverStyle=n.hoverOverStyle||{},o.hoverOutStyle=n.hoverOutStyle||{},o.chartId=t,(0,a.mergeConf)(n.style||{},o.style),o.subConRef=void 0,o.node=void 0},t.prototype.updateName=function(e){var t=this.config;t.name=e,t.node&&(t.node.innerHTML=e)},t.prototype.assignSubContainer=function(e){e.isListContainer&&e.isListContainer()&&(this.config.subConRef=e)},t.prototype.stickIntoContainer=function(e,t){var n,o,i,r,s=this.config,c=s.node=u.createElement("div"),h=s.style,p=l.ToolBarFactoryHelper.getOptions(s.chartId).chart,d=this;for(n in s.handler&&(s.eventMap[s.action]=s.handler),e.appendChild(c),c.innerHTML=s.name,o=c.style,h)o[n]=h[n];i=(0,a.getEventHandlersFor)("hover",c),(0,a.getEventHandlersFor)("click",c)(function(){d.config.handler&&((r=d.config.eventMap.click)&&r.apply(d,[p]),t.hide())}),i(function(){var e,t=c.style,n=d.config.hoverOverStyle;for(e in n)t[e]=n[e];d.config.subConRef&&d.config.subConRef.show(this)},function(){var e,t=c.style,n=d.config.hoverOutStyle;for(e in n)t[e]=n[e];d.config.subConRef&&d.config.subConRef.hide(300,this)})},t.prototype.setStyle=function(e){(0,a.mergeConf)(e||{},this.config.style)},t.prototype.dispose=function(){var e=this.config,t=e.node;t&&t.remove&&t.remove(),e.node=void 0},t.prototype.isAtomicList=function(){return!0},t}(c["default"]);t["default"]=p},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"*.*.*":{"*.disappearing":[{finalAttr:{opacity:0},slot:"initial",callback:function(){this.hide()}}]}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118),a=n(122),i=n(276),r=n(283),l=u(n(289)),s=n(274),c=u(n(131)),h=n(279);function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var d=0,g=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return p(t,e),t.prototype.getICount=function(){return this.config._iCount},t.prototype.getName=function(){return"toolbox"},t.prototype.getType=function(){return"horizontalToolbox"},t.prototype.configure=function(e){var t,n,i,r,l,s=this.config;switch(!s.onceInitialized&&(s.onceInitialized=!1),s.ALIGNMENT_HORIZONTAL=parseInt("0",2),s.ALIGNMENT_VERTICAL=parseInt("1",2),s.POSITION_TOP=parseInt("00",2),s.POSITION_RIGHT=parseInt("01",2),s.POSITION_BOTTOM=parseInt("10",2),s.POSITION_LEFT=parseInt("11",2),this.getDefaultConfiguration=function(){return h.btnSpecAttr},s.onceInitialized||(s._options=e,s._chart=e.chart,s._iCount=++d,s.onceInitialized=!0,s.chartId=e.chart.getFromEnv("chartInstance").id),r=s._chart.getFromEnv("dataSource").chart,h.btnSpecAttr.scale=(0,o.pluckNumber)(r.toolbarbuttonscale,1.15),h.btnSpecAttr.width=(0,o.pluckNumber)(r.toolbarbuttonwidth,o.touchEnabled?20:15),h.btnSpecAttr.height=(0,o.pluckNumber)(r.toolbarbuttonheight,o.touchEnabled?20:15),h.btnSpecAttr.radius=(0,o.pluckNumber)(r.toolbarbuttonradius,o.touchEnabled?4:2),h.btnSpecAttr.spacing=(0,o.pluckNumber)(r.toolbarbuttonspacing,5),h.btnSpecAttr.fill=(0,a.convertColor)((0,o.pluck)(r.toolbarbuttoncolor,"ffffff")),h.btnSpecAttr.labelFill=(0,a.convertColor)((0,o.pluck)(r.toolbarlabelcolor,"cccccc")),h.btnSpecAttr.symbolFill=(0,a.convertColor)((0,o.pluck)(r.toolbarsymbolcolor,"ffffff")),h.btnSpecAttr.hoverFill=(0,o.pluck)(r.toolbarbuttonhovercolor),h.btnSpecAttr.stroke=(0,a.convertColor)((0,o.pluck)(r.toolbarbuttonbordercolor,"bbbbbb")),h.btnSpecAttr.symbolStroke=(0,a.convertColor)((0,o.pluck)(r.toolbarsymbolbordercolor,"9a9a9a")),h.btnSpecAttr.strokeWidth=(0,o.pluckNumber)(r.toolbarbuttonborderthickness,1),h.btnSpecAttr.symbolStrokeWidth=(0,o.pluckNumber)(r.toolbarsymbolborderthickness,1),l=h.btnSpecAttr.symbolPadding=(0,o.pluckNumber)(r.toolbarsymbolpadding,5),h.btnSpecAttr.symbolHPadding=(0,o.pluckNumber)(r.toolbarsymbolhpadding,l),h.btnSpecAttr.symbolVPadding=(0,o.pluckNumber)(r.toolbarsymbolvpadding,l),t=h.btnSpecAttr.position=(0,o.pluck)(r.toolbarposition,"tr").toLowerCase()){case"tr":case"rt":case"top right":case"right top":t="tr";break;case"br":case"rb":case"bottom right":case"right bottom":t="br";break;case"tl":case"lt":case"top left":case"left top":t="tl";break;case"bl":case"lb":case"bottom left":case"left bottom":t="bl";break;default:t="tr"}n=h.btnSpecAttr.hAlign="left"===(o.BLANKSTRING+r.toolbarhalign).toLowerCase()?"l":t.charAt(1),i=h.btnSpecAttr.vAlign="bottom"===(o.BLANKSTRING+r.toolbarvalign).toLowerCase()?"b":t.charAt(0),h.btnSpecAttr.hDirection=(0,o.pluckNumber)(r.toolbarhdirection,"r"===n?-1:1),h.btnSpecAttr.vDirection=(0,o.pluckNumber)(r.toolbarvdirection,"b"===i?-1:1),h.btnSpecAttr.vMargin=(0,o.pluckNumber)(r.toolbarvmargin,6),h.btnSpecAttr.hMargin=(0,o.pluckNumber)(r.toolbarhmargin,10),r.toolbary&&r.toolbarx?(h.btnSpecAttr.x=(0,o.pluckNumber)(r.toolbarx),h.btnSpecAttr.y=(0,o.pluckNumber)(r.toolbary),delete h.btnSpecAttr.spaceNotHardCoded):h.btnSpecAttr.spaceNotHardCoded=!0,h.scrollerSpecAttr.color=r.scrollcolor&&(0,a.convertColor)(r.scrollcolor),h.scrollerSpecAttr.padding=(0,o.pluckNumber)(r.scrollpadding,0),h.scrollerSpecAttr.height=(0,o.pluckNumber)(r.scrollheight,12),h.scrollerSpecAttr.width=(0,o.pluckNumber)(r.scrollwidth,12),h.scrollerSpecAttr.displayFlat=(0,o.pluckNumber)(r.flatscrollbars,0),h.scrollerSpecAttr.scrollBar3DLighting=(0,o.pluckNumber)(r.scrollbar3dlighting,1),h.scrollerSpecAttr.startPercent=Math.min(1,Math.max(0,parseFloat(r.scrolltoend)||0)),h.scrollerSpecAttr.showButtons=!!(0,o.pluckNumber)(r.scrollshowbuttons,1),h.scrollerSpecAttr.buttonPadding=(0,o.pluckNumber)(r.scrollbtnpadding,0),h.contextMenuSpecAttr.baseFontFamily=(0,o.pluck)(r.basefont,"Verdana,sans"),h.contextMenuSpecAttr.baseFontSize=(0,o.pluckNumber)(r.basefontsize,10),h.contextMenuSpecAttr.baseFontColor=(0,o.pluck)(r.basefontcolor,"595959")},t.prototype.getAPIInstances=function(e){var t,n=this.config,o=n._chart,a={},c=n.componentPool=new l["default"];switch(c.configure(o,n._iCount),i.ToolBarFactoryHelper.setComponentPool(c,n.chartId),i.ToolBarFactoryHelper.setOptions(n._options,n.chartId),t=r.ToolbarFactory.getAPIInstances(),e){case n.ALIGNMENT_HORIZONTAL:a.Toolbar=t.HorizontalToolbar;break;case n.ALIGNMENT_VERTICAL:}return a.ComponentGroup=t.ComponentGroup,a.Symbol=t.Symbol,a.Scroller=t.Scroller,a.SymbolWithContext=t.SymbolWithContext,a.SymbolStore=s.SymbolStore,a.CheckboxSymbol=t.CheckboxSymbol,a},t.prototype.clean=function(){var e=this.config;e.componentPool.hideRecursive(e._iCount)},t}(c["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0,t.ToolbarFactory=undefined;var o=n(284),a=h(n(285)),i=h(n(286)),r=h(n(275)),l=h(n(287)),s=h(n(288)),c=h(n(273));function h(e){return e&&e.__esModule?e:{"default":e}}var u={getAPIInstances:function(){return{HorizontalToolbar:a["default"],ComponentGroup:i["default"],Symbol:r["default"],CheckboxSymbol:l["default"],Scroller:s["default"],SymbolWithContext:c["default"],getInstanceById:o.StoreInstance.getInstanceById}}};t.ToolbarFactory=u},function(e,t,n){"use strict";t.__esModule=!0;var o={setNewInstance:function(e,t){o.instances[e]=t},getInstanceById:function(e){return o.instances[e]},instances:{}};t.StoreInstance=o},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(276),i=n(284),r=n(131);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.configure=function(e,t,n){var o=this.config;o.id="TB_MASTER"+e,i.StoreInstance.setNewInstance(o.id,this),o.toolbarRect=void 0,o.componentGroups=[],o.toolbarConfig=a.defaultHToolbarConf,o.group=void 0,o.pId=t,o.x=0,o.y=0,o.chartId=n,o.configured=!0},t.prototype.getId=function(){return this.config.id},t.prototype.getName=function(){return"horizontalToolbar"},t.prototype.getType=function(){return"toolbar"},t.prototype.addComponent=function(e){this.config.componentGroups.push(e)},t.prototype.setMenuBarDimension=function(e,t){var n=this.config;e&&(n.x=e),t&&(n.y=t)},t.prototype.draw=function(e){var t,n,o,i,r,l,s,c,h,u,p,d=this.config,g=d.x,f=d.y,m=d.componentGroups,b=d.id,v=g,y=f,x=d.toolbarConfig,C=Number.NEGATIVE_INFINITY,k=a.ToolBarFactoryHelper.getComponentPool(d.chartId),w=k.getKeys();for(e=e||{},i=d.parentLayer||e.parentGroup||{},p=k.getComponent(d.id,d.pId,w.KEY_GROUP,!0),d.group=r=p(b,i),p=k.getComponent(d.id,d.pId,w.KEY_RECT,!0),l=d.toolbarRect=p(r).attr({height:0,width:0,x:v,y:y}),v+=x.hPadding,y+=x.vPadding,n=0,o=m.length;n<o;n++)u=(t=m[n]).config.groupConfig.spacing||1,v+=(h=t.draw(r,{x:v,y:y},n,!d.configured)).width+u,C=C>h.height?C:h.height;return c=C,s=v-u-x.hPadding-g,isFinite(c)||(c=0),isFinite(s)||(s=0),l.attr({height:c+=2*x.vPadding,width:s+=2*x.hPadding}).attr({fill:x.fill,r:x.radius,stroke:x.borderColor,"stroke-width":x.borderThickness}),this.drawn=!0,d.configured=!1,{height:c,width:s}},t.prototype.getLogicalSpace=function(){var e,t,n,o,a,i=this.config,r=i.componentGroups,l=0,s=Number.NEGATIVE_INFINITY,c=0;for(e=0,t=r.length;e<t;e++)a=(n=r[e]).getLogicalSpace(),o=n.config.groupConfig.spacing||1,l+=a.width+o,c+=a.width,s=s<a.height?a.height:s;return c?{width:l-=o-2*i.toolbarConfig.hPadding,height:s+2*i.toolbarConfig.vPadding}:{width:0,height:0}},t.prototype.dispose=function(){for(var e=this.config,t=a.ToolBarFactoryHelper.getComponentPool(e.chartId),n=e.componentGroups,o=0,i=n.length;o<i;o++)n[o].dispose();n.length=0,e.toolbarRect&&e.toolbarRect.remove(),t.emptyPool(e.pId)},t.prototype._dispose=function(){this.dispose(),e.prototype._dispose.call(this)},t}(((o=r)&&o.__esModule?o:{"default":o})["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(118),i=n(279),r=n(276),l=n(274),s=n(131);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.configure=function(e,t,n){var o=this.config;o.preId=e||0,o.id=void 0,o.symbolList=[],o.groupRect=void 0,o.pId=t,o.chartId=n,(0,a.extend2)(o.btnConfig={},i.btnSpecAttr),(0,a.extend2)(o.groupConfig={},r.defaultGroupConf)},t.prototype.addSymbol=function(e,t){var n=this.config.symbolList;t?n.unshift(e):n.push(e)},t.prototype.setConfiguaration=function(e){var t=this.config,n=e.buttons,o=e.group;n&&(0,l.mergeConf)(n,t.btnConfig),o&&(0,l.mergeConf)(o,t.groupConfig)},t.prototype.draw=function(e,t,n,o){var a,i,l,s,c,h,u,p,d,g=this.config,f=g.preId,m=g.symbolList,b=g.groupConfig,v=g.btnConfig,y=t.x,x=t.y,C=0,k=0,w=Number.NEGATIVE_INFINITY,S=r.ToolBarFactoryHelper.getComponentPool(g.chartId),L=S.getKeys();for(d=g.id=f.toString()+n,a=(p=S.getComponent(g.id,g.pId,L.KEY_GROUP))("toolbar-group"+d,e),p=S.getComponent(g.id,g.pId,L.KEY_RECT),c=g.groupRect=p(a).attr({height:0,width:0,x:y,y:x}),y+=b.hPadding,x+=b.vPadding,k+=b.hPadding,C+=b.vPadding,i=0,l=m.length;i<l;i++)s=m[i],!o&&s._setConfiguaration(v),w<(h=s.draw(y,x,{parentLayer:a,isResize:o}).getBBox()).height&&(w=h.height),y+=h.width+(u=v.spacing);return k+=y+b.hPadding-t.x-u-b.offsetAdjustment,C+=w+b.vPadding+b.offsetAdjustment,isFinite(C)||(C=0),isFinite(k)||(k=0),c.attr({height:C,width:k}).attr({fill:b.fill,r:b.radius,stroke:b.borderColor,"stroke-width":b.borderThickness}),{height:(h=c.getBBox()).height,width:h.width}},t.prototype.getLogicalSpace=function(){var e,t,n,o,a=this.config,i=a.symbolList,r=0,l=0,s=Number.NEGATIVE_INFINITY,c=0;for(t=0,n=i.length;t<n;t++)(e=i[t])._setConfiguaration(a.btnConfig),l+=(o=e.getLogicalSpace()).width+a.btnConfig.spacing,c+=o.width,s=s<o.height?o.height:s;return c?(s!==Number.NEGATIVE_INFINITY&&l&&(l-=a.btnConfig.spacing-2*a.groupConfig.hPadding-a.groupConfig.offsetAdjustment,r=s+2*a.groupConfig.vPadding+a.groupConfig.offsetAdjustment),{width:l,height:r}):{width:0,height:0}},t.prototype.dispose=function(){for(var e=this.config,t=e.symbolList,n=0,o=t.length;n<o;n++)t[n].dispose();t.length=0,e.groupRect&&e.groupRect.remove()},t}(((o=s)&&o.__esModule?o:{"default":o})["default"]);t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(122),i=n(275),r=(o=i)&&o.__esModule?o:{"default":o},l=n(276),s=n(274);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=(0,a.convertColor)("FFFFFF",0),u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.configure=function(t,n,o,a,i){e.prototype.configure.call(this,"Internal_CB");var r=this.config;r._id="TB_CBSYMBOL"+(o||0),r.symbol="Internal_CB",r.text={plaintext:t,node:void 0,style:l.defTextStyle},r.pId=a,r.chartId=i,r.checked=!!n,r.textNode=void 0,r.interPadding=3,r.pos={},r.regSymbolCmd=void 0,r.checked?this.check():this.uncheck()},t.prototype.check=function(){var e=this.config,t=e.pos;e.checked=!0,e.regSymbolCmd=s.RSymbolFns.CB_CHECKED,e.node&&(this.registerSymbol(e.regSymbolCmd),e.node.attr({"button-repaint":[t.x,t.y,t.width,t.height,t.r]}))},t.prototype.uncheck=function(){var e=this.config,t=e.pos;e.checked=!1,e.regSymbolCmd=s.RSymbolFns.CB_NOT_CHECKED,e.node&&(this.registerSymbol(e.regSymbolCmd),e.node.attr({"button-repaint":[t.x,t.y,t.width,t.height,t.r]}))},t.prototype.click=function(){this.config.checked?this.uncheck():this.check()},t.prototype.attachEventHandlers=function(e){var t=this;r["default"].prototype.attachEventHandlers.apply(this,[e,{click:function(){t.click()}}])},t.prototype.getLogicalSpace=function(){var e,t,n=l.ToolBarFactoryHelper.getOptions(this.config.chartId).chart,o=this.config,a=n.linkedItems.smartLabel,i=o.text.style;return t=r["default"].prototype.getLogicalSpace.apply(this,arguments),a.useEllipsesOnOverflow(n.config.useEllipsesWhenOverflow),a.setStyle(i),{width:(e=a.getSmartText(o.text.plaintext)).width+o.interPadding+t.width,height:Math.max(t.height,e.height)}},t.prototype.draw=function(e,t,n){var o,a,i,s,c,u,p=this.config,d=p.conf,g=l.ToolBarFactoryHelper.getOptions(p.chartId).chart,f=g.getFromEnv("smartLabel"),m=g.getFromEnv("color-manager"),b=p.text.plaintext,v=l.ToolBarFactoryHelper.getComponentPool(p.chartId),y=v.getKeys();return this.registerSymbol(p.regSymbolCmd),o=p.node=r["default"].prototype.draw.apply(this,arguments),p.pos={x:e,y:t,width:d.width,height:d.height,r:d.radius},(c=p.text.style).fill=c.fill||"#"+m.getColor("baseFontColor"),f.useEllipsesOnOverflow(g.config.useEllipsesWhenOverflow),f.setStyle(c),i=f.getSmartText(b),a=o.getBBox(),u=v.getComponent(p._id,p.pId,y.KEY_TEXT),p.textNode=u(n.parentLayer).attr({text:b,x:a.x+a.width+i.width/2+p.interPadding,y:a.y+a.height/2}).css(c),s=d.height>i.height?d.height:i.height,(u=v.getComponent(p._id,p.pId,y.KEY_RECT))(n.parentLayer).attr({height:s,width:a.width+i.width+p.interPadding,x:e,y:t,stroke:h})},t.prototype.dispose=function(){var t=this.config;t.textNode&&t.textNode.remove(),t.textNode=void 0,e.prototype.dispose.call(this)},t}(r["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(118),i=n(275),r=(o=i)&&o.__esModule?o:{"default":o},l=n(279),s=n(276),c=n(274);function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return h(t,e),t.prototype.configure=function(e,t,n,o){var i=this.config;i._id="TB_SCROLLER"+(t||0),i.pId=n,i.conf={},i.userConf=l.scrollerSpecAttr,i.chartId=o,this.setConfiguaration(e),i.evt={tooltext:void 0,click:a.stubFN,hover:[a.stubFN,a.stubFN]}},t.prototype.getName=function(){return"scroller"},t.prototype.getType=function(){return"scroller"},t.prototype.setConfiguaration=function(e){var t=this.config,n=s.ToolBarFactoryHelper.getOptions(t.chartId).chart.getFromEnv("color-manager");l.scrollerSpecAttr.color||(l.scrollerSpecAttr.color="#"+n.getColor("altHGridColor")),(0,c.mergeConf)(l.scrollerSpecAttr,t.conf),(0,c.mergeConf)(e,t.conf)},t.prototype.getLogicalSpace=function(){var e=this.config.conf,t={};return(0,c.mergeConf)(l.scrollerSpecAttr,t),(0,c.mergeConf)(t,e),r["default"].prototype.getLogicalSpace.call(this)},t.prototype.getDefaultLayer=function(){var e=this.config,t=s.ToolBarFactoryHelper.getComponentPool(e.chartId),n=t.getKeys();return t.getComponent(e._id,e.pId,n.KEY_GROUP)("scroll")},t.prototype.draw=function(){var e,t,n,o,i,r,h,u,p,d,g,f,m,b,v,y,x,C,k,w,S=this.config,L=S.conf,A=s.ToolBarFactoryHelper.getComponentPool(S.chartId),N=A.getKeys(),_={},P={};return 1===arguments.length?(e=(y=arguments[0]).x,t=y.y,h=y.parentLayer,v=!!y.sepLayer):(e=arguments[0],t=arguments[1],i=arguments[2],L&&i?(0,c.mergeConf)(i,L):i={},h=i.parentLayer,v=!!i.sepLayer,y=L),(0,c.mergeConf)(l.scrollerSpecAttr,P),y.isHorizontal?delete P.width:delete P.height,(0,c.mergeConf)(P,y,!0),t+=y.padding,n=y.height,o=y.width,r=y.isHorizontal,"scroll-repaint",C=y.startPercent,u=Math.max(y.scrollRatio,.01),p=y.showButtons,d=y.displayFlat,g=y.fullCanvasWidth,f=y.windowedCanvasWidth,m=y.color,b=y.roundEdges,w=(0,a.pluckNumber)(y.scrollPosition,C,0),_["scroll-repaint"]=[e,t,o,n],h=h||this.getDefaultLayer(),k=A.getComponent(S._id,S.pId,N.KEY_RECT),x=v?k("scroll-child"):h,k=A.getComponent(S._id,S.pId,N.KEY_SCROLLER),S.node=k(e,t,o,n,r,{scrollPosition:w,displayStyleFlat:d,showButtons:p},x),S.node.data("fullCanvasWidth",g).data("windowedCanvasWidth",f).attr({"scroll-ratio":u,fill:m,"stroke-width":1,"scroll-position":w,r:b?2:0}).scroll(S.evt),A.getCreationStatus()||(S.node.undrag(),S.node.attr(_),S.node.attr({"scroll-display-style":d?"flat":"3d"}).scroll(S.evt)),S.node},t.prototype.attachEventHandlers=function(t){var n=this.config.evt;return t&&(t.scroll&&"function"==typeof t.scroll&&(n.scroll=t.scroll),t.scrollStart&&"function"==typeof t.scrollStart&&(n.scrollStart=t.scrollStart),t.scrollEnd&&"function"==typeof t.scrollEnd&&(n.scrollEnd=t.scrollEnd)),e.prototype.attachEventHandlers.call(this,arguments),this},t}(r["default"]);u.registerSymbol=void 0,u._setConfiguaration=a.stubFN,t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o=i(n(290)),a=i(n(131));function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var l=window.document,s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return r(t,e),t.prototype.configure=function(e,n){var a,i=void 0,r=this,s=void 0,c=void 0,h=e.getFromEnv("animationManager"),u=r.config;if(a=u.elemTypes={KEY_RECT:"rect",KEY_TEXT:"text",KEY_GROUP:"group",KEY_SCROLLER:"scroller",KEY_BUTTON:"button",KEY_PATH:"path",KEY_DIV:"div"},s=u.cachedState={},(i=u.actions={})[a.KEY_DIV]=function(){return l.createElement("div")},i[a.KEY_RECT]=function(e){return h.setAnimation({el:"rect",container:e,component:r})},i[a.KEY_TEXT]=function(e){return h.setAnimation({el:"text",container:e,component:r})},i[a.KEY_GROUP]=function(e,t){return h.setAnimation({el:"group",attr:{name:e},container:t,component:r})},i[a.KEY_SCROLLER]=function(e,t,n,o,a,i,l){return h.setAnimation({el:"scroller",attr:{scroller:[e,t,n,o,a,i,l]},component:r})},i[a.KEY_BUTTON]=function(e,t,n,o,a,i){return h.setAnimation({el:"button",attr:{button:[e,t,n,o,a,i]},component:r})},i[a.KEY_PATH]=function(e,t){h.setAnimation({el:"path",container:t,attr:{path:e},component:r})},c=u.cache=s[n]||(s[n]={}),t._hideRecursive(c.pool),!c.initialized){var p=new o["default"];(c.pool=p.pool)._tmp=n,c.initialized=!0}},t._hideRecursive=function(e){var t,n,o,a,i,r;if(e)for(t in e)for(n in o=e[t])if((a=o[n])instanceof Array)for(i=0,r=a.length;i<r;i++)a[i].hide&&a[i].hide();else a.hide&&a.hide()},t.prototype.emptyPool=function(e){var t;(t=this.config.cachedState[e]||{}).pool&&(t.pool={})},t.prototype.isInitialized=function(){return this.config.initialized},t.prototype.getCreationStatus=function(){return this.config.newCreationDataFlag},t.prototype.hideRecursive=function(e){var n;n=this.config.cachedState[e]||{},t._hideRecursive(n.pool)},t.prototype.getKeys=function(){return this.config.elemTypes},t.prototype.getComponent=function(e,t,n,o){var a,i,r,l=this.config,s=l.cachedState[t||0]||{},c=s.pool,h=c[e],u=l.actions,p=0;return h||(h=c[e]={}),(i=h[n])&&!(i instanceof Array)&&!i.removed||i instanceof Array&&i.length>0?function(){return s.newCreationDataFlag=!1,o?(r=i[p++])&&!r.removed?r.show():i[p]=u[n].apply(s,arguments):i.show&&"function"==typeof i.show&&i.show()||i}:function(){return s.newCreationDataFlag=!0,o?(a=h[n]||(h[n]=[]),i=u[n].apply(s,arguments),a.push(i),i.show&&"function"==typeof i.show&&i.show()||i):h[n]=u[n].apply(s,arguments)}},t}(a["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(){this.pool={}}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0],n=t.getChildren("axisRefVisualCartesian")[0],r={zoomable:!0,pannable:!0},l=e._feedAxesRawData(),s=void 0,c=void 0,h=function(e){var t=e.sender;n.addexplicitDrawItems(t.getId(),t),n.asyncDraw()};(0,o.componentFactory)(e,a["default"],"yAxis",1,l.yAxisConf),(0,o.componentFactory)(e,i["default"],"xAxis",1,l.xAxisConf),s=e.getChildren("yAxis")[0],c=e.getChildren("xAxis")[0],s.setLinkedItem("canvas",t),c.setLinkedItem("canvas",t),n.setLinkedItem(s.getId(),s),n.setLinkedItem(c.getId(),c),n.addExtEventListener("visiblerangeset",h,c),n.addExtEventListener("visiblerangeset",h,s),t.attachAxis(c,!1,e.zoomX?r:{}),t.attachAxis(s,!0,e.zoomY?r:{}),e._setCategories()};var o=n(118),a=r(n(292)),i=r(n(321));function r(e){return e&&e.__esModule?e:{"default":e}}},function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(293)),a=n(118),i=c(n(313)),r=c(n(314)),l=n(301),s=c(n(320));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.config.scale=new r["default"],n}return h(t,e),t.prototype.getName=function(){return"numeric"},t.prototype.generateTicks=function(){var e=this.getScale(),t=this.config,n=t.numDivLines+1,o=e.getDomain(),a=o[0],r=o[1],l=void 0,c=t.axisRange,h=c.min,u=c.max,p=t.dataLimit,d=void 0,g=void 0;return a===h&&r===u?((0,s["default"])(p.min,p.max,e,t),t.ticks):(l=e.ticks(n),d=Math.abs(l[1]-l[0]),a===h&&-1===l.indexOf(h)&&l.unshift(h),r===u&&-1===l.indexOf(u)&&l.push(u),(g=Math.abs(h%d))&&(h-=g),(g=Math.abs(u%d))&&(u-=g),t._allTicks=(0,i["default"])(h,u,d).concat(u),c.tickInterval=d,l)},t.prototype.setTickValues=function(e){this.config.userTicks=e||[],this.config.tickValues={tickValue:[]}},t.prototype._parseTickValues=function(e){var t,n,o,i,r=this.getFromEnv("chart"),s=this.config,c=e&&e.length,h=0;for(s.tickValues={},t=s.tickValues.tickValue=[],o=0;o<c;o+=1)if(n=(0,a.extend2)({},e[o]),i=Number(n.x),!n.vline){if((0,l.extractStyleInfo)(n,r),!i&&0!==i)continue;n.x=i,s.irregularCatAxis=!0,t.push(n),t[h].label=(0,a.parseUnsafeString)(t[h].label),h+=1}s.oriCatLen=h},t.prototype.calculateTicksOnLabelMode=function(){var e,t,n,o,i,r,l,s=this.config,c=s.xAxisLabelMode,h=Object.assign([],s.userTicks),u=this.getFromEnv("number-formatter");if("mixed"===c||"auto"===c){if(t=[],e=u.xAxis,"mixed"===c)for(n=0,i=h.length;n<i;n+=1)t[h[n].x||h[n].y||n]=!0;else h=[];for(l=this.getAxisConfig(),r=s.ticks,o=0;o<r.length;++o)t[n=r[o]]||h.push({label:a.BLANKSTRING+e.call(u,n),x:n,showverticalline:0===n?l.showZeroPlane:1,isNumeric:!0,linecolor:0===n?l.zeroPlaneColor:l.divLineColor,linealpha:0===n?l.zeroPlaneAlpha:l.divLineAlpha,linethickness:0===n?l.zeroPlaneThickness:l.divLineThickness,linedashed:l.divLineIsDashed,linedashLen:l.divLineDashLen,linedashgap:l.divLineDashGap})}this._parseTickValues(h)},t.prototype.getInterval=function(){return this.config.axisRange.tickInterval},t.prototype._setAxisRange=function(e){var t,n,o,i=e.min,r=e.max,l=this.config,c=l.axisRange,h=l.dataLimit,u=l.dependentInfo;if(!(i>r))if(h.min===i&&h.max===r||(n=!0),void 0===l.visibleMin||l.setPadding||n){var p=(0,a.extent)([i,r,h.min,h.max]);if(i=p[0],r=p[1],h.min=i,h.max=r,this.fireEvent("dataLimitSet",Object.assign({},h)),u){if(u.limit){if(!(t=u.dataLimit))return;var d=(0,a.extent)([i,r,t.min,t.max]);i=d[0],r=d[1],l.isDataLimitSet=!0}if(u.count&&void 0===u.numDivLines)return}(0,s["default"])(i,r,this.getScale(),l),o=l.isZeroTickForced?3:2,this.fireEvent("divlinesSet",l.ticks.length-o),l.tickValues&&this.calculateTicksOnLabelMode(),this.setVisibleConfig(c.min,c.max)}else l.setPadding=!1},t}(o["default"]);u.prototype.setDataLimit=l.setDataLimit,t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(294),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118),l=n(301);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype._getHMaxLabelDimention=function(e){var t,n,o,i,l,s,c,h,u,p,d,g,f,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D,O,I,M=this,R=M.config,V=M.getFromEnv("chart"),B=V.config,G=V.getFromEnv("smartLabel"),j=R.axisRange,H=R.labels,W=R.labelDisplay,z=R.slantLabel,U=H.style,q=R.maxLabelHeight,Y=M.getInterval(),K=R.staggerLines,X=R.labelStep,Z=B.canvasLeft,J=B.canvasRight,$=K-2,Q=j.max,ee=j.min,te=0,ne=R.tickValues&&R.tickValues.tickValue,oe=ne&&ne.length,ae=V.distributedColumns,ie=0,re={text:r.UNDEF,width:0,style:r.UNDEF},le=0,se=4,ce=r.stubFN,he=r.stubFN,ue=r.stubFN,pe={},de=0,ge=!1,fe=0,me=!1,be=Number.POSITIVE_INFINITY,ve=R.ticks,ye=Number.POSITIVE_INFINITY;if(ae)for(v=0;v<oe;v++)ne[v+1]?ne[v].x&&(ne[v].plotWidth=M.getPixel(ne[v+1].x-ne[v].x)-M.getPixel(0)):ne[v].plotWidth=M.getPixel(B.canvasRight-ne[v].x)-M.getPixel(0);if(R.tickValues&&(!ne||0===ne.length))return{width:0,height:0};function xe(e,t){switch(t.toLowerCase()){case"left":return Math.abs(M._getCustomPixel(e));case"right":return Math.abs(B.width-M._getCustomPixel(e))}}if("rotate"===W&&(R.rotateLabels=1),R.tickValues||(R.irregularCatAxis=!1),R.sWidthAdjstFactor=n=0===$?1:1===$?1.5:$,G.useEllipsesOnOverflow(B.useEllipsesWhenOverflow),G.setStyle({fontSize:U.fontSize,fontFamily:U.fontFamily,lineHeight:U.lineHeight,fontWeight:U.fontWeight}),R.irregularCatAxis){for(ne.sort(function(e,t){return e.x-t.x}),v=0,ie=ne.length;v<ie;v++){if(l=ne[v],void 0!==S){if(ye=Math.abs(l.x-S),A=Math.abs(M._getCustomPixel(ee)-M._getCustomPixel(ee+ye)),G.setStyle(Object.assign({},l.style)),A<1.2*G.getOriSize("W").width){l.label="",ye=be;continue}N._individualIWR=A,l._individualIWL=A,be=ye}N=l,S=l.x}for(ye===Number.POSITIVE_INFINITY&&(ye=Math.floor(Math.min(l.x,Q-l.x)),ye=Math.max(ye,4)),v=0,ie=ne.length;v<ie;v++)l=ne[v],v||(l._individualIWL=Infinity),v===ie-1&&(l._individualIWR=Infinity),l.individualIW=Math.min(l._individualIWL,l._individualIWR);c=Math.abs(M._getCustomPixel(ee)-M._getCustomPixel(ee+ye)),c=Math.min(2*xe(ne[0].x,"left"),2*xe(ne[ie-1].x,"right"),c)}else c=Math.abs(M._getCustomPixel(ee)-M._getCustomPixel(ee+Y));if(e=q||e,pe.__root__={getHeight:function(e){var t=ne[e]._ovrStyle.lineHeight;return parseInt(t.replace(/(\d+)px/,"$1"),10)},getWidth:function(){return e},getCalculatedLabelStep:function(e){var t,n,o,a,i,l,u,p,d,g,f=0,m=e.length,b=Number.NEGATIVE_INFINITY,v={},y=0;for(f=0;f<m;f++)(a=e[f]).style=a.style||{};if(R.irregularCatAxis)return R.labelStep;for(f=0;f<m;f++)(a=e[f])&&(a.label||(a.label=""),i=a.oriLabel||a.label,s={fontSize:U.fontSize,fontFamily:U.fontFamily,lineHeight:U.lineHeight,fontWeight:U.fontWeight},y++,a.style=a.style||{},(0,r.extend2)(s,a.style),v[t=s.fontSize+s.fontFamily+s.lineHeight+s.fontWeight]?i.length>v[t].label.length&&(v[t].label=i):v[t]={label:i,style:s});for(l in v)v.hasOwnProperty(l)&&(n=v[l].style,o=v[l].label,n.lineHeight=(0,r.setLineHeight)(n),G.setStyle(n),R.rotateLabels&&(d=parseInt(n.lineHeight.replace(/(\d+)px/,"$1"),10)),h=G.getSmartText(o,r.UNDEF,d),p=0===R.rotateLabels?h.width>60?60:h.width:h.height,b=Math.max(p,b));return u=Math.floor(Math.abs(M._getCustomPixel(Q)-M._getCustomPixel(ee))/b),g=Math.max(Math.ceil(y/u),R.labelStep),c=Math.abs(M._getCustomPixel(ee)-M._getCustomPixel(ee+g)),y<=u?R.labelStep:g}},pe._inProp={},pe.getCopyById=function(e){var t,n=this._inProp,o=this.__root__,a=n.copyStore;return(t=(a=a||{})[e])?t:((0,r.extend2)(t=a[e]={},o),t)},R.tickValues){switch(W){case"rotate":H.rotation=z?300:270,d=pe.getCopyById("rotate");break;case"stagger":(d=pe.getCopyById("stagger")).getHeight=function(e){var t,n;return n=(t=R.tickValues.tickValue[e])&&t.style||(t.style={}),s={fontSize:U.fontSize,fontFamily:U.fontFamily,lineHeight:U.lineHeight,fontWeight:U.fontWeight},(0,r.extend2)(s,n),G.setStyle(s),G.getOriSize(t.label).height},d.getWidth=function(e){return se=1,e.individualIW?e.individualIW:2*c*n-se},ue=function(t){var n,o,a,i,r,l,s=t.length,c=0;if(G.setStyle(U),a=G.getOriSize("WWW").height,o=t[s-1],Math.floor(o._cumulativeSum)<=Math.ceil(s*(a+2)))r=Math.floor(e/a),K=r-K<0?r:K;else{r=Math.floor(e/(a+4));do{for(c=0,i=(l=r)-1,s=t.length;i<s;){if(s-i<r&&(i=s-1),~~((n=t[i])._cumulativeSum-c)>-~e){ge=!0;break}ge=!1,c=n._cumulativeSum,i+=l}}while(r--&&ge);r++,K=Math.min(K,r)}R.drawnStaggerLines=K},ce=function(e){var t,n,a,i,r=0;for(i=0,n=e.length;i<n;i++)(t=e[i]).stepSkipped||((a=(t&&t.style||{}).lineHeight)||(a=U.lineHeight),o=r++%K,t.labelPadding=o?a.replace(/px/i,"")*o:0)};break;case"none":(d=pe.getCopyById("none")).getHeight=r.stubFN,d.getWidth=r.stubFN,he=r.stubFN,R.rotateLabels&&(H.rotation=z?300:270,L=e),d.getCalculatedLabelStep=function(){return R.labelStep};break;default:(d=pe.getCopyById("auto")).getHeight=function(){return e},d.getWidth=function(e){return e.individualIW?e.individualIW:c-2*se},he=function(e,t){var n,o,a,i,l=V.getFromEnv("chart-attrib"),s=(0,r.pluckNumber)(l&&l.rotatelabels);if(!R.irregularCatAxis&&(G.setStyle(e),G.getOriSize("WWW").width>=c&&0!==s)){for(H.rotation=z?300:270,H.forceRotate=!0,d=pe.getCopyById("rotate"),u=d.getWidth,p=d.getHeight,re.width=0,n=0,o=t.length;n<o;n++)(a=t[n])&&(a.label||a.oriLabel)&&0!==(0,r.pluckNumber)(a.showlabel,R.showLabels,1)&&!0!==a.stepSkipped&&(i=a._ovrStyle,G.setStyle({fontSize:i.fontSize,fontFamily:i.fontFamily,lineHeight:i.lineHeight,fontWeight:i.fontWeight}),h=G.getSmartText(a.oriLabel,u(a),p(n)),a.label=h.text,a.labelTooltext=h.tooltext,a._sLabel=h,re.width<h.width&&(re.text=h.text,re.width=h.width,re.height=h.height,re.style=i));g=re.text}}}for(u=d.getWidth,p=d.getHeight,X=R.labels.step=R.labelStep=R._oriLabelStep,X=R.labels.step=R.labelStep=d.getCalculatedLabelStep(ne),v=(0,a.minimumEnquiry)(ne),f=0,y=0,ie=ne.length;v<ie;v++,f++)(l=ne[v])&&(l.label||l.oriLabel)&&0!==(0,r.pluckNumber)(l.showlabel,R.showLabels,1)&&(me=!0,s={fontSize:U.fontSize,fontFamily:U.fontFamily,lineHeight:U.lineHeight,fontWeight:U.fontWeight},(0,r.extend2)(s,l.style),s.lineHeight=(0,r.setLineHeight)(s),(D=s.fontSize+s.fontFamily+s.lineHeight+s.fontWeight)!==T&&(G.setStyle(s),T=D),f%X?(l.stepSkipped=!0,l.appliedSmartLabel=!1,fe++):(l.appliedSmartLabel=!0,l.stepSkipped=!1,l._ovrStyle=s,ne[v].plotWidth?t=Math.max("rotate"===W?ne[v].plotWidth-6:0,p(v)):("rotate"===W?v<ie-1&&(i=M.getPixel(v+1)-M.getPixel(v)-10):i=0,"rotate"===W&&isNaN(+i)&&(i=B.canvasWidth/M.getVisibleLength()-3),t=Math.max(i,p(v))),de+=(h=G.getSmartText(l.oriLabel||l.label,u(l),t)).height+2,M.components.labels[y++]={config:{width:h.width,height:h.height,props:{label:{}}}},l._cumulativeSum=de,l.oriLabel=l.oriLabel||l.label,l.label=h.text,l.labelTooltext=h.tooltext,l._sLabel=h,re.width<h.oriTextWidth&&((0,r.extend2)(re,h),re.style=s),le<h.height&&(le=h.height)));if(!me)return{height:0,width:0};if(ue(ne,fe),ce(ne,fe),he(re.style,ne),g=re.text||"","mixed"===R.xAxisLabelMode)for(k=R.isPercent?V.getFromEnv("number-formatter").percentValue:V.getFromEnv("number-formatter").xAxis,te=g.length,v=0,O=ve&&ve.length;v<O;++v)C=ve[v],(x=""+k.call(V.getFromEnv("number-formatter"),C,R.axisIndex)).length>te&&(g=x,te=x.length);for(re.height=Math.max(le,re.height||0),F=ne.length,v=0,ie=ne.length;v<ie&&!(_=ne[v])._sLabel;v++);for(v=(ie=ne.length)-1;v>=0&&!(P=ne[v])._sLabel;v--);E=1!==M.getZoom(),H.rotation||E||!_._sLabel?(R.axisEndLabelDisplaySpace.left=0,R.axisEndLabelDisplaySpace.right=0):(R.axisEndLabelDisplaySpace.left=Math.max(Z-(M._getCustomPixel(_.x||0)-_._sLabel.width/2),0),R.axisEndLabelDisplaySpace.right=Math.max(M._getCustomPixel(P.x||F-1)+P._sLabel.width/2-J,0)),w=re}else{for(k=R.numberFormatterFn?V.getFromEnv("number-formatter")[R.numberFormatterFn]:R.isPercent?V.getFromEnv("number-formatter").percentValue:V.getFromEnv("number-formatter").xAxis,v=0,O=ve&&ve.length;v<O;++v)I=ve[v],C=(0,r.toPrecision)(I,10),x=""+k.call(V.getFromEnv("number-formatter"),C,R.axisIndex),I===ee&&(m=x),I===Q&&(b=x),w=G.getOriSize(x),M.components.labels[v]={config:{width:w.width,height:w.height,props:{label:{}}}},x.length>te&&(g=x,te=x.length);G.setStyle({fontSize:U.fontSize,fontFamily:U.fontFamily,lineHeight:U.lineHeight,fontWeight:U.fontWeight}),w=G.getOriSize(g||""),"rotate"===W&&(H.rotation=270),R.rotateLabels&&(H.rotation=z?300:270),H.rotation||(m=G.getOriSize(m||""),b=G.getOriSize(b||""),R.axisEndLabelDisplaySpace.left=m.width/2+2,R.axisEndLabelDisplaySpace.right=b.width/2+2)}return R.tickValues&&"stagger"===W&&(w.height=K*re.height),w.width=L?Math.min(L,w.width):w.width,w.width=(0,r.pluckNumber)(w.width),w.maxWidth=(0,r.pluckNumber)(w.maxWidth),w},t.prototype._getVMaxLabelDimention=function(e){var t,n,o,a,i,l,s,c,h,u,p,d,g,f,m=this.config,b=this.getFromEnv("chart"),v=b.config,y=b.getFromEnv("smartLabel"),x=m.labels.style,C=m.useEllipsesWhenOverflow,k=m.maxLabelWidthPercent,w=m.minLabelWidthPercent,S=0,L=b.getFromEnv("dataSource").categories,A={height:0,width:0},N=m.ticks,_={};if(y.useEllipsesOnOverflow(v.useEllipsesWhenOverflow),y.setStyle({fontSize:x.fontSize,fontFamily:x.fontFamily,lineHeight:x.lineHeight,fontWeight:x.fontWeight}),m.tickValues){for(L&&(_={fontFamily:L[0].font,fontSize:L[0].fontsize,color:L[0].fontcolor}),k&&(n=k/100*v.width)<e&&(e=n),w&&(o=w/100*v.width)>e&&(e=o),a=0,h=(c=m.tickValues.tickValue).length;a<h;a++)u=c[a],0!==(0,r.pluckNumber)(u.showlabel,m.showLabels)&&(g={fontFamily:(0,r.pluck)(u.font,u.labelfont,_.fontFamily,x.fontFamily),fontSize:(0,r.pluck)(u.fontsize,u.labelfontsize,_.fontSize,x.fontSize).replace(/px/i,"")+"px",fontWeight:"normal"==x.fontWeight?(0,r.pluckNumber)(u.fontbold,u.labelfontbold,0)?"bold":"normal":x.fontWeight,fontStyle:"normal"==x.fontStyle?(0,r.pluckNumber)(u.fontitalic,u.labelfontitalic,0)?"italic":"normal":x.fontStyle},(f={fontFamily:(0,r.pluck)(g.fontFamily,_.fontFamily,x.fontFamily),fontSize:(0,r.pluck)(g.fontSize,_.fontSize,x.fontSize),fontWeight:(0,r.pluck)(g.fontWeight,x.fontWeight),fontStyle:(0,r.pluck)(g.fontStyle,x.fontStyle)}).lineHeight=(0,r.setLineHeight)(f),y.setStyle(f),p=y.getSmartText(u.oriLabel||u.label,e,x.lineHeight,C),this.components.labels[a]={config:{width:p.width,height:p.height,props:{label:{}}}},u.oriLabel=u.oriLabel||u.label,u.label=s=p.text,u.labelTooltext=p.tooltext,p.width>S&&(A=p,S=p.width));return A}for(d=m.numberFormatterFn?b.getFromEnv("number-formatter")[m.numberFormatterFn]:m.isPercent?b.getFromEnv("number-formatter").percentValue:b.getFromEnv("number-formatter").yAxis,a=0,i=N&&N.length;a<i;++a)l=(0,r.toPrecision)(N[a],10),s=""+d.call(b.getFromEnv("number-formatter"),l,m.axisIndex),p=y.getSmartText(s),this.components.labels[a]={config:{width:p.width,height:p.height,props:{label:{}}}},s.length>S&&(t=s,S=s.length);return y.getOriSize(t)},t.prototype.getCleanValue=function(e,t){return this.getFromEnv("number-formatter").getCleanValue(e,t)},t.prototype.generateMinorTicks=function(){if(this)return[]},t.prototype.setCanvas=function(e){this.config.canvas=e},t.prototype._adjustNumberFormatter=function(e){var t,n,o=this.config,a=o.axisIndex,i=o.isVertical,l=this.getFromEnv("chart").getFromEnv("number-formatter"),s=o._defaultDecimalPrecision,c=o._defaultForceDecimal,h=0;n=i||"yAxis"===o.numberFormatterFn?(l.Y[a]||l.Y[0]).yAxisLabelConf:l.paramX,s!==r.UNDEF?n.decimalprecision=s:o._defaultDecimalPrecision=n.decimalprecision,c!==r.UNDEF?n.forcedecimals=c:o._defaultForceDecimal=n.forcedecimals,parseInt(e,10)>0||(t=e.toString().split(".")[1])&&((h=t.match(/^[0]*/)[0].length+1)>n.decimalprecision&&(n.forcedecimals=1),n.decimalprecision=Math.max(h,n.decimalprecision))},t.prototype.setLabelConfig=function(e){var t,n=this.config.labels;for(t in e)e.hasOwnProperty(t)&&(n[t]=e[t])},t}(i["default"]);c.prototype._parseLabel=l._parseLabel,c.prototype._drawLabel=l._drawLabel,c.prototype.getTrendLineLimits=l.getTrendLineLimits,c.prototype.setAxisPadding=l.setAxisPadding,c.prototype.getLabel=l.getLabel,t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0,t.minimumEnquiry=t.getCrispPath=undefined;var o=p(n(295)),a=n(118),i=n(122),r=p(n(296)),l=p(n(297)),s=p(n(298)),c=p(n(299)),h=n(125),u=n(301);function p(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var g=function(e,t){var n,o,a=!1,i=t%2;return e[1]===e[4]&&(n=e[1],o=Math.round(n),e[1]=e[4]=i?o>n?o-.5:o+.5:o,a=!0),e[2]===e[5]&&(n=e[2],o=Math.round(n),e[2]=e[5]=i?o>n?o-.5:o+.5:o,a=!0),{path:e,isCrisped:a}},f=function(e){return function(t,n){return!!(e.minValue<=t&&e.maxValue>=t||e.minValue<=n&&e.maxValue>=n)}},m=function(e){return function(t){return!!(e.minValue<=t&&e.maxValue>=t)}},b={wrtVisible:!0},v=function(e){for(var t=0,n=e.length;t<n;t++)if(e[t].label||e[t].oriLabel)return t};(0,h.addDep)({name:"cartesianAxisAnimation",type:"animationRule",extension:r["default"]});var y=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.config.referenceInfo=[],n.config.prevTicks=[],n.config.prevIntervalArr=[],n.config.prevTrendLabels=[],n.config.prevCategoryIntervalArr=[],n}return d(t,e),t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t),this.disableScroll()},t.prototype.placeAxis=function(e){var t,n=this.getScale(),o=this.getFromEnv("chart"),a=this.getLinkedItem("scrollBar"),i=this.config.isVertical,r=this.config.isOpposit,l=this.config.isReverse,s=o.config,c={};return a&&(t=a.getLogicalSpace())&&(i?(o.config.shift=t.width+a.config.conf.padding,c[r?"right":"left"]=o.config.shift):(o.config.shift=t.height+a.config.conf.padding,c[r?"top":"bottom"]=o.config.shift),o._allocateSpace(c)),i?(l?n.setRange([s.canvasBottom,s.canvasTop]):n.setRange([s.canvasTop,s.canvasBottom]),this._placeVerticalAxis(e)):(l?n.setRange([s.canvasRight,s.canvasLeft]):n.setRange([s.canvasLeft,s.canvasRight]),this._placeHorizontalAxis(e))},t.prototype._placeVerticalAxis=function(e){var t,n,o,i,r,l,s,c,h,u,p,d,g,f,m,b,v,y,x=this.config,C=this.getFromEnv("chart"),k=C.config,w=C.getFromEnv("smartLabel"),S=x.axisRange,L=x.minLabelWidthPercent,A=x.name,N=x.isOpposit,_=this.getFromEnv("number-formatter"),P=k.canvasHeight,F=x.labelPadding=(0,a.pluckNumber)(x.rawAttr.axisValuePadding,4),E=(0,a.pluckNumber)(x.rawAttr.axisNamePadding,5),T=x.useEllipsesWhenOverflow,D=x.name.style,O=x.trend.trendStyle,I=x.axisName,M=x.trendLines,R=x.drawLabelsOpposit,V=x.drawAxisNameOpposit,B=0,G=0,j=0,H=0,W=0,z=0,U={left:0,right:0},q="",Y="",K=0,X=-1;if(L&&(X=L/100*k.width),x.oriCanvasHeight=P,F<0&&(x.labelPadding=2),b=x.drawTick&&x.tickLength?x.axisLineThickness+x.tickLength:x.axisLineThickness,x.showAxisLine?(x.labelPadding=(0,a.pluckNumber)(F,2)+b,x.labelPadding<0&&(x.labelPadding=(x.axisLineThickness<0?0:b)+2),e-=x.axisLineThickness):(x.labelPadding=(0,a.pluckNumber)(F,2),x.labelPadding<0&&(x.labelPadding=2)),h=S.max,u=S.min,x.name.rotation=0,x.labels.step=x.labelStep,x.labels.isDraw=1,x.labels.drawNormalVal=x.showDivLineValues,x.labels.drawLimitVal=x.showLimits,K=D.lineHeight,K=Number(K.replace(/px/i,"")),I&&K<e&&(e-=K),1!==x.showLimits&&1!==x.showDivLineValues&&(x.labels.isDraw=0),((d=x.drawLabels?this._getVMaxLabelDimention(e-x.labelPadding):{width:0,height:0}).width+x.labelPadding>e&&!x.tickValues||0===d.width)&&(x.labels.isDraw=0),x.labels.isDraw&&(x.labelMaxW=d.width>X?d.width:X,x.labelMaxH=d.height,j=B=x.labelMaxW+x.labelPadding),x.drawTrendLines&&x.drawTrendLabels&&M&&M.length){for(i=x.isPercent?_.percentValue:x.isVertical?_.yAxis:_.xAxis,w.useEllipsesOnOverflow(k.useEllipsesWhenOverflow),w.setStyle({fontSize:O.fontSize,fontFamily:O.fontFamily,lineHeight:O.lineHeight,fontWeight:O.fontWeight}),t=0,n=M.length;t<n;t+=1)for(c=0,g=M[t].line&&M[t].line.length;c<g;c+=1)f=M[t].line[c],v=_.getCleanValue((0,a.pluck)(f.startvalue,f.value,0)),y=(0,a.pluckNumber)(f.endvalue,v),v<=h&&v>=u&&y<=h&&y>=u&&(x.isOpposit&&(f.valueonright=1),s=1===(m=(0,a.pluckNumber)(f.valueonright,0))?f.endvalue||f.startvalue:f.startvalue||f.endvalue,(p=(0,a.parseUnsafeString)(f.origText||f.displayvalue||s||""))===s&&(p=""+i.call(_,p)),m?p.length>Y.length&&(Y=p):p.length>q.length&&(q=p));for(z=(d=w.getOriSize(Y)).width+x.labelPadding,W=(d=w.getOriSize(q)).width+x.labelPadding,N?(z>j&&z>e&&(z=e),W>e-(j=Math.max(j,z+x.labelPadding))&&(W=Math.min(W,e-j))):(W>j&&W>e&&(W=e),z>e-(j=Math.max(j,W+x.labelPadding))&&(z=Math.min(z,e-j))),t=0,n=M.length;t<n;t+=1)for(c=0,g=M[t].line&&M[t].line.length;c<g;c+=1)f=M[t].line[c],v=_.getCleanValue((0,a.pluck)(f.startvalue,f.value,0)),y=(0,a.pluckNumber)(f.endvalue,v),p=1===Number(f.valueonright)?f.origText||f.displayvalue||""+y||"":f.origText||f.displayvalue||""+v||"",(p=(0,a.parseUnsafeString)(""+p))!==f.endvalue&&p!==f.startvalue||(p=""+i.call(_,p)),f.origText=p,l=(m=(0,a.pluckNumber)(f.valueonright,0))?w.getSmartText(p,z,C.canvasHeight,T):w.getSmartText(p,j,C.canvasHeight,T),(o=x.parsedTrendLabels[G++])&&(o.attr.text=f.displayvalue=l.text,x.isOpposit&&(o.valueOnRight=1,o.attr["text-anchor"]=a.POSITION_START)),l.tooltext?(f.valueToolText=l.tooltext,o&&(o.valueToolText=f.valueToolText)):(delete f.valueToolText,o&&delete o.valueToolText)}return e+=K,!x.drawAxisName||e-j-z<=0||""===I?(A.isDraw=!1,A.value=""):(w.setStyle({fontSize:D.fontSize,fontFamily:D.fontFamily,lineHeight:D.lineHeight,fontWeight:D.fontWeight}),A.isDraw=!0,x.rotateAxisName?(x.name.rotation=N?90:270,r=w.getSmartText(I,P,e-j-z),A.value=I,x.nameMaxW=Math.min(r.height),H=x.nameMaxW+E):(r=w.getSmartText(I,e-j-z,P),A.value=I,x.nameMaxW=Math.min(r.width,e-j),x.nameMaxH=r.height,x.axisNameWidth>=0&&(x.nameMaxW=Math.min(x.nameMaxW,x.axisNameWidth)),H=x.nameMaxW+E)),N?(R?(U.left+=Math.max(B,W),U.right+=z):(U.left+=W,U.right+=Math.max(B,z)),V?(x.axisNamePadding=U.left+E,U.left+=H):(x.axisNamePadding=U.right+E,U.right+=H)):(R?(U.left+=W,U.right+=Math.max(B,z)):(U.left+=Math.max(B,W),U.right+=z),V?(x.axisNamePadding=U.right+E,U.right+=H):(x.axisNamePadding=U.left+E,U.left+=H)),A.isDraw&&x.axisNamePadding+x.nameMaxW>e&&(x.axisNamePadding=e-x.nameMaxW,H=x.nameMaxW+x.axisNamePadding-j),U},t.prototype._placeHorizontalAxis=function(e){var t,n,o,i,r,l,s,c,h,u,p,d,g,f,m,b,v,y,x=this.config,C=this.getFromEnv("chart"),k=C.config,w=C.getFromEnv("smartLabel"),S=x.axisRange,L=x.name,A=x.isOpposit,N=C.getFromEnv("number-formatter"),_=x.drawLabelsOpposit,P=x.drawAxisNameOpposit,F=0,E=k.canvasWidth,T=x.labelPadding=(0,a.pluckNumber)(x.rawAttr.axisValuePadding,4),D=(0,a.pluckNumber)(x.rawAttr.axisNamePadding,5),O=x.useEllipsesWhenOverflow,I=x.name.style,M=x.trend.trendStyle,R=x.axisName,V=x.vTrendLines,B=0,G=0,j=0,H={top:0,bottom:0},W=0,z=0;if(T<0&&(x.labelPadding=2),b=x.drawTick&&x.tickLength?x.axisLineThickness+x.tickLength:x.axisLineThickness,x.showAxisLine?(x.labelPadding=(0,a.pluckNumber)(T,2)+b,x.labelPadding<0&&(x.labelPadding=(x.axisLineThickness<0?0:b)+2),e-=x.axisLineThickness):(x.labelPadding=(0,a.pluckNumber)(T,2),x.labelPadding<0&&(x.labelPadding=2)),s=S.max,c=S.min,x.labels.rotation=0,x.labels.step=x.labelStep,x.labels.isDraw=1,x.labels.drawNormalVal=x.showDivLineValues,x.labels.drawLimitVal=x.showLimits,z=I.lineHeight,z=Number(z.replace(/px/i,"")),R&&z<e&&(e-=z),x.rotateLabels&&"stagger"!==x.labelDisplay&&"none"!==x.labelDisplay&&(x.labelDisplay="rotate"),1!==x.showLimits&&1!==x.showDivLineValues&&(x.labels.isDraw=0),f=x.drawLabels?this._getHMaxLabelDimention(e-x.labelPadding):{width:0,height:0},x.labels.rotation?f.width+x.labelPadding>e&&!x.tickValues&&(x.labels.isDraw=0):f.height+x.labelPadding>e&&!x.tickValues&&(x.labels.isDraw=0),x.labels.isDraw&&(x.labels.rotation?(x.labelMaxW=f.height,x.labelMaxH=f.width,F=f.width+x.labelPadding):(x.labelMaxW=f.width,x.labelMaxH=f.height,F=f.height+x.labelPadding),B=F),p=(B=Math.max(B,x.labelPadding))<=e?e-B:e,x.drawTrendLines&&x.drawTrendLabels&&V&&x.isActive)for(m=x.isPercent?this.getFromEnv("number-formatter").percentValue:x.isVertical?this.getFromEnv("number-formatter").yAxis:this.getFromEnv("number-formatter").xAxis,w.useEllipsesOnOverflow(k.useEllipsesWhenOverflow),w.setStyle({fontSize:M.fontSize,fontFamily:M.fontFamily,lineHeight:M.lineHeight,fontWeight:M.fontWeight}),n=0,o=V.length;n<o;n+=1)for(l=0,u=V[n].line&&V[n].line.length;l<u;l+=1)d=V[n].line[l],v=N.getCleanValue((0,a.pluck)(d.startvalue,d.value,0)),y=(0,a.pluckNumber)(d.endvalue,v),v<=s&&v>=c&&y<=s&&y>=c&&(t=1===(0,a.pluckNumber)(d.valueonright,0)?d.endvalue||d.startvalue:d.startvalue||d.endvalue,(h=(0,a.parseUnsafeString)(d.origText||d.displayvalue||t||""))===t&&(h=""+m.call(C.getFromEnv("number-formatter"),h)),d.origText=h,p-((g=w.getSmartText(h,C.canvasWidth,M.lineHeight,O)).height+2)<0?d.displayvalue="":((i=x.parsedTrendLabels[G++])&&(i.attr.text=d.displayvalue=g.text),W=W<g.height?g.height:W),g.tooltext?(d.valueToolText=g.tooltext,i&&(i.valueToolText=d.valueToolText)):(delete d.valueToolText,i&&delete i.valueToolText));return p-=W,B+=W,p+=z,e+=z,!x.drawAxisName||p<=0||""===R?(L.isDraw=!1,L.value=""):(w.setStyle({fontSize:I.fontSize,fontFamily:I.fontFamily,lineHeight:I.lineHeight,fontWeight:I.fontWeight}),L.isDraw=!0,r=w.getSmartText(R,E,p),L.value=R,x.nameMaxW=E,x.nameMaxH=r.height,j=r.height+D,x.axisNamePadding=D+B,x.axisNamePadding+r.height>e&&(x.axisNamePadding=e-r.height,j=r.height+x.axisNamePadding-B)),A?(_?H.bottom+=F+W:(H.top+=F,H.bottom+=W),x.trendBottomPadding=H.bottom-W+2,P?H.bottom+=j:H.top+=j):(_?(H.top+=F,H.bottom+=W):H.bottom+=F+W,x.trendBottomPadding=H.bottom-W+2,P?H.top+=j:H.bottom+=j),H},t.prototype._parseCategoryPlotLine=function(){var e,t,n,o=this.config,r=o.axisRange,l=o.tickValues.tickValue,s=(0,i.convertColor)(o.divLineColor,o.divLineAlpha),c=o.divLineThickness,h=o.divLineIsDashed?(0,a.getDashStyle)(o.divLineDashLen,o.divLineDashGap,c):a.DASH_DEF,u=m(this.getVisibleConfig()),p=o._allTicks,d=p.length;if(e={stroke:s,"stroke-width":c,"stroke-dasharray":h},(!l[0]||l[0].x===a.UNDEF&&l[0].y===a.UNDEF)&&o.lines.isDraw&&o.categoryNumDivLines)for(t=0;t<d;++t)u(n=p[t])&&n!==r.min&&n!==r.max&&this.setReferenceInfo({from:n,type:"line",layer:1,attr:e})},t.prototype._drawComponents=function(){var e=this.config;e.drawAxisName&&this._drawAxisName(),e.drawAxisLine&&this._drawAxisLine(),e.tickValues?e.drawLabels&&this._drawCategory():e.drawLabels&&this._drawLabel(),e.drawTrendLines&&this.drawTrendLabel(),this._drawScrollBar()},t.prototype.drawTrendLabel=function(){var e,t=this.config,n=t.parsedTrendLabels,o=this.getFromEnv("animationManager"),i=this.getFromEnv("toolTipController"),r=t.axisTrendLabelContainer,l=t.isOpposit,s=t.labelPadding,h=t.vTrendLines,u=t.trendLines,p=t.axisDimention,d=this.getVisibleConfig(),g=d.minValue,f=d.maxValue,m=void 0,v=void 0,y=void 0,x=void 0,C=void 0,k=void 0,w=void 0,S=void 0,L=void 0,A=!0,N=void 0,_=void 0,P=void 0,F=void 0,E=void 0,T=void 0;for(E=0,T=n.length;E<T;E++)n[E].id=E+"_trend";for(h?x=l?p.opposite-(t.trendBottomPadding||0):p.y+(t.trendBottomPadding||0):(x=l?p.opposite+(s||0):p.x-(s||0),C=l?p.x+(s||0):p.opposite+(s||0)),E=0,T=(e=(0,c["default"])(function(e,t){return e.attr.text===t.attr.text},t.prevTrendLabels,n)).length;E<T;E++)(P=this.getGraphicalElement(e[E].id))&&this.removeGraphicalElement(P);if(t.prevTrendLabels=(0,a.extend2)([],n),t.drawTrendLabels)for(E=0,T=n.length;E<T;E++)v=n[E],y=this.getGraphicalElement(E+"_trend"),w=+v.from,L=+v.to,A=!0,(F=!isNaN(L))?(g>(S=w+(L-w)/2)||f<S)&&(A=!1):(g>w||f<w)&&(A=!1),A?(h?(N=this.getPixel(w,b),_=L?this.getPixel(L,b):0,k=(0,a.pluckNumber)(v.isTrendZone,t.isTrendZone,1),F&&L!==w&&k?(v.attr.x=N+(_-N)/2,v.attr.y=x):(v.attr.x=L?_:N,v.attr.y=x)):u&&(N=this.getPixel(w,b),_=L?this.getPixel(L,b):0,m=(0,a.pluckNumber)(v.valueOnRight,0),k=(0,a.pluckNumber)(v.isTrendZone,t.isTrendZone,0),F&&L!==w&&k?(v.attr.x=m?C:x,v.attr.y=N+(_-N)/2):(v.attr.x=m?C:x,v.attr.y=L&&m?_:N)),y=this.addGraphicalElement(E+"_trend",o.setAnimation({container:r,el:y||"text",attr:v.attr,css:v.css,data:{value:S||w},component:this,label:"text"})),t.showTooltip&&v.valueToolText?i.enableToolTip(y,v.valueToolText):i.disableToolTip(y)):y&&this.removeGraphicalElement(y);else for(E=0,T=n.length;E<T;E++)(P=this.getGraphicalElement(n[E].id))&&this.removeGraphicalElement(P)},t.prototype._drawAxisName=function(){var e,t,n,o,i,r,l=this.config,s=this.getFromEnv("toolTipController"),c=this.getLinkedItem("canvas").getEffectiveDimensions(),h=this.getFromEnv("animationManager"),u=c.left,p=c.top,d=c.width,g=c.height,f=p+g,m=u+d,b=this.getFromEnv("chart").config,v=l.name.style,y=l.name.value,x=l.isOpposit,C=l.isVertical,k=this.getFromEnv("smartLabel"),w=l.axisNameContainer,S=l.axisNamePadding,L=l.nameMaxH,A=l.nameMaxW,N=l.axisDimention,_=C?N.x:N.y,P=N.opposite,F=this.getGraphicalElement("axisName"),E=(0,a.pluckNumber)(l.name.rotation,C?90:270),T=this.getFromEnv("paper"),D={fontFamily:v.fontFamily,fontSize:v.fontSize,lineHeight:v.lineHeight,fontWeight:v.fontWeight,fontStyle:v.fontStyle};l.name.isDraw?(e={fontFamily:v.fontFamily,fill:v.color,"vertical-align":"middle","font-size":v.fontSize,"line-height":v.lineHeight},k.useEllipsesOnOverflow(b.useEllipsesWhenOverflow),k.setStyle({fontSize:v.fontSize,fontFamily:v.fontFamily,lineHeight:v.lineHeight,fontWeight:v.fontWeight}),l.drawAxisNameOpposit&&(x=!x,_=P),C?(S=Math.max(S,function(e,t){var n=0;return e.relativeAxis&&e.relativeAxis.config&&e.relativeAxis.config.axisNamePadding&&(n=Math.max(e.relativeAxis.config.axisNamePadding,n)),e.isOpposit&&t.canvasMarginRight&&(n=Math.max(n,t.canvasMarginRight-t.marginLeft-e.nameMaxW)),!e.isOpposit&&t.canvasMarginLeft&&(n=Math.max(n,t.canvasMarginLeft-t.marginRight-e.nameMaxW)),n}(l,b)),o=l.axisNameAlignCanvas||b.captionalignment&&"left"===b.captionalignment?g:Math.max(g,l.oriCanvasHeight||0),E?(n=(t=k.getSmartText(y,o,A)).tooltext,i=t.width):(n=(t=k.getSmartText(y,A,o)).tooltext,i=t.height),r=l.drawAxisNameFromBottom?f-i/2:i>g?b.height/2:p+g/2,e.text=t.text,e.x=x?(_||m)+S+A/2:(_||u)-S-A/2,e.y=r):(n=(t=k.getSmartText(y,d,L)).tooltext,x&&b.canvasMarginTop&&(S=Math.max(S,b.canvasMarginTop-b.marginTop-L)),!x&&b.canvasMarginBottom&&(S=Math.max(S,b.canvasMarginBottom-b.marginBottom-L)),e.text=t.text,e.x=u+d/2,e.y=x?(_||p)-S-L/2:(_||f)+S+L/2),e["text-bound"]=""===t.text?[]:[v.backgroundColor,v.borderColor,v.borderColor?v.borderThickness:0,v.borderPadding,v.borderRadius,v.borderDash],e.transform=T.getSuggestiveRotation(C?E:0,e.x,e.y),F=this.addGraphicalElement("axisName",h.setAnimation({css:D,el:F||"text",attr:e,container:w,component:this,label:"text"})),l.showTooltip?s.enableToolTip(F,n):s.disableToolTip(F)):F&&this.removeGraphicalElement(F)},t.prototype._drawAxisLine=function(){var e,t,n,o,i,r,l,c,h,u,p,d,f,m,v,y,x,C,k=this.config,w=k.isVertical,S=k.isOpposit,L=this.getFromEnv("chart"),A=this.getLinkedItem("canvas").getEffectiveDimensions(),N=this.getFromEnv("animationManager"),_=A.top,P=A.left,F=_+A.height,E=P+A.width,T=k.axisDimention,D=w?T.x:T.y,O=k.drawAxisLineWRTCanvas,I=L.getFromEnv("dataSource").chart,M=k.axisAxisLineContainerBottom,R=this.getGraphicalElement("axisLine"),V=[];if(o=1===(0,a.pluckNumber)(I.showyaxisline,I.showyaxisline)?(0,a.pluckNumber)(I.yaxislinethickness,I.pyaxislinethickness,1):0,k.showAxisLine){if(w?(i=S?(D=O?E:D)+k.axisLineThickness/2:(D=O?P:D)-k.axisLineThickness/2,n=(y=g(["M",i,F,"L",i,_],k.axisLineThickness)).path):(i=S?(D=O?_:D)-k.axisLineThickness/2:(D=O?F:D)+k.axisLineThickness/2,n=(y=g(["M",P-o,i,"L",E,i],k.axisLineThickness)).path),c={path:n,stroke:k.axisLineColor,"stroke-linecap":"butt","stroke-width":k.axisLineThickness,"shape-rendering":y.isCrisped?"crisp":a.UNDEF},k.drawTick&&k.tickLength)for(e={stroke:k.tickColor,"stroke-width":k.tickWidth},r=w?S?i+k.tickLength:i-k.tickLength:S?i-k.tickLength:i+k.tickLength,v=0,C=(x=k.tickValues?k.tickValues.tickValue.map(function(e){return w?e.y:e.x}):k.ticks).length;v<C;v+=1)f=(d=x[v])+"_tick",u=this.getGraphicalElement(f),l=this.getPixel(d,b),e.path=g(w?["M",i,l,"L",r,l]:["M",l,i,"L",l,r],k.tickWidth).path,h=N.setAnimation({el:u||"path",attr:e,data:{value:d,path:e.path},container:M,component:this,label:"path"}),u||this.addGraphicalElement(f,h),V.push(f);t=N.setAnimation({el:R||"path",attr:c,container:M,component:this,label:"path"}),R||this.addGraphicalElement("axisLine",t),V.push("axisLine")}for(v=0,C=(m=(0,s["default"])(k.prevTicks,V)).length;v<C;v++)(p=this.getGraphicalElement(m[v]))&&this.removeGraphicalElement(p);k.prevTicks=V},t.prototype._parseCategory=function(){var e,t,n,o,r,l,s,c,h,u,p,d,g,f,m,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T=this.config,D=T.axisDimention||{},O=this.getFromEnv("chart"),I=O.getFromEnv("smartLabel"),M=this.components,R=M.labels,V=this.getLinkedItem("canvas").getEffectiveDimensions(),B=O.config,G=T.isOpposit,j=T.labels,H=j.style,W=T.isVertical,z=V.top,U=V.left,q=z+V.height,Y=U+V.width,K=T.labelPadding,X=W?D.x:D.y,Z=D.opposite,J=O.getFromEnv("dataSource").categories,$={},Q=T.tickValues.tickValue,ee=T.axisRange.min,te=T.drawnStaggerLines,ne=(T.labelStep!==T.labels.step||1!==this.getZoom())&&"stagger"===T.labelDisplay;if(T.labels.isDraw)for(W&&(N=Math.abs(this.getPixel(0,b)-this.getPixel(0+T.axisRange.tickInterval,b)),T.labelMaxH>N&&(w=Math.ceil(T.labelMaxH/N)),w>T.labels.step&&(T.labels.step=w)),ne&&(A=2*Math.abs(this.getPixel(ee,b)-this.getPixel(ee+T.labels.step,b))*T.sWidthAdjstFactor-1),P=(o=T.labels.rotation)?T.labelMaxH:T.labelMaxW,F=o?T.labelMaxW:T.labelMaxH,T.drawLabelsOpposit&&(G=!G,X=Z),J&&J[0]&&"auto"!==T.xAxisLabelMode&&($.fontFamily=J[0].font,$.fontSize=J[0].fontsize,$.color=J[0].fontcolor),T.ParentCss=g={fontFamily:(0,a.pluck)($.fontFamily,H.fontFamily),fontSize:(0,a.pluck)($.fontSize,H.fontSize),fontWeight:(0,a.pluck)(H.fontWeight),fontStyle:(0,a.pluck)(H.fontStyle)},g.lineHeight=(0,a.setLineHeight)(g),C=this._getCategoryArr(),M.labelIndexArr=[],e=0,k=C.length;e<k;e+=1)t=Q[E=C[e].index],y=C[e].value,M.labelIndexArr.push(E),h=(0,a.pluck)(t.font,t.labelfont),u=(0,a.pluck)(t.fontsize,t.labelfontsize),p=(0,a.pluck)(t.fontbold,t.labelfontbold)?(0,a.pluckNumber)(t.fontbold,t.labelfontbold,0)?"bold":a.NORMAL:a.UNDEF,d=(0,a.pluck)(t.fontitalic,t.labelfontitalic)?(0,a.pluckNumber)(t.fontitalic,t.labelfontitalic,0)?"italic":a.NORMAL:a.UNDEF,m=(0,i.convertColor)((0,a.pluck)(t.fontcolor,t.labelfontcolor,$.color,H.color),(0,a.pluckNumber)(t.labelalpha,T.rawAttr.labelFontAlpha,O.config.singleseries?a.UNDEF:t.alpha,100)),h||u||p||d?(c={},h&&(c.fontFamily=h),u&&(c.fontSize=u),p&&(c.fontWeight=p),d&&(c.fontStyle=d),c.lineHeight=u?(0,a.setLineHeight)(c):g.lineHeight):c=a.UNDEF,(c||g)&&-1!==(l=(c||g).lineHeight).indexOf("px")&&(r=l.replace(/px/i,""),r=parseFloat(r)),!1===t.appliedSmartLabel&&(I.setStyle(t._ovrStyle||g),_=I.getSmartText(t.oriLabel||t.label,P,F),t.oriLabel=t.oriLabel||t.label,t.label=_.text,t.labelTooltext=_.labelTooltext,t.appliedSmartLabel=!0),v=this.getPixel(y,b),W?(n=t.label||"",s=Number(t.labelPadding)||0,f={fill:m,"line-height":r,opacity:1,"text-anchor":G?a.POSITION_START:a.POSITION_END,text:n,cursor:!B.singleseries&&t.link||t.labellink||H.labelLink?a.POINTER:"",x:G?(X||Y)+K:(X||U)-K,y:s?v+s:v}):(n=t.label||"",s=Number(t.labelPadding)||0,f={fill:m,"line-height":r,opacity:1,text:n,cursor:!B.singleseries&&t.link||t.labellink||H.labelLink?a.POINTER:"",x:v,y:G?(z||X)-K:(X||q)+K},o?(f["text-anchor"]=G?a.POSITION_START:a.POSITION_END,f["vertical-align"]="middle"):(f["text-anchor"]=a.POSITION_MIDDLE,f["vertical-align"]=G?a.POSITION_BOTTOM:a.POSITION_TOP),ne?((S=t.labelCount%te)&&((r=t.style.lineHeight)||(r=T.labels.style.lineHeight),L=r.replace(/px/i,"")*S,f.y=G?f.y-L:f.y+L),I.setStyle(t._ovrStyle||g),_=I.getSmartText(t.oriLabel||t.label,A,F),t.oriLabel=t.oriLabel||t.label,f.text=t.label=_.text,t.labelTooltext=_.labelTooltext,t.appliedSmartLabel=!0):s&&(G?f.y-=s:f.y+=s)),x={label:t.label,lineHeight:l,border:(0,a.pluckNumber)(t.borderthickness,t.labelborderthickness)?(0,a.pluckNumber)(t.borderthickness,t.labelborderthickness,1)+"px solid":"",borderColor:t.bordercolor||t.labelbordercolor?(0,i.convertColor)(t.bordercolor||t.labelbordercolor,(0,a.pluckNumber)(t.borderalpha,t.labelborderalpha,t.alpha,t.labelalpha,100)):a.BLANKSTRING,borderThickness:(0,a.pluckNumber)(t.borderthickness,t.labelborderthickness),borderPadding:(0,a.pluckNumber)(t.borderpadding,t.labelborderpadding),borderRadius:(0,a.pluckNumber)(t.borderradius,t.labelborderradius),backgroundColor:t.bgcolor||t.labelbgcolor?(0,i.convertColor)(t.bgcolor||t.labelbgcolor,(0,a.pluckNumber)(t.bgalpha,t.labelbgalpha,t.alpha,t.labelalpha,T.rawAttr.labelFontAlpha,100)):a.BLANKSTRING,borderDash:(0,a.pluckNumber)(t.borderdashed,t.labelborderdashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(t.borderdashlen,t.labelborderdashlen,4),(0,a.pluckNumber)(t.borderdashgap,t.labelborderdashgap,2)):0===(0,a.pluckNumber)(t.borderdashed,t.labelborderdashed)?a.DASH_DEF:H.borderDash},t.label?f["text-bound"]=[(0,a.pluck)(x.backgroundColor,H.backgroundColor),(0,a.pluck)(x.borderColor,H.borderColor),(0,a.pluck)(x.borderThickness,H.borderThickness),(0,a.pluck)(x.borderPadding,H.borderPadding),(0,a.pluck)(x.borderRadius,H.borderRadius),(0,a.pluck)(x.borderDash,H.borderDash)]:f["text-bound"]=[],j.shiftX&&(f.x+=j.shiftX),j.shiftY&&(f.y+=j.shiftY),f.transform=(0,a.getSuggestiveRotation)(o,f.x,f.y),R[E]=R[E]||{config:{props:{label:{}}}},R[E].config.props.label.attr=f,R[E].config.props.label.css=c},t.prototype.allocatePosition=function(){var e=this.config;e.tickValues?e.drawLabels&&this._parseCategory():e.drawLabels&&this._parseLabel()},t.prototype._drawCategory=function(){var e,t,n,o,i,r,l,s,h,u,p,d=this.config,g=this.getFromEnv("chart"),f=g.config,m=d.labels,b=this.getFromEnv("animationManager"),v=m.style,y=this.getFromEnv("toolTipController"),x=d.axisContainer,C=this.config.categoryLabel||(this.config.categoryLabel=[]),k=function(e){return function(t){g.plotEventHandler(this,t,e)}},w=d.tickValues.tickValue,S=[];if(d.labels.isDraw){for(x.css(d.ParentCss),r=this._getCategoryArr(),e=0,s=(i=(0,c["default"])(function(e,t){return e.value===t.value},d.prevCategoryIntervalArr,r)).length;e<s;e++)(u=this.getGraphicalElement(i[e].value+"_label"))&&this.removeGraphicalElement(u);for(d.prevCategoryIntervalArr=(0,a.extend2)([],r),e=0,s=r.length;e<s;e+=1)S[e]=r[e].value+"_label";for(e=0,s=r.length;e<s;e+=1)t=w[p=r[e].index],o=(h=this.components.labels[p].config).props.label.attr,l=this.getGraphicalElement(S[e]),n=b.setAnimation({el:l||"text",attr:o,container:x,data:{value:void 0},component:this,label:"text",css:h.props.label.css}),l||(this.addGraphicalElement(S[e],n),n.on("fc-click",k("dataLabelClick")).hover(k("dataLabelRollOver"),k("dataLabelRollOut"))),n.data("eventArgs",{link:!f.singleseries&&t.link||t.labellink||v.labelLink,text:o.text,index:p}),t.labelTooltext?y.enableToolTip(n,t.labelTooltext):y.disableToolTip(n),C[p]=n}else for(e=0,s=d.prevCategoryIntervalArr.length;e<s;e++)(u=this.getGraphicalElement(d.prevCategoryIntervalArr[e].value+"_label"))&&this.removeGraphicalElement(u)},t.prototype._getCategoryArr=function(){var e,t,n,o,i,r,l,s,c,h,u=this.config,p=u.isVertical,d=0,g=0,f=[];for(e=u.tickValues.tickValue,o=v(e),n=e?e.length-1:0,p&&(c=Math.abs(this.getPixel(0,b)-this.getPixel(1,b)),u.labelMaxH>c&&(d=Math.ceil(u.labelMaxH/c)),d>u.labels.step&&(u.labels.step=d)),s=u.labels.step>0?u.labels.step:1,h=1!==this.getZoom(),r=this.getVisibleConfig(),t=o;t<=n;t+=s)(i=e[t])&&(l=(0,a.pluckNumber)(i.x,i.y,t),0!==(0,a.pluckNumber)(i.showlabel,u.showLabels,1)&&(h&&(l<r.minValue||l>r.maxValue)?i.labelCount=g++:("auto"!==u.xAxisLabelMode&&"mixed"!==u.xAxisLabelMode||0!==u.showZeroPlane&&0!==u.showZeroPlaneValue||0!==l)&&(u.labels.drawNormalVal||u.labels.drawLimitVal&&(t===o||t===n))&&(u.labels.drawNormalVal||t===o||t===n)&&(u.labels.drawLimitVal||t!==o&&t!==n)&&(i.labelCount=g++,f.push({index:t,value:l}))));return f},t.prototype.getValue=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{wrtVisible:!1},n=this.getScale(),o=this.getTranslation();return n.getDomainValue(t.wrtVisible?e:e-o)},t.prototype.getPixel=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{wrtVisible:!1},n=this.getScale(),o=this.getTranslation(),a=n.getRangeValue(e);return t.wrtVisible?a:a+o},t.prototype._getCustomPixel=function(e,t){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{wrtVisible:!1};if(!t)return this.getPixel(e,n);var o=this.getScale().copy(),a=o.getRange(),i=a[0],r=a[1],l=Math.min(i,r),s=o.getRangeValue(e),c=this.getTranslation();return o.setRange([l,l+t]),n.wrtVisible?s:s+c},t.prototype.getTranslation=function(){return this.config.translation||0},t.prototype.setScrollType=function(e){"none"!==e&&"smart"!==e&&"always"!==e||(this.config.scrollType=e,"none"===e?this.disableScroll():this.enableScroll())},t.prototype.getScrollType=function(){return this.config.scrollType},t.prototype._createScrollBar=function(){var e,t,n,o=this,a=o.config,i=o.getFromEnv("chart"),r=o.getFromEnv("animationManager"),s=o.getLinkedItem("scrollBar");e=i.getFromEnv("toolbox"),t=i.getFromEnv("toolBoxAPI").Scroller,s||o.setLinkedItem("scrollBar",s=new t),s.configure({isHorizontal:!a.isVertical},e.idCount,e.pId,o.getFromEnv("chartInstance").id),s.attachEventHandlers({scrollStart:function(e){n=e,i.fireChartInstanceEvent("scrollstart",{scrollPosition:e})},scroll:function(e){var t=a.axisRange.max,n=a.axisRange.min,s=o.getVisibleConfig(),c=s.minValue,h=s.maxValue-c,u=t-h,p=(0,l["default"])(n,u),d=a.isReverse?p(1-e):p(e);o.setState("scrolling",!0),r.setAnimationState("scroll"),i.fireChartInstanceEvent("onScroll",{scrollPosition:e}),o.setVisibleConfig(d,d+h)},scrollEnd:function(e){i.fireChartInstanceEvent("scrollend",{scrollPosition:e,prevScrollPosition:n})}})},t.prototype._disposeScrollBar=function(){var e=this.getLinkedItem("scrollBar");e&&(e.dispose(),this.removeLinkedItem("scrollBar"))},t.prototype._drawScrollBar=function(){var e,t,n,o,i,r,l,s,c,h,u,p,d,g,f,m,v=this.getFromEnv("chart"),y=this.config,x=y.axisRange,C=y.scrollOptions||(y.scrollOptions={}),k=x.max,w=x.min,S=C.vxLength,L=this.getLinkedItem("scrollBar"),A=v.getChildren("canvas")[0].config,N=y.scrollerContainer;L&&(e=A.canvasLeft,t=A.canvasTop,n=A.canvasHeight,o=A.canvasWidth,i=A.canvasBorderWidth,r=y.showAxisLine&&y.axisLineThickness||0,l=(0,a.pluckNumber)(i,y.lineStartExtension),s=(0,a.pluckNumber)(i,y.lineEndExtension),C.viewPortMin=w,C.viewPortMax=k,c=(g=(p=this.getVisibleConfig()).maxValue-(d=p.minValue))/(f=x.max-x.min),m=(d-x.min)/(f-g),h=C.windowedCanvasWidth=this.getPixel(S,b),u=C.fullCanvasWidth=this.getPixel(k-w,b)-h,y.isVertical?L.draw(e,t,{height:n,scrollRatio:c,roundEdges:A.isRoundEdges,fullCanvasWidth:u,windowedCanvasWidth:h,scrollPosition:y.isReverse?1-m:m,parentLayer:N}):L.draw(e-l,t+n+i+r-2,{width:o+l+s,scrollRatio:c,roundEdges:A.isRoundEdges,fullCanvasWidth:u,windowedCanvasWidth:h,scrollPosition:m,parentLayer:N}))},t.prototype.enableScroll=function(){this.isScrollEnabled()||this._createScrollBar()},t.prototype.disableScroll=function(){this.isScrollEnabled()&&this._disposeScrollBar()},t.prototype.isScrollEnabled=function(){return!!this.getLinkedItem("scrollBar")},t.prototype.setVisibleConfig=function(e,t){var n,o=this.config,a=this.getZoom(),i=this.getScale();return!(e>=t||e<o.axisRange.min||t>o.axisRange.max)&&(n=i.setDomain([e,t]).getDomain(),o.visibleMin=n[0],o.visibleMax=n[1],o.zoom=this._computeZoom(),o.translation=this._computeTranslation(),1===a&&1===this.getZoom()||(o.ticks=this.generateTicks(),o.minorTicks=this.generateMinorTicks(),o.tickValues&&this.calculateTicksOnLabelMode&&this.calculateTicksOnLabelMode()),this.decideScroll(),this.clearReferenceInfo(),this._parseReferenceVisuals(),this.fireEvent("visiblerangeset",{minValue:e,maxValue:t}),this.asyncDraw(),!0)},t.prototype.hide=function(){var e=this.config;e.axisContainer&&(e.axisLabelContainerTop.hide(),e.scrollerContainer.hide(),e.axisContainer.hide(),e.axisNameContainer.hide(),e.axisTrendLabelContainer.hide(),e.axisAxisLineContainer.hide(),e.axisAxisLineContainerBottom.hide())},t.prototype.show=function(){var e=this.config;e.axisContainer&&(e.axisLabelContainerTop.show(),e.scrollerContainer.show(),e.axisContainer.show(),e.axisNameContainer.show(),e.axisTrendLabelContainer.show(),e.axisAxisLineContainer.show(),e.axisAxisLineContainerBottom.show())},t.prototype.getZoom=function(){return this.config.zoom||1},t.prototype._computeTranslation=function(){var e=this.config,t=this.getVisibleConfig(),n=(0,a.pluckNumber)(t.minValue,e.axisRange.min,0),o=(0,a.pluckNumber)(e.axisRange.min,t.minValue,0);return this.getPixel(n)-this.getPixel(o)},t.prototype._computeZoom=function(){var e=this.config,t=this.getVisibleConfig(),n=(0,a.pluckNumber)(t.minValue,e.axisRange.min,0),o=(0,a.pluckNumber)(t.maxValue,e.axisRange.max,1),i=(0,a.pluckNumber)(e.axisRange.min,t.minValue,0),r=(0,a.pluckNumber)(e.axisRange.max,t.maxValue,1),l=e.maxZoomLimit,s=(r-i)/(o-n);return s>l?l:s},t.prototype.getTickValues=function(){var e=this.config.tickValues;return e&&e.tickValue||[]},t.prototype.dataLabels=function(e){var t=this.config.axisIndex;return this.getFromEnv("number-formatter").dataLabels(e,t)},t.prototype.getAxisBase=function(){var e=this.getVisibleConfig(),t=e.minValue,n=e.maxValue;return t<0&&n>0?0:n<=0?n:t},t.prototype._parseReferenceVisuals=function(){var e,t,n=this.config,o=this.getTickValues(),a=o.length,i=this.getFromEnv("chartConfig").is3D;n.isActive||(e=n.lines.isDraw,t=n.band.isDraw,n.lines.isDraw=0,n.band.isDraw=0),n.tickValues?n.drawLabels&&this._parseCategoryLine(o,0,a):n.drawPlotlines&&this._parsePlotLine(),n.tickValues&&"auto"!==n.xAxisLabelMode?(n.drawPlotlines&&!i&&this._parseCategoryPlotLine(),n.drawPlotBands&&!i&&this._parseCategoryPlotBand(),"mixed"===n.xAxisLabelMode&&n.drawPlotBands&&!i&&this._parsePlotBand()):n.drawPlotBands&&!i&&this._parsePlotBand(),n.isActive||(n.lines.isDraw=e,n.band.isDraw=t),n.drawTrendLines&&this._parseTrendLine()},t.prototype._parseCategoryPlotBand=function(){var e,t,n,o,r,l=this.config,s=l.tickValues.tickValue,c=l.showAlternateGridColor,h=l.alternateGridColor,u=l.alternateGridAlpha,p=l._allTicks,d=this.getLimit(),g=d.min,m=d.max,b=f(this.getVisibleConfig());if((!s[0]||s[0].x===a.UNDEF&&s[0].y===a.UNDEF)&&c&&l.band.isDraw&&l.categoryNumDivLines)for(e={fill:(0,a.toRaphaelColor)((0,i.convertColor)(h,u)),"stroke-width":0},t=0,r=0;r<p.length;++t,++r)b(p[r],p[r+1])&&(n=p[r],t%2==0&&(o=p[r+1])!==a.UNDEF&&(n===g&&(n="canvasStart"),o===m&&(o="canvasEnd"),this.setReferenceInfo({from:n,to:o,layer:0,type:"band",attr:e})))},t.prototype._parseTrendLine=function(){var e,t,n,o,r,l,s,c,h,u,p,d,g,f,m,b,v,y,x,C,k=this.config,w=k.isVertical,S=k.axisIndex,L=this.getFromEnv("chart-attrib"),A=this.getFromEnv("number-formatter"),N=k.axisRange,_=N.max,P=N.min,F=k.trend.trendStyle,E={fontFamily:F.fontFamily,fontSize:F.fontSize,lineHeight:F.lineHeight,fontWeight:F.fontWeight,fontStyle:F.fontStyle},T=k.vTrendLines,D=k.trendLines,O=0;if(s=D||T)for(n=0,o=s.length;n<o;n+=1)for(e=0,t=s[n].line&&s[n].line.length;e<t;e+=1)p=s[n].line[e],v=w?"yAxis":"xAxis",f=p.startvalue||p.value||0,f=A.getCleanValue((0,a.pluck)(p.startvalue,p.value,0)),m=Number(p.endvalue)||a.UNDEF,r=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(s[n].line[e].tooltext,s[0].tooltext,k.trendlineToolText))),r=(0,a.parseTooltext)(r,[7,15,16,17,18,19],{startValue:f,startDataValue:A[v](f,S),endValue:m||f,endDataValue:A[v](m||f,S),axisName:k.axisName},p),f>_||f<P||m>_||m<P||(T?(d=(0,a.parseUnsafeString)(p.displayvalue||""),c=(0,a.pluckNumber)(p.istrendzone,k.isTrendZone,1),m!==a.UNDEF&&""!==m&&m!==f&&c?(h={fill:(0,i.convertColor)((0,a.pluck)(p.color,k.trendlineColor),(0,a.pluck)(p.alpha,k.trendlineAlpha,40)),"stroke-width":0},u={fill:(0,i.convertColor)((0,a.pluck)(p.color,F.color),(0,a.pluck)(F.valueAlpha,p.alpha,k.trendlineAlpha,99)),"vertical-align":a.POSITION_TOP,text:d}):(b=(0,a.pluckNumber)(p.thickness,k.trendlineThickness,1),h={stroke:(0,i.convertColor)((0,a.pluck)(p.color,k.trendlineColor),(0,a.pluck)(p.alpha,k.trendlineAlpha,99)),"stroke-width":b,"stroke-dasharray":(0,a.pluck)(p.dashed,k.trendlinesAreDashed)===a.ONESTRING?(0,a.getDashStyle)((0,a.pluckNumber)(p.dashlen,k.trendlinesDashLen),(0,a.pluckNumber)(p.dashgap,k.trendlinesDashGap)):a.DASH_DEF},u={fill:(0,i.convertColor)((0,a.pluck)(p.color,F.color),(0,a.pluck)(F.valueAlpha,p.alpha,k.trendlineAlpha,99)),"vertical-align":a.POSITION_TOP,text:d})):D&&(d=(0,a.pluck)((0,a.parseUnsafeString)(p.displayvalue),p.startvalue,""),g=(0,a.pluckNumber)(p.valueonright,0),c=(0,a.pluckNumber)(p.istrendzone,k.isTrendZone,0),m!==a.UNDEF&&""!==m&&m!==f&&c?(h={fill:(0,i.convertColor)((0,a.pluck)(p.color,k.trendlineColor),(0,a.pluck)(p.alpha,k.trendlineAlpha,40)),"stroke-width":0},u={"text-anchor":g?a.POSITION_START:a.POSITION_END,fill:(0,i.convertColor)((0,a.pluck)(p.color,F.color),(0,a.pluck)(F.valueAlpha,p.alpha,k.trendlineAlpha,99)),text:d}):(b=(0,a.pluckNumber)(p.thickness,k.trendlineThickness,1),h={stroke:(0,i.convertColor)((0,a.pluck)(p.color,k.trendlineColor),(0,a.pluck)(p.alpha,k.trendlineAlpha,99)),"stroke-width":b,"stroke-dasharray":(0,a.pluck)(p.dashed,k.trendlinesAreDashed)===a.ONESTRING?(0,a.getDashStyle)((0,a.pluckNumber)(p.dashlen,k.trendlinesDashLen),(0,a.pluckNumber)(p.dashgap,k.trendlinesDashGap)):a.DASH_DEF},u={"text-anchor":g?a.POSITION_START:a.POSITION_END,fill:(0,i.convertColor)((0,a.pluck)(p.color,F.color),(0,a.pluck)(F.valueAlpha,p.alpha,k.trendlineAlpha,99)),text:d})),u["text-bound"]=u.text?[F.backgroundColor,F.borderColor,F.borderThickness,F.borderPadding,F.borderRadius,F.borderDash]:[],k.showTooltip&&r||(r=""),l=k.forceTrendBelow?0:(0,a.pluckNumber)(p.showontop,L.showtrendlinesontop,0),w?(y=f,C=m!==a.UNDEF?m:f):(y=m!==a.UNDEF?m:f,C=f),x=c&&y!==C?"band":"line",y!==a.UNDEF&&this.setReferenceInfo({from:y,to:C,toolText:r,attr:h,layer:l?3:2,type:x,id:"trend"+O+x}),k.parsedTrendLabels.push({css:E,valueOnRight:g,isTrendZone:c,from:f,to:m,attr:u}),O+=1)},t.prototype._parsePlotLine=function(){var e,t,n,o,r,l=this.config,s=l.axisRange,c=s.max,h=s.min,u=m(this.getVisibleConfig()),p=l.showCanvasBorder,d=(0,i.convertColor)(l.divLineColor,l.divLineAlpha),g=l.divLineThickness,f=l.divLineIsDashed?(0,a.getDashStyle)(l.divLineDashLen,l.divLineDashGap):a.DASH_DEF,b=(0,i.convertColor)(l.zeroPlaneColor,l.zeroPlaneAlpha),v=l.zeroPlaneThickness,y=l._allTicks,x=y.length,C=l.showZeroPlaneOnTop,k=l.minorTicks,w=k&&k.length;if(l.lines.isDraw)for(t=0;t<x;++t)u(e=y[t])&&(o={"stroke-dasharray":f},0===l.showZeroPlane&&0===e||p&&(e===c||e===h)||(0===e&&e!==h&&e!==c?(o.stroke=b,o["stroke-width"]=v,C=l.showZeroPlaneOnTop):(C=0,o.stroke=d,o["stroke-width"]=g),this.setReferenceInfo({type:"line",from:e,layer:0===e&&C?3:1,attr:o})));for(r={stroke:l.minorDivlinecolor,"stroke-width":l.minorDivLineThickness,"stroke-dasharray":f},t=0;t<w;++t)n=k[t],this.setReferenceInfo({type:"line",from:n,layer:1,attr:r})},t.prototype._parseCategoryLine=function(e,t,n){var o,r,l,s,c,h,u=this.config,p=this.getFromEnv("color-manager"),d=this.getFromEnv("chartInstance").getJSONData().categories,g={};if(t=t||0,n=n||e?e.length-1:0,u.drawPlotlines)for(h=1!==this.getZoom(),l=this.getVisibleConfig(),d&&d[0]&&(g.verticalLineColor=d[0].verticallinecolor,g.verticalLineAlpha=d[0].verticallinealpha,g.verticalLineThickness=d[0].verticallinethickness,g.verticalLineDashed=d[0].verticallinedashed,g.verticalLineDashLen=d[0].verticallinedashlen,g.verticalLineDashGap=d[0].verticallinedashgap),o=t;o<=n;o+=1)(r=e[o])&&(c=(0,a.pluckNumber)(r.x,r.y,o),1===Number(r.showverticalline)&&(h&&(c<l.minValue||c>l.maxValue)||((s={stroke:(0,i.convertColor)((0,a.pluck)(r.linecolor,g.verticalLineColor,u.divLineColor,p.getColor("divLineColor")),(0,a.pluck)(r.linealpha,g.verticalLineAlpha,p.getColor("divLineAlpha"))),"stroke-width":(0,a.pluckNumber)(r.linethickness,g.verticalLineThickness,1)})["stroke-dasharray"]=(0,a.pluckNumber)(r.linedashed,g.verticalLineDashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(r.linedashLen,g.verticalLineDashLen,4),(0,a.pluckNumber)(r.linedashgap,g.verticalLineDashGap,2),s["stroke-width"]):a.DASH_DEF,this.setReferenceInfo({type:"line",from:c,layer:1,attr:s}))))},t.prototype._parsePlotBand=function(){var e,t,n,o,r,l,s=this.config,c=s.showAlternateGridColor,h=s.alternateGridColor,u=s.alternateGridAlpha,p=s._allTicks,d=f(this.getVisibleConfig()),g=s.isReverse;if(c&&s.band.isDraw)for(t=1,e={fill:(0,a.toRaphaelColor)((0,i.convertColor)(h,u)),"stroke-width":0},o=0,n=p.length;o<n;++o,++t)d(p[o],p[o+1])&&t%2==0&&p[o+1]!==a.UNDEF&&(l=g?Math.max(p[o],p[o+1]):Math.min(p[o],p[o+1]),r=g?Math.min(p[o],p[o+1]):Math.max(p[o],p[o+1]),this.setReferenceInfo({from:l,to:r,type:"band",layer:0,attr:e}))},t.prototype.getReferenceInfo=function(){return this.config.referenceInfo},t.prototype.setReferenceInfo=function(e){this.config.referenceInfo.push(e)},t.prototype.clearReferenceInfo=function(){var e=this.config;e.referenceInfo=[],e.parsedTrendLabels=[],e.parsedVlineInfo=[]},t.prototype.resetStoredLimits=function(){this.config.dataLimit={}},t.prototype.decideScroll=function(){var e=this.getScrollType();"always"===e||"smart"===e&&1!==this.getZoom()?this.enableScroll():this.disableScroll()},t.prototype.getAxisDimension=function(){var e=this.config.axisDimention;return{x:e.x,y:e.y,opposite:e.opposite,axisLength:e.axisLength}},t}(o["default"]);y.prototype.setAxisDimention=u.setAxisDimention,y.prototype.shiftLabels=u.shiftLabels,y.prototype._createContainer=u._createContainer,t["default"]=y,t.getCrispPath=g,t.minimumEnquiry=v},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(131),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118),l=n(122);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(e,t){return e<t?t:e},h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"axis"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.components={labels:[]};var t=this.config;t.setAdaptiveMin=0,t.adjustDiv=1,t.axisNameWidth=r.UNDEF,t.rotateAxisName=0,t.useEllipsesWhenOverflow=1,t.divLineColor=r.UNDEF,t.divLineAlpha=r.UNDEF,t.divLineThickness=r.UNDEF,t.divLineIsDashed=r.UNDEF,t.divLineDashLen=r.UNDEF,t.divLineDashGap=r.UNDEF,t.showAlternateGridColor=r.UNDEF,t.alternateGridColor=r.UNDEF,t.alternateGridAlpha=r.UNDEF,t.showZeroPlane=1,t.zeroPlaneAlpha=80,t.showZeroPlaneValue=1,t.showZeroPlaneOnTop=1,t.showAxisLine=r.UNDEF,t.axisLineThickness=r.UNDEF,t.axisLineAlpha=r.UNDEF,t.tickLength=0,t.trendlineToolText=r.UNDEF,t.trendlineColor="333333",t.trendlineThickness=1,t.trendlineAlpha=r.UNDEF,t.showTrendlinesOnTop=0,t.trendlinesAreDashed=0,t.trendlinesDashLen=5,t.trendlinesDashGap=2,t.isTrendZone=r.UNDEF,t.showTrendlines=1,t.showTrendlineLabels=1,t.showLabels=1,t.maxLabelHeight=r.UNDEF,t.rotateLabels=r.UNDEF,t.slantLabel=0,t.showAxisValues=1,t.showTooltip=1,t.isActive=!0,t.drawLabels=!0,t.drawOnlyCategoryLine=!1,t.drawLabelsOpposit=!1,t.drawPlotlines=!0,t.drawAxisLine=!0,t.drawPlotBands=!0,t.drawAxisName=!0,t.drawAxisNameOpposit=!1,t.axisNameAlignCanvas=!1,t.drawAxisNameFromBottom=!1,t.drawTrendLines=!0,t.drawTrendLabels=!0,t.drawTick=!0,t.drawTickMinor=!0,t.animateAxis=!0,t.drawAxisLineWRTCanvas=!0,t.isRelativeAxisInverse=!1,t.axisIndex=0,t.uniqueClassName=0,t.viewPortRatio={},t.canvas={},t.axisRange={},t.drawnStaggerLines=r.UNDEF,t.axisDimention={},t.forceZeroTick=!0,t.isZeroTickForced=!1,t.extremeLabels={firstLabel:{},lastLabel:{}},t._setRangeAgain=!1,t._defaultForceDecimal=r.UNDEF,t._defaultDecimalPrecision=r.UNDEF,t.rangeChanged=!1,t.dimensionChanged=!1,t.apparentScrollPos=0,t.visibleMin=r.UNDEF,t.visibleMax=r.UNDEF,t.setPadding=!1,t.trendLimits=r.UNDEF},t.prototype.configureAttributes=function(e){var t,n,o,a,i=this.config,s=this.getFromEnv("chart"),h=this.getFromEnv("dataSource"),u=s.config.is3D,p=h.chart,d=this.getFromEnv("number-formatter");t=i.rawAttr=e,i.referenceInfo=[],i.parsedTrendLabels=[],i.parsedVlineInfo=[],i.trendLines=t.trendlines,i.vTrendLines=t.vtrendlines,(0,r.parseConfiguration)(t,i),i.axisName=(0,r.parseUnsafeString)(t.axisName),i.axisValuePadding=i.axisNamePadding||(0,r.pluckNumber)(t.axisValuePadding,4),i.axisNamePadding=i.axisNamePadding||(0,r.pluckNumber)(t.axisNamePadding,5),i.maxLabelWidthPercent=(0,r.pluckNumber)(t.maxLabelWidthPercent),i.maxLabelWidthPercent=Math.abs(i.maxLabelWidthPercent),i.minLabelWidthPercent=Math.abs((0,r.pluckNumber)(t.minLabelWidthPercent)),i.numDivLines=(0,r.pluckNumber)(t.numDivLines,4),i.numDivLines=c(i.numDivLines,0),i.categoryNumDivLines=(0,r.pluckNumber)(t.numDivLines,0),i.axisValuePadding=c(i.axisValuePadding,0),i.isReverse=(0,r.pluckNumber)(t.isReverse,0),i.isOpposit=(0,r.pluckNumber)(t.isOpposit,0),i.isVertical=(0,r.pluckNumber)(t.isVertical,0),i.categoryDivLinesFromZero=1,i.axisMinValue=d.getCleanValue(t.axisMinValue),i.axisMaxValue=d.getCleanValue(t.axisMaxValue),i.zeroPlaneColor=(0,r.pluck)(t.zeroPlaneColor,t.divLineColor),i.zeroPlaneThickness=(0,r.pluck)(t.zeroPlaneThickness,t.divLineThickness),i.axisLineColor=(0,l.convertColor)(t.axisLineColor,t.axisLineAlpha),i.tickAlpha=(0,r.pluckNumber)(t.tickAlpha,i.axisLineAlpha),i.tickColor=(0,l.convertColor)((0,r.pluck)(t.tickColor,t.axisLineColor),i.tickAlpha),i.tickWidth=(0,r.pluckNumber)(t.tickWidth,i.axisLineThickness),i.maxZoomLimit=(0,r.pluckNumber)(p.maxzoomlimit,s.maxzoomlimit,1e3),i.showVLines=(0,r.pluckNumber)(p.showvlines,1),i.showVLinesOnTop=(0,r.pluckNumber)(p.showvlinesontop,0),i.showVLineLabels=(0,r.pluckNumber)(p.showvlinelabels,this.showVLineLabels,1),i.showVLineLabelBorder=(0,r.pluckNumber)(p.showvlinelabelborder,1),i.rotateVLineLabels=(0,r.pluckNumber)(p.rotatevlinelabels,0),i.vLineColor=(0,r.pluck)(p.vlinecolor,"333333"),i.vLineLabelColor=(0,r.pluck)(p.vlinelabelcolor),i.vLineThickness=(0,r.pluck)(p.vlinethickness,1),i.vLineAlpha=(0,r.pluckNumber)(p.vlinealpha,80),i.vLineLabelBgColor=(0,r.pluck)(p.vlinelabelbgcolor,"ffffff"),i.vLineLabelBgAlpha=(0,r.pluckNumber)(p.vlinelabelbgalpha,u?50:100),i.staggerLines=Math.max((0,r.pluckNumber)(p.staggerlines,2),2),i.staggerLines=c(i.staggerLines,1),i.trendlineValuesOnOpp=(0,r.pluck)(t.trendlineValuesOnOpp,t.trendlineValuesOnOpp,0),i.labelDisplay=(0,r.pluck)(t.labelDisplay,"auto").toLowerCase(),i.labelStep=(0,r.pluckNumber)(t.labelStep,1),i.labelStep=Math.round(i.labelStep),i.labelStep=c(i.labelStep,1),i.startPad=0,i.endPad=0,i._oriLabelStep=i.labelStep,i.showLimits=(0,r.pluckNumber)(t.showLimits,i.showAxisValues),i.showUpperLimit=t.showLimits,i.showDivLineValues=(0,r.pluckNumber)(t.showDivLineValues,i.showAxisValues),i.showCanvasBorder=s.getChildren("canvas")[0].config.showCanvasBorder?1:0,i.axisBreak=t.axisBreaks,i.isBreak=!!i.axisBreak,i.isBreak&&this._processAxisBreak(),n=(n=(0,r.getFirstValue)(t.axisNameBorderColor,r.BLANKSTRING))?(0,l.convertColor)(n,(0,r.pluckNumber)(t.axisNameBorderAlpha,t.axisNameAlpha,100)):r.BLANKSTRING,i.name=i.name||{},i.name.style={fontFamily:(0,r.pluck)(t.axisNameFont,t.outCanfontFamily),fontSize:(0,r.pluck)(t.axisNameFontSize,(0,r.pInt)(t.outCanfontSize))+r.PXSTRING,color:(0,l.convertColor)((0,r.pluck)(t.axisNameFontColor,t.outCancolor),(0,r.pluckNumber)(t.axisNameFontAlpha,t.axisNameAlpha,100)),fontWeight:(0,r.pluckNumber)(t.axisNameFontBold,1)?"bold":r.NORMAL,fontStyle:(0,r.pluckNumber)(t.axisNameFontItalic)?"italic":r.NORMAL,border:n||t.axisNameBgColor?(0,r.pluckNumber)(t.axisNameBorderThickness,1)+"px solid":r.UNDEF,borderColor:n,borderThickness:(0,r.pluckNumber)(t.axisNameBorderThickness,1),borderPadding:(0,r.pluckNumber)(t.axisNameBorderPadding,2),borderRadius:(0,r.pluckNumber)(t.axisNameBorderRadius,0),backgroundColor:t.axisNameBgColor?(0,l.convertColor)(t.axisNameBgColor,(0,r.pluckNumber)(t.axisNameBgAlpha,t.axisNameAlpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(t.axisNameBorderDashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(t.axisNameBorderDashLen,4),(0,r.pluckNumber)(t.axisNameBorderDashGap,2)):r.DASH_DEF},i.name.style.lineHeight=(0,r.setLineHeight)(i.name.style),o=(o=(0,r.getFirstValue)(p.trendvaluebordercolor,r.BLANKSTRING))?(0,l.convertColor)(o,(0,r.pluckNumber)(p.trendvalueborderalpha,p.trendvaluealpha,100)):r.BLANKSTRING,i.trend=i.trend||{},i.trend.trendStyle={fontFamily:(0,r.pluck)(p.trendvaluefont,t.outCanfontFamily),color:(0,r.pluck)(p.trendvaluefontcolor,t.trendlineColor,t.outCancolor,"333333"),valueAlpha:p.trendvaluealpha,fontSize:(0,r.pluckFontSize)(p.trendvaluefontsize,(0,r.pInt)(t.outCanfontSize))+r.PXSTRING,fontWeight:(0,r.pluckNumber)(p.trendvaluefontbold)?"bold":r.NORMAL,fontStyle:(0,r.pluckNumber)(p.trendvaluefontitalic)?"italic":r.NORMAL,border:o||p.trendvaluebgcolor?(0,r.pluckNumber)(p.trendvalueborderthickness,1)+"px solid":"",borderColor:o,borderThickness:(0,r.pluckNumber)(p.trendvalueborderthickness,1),borderPadding:(0,r.pluckNumber)(p.trendvalueborderpadding,2),borderRadius:(0,r.pluckNumber)(p.trendvalueborderradius,0),backgroundColor:p.trendvaluebgcolor?(0,l.convertColor)(p.trendvaluebgcolor,(0,r.pluckNumber)(p.trendvaluebgalpha,p.trendvaluealpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(p.trendvalueborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(p.trendvalueborderdashlen,4),(0,r.pluckNumber)(p.trendvalueborderdashgap,2)):r.DASH_DEF},i.trend.trendStyle.lineHeight=(0,r.setLineHeight)(i.trend.trendStyle),i.labels=i.labels||{},i.lines=i.lines||{},i.band=i.band||{},a=(a=(0,r.getFirstValue)(p.labelbordercolor,r.BLANKSTRING))?(0,l.convertColor)(a,(0,r.pluckNumber)(p.labelborderalpha,p.labelalpha,100)):r.BLANKSTRING,i.labels.style={fontFamily:(0,r.pluck)(t.labelFont,t.outCanfontFamily),fontSize:(0,r.pluckNumber)(t.labelFontSize,(0,r.pInt)(t.outCanfontSize))+r.PXSTRING,fontWeight:(0,r.pluckNumber)(t.labelFontBold)?"bold":r.NORMAL,fontStyle:(0,r.pluckNumber)(t.labelFontItalic)?"italic":r.NORMAL,color:(0,l.convertColor)((0,r.pluck)(t.labelFontColor,t.outCancolor),(0,r.pluckNumber)(t.labelFontAlpha,100)),labelLink:p.labellink,border:a||p.labelbgcolor?(0,r.pluckNumber)(p.labelborderthickness,1)+"px solid":"",borderColor:a,borderThickness:(0,r.pluckNumber)(p.labelborderthickness,1),borderPadding:(0,r.pluckNumber)(p.labelborderpadding,2),borderRadius:(0,r.pluckNumber)(p.labelborderradius,0),backgroundColor:p.labelbgcolor?(0,l.convertColor)(p.labelbgcolor,(0,r.pluckNumber)(p.labelbgalpha,p.labelalpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(p.labelborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(p.labelborderdashlen,4),(0,r.pluckNumber)(p.labelborderdashgap,2)):r.DASH_DEF},i.labels.style.lineHeight=(0,r.setLineHeight)(i.labels.style),i.numberFormatterFn=(0,r.pluck)(t.numberFormatterFn),i.apparentScrollPos=t.apparentScrollPos||i.apparentScrollPos,i.axisRange={},i.dataLimit={},i.axisEndLabelDisplaySpace={left:0,right:0,top:0,bottom:0},i.isConfigured=!0,i._defaultForceDecimal=r.UNDEF,i._defaultDecimalPrecision=r.UNDEF,i.lines.isDraw=(0,r.pluckNumber)(t.lines&&t.lines.isDraw,1),i.band.isDraw=(0,r.pluckNumber)(t.band&&t.band.isDraw,1)},t.prototype.createContainer=function(e,t,n){var o=this.getFromEnv("animationManager");return this.addContainer(e,o.setAnimation({container:n,attr:t,el:this.getContainer(e)||"group",component:this,label:"group"}))},t.prototype.createGroup=function(e,t,n){var o=arguments.length>3&&arguments[3]!==undefined?arguments[3]:"group";return this.getFromEnv("animationManager").setAnimation({container:n,attr:t,el:this.config[e]||"group",component:this,label:o})},t.prototype.getValuePadding=function(){var e=this.config;return{left:e.startPad,right:e.endPad}},t.prototype.draw=function(){var e,t,n,o,a=this.config,i=this.getFromEnv("chart").config,r=a.isVertical,l=i.viewPortConfig,s=this.getChildren().limitUpdater,c=a.viewPortRatio||{};this._createContainer(),n=l.y*l.scaleY,o=l.x*l.scaleX,c.scaleX&&c.scaleY&&(c.scaleX!==l.scaleX||c.scaleY!==l.scaleY)?(c.scaleX=l.scaleX,c.scaleY=l.scaleY,this._drawComponents()):(r?(t=n-l.y*l.scaleY,a.axisContainer.transform("t0,"+t),a.axisLabelContainerTop.transform("t0,"+t)):(e=o-l.x*l.scaleX,a.axisContainer.transform("t"+e+",0"),a.axisLabelContainerTop.transform("t"+e+",0")),this._drawComponents()),this.addExtEventListener("animationcomplete",function(){s&&s.forEach(function(e){e.draw()})},this.getFromEnv("animationmanager")),this.addToEnv("prevScale",this.getScale().copy())},t.prototype.setScale=function(e){this.config.scale=e},t.prototype.getScale=function(){return this.config.scale},t.prototype.getLimit=function(){var e=this.config.axisRange;return{min:e.min,max:e.max,tickInterval:e.tickInterval}},t.prototype.getVisibleConfig=function(){var e=this.config;return{minValue:e.visibleMin,maxValue:e.visibleMax}},t.prototype.setAxisConfig=function(e){var t,n=this.config;for(t in e)e.hasOwnProperty(t)&&(n[t]=e[t])},t.prototype.getAxisConfig=function(e){var t=this.config;return e?t[e]:t},t.prototype.getVisibleLength=function(){var e=this.getVisibleConfig();return Math.abs(e.maxValue-e.minValue)},t.prototype.getAxisEndLabelDisplaySpace=function(){return this.config.axisEndLabelDisplaySpace||{}},t.prototype.getTicksLen=function(){var e=this.config.tickValues;return e&&e.tickValue.length||0},t}(i["default"]);t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0;var o=[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"axis"}],a=[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],i={"text.appearing":a,"path.appearing":a,"rect.appearing":a},r={"text.appearing":o,"path.appearing":o,"rect.appearing":o,"scroller.appearing":o};t["default"]={"initial.axis.numeric":r,"initial.axis.category":r,"initial.axis.log":r,"update.axis.numeric":i,"update.axis.category":i,"update.axis.log":i},t.appearingAxis=o,t.appearingFinal=a,t.axisAnimationAxis=r,t.axisAnimationFinal=i},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){e=Number(e);var n=(t=Number(t))-e;return function(t){return n*t+e}}},function(e,t,n){"use strict";t.__esModule=!0;t["default"]=function(e,t){return e.filter(function(e){return t.indexOf(e)<0})}},function(e,t,n){var o=n(300),a=n(192)(function(e,t,n){for(var a=[],i=0,r=t.length;i<r;)o(e,t[i],n)||o(e,t[i],a)||a.push(t[i]),i+=1;return a});e.exports=a},function(e,t){e.exports=function(e,t,n){for(var o=0,a=n.length;o<a;){if(e(t,n[o]))return!0;o+=1}return!1}},function(e,t,n){"use strict";t.__esModule=!0,t._parseLabel=t.extractStyleInfo=t.getLabel=t.setAxisPadding=t._createContainer=t.shiftLabels=t.setTickValues=t._drawLabel=t.getPixel=t.getTrendLineLimits=t.setDataLimit=t.setAxisDimention=undefined;var o,a=n(118),i=n(302),r=(o=i)&&o.__esModule?o:{"default":o};var l={wrtVisible:!0},s=function(e,t){var n,o,i,r,l,s,c,h={labelfont:["fontFamily"],labelfontcolor:["fontColor"],labelfontsize:["fontSize",function(e){return e?(0,a.pluckNumber)(e)+"px":a.UNDEF}],labelfontbold:["fontWeight",function(e){return e?"bold":"normal"}],labelfontitalic:["fontStyle",function(e){return e?"italic":"normal"}],labelfontalpha:["fontAlpha"]},u=t.getFromEnv("dataSource").categories,p=u&&u[0]||{},d=function(e){return e},g=!1,f={};for(n in p)"category"===n||n in e||(o=p[n],e[n]=o);for(n in h)l=(r=h[n])[0],s=r[1]||d,o=e[n],i=e[l.toLowerCase()],o===a.UNDEF&&i===a.UNDEF||(c=s(o))===a.UNDEF&&(c=s(i))===a.UNDEF||(f[l]=c,g=!0),g&&(e.style=f)};t.setAxisDimention=function(e){var t=this.getScale(),n=this.config,o=this.getFromEnv("chart").config,i=n.axisDimention||(n.axisDimention={}),r=n.isReverse;i.opposite=(0,a.pluckNumber)(e.opposite,i.opposite),i.x=(0,a.pluckNumber)(e.x,i.x,o.canvasLeft),i.y=(0,a.pluckNumber)(e.y,i.y,o.canvasTop),i.axisLength=(0,a.pluckNumber)(e.axisLength,i.axisLength),n.isVertical?r?t.setRange([i.y+i.axisLength,i.y]):t.setRange([i.y,i.y+i.axisLength]):r?t.setRange([i.x+i.axisLength,i.x]):t.setRange([i.x,i.x+i.axisLength]),n.translation=this._computeTranslation()},t.setDataLimit=function(e,t){var n,o,i,r,l=this.config,s=this.getFromEnv("dataSource").categories,c=s&&s[0]&&s[0].category,h=l.startPad||0,u=l.endPad||0,p=l.xAxisLabelMode;if("categories"===p||"mixed"===p){var d=(0,a.extent)(c,function(e){return Number(e.x)});n=d[0],o=d[1]}var g=this.getTrendLineLimits();i=g[0],r=g[1];var f=(0,a.extent)([i,r,n,o,t,e],function(e){return Number(e)});t=f[0],e=f[1],l.originalMax=e,l.originalMin=t,e=l.isPercent?100:e+u,t=l.isPercent?0:t-h,this._setAxisRange({min:t,max:e}),l.axisRange.tickInterval!==a.UNDEF&&this._adjustNumberFormatter(l.axisRange.tickInterval)},t.getTrendLineLimits=function(){var e,t,n,o,i=this.config,r=i.trendLines||i.vTrendLines||i.trendPoints,l=r&&r[0]&&r[0].line||r&&r.point;if(i.trendLimits)return i.trendLimits;var s=(0,a.extent)(l,function(e){return""===e.startvalue?a.UNDEF:Number(e.startvalue)});e=s[0],t=s[1];var c=(0,a.extent)(l,function(e){return""===e.endvalue?a.UNDEF:Number(e.endvalue)});return n=c[0],o=c[1],i.trendLimits=(0,a.extent)([e,t,n,o],function(e){return Number(e)}),i.trendLimits},t.getPixel=function(e){return this.getScale().getRangeValue(e)},t._drawLabel=function(){var e,t,n,o,a,i,l,s,c,h,u,p=this.config,d=this.getFromEnv("animationManager"),g=this.getFromEnv("toolTipController"),f=p.axisRange,m=p.labels.style,b=this.components,v=f.max,y=f.min,x=p.axisContainer,C=p.extremeLabels,k=p.ticks,w=[],S={fontFamily:m.fontFamily,fontSize:m.fontSize,fontWeight:m.fontWeight,fontStyle:m.fontStyle,lineHeight:m.lineHeight};if(p.labels.isDraw)for(u=b.labels,h=b.labelIndexArr,x.css(S),t=0,n=h&&h.length;t<n;t+=1)a=(s=k[e=h[t]])+"_label",o=this.getGraphicalElement(a),l=u[e].config.props.label.attr,o=this.addGraphicalElement(a,d.setAnimation({el:o||"text",attr:l,container:x,data:{value:s},component:this,label:"text"})),l.tooltext?g.enableToolTip(o,l.tooltext):g.disableToolTip(o),s===v?C.lastLabel.graphic=o:s===y&&(C.firstLabel.graphic=o),w.push(a);for(e=0,n=(c=(0,r["default"])(p.prevIntervalArr,w)).length;e<n;e++)(i=this.getGraphicalElement(c[e]))&&this.removeGraphicalElement(i);p.prevIntervalArr=w},t.setTickValues=function(e){var t,n,o=e&&e.length,i=this.config,r=i.startPad||0,l=this.getFromEnv("chart"),c=0,h=i.tickValues={},u=h.tickValue=[],p=h.vline=[],d=h.tickIdMap={},g=i.endPad||0;for(i.hasCategory=1,t=0;t<o;t+=1)(n=(0,a.extend2)({},e[t])).vline?(n.startIndex=u.length-1,p.push(n)):(n.id&&(d[n.id.toLowerCase()]={tickObj:n,index:c}),(i.mapTickValuesById&&n.id||!i.mapTickValuesById)&&(s(n,l),u.push(n),u[c].label=(0,a.parseUnsafeString)(u[c].label),c+=1));i.oriCatLen=c,this._setAxisRange({max:Number((0,a.toPrecision)(c-1+g,10)),min:Number((0,a.toPrecision)(0-r,10)),tickInterval:Number((0,a.toPrecision)(1,10))})},t.shiftLabels=function(e,t){var n=this.config.labels;n.shiftX=e,n.shiftY=t},t._createContainer=function(){var e,t,n,o,a,i=this.config,r=i.isVertical,l=this.getLinkedParent().getChildContainer(),s=l.axisBottomGroup,c=l.axisTopGroup,h=-this.getTranslation(),u=r?"T0,"+h:"T"+h+",0";t=this.createContainer("axisNameGroup",{name:"dataset-Name-group"},s),e=this.createContainer("axisLineGroup",{name:"axis-Line-group"},c),n=this.createContainer("axisTrendGroupTop",{name:"dataset-Trend-group-top"},c),o=this.createContainer("axisLabelGroup",{name:"dataset-Label-group"},s),a=this.createContainer("axisLabelGroupTop",{name:"dataset-Label-group"},c),i.scrollerContainer=this.createGroup("scrollerContainer",{name:"scroller-container"},e,"scroller"),i.axisContainer=this.createGroup("axisContainer",{name:"dataset-axis",transform:u},o),i.axisLabelContainerTop=this.createGroup("axisLabelContainerTop",{name:"dataset-top-label",transform:u},a),i.axisAxisLineContainer=this.createGroup("axisAxisLineContainer",{name:"axis-line-tick"},e),i.axisTrendLabelContainer=this.createGroup("axisTrendLabelContainer",{name:"dataset-axis-trend-label"},n),i.axisNameContainer=this.createGroup("axisNameContainer",{name:"dataset-axis-name"},t),i.axisAxisLineContainerBottom=this.createGroup("axisAxisLineContainerBottom",{name:"axis-line-tick-bottom"},s)},t.setAxisPadding=function(){var e,t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0,o=this.config,a=this.getScale().getDomain(),i=a[0],r=a[1];1===o.oriCatLen&&(0===t&&(t=.5),0===n&&(n=.5)),e=t-o.startPad,o.startPad=Math.max(o.startPad,t),o.endPad=Math.max(o.endPad,n),e>0&&(o.setPadding=!0,this._setAxisRange({min:i-e,max:r+e})),o.tickValues||o.originalMax&&o.originalMin&&this.setDataLimit(o.originalMax,o.originalMin)},t.getLabel=function(e){var t=this.config,n=t.tickValues&&t.tickValues.tickValue[e],o={};return n&&n.tooltext&&(o.label=n.label,n.tooltext=(0,a.parseTooltext)(n.tooltext,[3],o)),{label:n&&(n.oriLabel||n.label),tooltext:n&&n.tooltext}},t.extractStyleInfo=s,t._parseLabel=function(){var e,t,n,o,i,r,s,c,h,u,p,d,g,f,m,b,v=this,y=v.config,x=v.getLinkedItem("canvas").getEffectiveDimensions(),C=y.axisDimention,k=v.getFromEnv("chart"),w=k.config,S=y.axisRange,L=y.isOpposit,A=y.labels,N=v.components,_=N.labels,P=A.style,F=k.getFromEnv("smartLabel"),E=y.isVertical,T=S.max,D=S.min,O=v.getFromEnv("number-formatter"),I=x.top,M=x.left,R=I+x.height,V=M+x.width,B=y.labelPadding,G=y.extremeLabels,j=E?C.x:C.y,H=C.opposite,W=y.labelMaxH,z=y.labelMaxW,U=S.tickInterval,q=Math.abs(v.getPixel(D,l)-v.getPixel(D+U,l)),Y=[],K=y.ticks,X=0,Z=y.isReverse,J=(0,a.pluckNumber)(v.getFromEnv("chart-attrib").showzeroplanevalue),$=!0,Q=v.getLimit();if(F.useEllipsesOnOverflow(w.useEllipsesWhenOverflow),F.setStyle({fontSize:P.fontSize,fontFamily:P.fontFamily,lineHeight:P.lineHeight,fontWeight:P.fontWeight}),(o=P.lineHeight)&&-1!==o.indexOf("px")&&(o=parseFloat(o.replace("px",""))),0===J&&($=!1),y.labels.isDraw){if(y.drawLabelsOpposit&&(L=!L,j=H),h={fill:P.color,"line-height":o,"font-size":P.fontSize,opacity:1},n=y.labels.rotation,E?(y.labelMaxH>q&&!y.tickValues&&(s=Math.ceil(y.labelMaxH/q)),h["text-anchor"]=L?a.POSITION_START:a.POSITION_END):(y.labelMaxW>q&&!y.tickValues&&(s=Math.ceil(y.labelMaxW/q)),n?(h["text-anchor"]=L?a.POSITION_START:a.POSITION_END,h["vertical-align"]="middle"):h["vertical-align"]=L?a.POSITION_BOTTOM:a.POSITION_TOP,p=M,d=w.width-V),s>y.labels.step&&(y.labels.step=s),c=y.numberFormatterFn?O[y.numberFormatterFn]:y.isPercent?O.percentValue:E?O.yAxis:O.xAxis,G.firstLabel={},G.lastLabel={},b=K.filter(function(e,t,n){return 0!==e||y.showZeroPlaneValue?!(!E&&t!==n.length-1&&v.getPixel(e,l)+y.labelMaxW>V||(t%y.labels.step==0?(Y[X++]=t,0):!y.labels.drawLimitVal||0!==t&&t!==n.length-1||(Y[X++]=t,0))):!(!$||$&&Q.max!==e&&Q.min!==e||(Y[X++]=t,0))}),y.isZeroTickForced&&-1!==b.indexOf(0)){var ee=void 0;X=0,Y=[],m=v.getPixel(0),b=b.filter(function(e,t,n){return ee=v.getPixel(e),0===n[t+1]||0===n[t-1]?E?!(ee+W>=m&&m>=ee-W||(Y[X++]=t,0)):!(ee+z>=m&&m>=ee-z||(Y[X++]=t,0)):(Y[X++]=t,!0)})}for(i=(E?z:q/2)*y.labels.step,r=E?q/2:W,N.labelIndexArr=Y.slice(),e=0,t=b.length;e<t;e+=1)g=b[e],_[Y[e]]=_[Y[e]]||{config:{props:{label:{}}}},u=Object.assign({},h),f=a.UNDEF,(y.labels.drawNormalVal||g===D||g===T)&&(y.labels.drawLimitVal||g!==D&&g!==T)?g===D&&y.lowerLimitDisplay&&y.labels.drawLimitVal?(f=F.getSmartText(y.lowerLimitDisplay,i,r+o/2),u.text=f.text,u.tooltext=f.tooltext):g===T&&y.upperLimitDisplay&&y.labels.drawLimitVal?(f=F.getSmartText(y.upperLimitDisplay,i,r+o/2),u.text=f.text,u.tooltext=f.tooltext):(u.text=""+c.call(O,g,y.axisIndex),f=F.getOriSize(u.text)):u.text="",E?(u.x=L?(j||V)+B:(j||M)-B,u.y=v.getPixel(g,l),(Z&&g===D&&y.lowerLimitDisplay||!Z&&g===T&&y.upperLimitDisplay)&&f&&f.height>o&&(u["vertical-align"]=a.POSITION_BOTTOM),(Z&&g===T&&y.upperLimitDisplay||!Z&&g===D&&y.lowerLimitDisplay)&&f&&f.height>o&&(u["vertical-align"]=a.POSITION_TOP),y.placeValuesInside&&(u["text-anchor"]=L?a.POSITION_END:a.POSITION_START)):(u.x=v.getPixel(g,l),u.y=L?(j||I)-B:(j||R)+B,(!Z&&g===D||Z&&g===T)&&f&&f.width>2*p&&(u["text-anchor"]=a.POSITION_START),(!Z&&g===T||Z&&g===D)&&f&&f.width>2*d&&(u["text-anchor"]=a.POSITION_END),y.placeValuesInside?u["vertical-align"]=L?a.POSITION_TOP:a.POSITION_BOTTOM:u["vertical-align"]=L?a.POSITION_BOTTOM:a.POSITION_TOP),A.shiftX&&(u.x+=A.shiftX),A.shiftY&&(u.y+=A.shiftY),u.transform=(0,a.getSuggestiveRotation)(n,u.x,u.y),_[Y[e]].config.props.label.attr=u}}},function(e,t,n){var o=n(303),a=n(188)(function(e,t){for(var n=[],a=0,i=e.length;a<i;)o(e[a],t)||o(e[a],n)||(n[n.length]=e[a]),a+=1;return n});e.exports=a},function(e,t,n){var o=n(304);e.exports=function(e,t){return o(t,e,0)>=0}},function(e,t,n){var o=n(305);e.exports=function(e,t,n){var a,i;if("function"==typeof e.indexOf)switch(typeof t){case"number":if(0===t){for(a=1/t;n<e.length;){if(0===(i=e[n])&&1/i===a)return n;n+=1}return-1}if(t!=t){for(;n<e.length;){if("number"==typeof(i=e[n])&&i!=i)return n;n+=1}return-1}return e.indexOf(t,n);case"string":case"boolean":case"function":case"undefined":return e.indexOf(t,n);case"object":if(null===t)return e.indexOf(t,n)}for(;n<e.length;){if(o(e[n],t))return n;n+=1}return-1}},function(e,t,n){var o=n(188),a=n(306),i=o(function(e,t){return a(e,t,[],[])});e.exports=i},function(e,t,n){var o=n(307),a=n(300),i=n(308),r=n(195),l=n(309),s=n(310),c=n(312);function h(e,t,n,i){var r=o(e),l=o(t);function s(e,t){return u(e,t,n.slice(),i.slice())}return!a(function(e,t){return!a(s,t,e)},l,r)}function u(e,t,n,o){if(l(e,t))return!0;var a=c(e);if(a!==c(t))return!1;if(null==e||null==t)return!1;if("function"==typeof e["fantasy-land/equals"]||"function"==typeof t["fantasy-land/equals"])return"function"==typeof e["fantasy-land/equals"]&&e["fantasy-land/equals"](t)&&"function"==typeof t["fantasy-land/equals"]&&t["fantasy-land/equals"](e);if("function"==typeof e.equals||"function"==typeof t.equals)return"function"==typeof e.equals&&e.equals(t)&&"function"==typeof t.equals&&t.equals(e);switch(a){case"Arguments":case"Array":case"Object":if("function"==typeof e.constructor&&"Promise"===i(e.constructor))return e===t;break;case"Boolean":case"Number":case"String":if(typeof e!=typeof t||!l(e.valueOf(),t.valueOf()))return!1;break;case"Date":if(!l(e.valueOf(),t.valueOf()))return!1;break;case"Error":return e.name===t.name&&e.message===t.message;case"RegExp":if(e.source!==t.source||e.global!==t.global||e.ignoreCase!==t.ignoreCase||e.multiline!==t.multiline||e.sticky!==t.sticky||e.unicode!==t.unicode)return!1}for(var p=n.length-1;p>=0;){if(n[p]===e)return o[p]===t;p-=1}switch(a){case"Map":return e.size===t.size&&h(e.entries(),t.entries(),n.concat([e]),o.concat([t]));case"Set":return e.size===t.size&&h(e.values(),t.values(),n.concat([e]),o.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var d=s(e);if(d.length!==s(t).length)return!1;var g=n.concat([e]),f=o.concat([t]);for(p=d.length-1;p>=0;){var m=d[p];if(!r(m,t)||!u(t[m],e[m],g,f))return!1;p-=1}return!0}e.exports=u},function(e,t){e.exports=function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}},function(e,t){e.exports=function(e){var t=String(e).match(/^function (\w*)/);return null==t?"":t[1]}},function(e,t,n){var o=n(188)(function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t});e.exports=o},function(e,t,n){var o=n(189),a=n(195),i=n(311),r=!{toString:null}.propertyIsEnumerable("toString"),l=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],s=function(){"use strict";return arguments.propertyIsEnumerable("length")}(),c=function(e,t){for(var n=0;n<e.length;){if(e[n]===t)return!0;n+=1}return!1},h=o("function"!=typeof Object.keys||s?function(e){if(Object(e)!==e)return[];var t,n,o=[],h=s&&i(e);for(t in e)!a(t,e)||h&&"length"===t||(o[o.length]=t);if(r)for(n=l.length-1;n>=0;)a(t=l[n],e)&&!c(o,t)&&(o[o.length]=t),n-=1;return o}:function(e){return Object(e)!==e?[]:Object.keys(e)});e.exports=h},function(e,t,n){var o=n(195),a=Object.prototype.toString;e.exports=function(){return"[object Arguments]"===a.call(arguments)?function(e){return"[object Arguments]"===a.call(e)}:function(e){return o("callee",e)}}},function(e,t,n){var o=n(189)(function(e){return null===e?"Null":e===undefined?"Undefined":Object.prototype.toString.call(e).slice(8,-1)});e.exports=o},function(e,t,n){"use strict";t.__esModule=!0;t["default"]=function(){var e,t=void 0,n=void 0,o=void 0,a=void 0,i=[];if(arguments.length>2?(t=arguments.length<=0?undefined:arguments[0],n=arguments.length<=1?undefined:arguments[1],o=arguments.length<=2?undefined:arguments[2]):1===arguments.length?(t=0,n=arguments.length<=0?undefined:arguments[0],o=1):(t=arguments.length<=0?undefined:arguments[0],n=arguments.length<=1?undefined:arguments[1],o=1),e=Math.floor(Math.max(0,Math.ceil((n-t)/o))),isFinite(e))for(a=0;a<e;++a)i.push(o*a+t);return i}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(315),a=s(o),i=n(319),r=s(i),l=s(n(297));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,o.deInterpolateLinear,l["default"]))}return c(t,e),t.prototype.ticks=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:7,t=this.getDomain();return(0,r["default"])(t[0],t[t.length-1],e)},t.prototype.nice=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:7,t=this.getDomain(),n=0,o=t.length-1,a=t[n],r=t[o],l=void 0;return r<a&&(l=a,a=r,r=l,l=n,n=o,o=l),(l=(0,i.tickIncrement)(a,r,e))>0?(a=Math.floor(a/l)*l,r=Math.ceil(r/l)*l,l=(0,i.tickIncrement)(a,r,e)):l<0&&(a=Math.ceil(a*l)/l,r=Math.floor(r*l)/l,l=(0,i.tickIncrement)(a,r,e)),l>0?(t[n]=Math.floor(a/l)*l,t[o]=Math.ceil(r/l)*l,this.setDomain(t)):l<0&&(t[n]=Math.ceil(a*l)/l,t[o]=Math.floor(r*l)/l,this.setDomain(t)),this},t.prototype.copy=function(){return(0,o.copyScale)(this,new t)},t}(a["default"]);t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0,t.bimap=t.deInterpolateLinear=t.copyScale=undefined;var o=r(n(316)),a=r(n(318)),i=r(n(317));function r(e){return e&&e.__esModule?e:{"default":e}}var l=[0,1];function s(e,t,n,o){var a,i;return e[0]>e[1]?(a=n(e[1],e[0]),i=o(t[1],t[0])):(a=n(e[0],e[1]),i=o(t[0],t[1])),function(e){return i(a(e))}}function c(e,t){e=Number(e);var n=(t=Number(t))-e;return n?function(t){return(t-e)/n}:(0,i["default"])(n)}var h=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.domain=l,this.range=l,this.deInterpolate=t,this.reInterpolate=n,this.interpolate=o["default"],this.clamp=!1,this.input=null,this.output=null,this._rescale()}return e.prototype._rescale=function(){return this.input=null,this.output=null,this},e.prototype.setDomain=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:l;return this.domain=e.map(Number),this._rescale()},e.prototype.getDomain=function(){return this.domain.slice()},e.prototype.setRange=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:l;return this.range=e.slice(),this._rescale()},e.prototype.getRange=function(){return this.range.slice()},e.prototype.setInterpolate=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:o["default"];return this.interpolate=e,this._rescale()},e.prototype.getInterpolate=function(){return this.interpolate},e.prototype.setClamp=function(){var e=arguments.length>0&&arguments[0]!==undefined&&arguments[0];return this.clamp=!!e,this._rescale()},e.prototype.getClamp=function(){return this.clamp},e.prototype.rangeRound=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:l;return this.range=e.slice(),this.interpolate=a["default"],this._rescale()},e.prototype.getRangeValue=function(e){e=null!==e?e:undefined;var t=this.getClamp()?function(e){return function(t,n){t=Number(t),n=Number(n);var o=e(t,n);return function(e){return e<=t?0:e>=n?1:o(e)}}}(this.deInterpolate):this.deInterpolate;return this.output||(this.output=s(this.getDomain(),this.getRange(),t,this.interpolate)),this.output(Number(e))},e.prototype.getDomainValue=function(e){var t=this.getClamp()?function(e){return function(t,n){t=Number(t),n=Number(n);var o=e(t,n);return function(e){return e<=0?t:e>=1?n:o(e)}}}(this.reInterpolate):this.reInterpolate;return this.input||(this.input=s(this.getRange(),this.getDomain(),c,t)),this.input(Number(e))},e}();t.copyScale=function(e,t){return t.setInterpolate(e.getInterpolate()).setClamp(e.getClamp()).setDomain(e.getDomain()).setRange(e.getRange())},t.deInterpolateLinear=c,t.bimap=s,t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0;var o=i(n(297)),a=i(n(317));function i(e){return e&&e.__esModule?e:{"default":e}}function r(e){return null!==e&&void 0!==e}t["default"]=function(e,t){var n=o["default"];return r(t)&&r(e)&&"boolean"!=typeof t?n(e,t):(0,a["default"])(t)}},function(e,t,n){"use strict";t.__esModule=!0;t["default"]=function(e){return function(){return e}}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){e=Number(e);var n=(t=Number(t))-e;return function(t){return Math.round(n*t+e)}}},function(e,t,n){"use strict";t.__esModule=!0;var o=Math.sqrt(50),a=Math.sqrt(10),i=Math.sqrt(2);function r(e){return e>=o?10:e>=a?5:e>=i?2:1}function l(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1,n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:7,o=(t-e)/Math.max(0,n),a=Math.floor(Math.log(o)/Math.LN10),i=o/Math.pow(10,a);return a>=0?r(i)*Math.pow(10,a):-Math.pow(10,-a)/r(i)}t["default"]=function(){var e,t,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,o=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1,a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:7,i=-1,r=void 0,s=[];if(a=+a,(n=+n)==(o=+o)&&a>0)return[n];if((e=o<n)&&(r=n,n=o,o=r),0===(t=l(n,o,a))||!isFinite(t))return[];if(t>0)for(n=Math.ceil(n/t),o=Math.floor(o/t),r=Math.ceil(o-n+1);++i<r;)s[i]=(n+i)*t;else for(n=Math.floor(n*t),o=Math.ceil(o*t),r=Math.ceil(n-o+1);++i<r;)s[i]=(n-i)/t;return e&&s.reverse(),s},t.tickIncrement=l,t.tickStep=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1,n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:7,r=Math.abs(t-e)/Math.max(0,n),l=Math.floor(Math.log(r)/Math.LN10),s=Math.pow(10,l),c=r/s;return c>=o?s*=10:c>=a?s*=5:c>=i&&(s*=2),t<e?-s:s}},function(e,t,n){"use strict";t.__esModule=!0;var o=l(n(313)),a=n(118),i=n(315),r=l(n(297));function l(e){return e&&e.__esModule?e:{"default":e}}var s=(0,i.bimap)([2,100],[80,20],i.deInterpolateLinear,r["default"]);t["default"]=function(e,t,n,i){var r,l,c,h,u,p,d,g,f,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F=i.isPercent?0:i.axisMinValue,E=i.isPercent?100:i.axisMaxValue,T=!!i.adjustDiv,D=i.numDivLines,O=!!i.setAdaptiveMin,I=i.axisRange,M=Math.pow(2,-24),R=!0,V=.2,B=!0,G=i.xAxisLabelMode,j=i.dependentInfo;if(r=i.majorTMNumber!==a.UNDEF?Math.max(0,D-2):D,j&&j.count&&!j.limit&&j.numDivLines!==a.UNDEF&&(r=D=j.numDivLines,T=!1),l=r+1,e===a.UNDEF&&t===a.UNDEF&&(e=0,t=1,R=!1),t===e&&0===t&&(t=1,R=!1),"categories"!==G&&"mixed"!==G||(R=!1),R?(h=Math.floor(Math.log(Math.abs(t))/Math.LN10),c=Math.floor(Math.log(Math.abs(e))/Math.LN10),u=Math.max(c,h),p=Math.pow(10,u),Math.abs(t)/p<2&&Math.abs(e)/p<2&&(u--,p=Math.pow(10,u)),v=Math.floor(Math.log(t-e)/Math.LN10),y=Math.pow(10,v),t-e>0&&p/y>=10&&(p=y,u=v),g=(Math.floor(t/p)+1)*p,f=e<0?(Math.floor(Math.abs(e/p))+1)*p*-1:O?(f=Math.floor(Math.abs(e/p)-1)*p)<0?0:f:0,!O&&t<=0&&(g=0),m=!(!E&&0!==E),b=!(!F&&0!==F),i.freezeLimit||(!1===m||!0===m&&Number(E)<t&&t-Number(E)>M?(t=g,m=!1):t=Number(E),!1===b||!0===b&&Number(F)>e&&Number(F)-e>M?(e=f,b=!1):e=Number(F))):(m=!(!E&&0!==E),b=!(!F&&0!==F),!0===m&&Number(E)>=t?t=Number(E):m=!1,!0===b&&Number(F)<=e?e=Number(F):b=!1),w=[e,t],n.setDomain(w),T&&!i.freezeLimit)m||b?(N=(x=(A=function(e,t,n,o,i,r){for(var l=t-e,s=void 0,c=void 0,h=void 0,u=e,p=Math.ceil(n*(1-o)),d=Math.floor(n*(1+o)),g=void 0,f=void 0,m=void 0,b=void 0,v=void 0,y=void 0,x=[],C=-1,k=void 0,w=void 0,S=void 0,L=function(e){return function(e){var t=[10,5,2,1],n=void 0,o=t.length,a=void 0;for(n=0;n<o;++n)if(e%t[n]%1==0){a=!0;break}return a}(s=l/(e+1))?e:a.UNDEF};!(k&&w||((S=n+ ++C)>=d&&(w=!0),g=L(S))||((S=n-C)<=p&&(k=!0),g=L(S))););for(e<0&&t>0&&i&&(h=!0),c=0;c<g;c++)h&&u<0&&u+s>0&&(x.push(0),f=!0),u+=s,x.push(u);return g===a.UNDEF&&i&&((b=(x=r.ticks(n)).length)>1?(m=.2*(s=Math.abs(x[0]-x[1])),v=x[0],y=x[b-1],Math.abs(e-v)<=m&&0!==v&&x.shift(),Math.abs(t-y)<=m&&0!==y&&x.pop(),0!==v&&0!==y||(f=!0)):0===x[0]&&(f=!0)),h&&!f&&-1===x.indexOf(0)&&(e<0&&x[0]>0?x=[0].concat(x):t>0&&x[x.length-1]<0?x.push(0):x=[0],f=!0),{output:x,interval:s,isZeroTickForced:f}}(e,t,r,V=(P=r)>=100?.2:P<=1?0:s(P)/100,i.forceZeroTick,n)).output).length,_=A.isZeroTickForced,Math.abs((r-N+(_?1:0))/r)>V?d=(t-e)/l:(d=0===N||1===N&&_?t-e:A.interval,i.isZeroTickForced=_,i.ticks=[e].concat(x,t),B=!1)):(i.ticks=r?n.nice(l).ticks(l):n.getDomain(),d=Math.abs(i.ticks[1]-i.ticks[0]),B=!1);else if(m||b||i.freezeLimit)d=(t-e)/l;else{var H=n.nice(l).getDomain();((k=(C=H[0])+(d=function(e){if(e<=1)return 1;var t=[],n=Math.ceil(e);return t[2]=n%2,t[5]=n%5,t[10]=n%10,(0,a.safeMin)(t)+n}(p=((k=H[1])-C)/l))*l)-t)/t>V||(C-e)/e>V?(n.setDomain([e,t]),d=(t-e)/l):(e=C,t=k,n.setDomain([e,t]))}B&&(e<0&&t>0&&i.forceZeroTick?(0===(L=(S=(0,o["default"])(e,0,d))[S.length-1]+d)?L+=d:i.isZeroTickForced=!0,i.ticks=S.concat(0,(0,o["default"])(L,t,d),t)):i.ticks=(0,o["default"])(e,t,d).concat(t));var W=n.getDomain();e=W[0],t=W[1],i._allTicks=i.ticks.slice(),I.tickInterval=d,I.min=e,I.max=t}},function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(293)),a=c(n(313)),i=c(n(322)),r=n(118),l=n(122),s=n(301);function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=r.preDefStr.POSITION_START,p=r.preDefStr.POSITION_MIDDLE,d=r.preDefStr.POSITION_TOP,g=r.preDefStr.POSITION_BOTTOM,f=r.preDefStr.POSITION_END,m={wrtVisible:!0},b=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.config.scale=new i["default"],n}return h(t,e),t.prototype.getName=function(){return"category"},t.prototype.getCategoryFromId=function(e){var t=this.config.tickValues;return(t&&t.tickIdMap)[e]||{}},t.prototype.generateTicks=function(){var e=this.getScale(),t=this.config,n=e.getDomain(),o=t.categoryNumDivLines+1,i=(n[1]-n[0])/o,r=t.axisRange,l=r.min,s=r.max,c=(s-l)/o;return t._allTicks=(0,a["default"])(l,s,c).concat(s),r.tickInterval=c,(0,a["default"])(n[0],n[1],i).concat(n[1])},t.prototype._parseCategoryVline=function(){var e,t,n,o,a,i,s,c,h,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D,O,I,M,R,V=this.config,B=V.axisRange,G=B.min,j=B.max,H=this.getFromEnv("chart").config,W=H.style||{},z=V.isVertical,U={fontFamily:H.style.inCanfontFamily,fontSize:H.style.inCanfontSize,color:H.style.inCancolor,lineHeight:H.style.inCanLineHeight};for(n=(t=V.tickValues.vline).length,O=1!==this.getZoom(),I=this.getVisibleConfig(),i=0;i<n;i++)o=t[i],a=(0,r.parseUnsafeString)(o.label),s=Boolean((0,r.pluckNumber)(o.showlabelborder,V.showVLineLabelBorder,1)),e=Boolean((0,r.pluckNumber)(o.showlabelbackground,1)),"center"===(c=(0,r.pluck)(o.labelhalign,z?u:p))?c=p:"left"===c?c=u:"right"===c&&(c=f),(h=(0,r.pluck)(o.labelvalign,z?p:g).toLowerCase())===p?h=p:h===d?h=g:h===g&&(h=d),m=(0,r.pluckNumber)(o.labelposition,0),b=(0,r.pluckNumber)(o.lineposition,.5),v=(0,r.pluckNumber)(o.showvlines,V.showVLines,1),y=(0,r.pluckNumber)(o.alpha,V.vLineAlpha,80),x=(0,r.pluck)(o.color,V.vLineColor).replace(/^#?/,"#"),C=e?(0,r.pluck)(o.labelbgcolor,V.vLineLabelBgColor,"333333").replace(/^#?/,"#"):r.BLANKSTRING,F=(0,r.pluck)(o.labelcolor,V.vLineLabelColor,o.color,W.inCancolor,V.vLineColor).replace(/^#?/,"#"),k=(0,r.pluckNumber)(o.thickness,V.vLineThickness,1),T=2,w=Boolean(Number((0,r.pluck)(o.dashed,0))),S=(0,r.pluckNumber)(o.dashlen,5),A=(0,r.pluckNumber)(o.dashgap,2),L=U.fontSize,L=parseInt(L.replace(/px/i,""),10),E=(0,r.pluckNumber)(o.rotatelabel,V.rotateVLineLabels)?270:0,b=b<0||b>1?.5:b,m=m<0||m>1?0:m,x=(0,l.convertColor)(x,v?y:"0"),R=o.animate&&!z?o.startIndex+1:o.startIndex,D=this._getVlinePos(R,b)-(o.animate?o.leftShift:0),O&&(D<I.minValue||D>I.maxValue)||D<G||D>j||(N={opacity:1,stroke:x,"stroke-width":k,"stroke-dasharray":w?(0,r.getDashStyle)(S,A):"none"},P={opacity:1,text:a,"text-anchor":c,"vertical-align":h,"text-bound":[]},_={fontSize:U.fontSize,fontFamily:U.fontFamily,lineHeight:U.lineHeight},M={from:D,layer:(0,r.pluckNumber)(o.showontop,V.showVLinesOnTop,0)?3:2,attr:N,type:"line",startIndex:o.startIndex,linePosition:b},a&&(P["text-bound"]=[C,v&&s?x:r.BLANKSTRING,v&&s?1:0,T,r.UNDEF,v&&s?"solid":r.BLANKSTRING],P.fill=v?F:x,M.text={label:a,attr:P,layer:4,labelRotation:E,labelPosition:m,css:_}),this.setReferenceInfo(M),this.config.parsedVlineInfo.push(M))},t.prototype._parseReferenceVisuals=function(){e.prototype._parseReferenceVisuals.call(this),this.config.drawPlotlines&&this._parseCategoryVline()},t.prototype.categoryInsert=function(e,t,n){var o,a,i,l,s,c=this.config,h=c.axisRange.min,u=t.length,p=c.endPad||0;for(o=c.tickValues.tickValue,i=c.tickValues.tickIdMap,a=c.tickValues.vline,l=0;l<u;l+=1)"true"!==(s=(0,r.extend2)({},t[l])).vline&&!0!==s.vline&&1!==s.vline&&"1"!==s.vline?(s.id&&(i[s.id]={tickObj:s,i:e}),o.splice(e,0,s),e+=1):(s.startIndex=e-2,a.push(s));n&&this._setAxisRange({min:h,max:Number((0,r.toPrecision)(o.length-1+p,10))})},t.prototype.categoryDelete=function(e,t,n){var o,a,i,r=this.config,l=r.axisRange,s=l.min;for(a=0,i=(o=r.tickValues.vline).length;a<i;a++)o[a].animate=!0,o[a].leftShift=t;r.tickValues.tickValue.splice(e,t),this._shiftVline(e,t,"left"),n&&this._setAxisRange({min:s,max:l.max-t})},t.prototype._shiftVline=function(e,t,n){var o,a,i=this.config,r=i.tickValues.vline,l=i.tickValues.tickValue.length,s=r.length;for(o=0;o<s;o+=1)(a=r[o]).startIndex>=e&&("right"===n?a.startIndex+=t:a.startIndex-=t,(a.startIndex<0||a.startIndex>=l)&&(r.splice(o,1),s-=1,o-=1))},t.prototype.categoryTranslate=function(e){var t,n=this.config,o=this.getPixel(1,m)-this.getPixel(0,m);e=(e||0)*o,n.isReverse&&(e=-e),t=["T",e,",","0"].join(""),this.realTimeTranslatableGroups=[{group:n.axisContainer,translationStr:t},{group:n.axisTrendLabelContainer,translationStr:t}]},t.prototype.updateTicksValues=function(e,t){var n,o,a,i,r,l,s,c=this.config,h=c.parsedVlineInfo;if((n=c.tickValues.tickValue)[e])for(s in t)t.hasOwnProperty(s)&&("x"===s&&(o=!0),n[e][s]=t[s]);if(o)for(i=0,r=h.length;i<r;++i)if((l=(a=h[i]).startIndex)===e)a.from=this._getVlinePos(l,a.linePosition);else if(l+1===e){a.from=this._getVlinePos(l,a.linePosition);break}},t.prototype._getVlinePos=function(e,t){var n=this.getTickValues(),o=this.config,a=this.getLimit(),i=a.min,l=a.max,s=n[e],c=n[e+1],h=void 0,u=void 0,p=void 0;return s?c||(h=n[0]&&n[0].x?l:o.oriCatLen-1,p=!0):(h=n[0]&&n[0].x?i:-1,p=!0),u=p?t:((h=(0,r.pluckNumber)(s.x,s.y,e))-(0,r.pluckNumber)(c.x,c.y,e+1))*t,h+Math.abs(u)},t.prototype.getInterval=function(){if(this)return 1},t.prototype._setAxisRange=function(e){var t,n,o=e.min,i=e.max,l=this.config,s=l.axisRange,c=l.periodLength,h=l.dataLimit,u=h.max,p=h.min;o>i||(u===i&&p===o||(t=!0),l.visibleMin===r.UNDEF||l.setPadding||t?(h.max=i,h.min=o,c&&(l.categoryNumDivLines=(i-o)/c-1),n=(i-o)/(l.categoryNumDivLines+1),this.getScale().setDomain([o,i]),l.ticks=(0,a["default"])(o,i,n).concat(i),l._allTicks=l.ticks.slice(),s.min=o,s.max=i,s.tickInterval=n,this.setVisibleConfig(s.min,s.max)):l.setPadding=!1)},t}(o["default"]);b.prototype.setTickValues=s.setTickValues,t["default"]=b},function(e,t,n){"use strict";t.__esModule=!0;var o=n(315),a=r(o),i=r(n(297));function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,o.deInterpolateLinear,i["default"]))}return l(t,e),t.prototype.copy=function(){return(0,o.copyScale)(this,new t)},t}(a["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=void 0,n=e._parseCanvasCosmetics&&e._parseCanvasCosmetics();if((0,i.componentFactory)(e,o["default"],"canvas",e.config.showVolumeChart?2:1),t=e.getChildren("canvas"))for(var r=0,l=t.length;r<l;r++)t[r].configure(n),(0,i.componentFactory)(t[r],a["default"],"axisRefVisualCartesian")};var o=r(n(263)),a=r(n(324)),i=n(118);function r(e){return e&&e.__esModule?e:{"default":e}}},function(e,t,n){"use strict";t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=c(n(131)),i=c(n(297)),r=c(n(298)),l=n(294),s=c(n(325));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}(0,n(125).addDep)({name:"cartesianAxisRefAnimation",type:"animationRule",extension:s["default"]});var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.config.map={},n.config.explicitDrawItems={},n}return h(t,e),t.prototype.getType=function(){return"axisRefVisuals"},t.prototype.getName=function(){return"axisRefVisualsCartesian"},t.prototype.draw=function(){var e=this.getDrawingInfo(),t=void 0,n=this.getexplicitDrawItems(),o=this.config,a=o.map,i={},r=void 0,l=void 0,s=void 0,c=void 0,h=void 0,u=void 0,p=this.getLinkedParent(),d=p.getAxes(),g=[],f=p.getChildContainer("axisReferenceVisualsFloor"),m=p.getChildContainer("axisReferenceVisualsBottom"),b=p.getChildContainer("axisReferenceVisualsMiddle"),v=p.getChildContainer("axisReferenceVisualsTop"),y=p.getChildContainer("axisReferenceVisualsCeil");for(p.config.trendlines=[],p.config.vtrendlines=[],r=0;r<d.length;++r)g.push(d[r].axis.getId());for(s in o.containers=[f,m,b,v,y],e)if(e.hasOwnProperty(s)&&(c=this.getLinkedItem(s),g.indexOf(c.getId())>=0))for((h=i[s])||(h=i[s]=[]),t=e[s],r=0;r<t.length;++r)"band"===(l=(u=t[r]).type)?h.push.apply(h,this.createBand(u,c)):"line"===l&&h.push.apply(h,this.createLine(u,c));if(o.isSmartDrawing)for(s in a)a.hasOwnProperty(s)&&!n[s]&&this.getLinkedItem(s)&&(i[s]=a[s]);this.resetexplicitDrawItems(),this.removeExtraElements(i)},t.prototype.getDrawingInfo=function(){var e={},t=void 0,n=void 0,o=this.getexplicitDrawItems(),a=this.isCanvasChnaged(),i=(this.config.isSmartDrawing=Object.keys(o).length&&!a)?o:this.getLinkedItem();for(t in i)i.hasOwnProperty(t)&&(n=i[t],e[t]=n.getReferenceInfo());return e},t.prototype.createLine=function(e,t){var n,a=this.config.containers,r=a[e.layer],s=t.config,c=this.getFromEnv("paper"),h=this.getFromEnv("chart").getName(),u=this.getLinkedParent(),p=this.getFromEnv("animationManager"),d=this.getFromEnv("toolTipController"),g=u.config,f=g.trendlines,m=s.isVertical,b=g.canvasLeft,v=g.canvasTop,y=v+g.canvasHeight,x=b+g.canvasWidth,C=(0,i["default"])(b,x),k=(0,i["default"])(v,y),w=t.getScale(),S=w.getRangeValue(e.from),L=void 0!==e.to&&w.getRangeValue(e.to)||S,A=m?["M",b,S,"L",x,L]:["M",S,y,"L",L,v],N=e.attr,_=e.text,P=_&&_.attr,F=_&&_.labelPosition||0,E=t.getId(),T=e.id||e.from,D=E+"_"+T,O=void 0,I=this.getGraphicalElement(D),M=void 0,R=void 0,V=e.handlers,B={start:e.from,end:e.to};for(R in N.path=(0,l.getCrispPath)(A,(n=N["stroke-width"],"undefined"===!(void 0===n||o(n))||null!==n?N["stroke-width"]:1)).path.toString(),/trend/.test(e.id)&&f.push({x1:A[1],y1:A[2],x2:A[4],y2:A[5],tooltext:e.toolText,tolerance:N["stroke-width"]<5?2.5:N["stroke-width"]/2}),N["stroke-linecap"]="butt",(I=this.addGraphicalElement(D,p.setAnimation({container:r,el:I||"path",attr:N,component:this,axis:t,data:{value:B,path:A},label:"path"}))).data("data",B),_&&(O=E+"_"+T+P.text,M=this.getGraphicalElement(O),m?(P.x=C(F),P.y=S):(P.x=S,P.y=k(F)),P.text=_.label,P.transform=c.getSuggestiveRotation(_.labelRotation,P.x,P.y),(M=this.addGraphicalElement(O,p.setAnimation({container:a[_.layer],el:M||"text",attr:P,component:this,axis:t,data:{value:e.from},label:"text",css:_.css}))).data("data",e.from)),/zoomscatter/i.test(h)||(e.toolText?d.enableToolTip(I,e.toolText):d.disableToolTip(I)),V)V.hasOwnProperty(R)&&(I.on(R,V[R].bind(t)),M&&M.on(R,V[R].bind(t)));return _?[D,O]:[D]},t.prototype.createBand=function(e,t){var n,o,a=this.config.containers[e.layer],i=t.config,r=this.getFromEnv("animationManager"),l=this.getFromEnv("toolTipController"),s=this.getLinkedParent(),c=this.getFromEnv("chart").getName(),h=s.config,u=i.isVertical,p=h.canvasLeft,d=h.canvasTop,g=d+h.canvasHeight,f=p+h.canvasWidth,m=t.getScale(),b=e.from,v=void 0!==e.to?e.to:b,y=void 0,x=void 0,C=t.getId(),k=void 0,w=void 0,S=e.attr,L=e.handlers;for(w in y="canvasStart"===b?u?d:p:m.getRangeValue(b),x="canvasEnd"===v?u?g:f:m.getRangeValue(v),o=Math.abs(y-x),u?(S.x=p,S.y=Math.min(y,x),S.width=f-p,S.height=o):(S.x=Math.min(y,x),S.y=d,S.width=o,S.height=g-d),n=C+"_"+(e.id||S.x+"_"+S.y),k=this.getGraphicalElement(n),/trend/.test(e.id)&&s.config.vtrendlines.push({x1:S.x,y1:S.y,x2:S.x+S.width,y2:S.y+S.height,tooltext:e.toolText,tolerance:S["stroke-width"]<5?2.5:S["stroke-width"]/2,isTrendZone:1}),k=this.addGraphicalElement(n,r.setAnimation({container:a,el:k||"rect",attr:S,component:this,label:"rect"})),/zoomscatter/i.test(c)||(e.toolText?l.enableToolTip(k,e.toolText):l.disableToolTip(k)),L)L.hasOwnProperty(w)&&k.on(w,L[w].bind(t));return[n]},t.prototype.removeExtraElements=function(e){var t=this.config.map,n=void 0,o=void 0,a=void 0,i=void 0,l=void 0,s=void 0;for(n in t)if(e[n])for(i=(s=(0,r["default"])(t[n],e[n])).length,a=0;a<i;++a)(l=this.getGraphicalElement(s[a]))&&this.removeGraphicalElement(l);else for(i=(o=t[n]).length,a=0;a<i;++a)(l=this.getGraphicalElement(o[a]))&&this.removeGraphicalElement(l);this.config.map=e},t.prototype.setLinkedItem=function(t,n){e.prototype.setLinkedItem.call(this,t,n);var o=this;"axis"===n.getType()&&o.addExtEventListener("preremove",function(e){o.removeLinkedItem(e.sender.getId()),o.asyncDraw()},n)},t.prototype.addexplicitDrawItems=function(e,t){this.config.explicitDrawItems[e]=t},t.prototype.getexplicitDrawItems=function(){return this.config.explicitDrawItems},t.prototype.resetexplicitDrawItems=function(){this.config.explicitDrawItems={}},t.prototype.isCanvasChnaged=function(){var e=this.getLinkedParent().getEffectiveDimensions(),t=this.config,n=void 0;return n=JSON.stringify(e)!==JSON.stringify(t.canvasDim),t.canvasDim=e,n},t}(a["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o=n(296);t["default"]={"initial.axisRefVisuals.axisRefVisualsCartesian":o.axisAnimationAxis,"update.axisRefVisuals.axisRefVisualsCartesian":o.axisAnimationFinal}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n,o,a,l,s,c,h=e.getChildren("canvas"),u=h.length,p=[],d=[];for(a=0;a<u;a++,p=[],d=[])if(!(t=h[a]).getState("removed")){for(o=t.getFromEnv("xAxis"),s=0;s<(o&&o.length);s++)o[s].getState("removed")||p.push(o[s]);for(o=t.getFromEnv("yAxis"),s=0;s<(o&&o.length);s++)o[s].getState("removed")||d.push(o[s]);for((0,r.componentFactory)(t,i["default"],"vCanvas",p.length*d.length),n=t.getChildren("vCanvas"),l=0,s=0;l<(p&&p.length);l++)for(c=0;c<(d&&d.length);c++,s++)n[s].xAxis(p[l]).yAxis(d[c]).canvas(t),n[s].configure(),n[s].addToEnv("vCanvas",n[s])}};var o,a=n(327),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(131),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e,t){return e="comp_"+e,t&&(this.config[e]=t),(t||!this.config[e])&&this||this.config[e]},c=function(e,t){return["T",e,",",t].join("")},h=function(e){return-e.getTranslation()},u=function(e,t){return{h:e,v:t}},p=["columnShadowVcanvasGroup","columnVcanvasGroup","areaShadowVcanvasGroup","areaVcanvasGroup","lineShadowVcanvasGroup","lineVcanvasGroup","defaultShadowVcanvasGroup","defaultVcanvasGroup","sumLabelsLayer","vcanvasLabelGroup"],d=function(e,t,n){return n.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,state:"appearing",component:n,label:"group"})},g=function(e){return!/category/i.test(e.getName())},f=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getName=function(){return"virtualCanvas"},t.prototype.getType=function(){return"canvas"},t.prototype.xAxis=function(e){var t=s.call(this,"xAxis",e);return e&&this.listenToAxis(e),e&&this.addToEnv("xAxis",e),t},t.prototype.yAxis=function(e){var t=s.call(this,"yAxis",e);return e&&this.listenToAxis(e),e&&this.addToEnv("yAxis",e),t},t.prototype.paper=function(e){return s.call(this,"paper",e)},t.prototype.canvas=function(e){return s.call(this,"canvas",e)},t.prototype.configure=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.getFromEnv("chartConfig"),n=this.config;Object.assign(n,e),n.transposeAxis=t.transposeAxis,this._mapChildren(function(e){e.getState("removed")||"dataset"===e.getType()||e.configure&&e.configure()})},t.prototype.getHorizontalVerticalAxes=function(){var e=this.xAxis(),t=this.yAxis();return t.config.isVertical?u(e,t):u(t,e)},t.prototype.preDraw=function(){this._mapChildren(function(e){e.getState("removed")||"dataset"===e.getType()||e.setVisibility&&e.setVisibility()});var e,t=this.config.transposeAxis,n=this.getFromEnv("chart"),o=this.getAxisValuePadding(),a=o.left,i=o.right,r=o.top,l=o.bottom;(e=this.getDataLimits(!t)).min!==Infinity||e.max!==-Infinity?(this._setYAxisLimits(e.min,e.max),n._storeIntialLimit&&n._storeIntialLimit(e.min,e.max)):(this._setYAxisLimits(void 0,void 0),n._storeIntialLimit&&n._storeIntialLimit(void 0,void 0)),this._setXAxisLimits(e.xMin,e.xMax),this._setAxisValuePadding(a,i,r,l)},t.prototype.childChanged=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.config,n=t.transposeAxis,o=void 0;!1!==e.dataLimitChanged&&(o=this.getDataLimits(!n),!n||o.min===t.range.min&&o.max===t.range.max||(t.range.min=o.min,t.range.max=o.max,this.getFromEnv("yAxis").resetStoredLimits(),o.min!==Infinity||o.max!==-Infinity?this._setYAxisLimits(o.min,o.max):this._setYAxisLimits(void 0,void 0)),o.xMin===t.range.xMin&&o.xMax===t.range.xMax||(t.range.xMin=o.xMin,t.range.xMax=o.xMax,this.getFromEnv("xAxis").resetStoredLimits(),this._setXAxisLimits(o.xMin,o.xMax))),this.asyncDraw()},t.prototype._setAxisValuePadding=function(e,t,n,o){this.getFromEnv("xAxis").setAxisPadding(e,t),n&&o&&this.getFromEnv("yAxis").setAxisPadding(e,t)},t.prototype.getAxisValuePadding=function(){var e={},t=-Infinity,n=-Infinity,o=-Infinity,a=-Infinity;return this._mapChildren(function(i){i.getState("removed")||(e=i.getAxisValuePadding&&i.getAxisValuePadding()||{},t=Math.max(t,e.left||-Infinity),n=Math.max(n,e.right||-Infinity),o=Math.max(o,e.top||-Infinity),a=Math.max(a,e.bottom||-Infinity))}),t===-Infinity&&(t=0),n===-Infinity&&(n=0),o===-Infinity&&(o=0),a===-Infinity&&(a=0),this.config.padding||(this.config.padding={},this.config.padding.left=t,this.config.padding.right=n,this.config.padding.top=o,this.config.padding.bottom=a),{left:t,right:n,top:o,bottom:a}},t.prototype._setYAxisLimits=function(e,t){var n=this.getFromEnv("yAxis");g(n)&&n.setDataLimit(t,e)},t.prototype._setXAxisLimits=function(e,t){var n=this.getFromEnv("xAxis");g(n)&&(t!==-Infinity||e!==+Infinity?n.setDataLimit(t,e):n.setDataLimit(void 0,void 0))},t.prototype.getDataLimits=function(e){var t,n,o,a=this.getFromEnv("chart"),i=-Infinity,l=+Infinity,s=i,c=l,h=l,u=i;return this._mapChildren(function(a){var p;a.getDataLimits&&!a.getState("removed")&&(e||a.getState("visible"))&&(t=a.getDataLimits(e),p=t,n=(0,r.pluck)(p.xMax,i),o=(0,r.pluck)(p.xMin,l),s=Math.max(s,p.max),c=Math.min(c,p.min),u=Math.max(u,n),h=Math.min(h,o))}),this.config.range||(this.config.range={},this.config.range.min=c,this.config.range.max=s,this.config.range.xMin=h,this.config.range.xMax=u),a.config.yMax=s,a.config.yMin=c,{min:c,max:s,xMin:h,xMax:u}},t.prototype.listenToAxis=function(e){var t,n=this;t=function(){n.getState("drawn")&&n.asyncDraw()},this.getState("visiblerangeset"+e.getId())||(this.setState("visiblerangeset"+e.getId(),!0),n.addExtEventListener("visiblerangeset",t,e))},t.prototype.createContainer=function(){var e=this.getLinkedParent();!this.getChildContainer("columnShadowVcanvasGroup")&&this.addChildContainer("columnShadowVcanvasGroup",d("vcanvas-column-shadow",e.getChildContainer("columnShadowGroup"),this)),!this.getChildContainer("columnVcanvasGroup")&&this.addChildContainer("columnVcanvasGroup",d("vcanvas-column-plot",e.getChildContainer("columnGroup"),this)),!this.getChildContainer("areaShadowVcanvasGroup")&&this.addChildContainer("areaShadowVcanvasGroup",d("vcanvas-area-shadow",e.getChildContainer("areaShadowGroup"),this)),!this.getChildContainer("areaVcanvasGroup")&&this.addChildContainer("areaVcanvasGroup",d("vcanvas-area-plot",e.getChildContainer("areaGroup"),this)),!this.getChildContainer("lineShadowVcanvasGroup")&&this.addChildContainer("lineShadowVcanvasGroup",d("vcanvas-line-shadow",e.getChildContainer("lineShadowGroup"),this)),!this.getChildContainer("lineVcanvasGroup")&&this.addChildContainer("lineVcanvasGroup",d("vcanvas-line-plot",e.getChildContainer("lineGroup"),this)),!this.getChildContainer("defaultShadowVcanvasGroup")&&this.addChildContainer("defaultShadowVcanvasGroup",d("vcanvas-default-shadow",e.getChildContainer("defaultShadowGroup"),this)),!this.getChildContainer("defaultVcanvasGroup")&&this.addChildContainer("defaultVcanvasGroup",d("vcanvas-default-plot",e.getChildContainer("defaultGroup"),this)),!this.getChildContainer("vcanvasLabelGroup")&&this.addChildContainer("vcanvasLabelGroup",d("vcanvas-label",e.getChildContainer("datalabelsGroup"),this)),!this.getChildContainer("columnTrendGroup")&&this.addChildContainer("columnTrendGroup",d("columnTrendGroup",this.getChildContainer("columnVcanvasGroup"),this)),!this.getChildContainer("sumLabelsLayer")&&this.addChildContainer("sumLabelsLayer",d("vcanvas-sumLabelsLayer",e.getChildContainer("sumLabelsLayer"),this))},t.prototype.applyTranslation=function(){var e=this,t=function(e){return c(h(e.h),h(e.v))}(e.getHorizontalVerticalAxes());e.createContainer(),p.forEach(function(n){var o;o=n,(o=e.getChildContainer(o)).attr({transform:t})})},t.prototype.draw=function(){this.applyTranslation(),this.setState("drawn",!0)},t.prototype.getCanvasPadding=function(){var e,t,n={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return this._mapChildren(function(o){if(o.getCanvasPadding&&!o.getState("removed"))for(t in e=o.getCanvasPadding()||{})e.hasOwnProperty(t)&&(n[t]=Math.max(e[t],n[t]))}),n},t.prototype.rtShiftAnim=function(e,t){var n,o=this,a=o.getFromEnv("xAxis"),i=o.getFromEnv("yAxis"),r=a.getPixel(1)-a.getPixel(0),l=i.getPixel(1)-i.getPixel(0),s=o.getFromEnv("animationManager");n=c(e=(e||0)*r,t=(t||0)*l),p.forEach(function(e){o.getChildContainer(e).attr({transform:n}),s.setAnimation({el:o.getChildContainer(e),attrs:{transform:"T0,0"}})})},t}(i["default"]);t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=void 0;e.config.enablemousetracking?((0,r.componentFactory)(e,i["default"],"mouseTracker"),t=e.getChildren("mouseTracker")[0],e.config.mouseTrackerEventAdded||(t.addEvents(),e.config.mouseTrackerEventAdded=!0)):((t=e.getChildren("mouseTracker")&&e.getChildren("mouseTracker")[0])&&t._removeListners(),e.config.mouseTrackerEventAdded=!1)};var o,a=n(329),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118)},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(131);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var r="fc-mouseover",l="fc-mousedown",s="fc-mouseup",c="fc-mousemove",h="fc-click",u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n,o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.pIndex=1,o.handler=(n=o,function(e){e.originalEvent&&n.getFromEnv("chart")._mouseEvtHandler(e,n.config.evtData)}),o.eventsList=[l,s,c,h,r],o.config={},o.config.evtData={},o}return i(t,e),t.prototype.getMouseEvents=function(e,t,n){var o=this._lastDatasetIndex,a=this._lastPointIndex,i={fireOut:!1,events:[]};switch(e.type){case h:i.events.push(h);break;case c:o===t&&a===n?(clearTimeout(this.mouseoutTimer),i.events.push(c)):(i.events.push(r),i.fireOut=!0);break;case l:o===t&&a===n||(i.fireOut=!0,i.events.push(r)),i.events.push(l);break;case r:o===t&&a===n?clearTimeout(this.mouseoutTimer):(i.fireOut=!0,i.events.push(r));break;case s:this.hasTouchEvent=!1,i.events.push(s);break;case"fc-mouseout":i.fireOut=!0}return i},t.prototype.addEvents=function(){var e,t,n,o=this.getFromEnv("chart"),a=o.getChildren("canvas"),i=this.config.evtData,r=this.eventsList;for(o.config.enableMouseOutEvent&&r.push("fc-mouseout"),this._removeListners(),i.chart=o,i.mouseTracker=this,t=0;t<a.length;t++)for(n in e=a[t],r)e.addEventListener(r[n],this.handler)},t.prototype._removeListners=function(){var e,t,n,o=this.getFromEnv("chart").getChildren("canvas"),a=this.eventsList;for(n=0;n<o.length;n++)for(t in e=o[n],a)e.removeEventListener(a[t],this.handler);this._removeDocEvents()},t.prototype._removeDocEvents=function(){this.eventOutput&&this.eventOutput.unlisten(),this.eventOutput=void 0},t.prototype._dispose=function(){this._removeListners(),e.prototype._dispose.call(this)},t}(((o=a)&&o.__esModule?o:{"default":o})["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n,i=e.getChildren(),r=i.canvas&&i.canvas[0],l=r&&r.getChildren("vCanvas"),s=l&&l[0]||r||e,c=e.getFromEnv("dataSource"),h=c.dataset,u=c.data||h&&h[0].data;n=a(u),u&&0!==u.length?(t=e.getDSdef(),(0,o.datasetFactory)(s,t,"dataset",1,[n])):e.setChartMessage()};var o=n(118),a=function(e){var t=[],n=[];return(0,o.fcEach)(e,function(e,o){"true"!==e.vline&&!0!==e.vline&&1!==e.vline&&"1"!==e.vline?t.push(e):n.push({index:o,data:e})}),{catData:n,data:t}}},function(e,t,n){"use strict";t.__esModule=!0,t._removePlots=undefined;var o=n(118),a=n(122),i=c(n(131)),r=n(125),l=c(n(332)),s=n(129);function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=void 0,p=o.hasTouch?o.TOUCH_THRESHOLD_PIXELS:o.CLICK_THRESHOLD_PIXELS,d=o.regex.dropHash,g=o.preDefStr.DEFAULT,f=o.preDefStr.showHoverEffectStr,m=o.preDefStr.setRolloverAttrStr,b=o.preDefStr.setRolloutAttrStr,v=Math,y=v.min,x=v.max,C=v.abs,k={top:!0},w={right:!0},S={left:!0},L={bottom:!0},A=v.ceil,N=v.round,_=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=arguments[1];if("function"==typeof t){var n=function(n){if(e.hasOwnProperty(n)){var o=e[n];Array.isArray(o)?o.forEach(function(e){return t(e,n)}):e[n]&&t(e[n],n)}};for(var o in e)n(o)}},P=function(e,t,n){return n.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,state:"appearing",component:n,label:"group"})},F=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],t=arguments[1];e.forEach(function(e){return _(e&&e.graphics,t)}),e.length=0};(0,r.addDep)({name:"columnAnimation",type:"animationRule",extension:l["default"]});var E=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=n;return o.components={},o.components.removeDataArr=[],o.__hideElem=function(e,t){o._setRemoveAnim(e,"label"===t?"plotLabel":"rect")},o.__removeElem=function(e,t){o.__hideElem(e,t)},o.config.primitiveType="column",n}return h(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"column"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.showvalues=u,t.includeinlegend=1,t.plotfillalpha=u,t.plotfillangle=u,t.ratio=u},t.prototype.preConfigure=function(t){if(!t)return!1;this.trimData(t),this.config.JSONData=t,e.prototype.preConfigure.call(this,t)},t.prototype.setSkippingInfo=function(e){this.addToEnv("skipInfo",e||{plotsPerBin:1,drawOnlyMap:[],draw:[],hide:[],skippingApplied:!1,dragHashMap:[]})},t.prototype.getSkippingInfo=function(){return this.getFromEnv("skipInfo")||{plotsPerBin:1,drawOnlyMap:[],draw:[],hide:[],skippingApplied:!1,dragHashMap:[]}},t.prototype.configure=function(t){if(!t)return!1;e.prototype.configure.call(this,t)},t.prototype.configureAttributes=function(){var e=this.getFromEnv("chart"),t=this.config;this.parseAttributes(),this._setConfigure(),this.getState("visible")&&!1===t.oldVisible&&(t.appearing=!0),t.oldVisible=this.getState("visible"),this._realTimeConfigure&&this._realTimeConfigure(),!1!==e.config.hasLegend&&e.config.showLegend&&this._addLegend(),this.ErrorValueConfigure&&this.ErrorValueConfigure(),this.config.YForStackUpdated=!1,this.setState("dirty",!0)},t.prototype.parseAttributes=function(){var e,t,n,i=this.getFromEnv("chart"),r=i.getChildren("yAxis")[0].config.isReverse,l=this.config,s=this.config.JSONData,c=i.config.singleseries,h=i.config,u=i.getFromEnv("dataSource").chart,p=this.getFromEnv("color-manager"),d=this.getJSONIndex(),g=l.plotColor=p.getPlotColor(d),f=(0,o.pluckNumber)(s.dashed,u.plotborderdashed),m=(0,o.pluckNumber)(u.useplotgradientcolor,1),b=i.isBar,v=i.config.is3D,y=i.config.isdual;l.parentYAxis=y&&"s"===(0,o.pluck)(s.parentyaxis&&s.parentyaxis.toLowerCase(),"p")?1:0,l.maxValue=-Infinity,l.minValue=Infinity,l.defaultPadding={left:.5,right:.5},(0,o.parseConfiguration)(s,l,h,{data:!0}),l.seriesname=(0,o.parseUnsafeString)(s.seriesname),l.showValues=(0,o.pluckNumber)(s.showvalues,u.showvalues,1),l.showplotborder=(0,o.pluckNumber)(u.showplotborder,v?0:1),e=h.plotborderdashlen,t=h.plotborderdashgap,l.plotfillangle=(0,o.pluckNumber)(360-u.plotfillangle,b?180:r?90:270),l.plotfillalpha=n=(0,o.pluck)(s.alpha,u.plotfillalpha,o.HUNDREDSTRING),l.plotColor=g=(0,o.pluck)(s.color,g),l.legendSymbolColor=(0,a.getFirstColor)(l.plotColor),l.plotgradientcolor=(0,o.getDefinedColor)(u.plotgradientcolor,p.getColor("plotGradientColor")),!m&&(l.plotgradientcolor=""),l.plotborderalpha=(0,o.pluck)(u.plotborderalpha,n,o.HUNDREDSTRING),l.plotbordercolor=(0,o.pluck)(u.plotbordercolor,v&&!c?"#ffffff":p.getColor("plotBorderColor")),l.plotborderdashstyle=f?(0,o.getDashStyle)(e,t,void 0):"none",l.showShadow=v?(0,o.pluckNumber)(u.showshadow,1):(0,o.pluckNumber)(u.showshadow,p.getColor("showShadow")),l.definedGroupPadding=x(h.plotSpacePercent,0),l.includeinlegend=(0,o.pluckNumber)(s.includeinlegend,l.seriesname?1:0),this.setState("visible",1===(0,o.pluckNumber)(s.visible,!Number(s.initiallyhidden),1)),!0===this.getState("visible")?this._conatinerHidden=!1:this._containerHidden=!0,l.legendInteractivity=!1,this.setState("visible",1===(0,o.pluckNumber)(this.getState("visible"),l.JSONData.visible,!Number(l.JSONData.initiallyhidden),1))},t.prototype.trimData=function(e){if(this.components||!this.components.data||!this.components.data.length){var t=this.components,n=this.config,o=n&&n.context,a=this.getFromEnv("chart").isRealTime,i=o&&o.prevCatlen,r=this.getFromEnv("xAxis"),l=a?0:r.getTicksLen(),s=i-l,c=t&&t.data,h=c&&c.length,u=e.data&&e.data.length||0,p=h-u,d=void 0,g=void 0;s>p?(d=s,g=l):(d=p,g=u),d>0&&this.removeData(g,d,!1)}},t.prototype.hidePlots=function(){var e,t=this,n=t.components.data,o=t.getSkippingInfo(),a=o.hide,i=o.hideLabel;a.forEach(function(o){(e=n[o])&&e.graphics&&(_(e.graphics,t.__removeElem),e&&(e.graphics={}))}),i.forEach(function(o){(e=n[o])&&e.graphics&&(_(e.graphics,t.__removeElem),e&&(e.graphics={}))})},t.prototype._setConfigure=function(e,t){var n,a,i,r,l,c,h,d,g=this,f=g.getFromEnv("chart"),m=f.config,b=g.config,v=g.getFromEnv("xAxis"),y=f.isRealTime,x=m.realTimeConfig&&m.realTimeConfig.numDisplaySets,C=g.getFromEnv("dataSource").categories&&g.getFromEnv("dataSource").categories[0]&&g.getFromEnv("dataSource").categories[0].category,k=b.initCatLen=y?C&&Array.isArray(C)&&C.filter(function(e){return!e.vline}).length||0:v.getTicksLen(),w=b.JSONData||[],S=e||w.data,L=e&&e.data.length,A=b.showplotborder,N=m.plotborderthickness,_=g.components.data,P=m.isDrag,F=g.getSkippingInfo&&g.getSkippingInfo(),E=F&&F.draw||[],T=F&&F.skippingApplied;for(h=L===u&&k>x?k-x:0,n=y?(0,o.pluckNumber)(L,k):Math.min(k,S&&S.length),m.dragTolerance=P?(A&&N>5?N/2+1:5)+p:0,_||(_=g.components.data=[]),T&&(n=E.length),c=h;c<n;c++)l=E[c]||c,e?(a=e&&e.data[l]||{},r=t!==u?_[d=t+l]:_[d=_.length-n+l],i=d):(a=S&&S[l]||{},r=_[l-=h],i=l),r||(r=_[i]={}),r.config||(r.config={},r.graphics={}),g._plotConfigure(i,a,L),d&&d++;T&&g.addJob("configureRestID",function(){g._configureRestData()},s.priorityList.postRender)},t.prototype._configureRestData=function(){var e,t,n,a,i,r=this.config,l=this.config.JSONData,s=l.data,c=this.getFromEnv("chart-attrib"),h=this.getFromEnv("xAxis").getTicksLen(),p=(this.getSkippingInfo&&this.getSkippingInfo()).drawOnlyMap,d=this.components.data;for(d||(d=this.components.data=[]),r.maxValue=-Infinity,r.minValue=Infinity,a=0;a<h;a++)p[a]||(n=d[a],t=a,(e=s&&s[a]||{}).tooltext!==u&&(e.tooltext=(0,o.parseTooltext)(e.tooltext,[3],{label:e.label},e,c,l)),n||(n=d[a]={}),n.config||(d[a].config={}),this._plotConfigure(t,e),i&&i++)},t.prototype._plotConfigure=function(e,t,n){var i,r,l,s,c,h,p,d,g,f,m,b,v,C,k,w,S,L,A,N,_,P,F,E,T,D,O,I,M,R,V,B,G,j,H=this.getFromEnv("chart"),W=H.config,z=this.config,U=z.JSONData,q=H.config.singleseries,Y=this.getFromEnv("yAxis"),K=this.getFromEnv("xAxis"),X=this.components.data[e],Z=H.getFromEnv("dataSource").chart,J=this.getFromEnv("color-manager"),$=z.showplotborder,Q=z.plotColor,ee=W.showtooltip,te=W.yaxisname,ne=W.xaxisname,oe=W.tooltipsepchar,ae=W.seriesnameintooltip,ie=W.plotborderdashlen,re=W.plotborderdashgap,le=W.plotborderthickness,se=(0,o.pluckNumber)(W.useroundedges,0),ce=W.plothovereffect,he=z.plotfillangle,ue=z.plotborderdashstyle,pe=X.config,de=H.isBar,ge=H.config.is3D,fe=W.use3dlighting,me=W.realTimeConfig&&W.realTimeConfig.numDisplaySets,be=me-z.initCatLen,ve=me&&be>=0?be:0,ye=W.usedataplotcolorforlabels;j=K.getLabel(n?e-n:ve+e),pe.origLabel=G=(0,o.getValidValue)((0,o.parseUnsafeString)(j.label)),v=pe.label=(0,o.getValidValue)((0,o.parseUnsafeString)(j.tooltext))||G,t.tooltext!==u&&(t.tooltext=(0,o.parseTooltext)(t.tooltext,[3],{label:j.label},t,Z,U)),pe.showValue=(0,o.pluckNumber)(t.showvalue,z.showValues),pe.setValue=b=Y.getCleanValue(t.value,(0,o.pluckNumber)(W.stack100percent)),pe.setLink=(0,o.pluck)(t.link),pe.toolTipValue=I=Y.dataLabels(b),pe.setDisplayValue=M=(0,o.parseUnsafeString)(t.displayvalue),pe.displayValue=(0,o.pluck)(M,I),R=(0,o.pluckNumber)(t.dashed),V=(0,o.pluckNumber)(t.dashlen,ie),B=re=(0,o.pluckNumber)(t.dashgap,re),null!==b&&(z.maxValue=x(z.maxValue,b),z.minValue=y(z.minValue,b)),pe.plotBorderDashStyle=m=1===R?(0,o.getDashStyle)(V,B):0===R?"none":ue,q?(Q=J.getPlotColor((0,o.pluckNumber)(e-n,e)),Q=(0,o.pluck)(t.color,Q),ye&&K.updateTicksValues(e,{labelfontcolor:(0,a.convertColor)(Q)}),f=(0,o.pluck)(t.alpha,t.borderalpha,z.plotborderalpha,d).toString()):(Q=(0,o.pluck)(t.color,z.plotColor),f=(0,o.pluck)(t.alpha,z.plotborderalpha,d).toString()),g=(0,o.pluck)(t.ratio,z.ratio),d=(0,o.pluck)(t.alpha,z.plotfillalpha),pe.shadow={opacity:z.showShadow?d/100:0},b<0&&!se&&(h=z.plotfillangle,he=de?180-he:360-he),pe.colorArr=C=(0,a.getColumnColor)(Q+","+z.plotgradientcolor,d,g,he,se,z.plotbordercolor,f,de?1:0,!!ge),pe.originalPlotColor=Q,0!==ce&&(k=(0,o.pluck)(t.hovercolor,U.hovercolor,Z.plotfillhovercolor,Z.columnhovercolor,Q),w=(0,o.pluck)(t.hoveralpha,U.hoveralpha,Z.plotfillhoveralpha,Z.columnhoveralpha,d),!(S=(0,o.pluck)(t.hovergradientcolor,U.hovergradientcolor,Z.plothovergradientcolor,z.plotgradientcolor))&&(S=""),L=(0,o.pluck)(t.hoverratio,U.hoverratio,Z.plothoverratio,g),A=(0,o.pluckNumber)(360-t.hoverangle,360-U.hoverangle,360-Z.plothoverangle,he),N=(0,o.pluck)(t.borderhovercolor,U.borderhovercolor,Z.plotborderhovercolor,z.plotbordercolor),_=(0,o.pluck)(t.borderhoveralpha,U.borderhoveralpha,Z.plotborderhoveralpha,Z.plotfillhoveralpha,Z.columnhoveralpha,f,d),P=(0,o.pluckNumber)(t.borderhoverthickness,U.borderhoverthickness,Z.plotborderhoverthickness,z.showplotborder&&le),F=t.borderhoverdashed||U.borderhoverdashed||Z.plotborderhoverdashed,E=(0,o.pluckNumber)(t.borderhoverdashgap,U.borderhoverdashgap,Z.plotborderhoverdashgap,ie),T=(0,o.pluckNumber)(t.borderhoverdashlen,U.borderhoverdashlen,Z.plotborderhoverdashlen,re),D=F!==u?Number(F)?(0,o.getDashStyle)(T,E):"":m,(W.drawTrendRegion&&!ge||1==ce&&k===Q)&&(k=(0,a.getLightColor)(k,70)),O=(0,a.getColumnColor)(k+","+S,w,L,A,se,N,_.toString(),de?1:0,!!ge),pe.setRolloutAttr={fill:ge?[(0,o.toRaphaelColor)(C[0]),!fe]:(0,o.toRaphaelColor)(C[0]),stroke:$?(0,o.toRaphaelColor)(C[1]):o.TRACKER_FILL,"stroke-width":$?le:0,"stroke-dasharray":m},pe.setRolloverAttr={fill:ge?[(0,o.toRaphaelColor)(O[0]),!fe]:(0,o.toRaphaelColor)(O[0]),stroke:N?(0,o.toRaphaelColor)(O[1]):o.TRACKER_FILL,"stroke-width":P,"stroke-dasharray":D}),i=pe.toolTipValue,pe.origToolText=l=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(t.tooltext,U.plottooltext,Z.plottooltext))),ee?null===i?p=!1:l!==u?(c=[1,2,3,4,5,6,7],r={yaxisName:te,xaxisName:ne,formattedValue:i,label:v},p=(0,o.parseTooltext)(l,c,r,t,Z,U)):(ae&&(s=(0,o.getFirstValue)(U&&U.seriesname)),p=s?s+oe:"",p+=v?v+oe:""):p=!1,pe.toolText=p,pe.setTooltext=p,h&&(he=h),pe._x=e,pe._y=b},t.prototype.updateYForStack=function(){var e,t,n,a,i,r,l=this.getFromEnv("chartConfig"),s=(0,o.pluckNumber)(l.showpercentvalues),c=(0,o.pluckNumber)(l.showpercentintooltip),h=this.config.JSONData,p=this.getFromEnv("chart-attrib"),d=this.getFromEnv("xAxis").getTicksLen(),g=this.components.data,f=this.getFromEnv("stackValues"),m=s||c?-1:1,b=this.getSkippingInfo&&this.getSkippingInfo(),v=b&&b.skippingApplied,y=b&&b.draw||[],x=y&&y.length;for(v&&(d=x),a=0;a<d;a++)t=(e=g[n=y[a]||a])&&e.config,e!==u&&(i=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(t.origToolText,h.plottooltext,p.plottooltext))),r=f[n]&&f[n].positive+m*f[n].negative||1,t._b=this._parseValues(n,t._b,r,i),l.stack100percent&&(t._y=t.value+t._b))},t.prototype._parseValues=function(e,t,n,a){var i,r,l=this.getFromEnv("chartConfig"),s=this.components.data[e].config,c=(0,o.pluckNumber)(l.showpercentvalues),h=(0,o.pluckNumber)(l.showpercentintooltip),u=this.getState("visible"),p=s.setValue,d=(0,o.pluckNumber)(l.stack100percent),g=this.getFromEnv("number-formatter"),f=this.getFromEnv("yAxis"),m=s.setDisplayValue;return r=(u&&p||0)/n*100,i=g.percentValue(r),d&&(s.value=r,t=(t||0)/n*100),h&&(s.toolTipValue=i),c&&!m&&(s.displayValue=i),a&&(s.toolText=(0,o.parseTooltext)(s.setTooltext,[14,24,25,112],{percentValue:i,sum:f.dataLabels(n),unformattedSum:n})),t},t.prototype._addLegend=function(){var e,t,n,i=this.getFromEnv("chart").isBar,r=this.getFromEnv("chart-attrib"),l=this.config,s=(0,a.getFirstColor)(l.legendSymbolColor),c=this.getFromEnv("legend"),h=(0,o.pluckNumber)(r.use3dlighting,r.useplotgradientcolor,1),u=(0,a.getLightColor)(s,60).replace(d,o.HASHSTRING);l.includeinlegend?(e=h?{FCcolor:{color:s+","+s+","+(0,a.getLightColor)(s,40)+","+s+","+s,ratio:"0,30,30,30,10",angle:i?0:270,alpha:"100,100,100,100,100"}}:{FCcolor:{color:s,angle:i?0:270,ratio:"0",alpha:"100"}},n=c.getItem(this.config.legendItemId),t={type:this.getName(),index:this.getJSONIndex(),label:(0,o.getFirstValue)(this.config.JSONData.seriesname)},n||(this.config.legendItemId=c.createItem(this),n=c.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){n.itemClickFn()},n)),n.configure(t),n.setStateCosmetics("default",{symbol:{fill:(0,o.toRaphaelColor)(e),rawFillColor:s,stroke:(0,o.toRaphaelColor)(u)}}),this.getState("visible")?n.removeLegendState("hidden"):n.setLegendState("hidden")):this.config.legendItemId&&c.disposeItem(this.config.legendItemId)},t.prototype.legendInteractivity=function(e){var t=e.getLinkedParent().getFromEnv("chart"),n=this.getState("visible"),a=this.config;if(t.getFromEnv("animationManager").setAnimationState("legendInteraction"),a.legendInteractivity=!0,n?this.hide():this.show(),o.isFirefox){var i=t.getChildContainer("plotGroup");i.attrs["clip-rect"]&&i.attr({"clip-rect":i.attrs["clip-rect"]})}a.drawnEvtListenerAttached||(a.drawnEvtListenerAttached=!0,this.addEventListener("drawn",function(){a.legendInteractivity=!1}))},t.prototype.createPinElem=function(){var e,t,n,o=this.getFromEnv("chart"),a=arguments[1].group,i=this.components.data,r=this.graphics.pinElems||(this.graphics.pinElems=[]),l=this.getLinkedParent().getChildContainer().columnVcanvasGroup;for(e=r.length-1;e>=0;e--)r[e].remove(),r.pop();if(this.getState("visible"))for(e=this.config.scrollMinVal;e<this.config.scrollMaxVal;e++)(n=i[e])&&n.graphics&&(t=n.graphics.element.clone().attr({transform:["T",-(o.config._visx+C(l.transform()[0][1])),-o.config.canvasBottom]}),a.appendChild(t),r.push(t))},t.prototype._checkPointerOverColumn=function(e,t,n){var o,a,i,r,l,s,c,h,d,g=this.getFromEnv("chart").config,f=g.plotborderthickness,m=g.showplotborder,b=this.components.data,v=b&&b.length,y=0,x=0,C=g.dragTolerance||0,k=(this.getSkippingInfo&&this.getSkippingInfo()).plotsPerBin;for(c=d=(d=(h=(A(e/k)-1)*k+1)+k-1)<v?d:v;c>=h;c--){if(!(o=b[c]))return;if(o._height<p&&(y=p),o._width<p&&(x=p),(o._xPos||o._yPos)&&(a=o.config.setValue,m&&f!==u?s=f/2:f=s=0,null!==a&&(i=t-o._xPos+s,r=n-o._yPos+s+(a>=0?C:0),l=i>=-x/2&&i<=(x||o._width)+f&&r>=-y/2&&r<=(y||o._height)+f+(a<0?2*C:C))))return{pointIndex:c,hovered:l,pointObj:b[c]}}},t.prototype._getHoveredPlot=function(e,t){var n,o,a=this.getFromEnv("chart").isBar,i=this.getFromEnv("xAxis");return e+=i.getTranslation(),n=i.getValue(a?t:e),(o=Math.round(n))-n>0?this._checkPointerOverColumn(o,e,t)||this._checkPointerOverColumn(o-1,e,t):this._checkPointerOverColumn(o+1,e,t)||this._checkPointerOverColumn(o,e,t)},t.prototype.getPlotInCategoryAt=function(){var e,t,n,o=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0,i=this.components.data,r=this.getFromEnv("xAxis"),l=this.getFromEnv("yAxis"),s=r.getTranslation()||0,c=l.getTranslation()||0,h=this.getState("visible"),u=o+s,p=a+c,d=void 0;if("category"===r.getName()&&r.config.hasCategory)d=r;else{if("category"!==l.getName()||!l.config.hasCategory)return!1;d=l}return null!==(t=d.config.isVertical)&&void 0!==t&&(e=i[Math.round(d.getValue(t?p:u))],n=this._getHoveredPlot(o,a),h&&n?n:!(!h||!e)&&{pointIndex:e._index,hovered:!1,pointObj:e})},t.prototype._decideTooltipType=function(e,t){var n=this.getFromEnv("chart").config.drawTrendRegion,o=this.components,a=this.getFromEnv("toolTipController"),i=o.data[e],r=i&&(i.config.finalTooltext||i.config.toolText),l=this.config.currentToolTip,s=t.originalEvent;r&&!n&&(l?a.draw(s,r,l):l=this.config.currentToolTip=a.draw(s,r))},t.prototype._firePlotEvent=function(e,t,n){var o,a=this.getFromEnv("chart"),i=this.components,r=this.getFromEnv("toolTipController"),l=i.data[t],s=l.graphics&&l.graphics.element,c=this.config.currentToolTip;if(s)switch(o=l.config.setLink,e){case"fc-mouseover":this._decideTooltipType(t,n),function(e,t,n,o,a){var i=t.graphics,r=i&&i.element,l=e.getFromEnv("animationManager"),s=r&&r.getData();!0!==s.draged&&(r&&0!==s.showHoverEffect&&(l.setAnimationState("mouseOver"),l.setAnimation({el:r,label:"rect",component:a,attr:r.getData().setRolloverAttr})),!o&&r&&e.plotEventHandler(r,n,"DataPlotRollOver"))}(a,l,n,u,this),o&&(s.node.style.cursor="pointer");break;case"fc-mouseout":r.hide(c),function(e,t,n,o,a){var i=t.graphics,r=i&&i.element,l=e.getFromEnv("animationManager"),s=r&&r.getData();!0!==s.draged&&(r&&0!==s.showHoverEffect&&(l.setAnimationState("mouseOut"),l.setAnimation({el:r,label:"rect",component:a,attr:r.getData().setRolloutAttr})),!o&&r&&e.plotEventHandler(r,n,"DataPlotRollOut"))}(a,l,n,u,this),o&&(s.node.style.cursor=g);break;case"fc-click":a.plotEventHandler(s,n);break;case"fc-mousemove":this._decideTooltipType(t,n)}},t.prototype.createContainer=function(){var e,t,n,o,a=this.getType(),i=this.getFromEnv("chart"),r=this.getLinkedParent(),l=this.config.primitiveType||a;!r.getChildContainer(l+"VcanvasGroup")&&(l="default"),e=r.getChildContainer(l+"VcanvasGroup"),o=r.getChildContainer(l+"ShadowVcanvasGroup"),t=r.getChildContainer("commonElemGroup")||e,n=r.getChildContainer("anchorGroup")||e,!this.getContainer("shadowGroup")&&this.addContainer("shadowGroup",P("shadow-group",o,this)),!this.getContainer("errorShadowGroup")&&this.addContainer("errorShadowGroup",P("error-shadow-group",o,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("commonElemsGroup",P("common-elems-group",t,this)),!this.getContainer("plotGroup")&&this.addContainer("plotGroup",P("plot-group",n,this)),!this.getContainer("errorPlotGroup")&&this.addContainer("errorPlotGroup",P("error-plot-group",e,this)),i.hasAnchor&&this.getContainer("errorPlotGroup").insertBefore(this.getContainer("plotGroup")),!this.getContainer("labelGroup")&&this.addContainer("labelGroup",P("label-group",r.getChildContainer("vcanvasLabelGroup"),this).attr("class","fusioncharts-datalabels"))},t.prototype.createCoordinates=function(){var e,t,n,o,a,i,r,l,s,c,h=this.components.data,p=this.getFromEnv("chart"),d=p.isBar,g=this.getFromEnv("yAxis"),f=this.getFromEnv("xAxis"),m=g.getAxisBase(),b=g.getPixel(m),v=f.config.isVertical,y=p.config.xDepth||0,x=p.config.yDepth||0,C=h.length,k=this.components,w=this.getLinkedParent(),S=w.getstackConf&&w.getstackConf(),L=k.data,A=this.getSkippingInfo&&this.getSkippingInfo(),N=A&&A.skippingApplied,_=A&&A.draw||[],P=_&&_.length;for(!d&&(y=-y),d&&(x=-x),N&&(C=P),a=0;a<C;a++)t=(e=L[o=_[a]||a])&&e.config,e!==u&&(n=t._b,s=f.getPixel(S&&S[o]&&S[o].x||t._x),i=(isFinite(s)?s:0)+y,c=g.getPixel(t._y),r=(isFinite(c)?c:0)+x,l=(n?g.getPixel(n):b)+x,v?(t._Px=r,t._Py=i,t._Pby=i,t._Pbx=l):(t._Px=i,t._Py=r,t._Pby=l,t._Pbx=i),this.getLineShift&&(t._Py+=this.getLineShift("y")))},t.prototype.setContainerVisibility=function(e){var t,n=this.getContainer();for(t in n)n.hasOwnProperty(t)&&(!1!==this.getState("visible")||!1!==this._conatinerHidden&&this._conatinerHidden!==u||e?(n[t].show(),this._conatinerHidden=!1):(n[t].hide(),this._conatinerHidden=!0))},t.prototype.plotAnimManager=function(e,t,n,o){var a,i,r,l,s,c,h=this.getFromEnv("chart"),u=h.getFromEnv("animationManager"),p=h.config.is3D,d=h.config,g=this.getState("visible"),f=t.x,m=this.getSkippingInfo&&this.getSkippingInfo(),b=m&&m.draw||[],v=this.getFromEnv("plotGroup3d");c=((r=e&&e.config)&&r.setValue)<0,s=p?(i=c?v.negativeGroupArray:v.positiveGroupAarray)[h.isBar?i.length-1-n:n]:this.getContainer("plotGroup"),l={el:(a=e.graphics.element)||(p?"cubepath":"rect"),container:s,attr:g&&t,doNotRemove:!0,props:{originalIndex:b[n]||n},index:n,length:o,component:this,label:"rect"},g||(l.callback=function(){this.hide()}),e.graphics.element=a=u.setAnimation(l),p&&(a.appendTo(s),(d.isstacked&&c||!d.isstacked&&h.isBar)&&a.toBack()),null!==e.config.setValue?this.getState("visible")&&a.show():(a.remove(),delete e.graphics.element),r._oldPx=r._Px,r._oldX=f,g&&(e.oldPrevDataObj=e.prevDataObj)},t.prototype.flushOnScroll=function(e,t){for(var n=void 0,o=this.components.data,a=e,i=t-1;a<=i;a++)(n=o[a])&&n.graphics&&(_(n.graphics,this.__removeElem),n.graphics={})},t.prototype.removingDraw=function(){var t=this;t.components.data.forEach(function(e){_(e.graphics,t.__removeElem),delete e.graphics}),e.prototype.removingDraw.call(this)},t.prototype._contextChanged=function(){var e;this.config.context||(this.config.context={});var t,n=this.config.context,o=n.shift,a=this.getFromEnv("xAxis"),i=this.getFromEnv("yAxis"),r=n.axisLimit,l=!1,s={yAxis:{limit:i.getVisibleConfig()},xAxis:{limit:a.getVisibleConfig()}};return s.yAxis.limitPixel={min:i.getPixel(s.yAxis.limit.minValue),max:i.getPixel(s.yAxis.limit.maxValue)},s.xAxis.limitPixel={min:a.getPixel(s.xAxis.limit.minValue),max:a.getPixel(s.xAxis.limit.maxValue)},r!==(t=JSON.stringify(s))&&(n.axisLimit=t,l=!0),o!==this.getFromEnv("shift")&&(n.shift=this.getFromEnv("shift"),l=!0),n.prevColNum!==this.getFromEnv("numOfColumns")&&(n.prevColNum=this.getFromEnv("numOfColumns"),l=!0),a.getProcessLen?e=a.getProcessLen():a.getTicksLen&&(e=a.getTicksLen()),n.prevCatlen!==e&&(n.prevCatlen=e,l=!0),!!this.getFromEnv("chart").isRealTime||l},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.getFromEnv("xAxis"),n=void 0,o=t.getTicksLen(),a=this.getSkippingInfo&&this.getSkippingInfo()||{},i=a.skippingApplied,r=a.draw||[],l=a.labelDraw||[],s=r.length;n=i?s-1:o,e.scrollMinVal=x(N(t.getVisibleConfig().minValue),0)-1,e.scrollMaxVal=y(N(t.getVisibleConfig().maxValue)+1,n)+1,n=i?l.length-1:o,e.scrollMinValForLabel=x(N(t.getVisibleConfig().minValue),0)-1,e.scrollMaxValForLabel=y(N(t.getVisibleConfig().maxValue)+1,n)+1},t.prototype.drawPlots=function(){var e,t,n,o,a,i,r,l,s,c=this.getFromEnv("chart"),h=this.config,u=c.config.plothovereffect,p=this.components.data,d=this.getContainer("shadowGroup"),g=h._oldStartIndex,v=h._oldEndIndex,y=this.getSkippingInfo&&this.getSkippingInfo(),x=y&&y.draw;for(r=h.scrollMinVal,l=h.scrollMaxVal,r>g&&this.flushOnScroll(g,r>v?v:r),l<v&&this.flushOnScroll(l<g?g:l,v),h._oldStartIndex=r,h._oldEndIndex=l,e=r,s=l-1;e<l;e++,s--)(t=p[x[e]||e])&&(i=(o=t.config).props.element.attr,this.plotAnimManager(t,i,e,l),a=t.trackerConfig,(n=t.graphics.element)&&(n.shadow(o.shadow,d).data("BBox",void 0),c.config.enablemousetracking&&n.data("eventArgs",a.eventArgs).data(f,u).data(m,o.setRolloverAttr||{}).data(b,o.setRolloutAttr||{})));h.appearing&&(h.appearing=!1)},t.prototype.setColumnPosition=function(){var e,t=void 0;if((t=this.getFromEnv("plotWidth"))===u){var n,a,i=this.getFromEnv("xAxis"),r=this.getFromEnv("chartConfig"),l=this.getSkippingInfo().plotsPerBin,s=x(r.plotSpacePercent,0),c=x((0,o.pluckNumber)(s,20)%100,0),h=1===l?c/200:0,p=i.getPixel(0),d=i.getPixel(l),g=this.getFromEnv("chart"),f=g.isBar?g.config.maxBarHeight:g.config.maxColWidth,m=C(d-p),b=!0;t=(n=(1-.01*s)*m||y(m*(1-2*h),1*f))/1,d-(a=n/2)-(p-a+n)<4&&(b=!1),0===c&&(b=!0),this.addToEnv("isCrisp",b)}this.addToEnv("columnWidth",t),e=this.getFromEnv("shift")||0,this.addToEnv("columnXShift",e-this.getFromEnv("columnWidth")/2)},t.prototype.parsePlotAttributes=function(e,t){var n,a,i,r,l,s,c,h,u,d,g,f,m,b,v,x,A,N,_,P,F,E,T,D,O=this.config,I=this.config.JSONData,M=this.getFromEnv("chart"),R=M.getFromEnv("dataSource").chart,V=M.config.isstacked,B=this.config,G=this.groupManager,j=this.getJSONIndex(),H=t,W=this.getState("visible"),z=M.config,U=M.config.is3D,q=M.isBar,Y=z.xDepth||0,K=z.yDepth||0,X=this.getFromEnv("yAxis"),Z=this.getFromEnv("xAxis"),J=z.showtooltip,$=!1!==this.getState("visible"),Q=this.components.data,ee=e.config,te=X.getAxisBase(),ne=X.yBasePos=X.getPixel(te),oe=(0,o.pluckNumber)(B.plotborderthickness,z.plotborderthickness),ae=(0,o.pluckNumber)(z.useroundedges,0),ie=B.use3dlighting,re=y(O.yAxisMinPixel,O.yAxisMaxPixel),le=G&&G.stackConf,se=this.getFromEnv("columnXShift"),ce=M.config.viewPortConfig,he=ce.x,ue=ce.scaleX,pe=(0,o.pluckNumber)(z.showplotborder);m=ee.setLink,v=ee.colorArr||[],Z.config.isVertical?(h=this.getFromEnv("columnWidth"),c=se):(l=this.getFromEnv("columnWidth"),s=se),e.graphics||(Q[H].graphics={}),b=ee.displayValue,!$&&(ee._Py=ee._Pby),_=y(ee._Px,ee._Pbx)+(s||0)+he*ue,P=y(ee._Py,ee._Pby)+(c||0),le&&(_-=l/2),F=l||C(ee._Px-ee._Pbx),E=h||C(ee._Py-ee._Pby),n=q?ee._Px-ee._Pbx>0?w:S:ee._Py-ee._Pby>0?L:k,f=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(ee.origToolText,I.plottooltext,R.plottooltext))),this.fineTunePlotDimension&&(_=(D=this.fineTunePlotDimension(_,P,E,F,H)).xPos,P=D.yPos,F=D.width,E=D.height),a=_,i=P,u=F,d=E,r=Z.getPixel(1)-Z.getPixel(0)-(q?d:u),!isFinite(d)&&(d=0),W&&(r<5&&this.getFromEnv("columnWidth")<5||(A=(0,o.crispBound)(_,P,u,d,oe,n,V)),A?(a=A.x,i=A.y,oe=A["stroke-width"],u=A.width,d=A.height||1):(a=_,i=P),Z.config.isVertical?a===re&&(a-=oe,u+=oe):i+d===re?d+=oe:i===re&&(i-=oe,d+=oe),ee.setRolloutAttr&&(ee.setRolloutAttr["stroke-width"]=O.showplotborder?oe:0)),g=ee.finalTooltext=!1!==ee.toolText?ee.toolText+(f?"":ee.toolTipValue):"",x=ee.plotBorderDashStyle,(N=e.trackerConfig={}).eventArgs={index:H,link:m,value:ee.setValue,displayValue:b,categoryLabel:ee.origLabel,toolText:g,id:"",datasetIndex:j,datasetName:I.seriesname,visible:W},T=ne===i+0,ee.props={element:{attr:{x:a||0,width:u||0,height:d||0,y:i||0,r:ae,fill:(0,o.toRaphaelColor)(v[0])||"",stroke:pe?(0,o.toRaphaelColor)(v[1])||"":o.TRACKER_FILL,"stroke-width":pe?oe:0,"stroke-dasharray":x,"stroke-linejoin":"miter",visibility:W,cursor:m?"pointer":""}}},U&&(ee.props.element.attr.noGradient=!ie,ee.props.element.attr.xDepth=Y,ee.props.element.attr.yDepth=K),e._xPos=a+Y,e._width=u,e._yPos=i-K,e._height=d,e._index=H,e._plotBorderThickness=oe,(m||J)&&(d<p&&(i-=(p-d)/2,d=p),N.attr={x:a,y:i,width:u,height:d,r:ae,cursor:m?"pointer":"",stroke:o.TRACKER_FILL,"stroke-width":pe?oe:0,fill:o.TRACKER_FILL,visibility:W}),ee.oldValue=void 0,e._oldYBaseTouched=T},t.prototype.parseLabelAttributes=function(e){var t,n,o,a,i,r,l,s,c,h,p,d,g=this.getFromEnv("chart"),f=g.config,m=g.getFromEnv("smartLabel"),b=g.config.dataLabelStyle,v=this.config.legendInteractivity,y=this.getState("visible"),x=f.rotatevalues?270:0;if(c=(h=e&&e.config)&&h.setValue,e===u||c===u||null===c||!0===h.labelSkip)return h&&delete h.labelSkip,void((d=e&&e.graphics)&&d.label&&d.label.hide());(a=e.graphics)&&(l=e._yPos,s=e._xPos,n=h.displayValue,h.showValue&&null!==c?(v&&h._state||(m.setStyle(b),o=m.getOriSize(n),h._state=x?{labelWidth:o.height,labelHeight:o.width}:{labelWidth:o.width,labelHeight:o.height}),r=(p=this._getValuePosition({labelWidth:h._state.labelWidth,labelHeight:h._state.labelHeight,width:e._width,height:e._height,yPos:l,xPos:s,value:c})).textX,i=p.textY,h.props||(h.props={}),h.props.label={attr:{x:r,y:i,text:n,"text-bound":[b.backgroundColor,b.borderColor,b.borderThickness,b.borderPadding,b.borderRadius,b.borderDash],opacity:y?1:0}},t=h.props.label.attr,v||(t["line-height"]=b.lineHeight,t.fill=b.color)):a.label&&(a.label.attr({"text-bound":[]}),a.label.hide()))},t.prototype.allocatePosition=function(){var e,t,n,o,a,i,r,l,s=this.getFromEnv("chart"),c=s.config,h=c.showpercentvalues,u=c.showpercentintooltip,p=this.config,d=this.components.data.length,g=this.getFromEnv("yAxis"),f=this.components.data,m=c.isstacked,b=Number(c.stack100percent),v=this.getSkippingInfo&&this.getSkippingInfo(),y=v&&v.draw;for(this.deleteFromEnv("columnWidth"),this.setColumnPosition(),this.calculateScrollRange(),m&&(b||h||u)&&this.updateYForStack(),this.createCoordinates(),o=g.getLimit(),r=g.getPixel(o.max),l=g.getPixel(o.min),a=p.scrollMinVal,i=p.scrollMaxVal,r>l?(p.yAxisMaxPixel=r,p.yAxisMinPixel=l):(p.yAxisMaxPixel=l,p.yAxisMinPixel=r),t=0;t<d;t++)e=y[t]||t,s.hasScroll&&(e<a||e>i)||(n=f[e])&&(this.parsePlotAttributes(n,e),this.parseLabelAttributes(n))},t.prototype.draw=function(){var e,t,n=this,o=n.config,a=n.getState("visible"),i=n.getFromEnv("xAxis"),r=i.getPixel(0),l=i.getPixel(1),c=n.getFromEnv("groupMaxWidth"),h=n.getFromEnv("chart").config.xDepth||0,u=n.getFromEnv("yAxis"),p=o.drawn,d=u.getLimit(),g=d.max,f=d.min,m=g>0&&f<0,b=n._contextChanged(),v=(n.getSkippingInfo&&n.getSkippingInfo()||{}).skippingApplied;c||(c=C(l-r),n.addToEnv("groupMaxWidth",c)),(n.getState("removed")||n.getState("dirty")||b&&a)&&(!p&&n.createContainer(),n.setContainerVisibility(!0),v&&n.hidePlots(),n.drawPlots(),n.drawCommonElements&&!n.config.skipCommonElements&&n.drawCommonElements(),e=o.scrollMinValForLabel,t=o.scrollMaxValForLabel,o.drawn?n.drawLabel(e,t):n.addJob("labelDrawID",function(){n.drawLabel(e,t)},s.priorityList.label),o.drawn=!0,n.removePlots(),o.oldGroupMaxWidth=c,o.oldDataIsPositiveNegative=m,o.oldZeroAxisPos=u.getPixel(u.getAxisBase())+h,n.drawErrorValue&&n.drawErrorValue(),o.prevVisible=a,o.catDiff=0)},t.prototype.show=function(){var e=this.getLinkedParent(),t=this.getFromEnv("legend");t&&t.getItem(this.config.legendItemId)&&t.getItem(this.config.legendItemId).removeLegendState("hidden"),this.setState("visible",!0),this.config.appearing=!0,this._conatinerHidden=!1,this.setState("dirty",!0),e.childChanged(),this.config.appearing=!1,this.asyncDraw()},t.prototype.hide=function(){var e=this.getLinkedParent(),t=this.getFromEnv("legend");t&&t.getItem(this.config.legendItemId)&&t.getItem(this.config.legendItemId).setLegendState("hidden"),this.setState("dirty",!0),this.setState("visible",!1),e.childChanged(),this.asyncDraw()},t.prototype.drawLabel=function(e,t){var n,a,i,r,l,s,c,h,p,d,g,f,m=this.getFromEnv("chart"),b=this.getFromEnv("animationManager"),v=m.config,y=this.getFromEnv("xAxis"),x=this.getFromEnv("paper"),C=this.getState("visible"),k=m.getFromEnv("smartLabel"),w=m.config.dataLabelStyle,S=this.config,L=y.getTicksLen(),A=this.components,N=A.data,_=A.pool,P=v.rotatevalues?270:0,F=S.labelDrawn,E=this.getSkippingInfo&&this.getSkippingInfo(),T=E&&E.skippingApplied,D=E&&E.labelDraw||[],O=D.length,I=(0,o.pluckNumber)(e,0),M=(0,o.pluckNumber)(t,T?O:L),R=O===Math.abs(M-(I+1)),V=function(){this.attr({"text-bound":[]}),this.hide()};for((f=this.getContainer("labelGroup")).css({fontFamily:w.fontFamily,fontSize:w.fontSize,fontWeight:w.fontWeight,fontStyle:w.fontStyle}),f.show(),k.useEllipsesOnOverflow(m.config.useEllipsesWhenOverflow),k.setStyle(w),r=I;r<M;r++)c=(h=(n=N[i=T&&R?D[r]:r])&&n.config)&&h.setValue,n!==u&&c!==u&&null!==c&&!0!==h.labelSkip?(l=n.graphics)&&(h.showValue&&null!==c?(a=h.props.label.attr,s=n._xPos,!l.label&&F&&m.isRealTime&&((p=(0,o.extend2)({},a)).x=a.x-s+(n._newXPos||0),p.transform=x.getSuggestiveRotation(P,p.x,a.y),_&&_.label[0]&&(l.label=_.label[0],_.label.splice(0,1))),a.transform=x.getSuggestiveRotation(P,a.x,a.y),(d=l.label)||_&&_.label[0]&&(d=l.label=_.label[0],_.label.splice(0,1)),(d=b.setAnimation({el:l.label||"text",attr:a,component:this,label:"plotLabel",index:i,container:f,callback:!C&&V}))&&d.show(),l.label||(l.label=this.addGraphicalElement("plotLabel",d,!0))):l.label&&(l.label.attr({"text-bound":[]}),l.label.hide())):(h&&delete h.labelSkip,(g=n&&n.graphics)&&g.label&&g.label.hide());S.labelDrawn=!0},t.prototype._getValuePosition=function(e){var t,n,a,i,r,l,s,c,h,u=this.getFromEnv("chart"),p=u.getChildren(),d=u.config,g=p.yAxis[0],f=d.xDepth||0,m=d.yDepth||0,b=d.canvasTop,v=d.canvasHeight+m,C=e.yPos,k=u.config.is3D,w=u.config.isstacked,S=d.valuepadding+2,L=e.height,A=e.width,N=d.placevaluesinside,_=e.labelHeight,P=g.getAxisConfig("isReverse"),F=e.value,E=e.xPos;return P||(c=!(F<0)),r=(0,o.pluck)(c,F<0),l=h=_+S,i=L,a=C-(s=.5*h+S),n=E+.5*A,r?(t=b+v-(C+L+m),a=C):t=C-b,w?(a=y(b+v-.5*l,a=C+.5*L+(m||0)),a=x(b+.5*l,a),n-=f):N?i>=l?(a=C+(r?L-s:s),k&&(n-=f,a+=m)):t>=l?(a=C+(r?L+s:-s),k&&r&&(n-=f,a+=m)):(a=C+(r?L-s:s),k&&(n-=f,a+=m)):t>=l?(a=C+(r?L+s:-s),k&&(r?(n-=f,a+=m):n-=f/2)):(a=C+(r?L-s:s),k&&(n-=f,a+=m)),{textX:n,textY:a}},t.prototype.getDataLimits=function(){return{max:this.config.maxValue,min:this.config.minValue}},t.prototype.addData=function(e,t,n){var o,a=this.components,i=a.data,r=e.data.length;for(a.addDataArr=e.data,0===t?this.startPosition=!0:t+r!==i.length&&t!==u||(this.startPosition=!1),o=0;o<r;o++)t!==u?i.splice(t+o,0,{config:{}}):i.push({config:{}});this._setConfigure(e,t),n&&this.asyncDraw()},t.prototype.removeData=function(e,t,n){var o,a,i=this.getFromEnv("chart"),r=this.components,l=r.data,s=r.removeDataArr||(r.removeDataArr=[]);for(t===u&&(t=1),(e=e||0)+t!==l.length&&i.isRealTime?0!==e&&e!==u||(this.endPosition=!1):this.endPosition=!0,r.removeDataArr=s=s.concat(l.splice(e,t)),o=(a=s.length)-1;o>=0;o--)s[o]||s.splice(o,1);this.removeDataLen=a,n&&this.asyncDraw()},t.prototype.updateData=function(e,t,n){var o=this.config,a=o.maxValue,i=o.prevMin,r=this.getFromEnv("chart"),l=this.groupManager||this,s=r.getFromEnv("xAxis"),c=r.getFromEnv("yAxis");this._setConfigure(e,t),this.getDataLimits(),o.maxValue===a&&o.minValue===i||(this.maxminFlag=!0),n&&(r._setAxisLimits(),s&&s[0].asyncDraw(),c&&c[0].asyncDraw(),l.asyncDraw())},t.prototype.removePlots=function(){var e=this.components,t=e&&e.removeDataArr;F(t,this.__removeElem)},t.prototype.removeGraphicElem=function(e,t){this.__removeElem(e,t)},t.prototype.getAxisValuePadding=function(){return this.config.defaultPadding},t.prototype.getCanvasPadding=function(){var e,t,n,a,i,r,l=this.config||(this.config={}),s=this.components||{},c=this.getFromEnv("chart"),h=c.config.rotatevalues,p=this.getFromEnv("xAxis"),d=this.getFromEnv("yAxis"),g=c.config.dataLabelStyle,f=this.getSkippingInfo(),m=f.skippingApplied,b=f.draw,v=s.data||[],y=m?b[0]:0,C=m?b[b.length-1]:v.length-1,k=l.leftMostData||v[y],w=l.rightMostData||v[C],S={},L={},A=0,N=0,_=0,P=p.getPixel(0),F=this.getFromEnv("smartLabel"),E={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0},T=0,D=p.getValuePadding(),O=l.topMostData,I=l.bottomMostData;return this.setColumnPosition(),r={xPosOffset:this.getFromEnv("columnXShift"),columnWidth:this.getFromEnv("columnWidth"),height:u},k&&(a=(e=k.config).showValue,n=e&&e.anchorProps||{},a&&(t=e.displayValue,F.useEllipsesOnOverflow(c.config.useEllipsesWhenOverflow),F.setStyle(g),L=F.getOriSize(t),T=h?L.height:L.width),null!==e.setValue&&(i=p.getPixel(D.left),(_=(A=n.enabled&&(0,o.pluckNumber)(n.radius,0)+(0,o.pluckNumber)(n.borderThickness,0)/2||0)-(i-P))<0&&(_=0),(N=(T||0)/2-(i-P)-(r&&r.xPosOffset+r.columnWidth/2||0))<0&&(N=0)),E.paddingLeft=x(_,N)),_=N=0,w&&(a=(e=w.config).showValue,n=e&&e.anchorProps||{},a&&!h&&(t=e.displayValue,F.setStyle(g),S=F.getOriSize(t),T=h?S.height:S.width),null!==e.setValue&&(i=p.getPixel(D.right),(_=(A=n.enabled&&(0,o.pluckNumber)(n.radius,0)+(0,o.pluckNumber)(n.borderThickness,0)/2||0)-(i-P))<0&&(_=0),(N=(T||0)/2-(i-P)+(r&&r.xPosOffset+r.columnWidth/2||0))<0&&(N=0)),E.paddingRight=x(_,N)),O&&(a=(e=O.config).showValue,n=e&&e.anchorProps||{},null!==e.setValue&&(A=(0,o.pluckNumber)(n.radius,0)+(0,o.pluckNumber)(n.borderThickness,0)/2,N=Math.max(A-(d.getPixel(e.setValue.y)-d.getPixel(d.getLimit().max)),0)),E.paddingTop=N),I&&(n=(e=I.config)&&e.anchorProps||{},null!==e.setValue&&(A=(0,o.pluckNumber)(n.radius,0)+(0,o.pluckNumber)(n.borderThickness,0)/2,N=Math.max(A-(d.getPixel(d.getLimit().min)-d.getPixel(e.setValue.y)),0)),E.paddingBottom=N),E},t.prototype.getEventArgs=function(){var e=this.config||{};return{datasetName:(this.config.JSONData||{}).seriesname,datasetIndex:this.getJSONIndex(),id:e.userID,visible:!this.getState("visible")}},t.prototype.getData=function(){return this.components.data},t.prototype.setJSONIndex=function(e){this.config.index=e},t.prototype.getJSONIndex=function(){return this.config.index||0},t.prototype.remove=function(t){var n=this.config.legendItemId,o=this.getFromEnv("chart").getChildren("legend"),a=this.getFromEnv("legend");o&&o.length&&a&&n&&a.disposeItem(n),e.prototype.remove.call(this,t)},t.prototype.setMaxMin=function(e){var t,n,o,a=this.components,i=a.data,r=a.removeDataArr,l=this.config,s=i.length,c=-Infinity,h=+Infinity,p=l.maxValue,d=l.minValue,g=r.length,f=!1;if(e)f=p===e.startValue||d===e.startValue||p<e.config.setValue||d>e.config.setValue;else if(g)for(t=0;t<g;++t)if(p===(o=r[t]&&r[t].config&&r[t].config.setValue)||d===o){f=!0;break}if(f){for(t=0;t<s;t++)i[t]&&(n=i[t].config.setValue)!==u&&(c=x(c,n),h=y(h,n));l.maxValue=c,l.minValue=h}},t}(i["default"]);t._removePlots=F,t["default"]=E},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118);t["default"]={"initial.dataset.column":function(){var e=this,t=e.getFromEnv("chart"),n=t.config.yDepth||0,a="y",i="height",r="x",l="width",s=e.getFromEnv("yAxis"),c=e.getFromEnv("xAxis"),h=function(o,c){var h,u,p,d,g=e.config,f=c&&c.graphics&&c.graphics.element,m=o.attr,b=s.getPixel(s.getAxisBase())+(t.isBar?-n:n),v={},y=g.oldZeroAxisPos;if(h=f.attr(),v[a]=u=h[a],v[i]=h[i],v[r]=h[r],v[l]=h[l],p=h[a]+h[i],b!==y&&(y-b>=0?(u>b&&u<=y+.7&&(v[a]=b,p>y&&(v[i]=p-v[a])),p>b&&p<=y+.7&&(v[i]=b-(v[a]||0===v[a]?v[a]:u))):(u<b&&u>=y-.7&&(v[a]=b,p>b&&(v[i]=p-v[a])),p<b&&p>=y-.7&&(v[i]=b-(v[a]||0===v[a]?v[a]:u))),d=!0),e.config.catDiff&&(v[r]=m[r],v[l]=m[l],d=!0),c._plot_1Start=v,d)return{finalAttr:v,slot:"axis"}};return{"rect.appearing":function(h){var u,p,d,g,f=s.getPixel(s.getAxisBase())+(t.isBar?-n:n),m=h.props&&h.props.originalIndex||h.index,b=e.components.data[m],v=h.attr;return c.config.isVertical&&(a="x",i="width",r="y",l="height"),u=v[a],p=v[i],g=Math.sign(u+p/2-f),d=1===g?u:u+p,b._posWRT0=g,[{initialAttr:function(){var e={};return e[a]=d,e.opacity=0,e[i]=0,e},finalAttr:{opacity:1},startEnd:function(){var t=h.length;return o.animHelperFN.getTimeByValue(o.animHelperFN.animByWeight(h.index,t,.6),{startPx:f,endPx:1===g?e.config.yAxisMaxPixel:e.config.yAxisMinPixel},{startPx:d,endPx:1===g?v[a]+v[i]:v[a]})},hookFn:function(){this.attr({opacity:1})},effect:"linear",slot:"plot"}]},"rect.updating":function(o){var u,p,d,g,f,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D,O,I,M,R,V,B=[],G=e.components.data[o.props&&o.props.originalIndex||o.index],j=o.attr,H=G&&G.graphics&&G.graphics.element,W=s.getPixel(s.getAxisBase())+(t.isBar?-n:n),z=0,U=e.getFromEnv("numColDiff");return c.config.isVertical&&(a="x",i="width",r="y",l="height"),(V=h(o,G))&&B.push(V),w=(k=G.prevDataObj)&&k._plot_1Start,P=k&&k._plot_1End,S=k&&k._plot_2Start,L=G.oldPrevDataObj,A=G.oldPrevDataObj&&G.oldPrevDataObj._plot_1End,d=(u=(v=G._plot_1Start)[a])+(p=v[i]),g=u+p/2,b=(f=j[a])+(m=j[i])/2,N=(d+(f+m))/2,F=Math.sign(g-W),E=Math.sign(b-W),(C={})[a]=(x={})[a]=(u+f)/2,C[i]=x[i]=(p+m)/2,p?F!==E?(C[i]=x[i]=0,x[a]=L&&L._oldPosWRT0===F?A[a]+(1===F?A[i]:0):W,C[a]=S?S[a]+(1===E?S[i]:0):W,_=y=!0):k!==L&&(D=(T=A||!(!P||Math.sign(P[a]+P[i]/2-W)!==F)&&P)?T[a]+(1===F?T[i]:0):W,1===F?(C[a]=x[a]=D,C[i]=x[i]=N-x[a]):C[i]=x[i]=D-x[a],y=!0):k&&k._oldPosWRT0===E||0===e.stackIndex?((M={})[i]=0,M[a]=w?w[a]+(k._posWRT0>0?w[i]:0):W,G._posWRT0=E,G._plot_1Start=M,C[a]=x[a]=(M[a]+f)/2,C[i]=x[i]=m/2):g===W&&(E!==G._posWRT0?z=.5:(y=!0,x[a]=1===E?W:W-x[i])),U<0?(x[r]=j[r],x[l]=j[l],y=!0):U>0?z=.5:v[r]===j[r]&&v[l]==j[l]||(.5===z?((M={})[r]=j[r],M[l]=j[l],O=function(){_&&H.attr(C),H.attr(M)}):(x[r]=j[r],x[l]=j[l],y=!0,O&&(I=function(){H.attr(M)},O=void 0))),y&&(B.push({finalAttr:x,startEnd:{start:0,end:.5},hookFn:I,slot:"plot"}),z=.5),!O&&(O=function(){_&&H.attr(C)}),B.push({effect:"linear",startEnd:{start:z,end:1},finalAttr:{x:j.x,y:j.y,width:j.width,height:j.height},callback:function(){null!==G.config.setValue&&void 0!==G.config.setValue||this.hide()},hookFn:O,slot:"plot"}),delete(R=Object.assign({},j)).x,delete R.y,delete R.width,delete R.height,B.push({finalAttr:R,effect:"linear",slot:"plot"}),G._plot_1End=x,G._plot_2Start=C,G._oldPosWRT0=G._posWRT0,G._posWRT0=E,B},"rect._disappearing":function(o){var r,l,c,u,p,d=s.getPixel(s.getAxisBase())+(t.isBar?-n:n),g=e.components.removeDataArr,f=g&&g[o.props&&o.props.originalIndex||o.index]||e.components.data[o.props&&o.props.originalIndex||o.index],m=f&&f.graphics&&f.graphics.element,b=f.oldPrevDataObj&&f.oldPrevDataObj._plot_1End,v=[];if(m)return(u=h(o,f))&&v.push(u),s.config.isVertical||(a="x",i="width"),r=(l=(p=f._plot_1Start)[a])+p[i]/2>d?b?b[a]+b[i]:l:b?b[a]:d,(c={})[a]=r,c[i]=0,c.width=f._width,c.x=f._xPos,v.push({startEnd:{start:0,end:e.getFromEnv("numOfColumns")<1?1:.5},finalAttr:c,slot:"plot"}),f._plot_1End=o.finalAttr,v},"plotLabel.appearing":[{initialAttr:{opacity:0},slot:"final"}],"plotLabel._disappearing":[{hookFn:function(){this.hide()},slot:"initial"}],"plotLabel.updating":[{hookFn:function(){this.hide()},slot:"initial"},{hookFn:function(){this.show()},initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"group.appearing":function(e){return"label-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0;var o=l(n(347)),a=n(118),i=n(125),r=l(n(349));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=Math.abs;(0,i.addDep)({name:"lineAnimation",type:"animationRule",extension:r["default"]});var h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.updateYForStack=a.stubFN,n.config.primitiveType="line",n}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"line"},t.prototype.createPinElem=function(){var e,t,n,o=this.getFromEnv("chart"),a=arguments[1].group,i=this.config.lineOb,r=this.getGraphicalElement("pinElems")||this.addGraphicalElement("pinElems",[]),l=this.getFromEnv("paper"),s=this.getLinkedParent().getChildContainer("lineVcanvasGroup");for(t=r.length-1;t>=0;t--)r[t].remove(),r.pop();if(this.getState("visible"))for(n in i)e=i[n].el,r.push(l.path(a).attr({path:e.attrs.path,transform:["T",-(o.config._visx+c(s.transform()[0][1])),-o.config.canvasBottom]}).attr(this.config.pin))},t.prototype._addLegend=function(){var e,t,n=this.getFromEnv("chart"),o=this.config,i=n.getChildren("legend")[0],r=(0,a.pluckNumber)(o.drawanchors,1);o.includeinlegend?(t={enabled:o.includeinlegend,type:this.getName(),drawLine:(0,a.pluck)(o.drawLine,!0),index:this.getJSONIndex(),anchorSide:r?o.anchorsides:0,label:(0,a.getFirstValue)(this.config.JSONData.seriesname)},(e=i.getItem(this.config.legendItemId))||(this.config.legendItemId=i.createItem(this),e=i.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){e.itemClickFn()},e)),e.setStateCosmetics("default",{symbol:{fill:(0,a.toRaphaelColor)({color:o.anchorbgcolor,alpha:o.anchorbgalpha}),rawFillColor:o.anchorbgcolor,rawStrokeColor:o.anchorbordercolor,stroke:(0,a.toRaphaelColor)({color:o.anchorbordercolor,alpha:"100"}),"stroke-width":o.anchorborderthickness,lineWidth:o.linethickness}}),this.getState("visible")?e.removeLegendState("hidden"):e.setLegendState("hidden"),e.configure(t)):this.config.legendItemId&&i.disposeItem(this.config.legendItemId)},t.prototype._getDataLimits=function(){var e=this.config,t=this.getFromEnv("chart").config,n=e.maxValue,o=e.minValue,a=-Infinity,i=+Infinity,r=t.transposeAxis;return!1===this.getState("visible")&&r&&(n=a,o=i),{max:n,min:o}},t.prototype._drawCommonElementsHelper=function(e){var t,n,o,a=this,i="",r={},l=a.getFromEnv("animationManager"),s=a.config,c=s.shadow,h=s.linethickness,u=a.getContainer("commonElemsGroup"),p=function(){!1===a.getState("visible")&&this.hide()};for(i in e){for(t=["M0,0"],n=0,o=(r=e[i]).path&&r.path.length;n<o;++n)t=t.concat(r.path[n].getPathArr());a.config.drawLine?(r.el=l.setAnimation({el:r.el||"path",container:u,component:a,attr:!1!==a.getState("visible")&&Object.assign({path:t},r.attr),label:"line",callback:p}),a.getState("visible")&&r.el&&r.el.show()):r.el&&(r.el=l.setAnimation({el:r.el,component:a,doNotRemove:!0,callback:function(){this.hide()}})),!r.used&&delete e[i],r.el&&(h?r.el.shadow(c,u):r.el.shadow({opacity:0},u),r.el.toFront()),r.old=!0,r.used=!1,r.prevPath=r.path,r.attrs=void 0,r.path=void 0}},t.prototype.getLineShift=function(e){var t=this.getFromEnv("chart"),n=t.config.is3D,o=t.config.use3dlineshift;return"y"===e?n?o?0:-10:0:n?10:0},t.prototype.drawCommonElements=function(){var e,t,n,o,i,r,l,s,c,h,u=this.components.data,p=this.config,d=this.getFromEnv("xAxis"),g=this.getFromEnv("yAxis"),f=p.lineDashStyle,m=p.linethickness,b={color:p.linecolor,alpha:p.alpha},v=[(0,a.toRaphaelColor)(b),f].join(":"),y=v,x={x:d.getLimit(),y:g.getLimit()},C=u.length,k=this.config.lineOb||{},w=0,S=!1,L=this.getSkippingInfo&&this.getSkippingInfo(),A=L&&L.draw||[],N=A.length,_=L&&L.skippingApplied,P=function(e,t,n){var o=k[e];o||(o=k[e]={}),e!==y&&(o.hasDifferentColor=!0),o.used=!0,o.pathWithNull=n,o.path=o.path||[],o.stroke=e.split(":")[0],o.dashStyle=e.split(":")[1],o.path.push(t),o.dashStyle=o.dashStyle&&o.dashStyle.split(","),o.attr={"stroke-dasharray":o.dashStyle,"stroke-width":m,stroke:o.stroke,"stroke-linecap":"round","stroke-linejoin":m>2?"round":"miter"}},F=[];for(x.x.minPixel=d.getPixel(x.x.min),x.x.maxPixel=d.getPixel(x.x.max),x.y.minPixel=g.getPixel(x.y.min),x.y.maxPixel=g.getPixel(x.y.max),x.y.base=g.getPixel(0),x.x.base=d.getPixel(0),_&&(C=N),o=0;o<C;++o)(i=u[n=A[o]||o])&&((l=i.config||{})._Pbx=void 0,l._Pby=void 0,F[n]={config:{_Px:l._Px,_Py:l._Py,setValue:l.setValue}},t={color:l.setColor,alpha:l.setAlpha},e=l.dashStyle,v!==(r=[(0,a.toRaphaelColor)({color:(0,a.pluck)(t.color,b.color),alpha:(0,a.pluck)(t.alpha,b.alpha)}),e||f].join(":"))&&i._yVal&&(S=!0,s=n,c=this.getLinePath(u,{begin:w,end:s+1}),h=this.getLinePath(u,{begin:w,end:s+1},void 0),l.connStartIndex=w,l.connEndIndex=s,P(v,c,h.getPathArr()),v=r,w=n,s=null),i._yVal&&(v=r));r||(r=""),p.pathStartIndex=w,p.pathEndIndex=s,P(r,c=this.getLinePath(u,{begin:S?w:p.scrollMinVal,end:S?s:p.scrollMaxVal}),(h=this.getLinePath(u,{begin:w,end:s},void 0)).getPathArr()),this._drawCommonElementsHelper(k),this.config.lineOb=k,p.prevLim=x,p.prevDataStore=F},t.prototype.show=function(){e.prototype.show.call(this),this.fireEvent("datasetVisibilityChanged",{dataset:this,state:"show"})},t.prototype.hide=function(){e.prototype.hide.call(this),this.fireEvent("datasetVisibilityChanged",{dataset:this,state:"hide"})},t}(o["default"]);t["default"]=h},function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(331)),a=n(118),i=n(122),r=n(129),l=n(125),s=c(n(348));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u,p=!a.hasSVG,d="DataPlotRollOver",g="DataPlotRollOut",f=a.hasTouch?a.TOUCH_THRESHOLD_PIXELS:a.CLICK_THRESHOLD_PIXELS,m=a.preDefStr.DEFAULT,b=a.preDefStr.setRolloverAttrStr,v=a.preDefStr.setRolloutAttrStr,y=function(){var e=this.pathArr,t=this.path2Arr;return e.length||t.length?e.concat(t):["M0,0"]},x=function(e){return e!==u&&null!==e&&""!==e},C="Z",k=Math,w=k.min,S=k.max,L=k.ceil,A=function(e,t){var n,o=e.getFromEnv("chart").config,i=t.config,r=t.graphics,l=r.image||r.element,s=i.eventArgs,c=l._.RefImg,h=t._xPos,u=t._yPos,d=i.anchorProps,g=e.getContainer("shadowGroup"),f=i.hoverEffects,m=i.setLink,y=d.imageScale,x=d.imageAlpha,C=f.imageHoverAlpha,k=f.imageHoverScale,L=c.height*y*.01,A=c.width*y*.01,N=c.width*k*.01,_=c.height*k*.01,P=void 0,F=void 0,E=void 0,T=void 0,D=void 0,O=void 0,I=void 0,M=void 0,R=void 0,V=void 0,B=void 0,G=void 0,j=void 0,H=void 0,W=void 0;n=d.isAnchorRadius,d.markerRadius=F=d.radius=n?d.radius:w(A,L)/2,p?(G={x:h-c.width*y*.005,y:u-c.height*y*.005,width:A,height:L},B={x:h-c.width*k*.005,y:u-c.height*k*.005,width:N,height:c.height*k*.01,alpha:C},i.isAnchorsDrawn=!0,o.dragTolerance=o.dragTolerance<L?L+.5:o.dragTolerance,l.data("alwaysInvisible",!y).data("setRolloverProperties",f).data("hoverEnabled",f).data(b,B).data(v,G).data("imgRef",c).data("anchorRadius",y).data("anchorHoverRadius",k),l.attr(G),G.alpha=x):(P=d.symbol[1],H=f.isAnchorHoverRadius,E=d.shadow,M=d.imagePadding,f.radius=H?f.anchorRadius:F+1,D=f.radius-M-.5*f.anchorBorderThickness,I=F-M-.5*d.borderThickness,B=G={},o.dragTolerance=o.dragTolerance<F?F+.5:o.dragTolerance,W={fill:(0,a.toRaphaelColor)({color:d.bgColor,alpha:d.bgAlpha}),"stroke-width":d.borderThickness,stroke:(0,a.toRaphaelColor)({color:d.borderColor,alpha:d.borderAlpha})},G=(0,a.extend2)({path:(0,a.polyPathToPath)([P||2,h,u,F,d.startAngle,void 0])},W),f&&(B={path:(0,a.polyPathToPath)([f.anchorSides||2,h,u,f.radius,f.startAngle,f.dip]),fill:(0,a.toRaphaelColor)({color:f.anchorColor,alpha:f.anchorBgAlpha}),"stroke-width":f.anchorBorderThickness,stroke:(0,a.toRaphaelColor)({color:f.anchorBorderColor,alpha:f.anchorBorderAlpha})},C>(V=S(f.anchorAlpha,f.anchorBorderAlpha))&&(C=V)),d.bgAlpha&&d.borderAlpha&&x>(R=S(d.bgAlpha,d.borderAlpha))&&(x=R),(j=r.element).attr(Object.assign(W,{path:G.path})),j.attr({cursor:m?"pointer":""}).data("alwaysInvisible",!F).data("setRolloverProperties",f).data("hoverEnabled",f.enabled).data(b,B).data(v,G).data("anchorRadius",F).data("anchorHoverRadius",f&&f.radius).data("eventArgs",s).shadow(E,g),O=(0,a.polyPathToPath)([P||2,h,u,I>0?I:0,d.startAngle,void 0]),T=(0,a.polyPathToPath)([P||2,h,u,D>0?D:0,f.startAngle,f.dip]),d.imgRefWidth=c.width,d.imgRefHeight=c.height,d.imgRefScale=y,d.rolloutClipRadius=I,G={x:h-c.width*y*.005,y:u-c.height*y*.005,width:A,height:L,"clip-path":O},B={x:h-c.width*k*.005,y:u-c.height*k*.005,width:N,height:_,alpha:C,"clip-path":T},l.attr({x:G.x,y:G.y,width:G.width,height:G.height,"clip-path":G["clip-path"]}).data("alwaysInvisible",!y).data("setRolloverProperties",f).data(b,B).data(v,G).data("anchorRadius",y).data("imgRef",c).data("anchorHoverRadius",k),i.isAnchorsDrawn=!0,F=S(F,f&&f.anchorRadius||0,2)),t._xPos=h,t._yPos=u,e.parseLabelAttributes(t,t._index)};(0,l.addDep)({name:"areaAnimation",type:"animationRule",extension:s["default"]});var N=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=n;return o.__removeElem=function(e,t){o._setRemoveAnim(e,"element"===t||"image"===t?"anchor":"label")},o.config.primitiveType="area",n}return h(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"area"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.valueposition=u,t.plotborderdashlen=u,t.plotborderdashgap=u,t.plotborderdashstyle=u,t.plotborderthickness=u,t.linethickness=u,t.linedashlen=u,t.linedashgap=u,t.dashed=u,t.linedashstyle=u,t.linecolor=u,t.linealpha=u,t.anchorbgcolor=u,t.anchorbordercolor=u,t.anchorradius=u,t.anchoralpha=u,t.anchorimageurl=u,t.anchorsides=u,t.anchorbgalpha=u,t.anchorborderthickness=u,t.anchorshadow=u,t.anchorstartangle=u,t.anchorimagealpha=u,t.anchorimagescale=u,t.anchorimagepadding=u,t.alpha=u,t.parentyaxis=u},t.prototype._getHoveredPlot=function(e,t){var n,o,a,i,r,l,s=this.getFromEnv("xAxis"),c=this.components.data,h=c.length,u=this.config,p=this.getFromEnv("chartConfig").viewPortConfig.step||1,d=u&&u.radius||0,g=(this.getSkippingInfo&&this.getSkippingInfo()).plotsPerBin;for(e+=s.getTranslation(),o=Math.floor(Math.max(s.getValue(e-d),0)),a=Math.ceil(Math.min(s.getValue(e+d),h-1)),r+g-1,g>1&&(o=r=(L(o/g)-1)*g+1,a=L(a/g)*g),l=a;l>=o&&(!(n=c[l])||l%p||!(i=this.isWithinShape(n,l,e,t)));l--);return i},t.prototype.getClip=function(e){var t=this.getFromEnv("xAxis"),n=this.getFromEnv("yAxis"),o=n.getLimit(),a=t.getLimit(),i=t.getPixel(a.min),r=n.getPixel(o.min),l=n.getPixel(o.max),s=Math.abs(t.getPixel(a.max)-i),c=r-l,h=[];return h.push(i),h.push(c<0?r:l),"init"===e?h.push(0):"canvas"===e&&h.push(s),h.push(Math.abs(c)),h},t.prototype.isWithinShape=function(e,t,n,o,i){var r,l,s,c,h,u,p,d,g,m,b,v,y,x;if(e&&((i=e.config.setValue)||0===i))return r=e.config.anchorProps,l=e.config,c=r&&r.borderThickness,this,h=this.getFromEnv("chart").config.viewPortConfig,u=this.components.data,p=(0,a.pluckNumber)(l.dragTolerance,0),x=h?h.x*h.scaleX:0,d=e._xPos-x,null!==(g=e._yPos)?(y=e.config.hoverEffects,(s=Math.max(r&&r.radius,y&&y.anchorRadius||0,f)+c/2)||(s=3),m=n-d,b=o-g,((v=Math.sqrt(Math.pow(m,2)+Math.pow(b,2)))<=s||v<=p)&&{pointIndex:t,hovered:!0,pointObj:u[t]}):void 0},t.prototype._parseShadowOptions=function(){var e=this.getFromEnv("chart"),t=this.config,n=e.getFromEnv("dataSource").chart,o=this.getFromEnv("color-manager"),i=(0,a.pluckNumber)(e.defaultPlotShadow,o.getColor("showShadow"));return{opacity:(0,a.pluckNumber)(n.showshadow,i)?t.alpha/100:0}},t.prototype._firePlotEvent=function(e,t,n){var o,a,i,r=this.getFromEnv("chart"),l=this.components,s=this.getFromEnv("toolTipController"),c=l.data[t]||{},h=this.getGraphicalElement("sharedAnchor"),p=c.graphics&&c.graphics.element||(c.config&&c.config.setValue)!==u&&h,d=this.config.currentToolTip,g=r.getFromEnv("paper").canvas.style;if(p)switch(i=(o=c.config).setLink,a=o.eventArgs,e){case"fc-mouseover":this._decideTooltipType(t,n),this._rolloverResponseSetter(r,c,n),i&&(g.cursor="pointer");break;case"fc-mouseout":s.hide(d),this._rolloutResponseSetter(r,c,n),g.cursor=m;break;case"fc-click":r.plotEventHandler(p,n,"dataplotclick",a);break;case"fc-mousemove":this._decideTooltipType(t,n)}},t.prototype._rolloverResponseSetter=function(e,t,n,o){var a=t.graphics,i=a&&(a.element||this.getAnchor(t)),r=i&&i.data("draged"),l=i&&i.data("hoverEnabled");!0!==r&&(this._hoverFunc(t,d,l,e.getFromEnv("dataSource").chart),!o&&i&&e.plotEventHandler(i,n,d))},t.prototype._rolloutResponseSetter=function(e,t,n,o){var a=t.graphics,i=a&&(a.element||this.getAnchor(t)),r=i&&i.data("draged"),l=i&&i.data("hoverEnabled"),s=this.type,c=t.config,h=c.anchorProps,u=h.radius&&h.anchorAlpha;!0!==r&&(this._hoverFunc(t,g,l,e.getFromEnv("dataSource").chart),!o&&i&&e.plotEventHandler(i,n,g)),c.isAnchorsDrawn&&!u&&"area"===s&&i&&i.hide()},t.prototype.getAnchor=function(){var e,t,n,o,a,i,r,l,s,c=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},h=this.getFromEnv("animationManager"),u=this.getGraphicalElement("sharedAnchor"),p=c.config;return u?(e=p.anchorProps,t=p.eventArgs,(i=(a=p.hoverEffects).enabled)&&(n=a.attrs&&a.attrs.setRolloutAttr,o=a.attrs&&a.attrs.setRolloverAttr),r=e.radius,l=e.shadow,s=this.getFromEnv("chartConfig").prevAnchorHovered,a.anchorAnimation=0,c._index!==s&&(u.shadow(l,this.getContainer("shadowGroup")).data("anchorRadius",r).data("anchorHoverRadius",a.anchorRadius).data("hoverEnabled",i).data("eventArgs",t),i&&u.data(b,o).data(v,n)),this.getFromEnv("chartConfig").prevAnchorHovered=c._index,u):(u=h.setAnimation({el:"path",container:this.getContainer("plotGroup"),label:"anchor",doNotRemove:!0,component:this}),this.addGraphicalElement("sharedAnchor",u),u)},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e);var t=this.getFromEnv("chart");this.config.JSONData=e,this.parseAttributes(),this._setConfigure(),this._realTimeConfigure&&this._realTimeConfigure(),!1!==t.config.hasLegend&&t.config.showLegend&&this._addLegend(),this.setState("dirty",!0)},t.prototype.parseAttributes=function(){var e,t,n=this.getFromEnv("chart"),o=n.config,r=this.config,l=this.getName(),s=this.config.JSONData,c=n.getFromEnv("dataSource").chart,h=n.config.singleseries,p=this.getFromEnv("color-manager"),d=Math.floor(this.getJSONIndex()),g=(0,a.pluckNumber)(s.showplotborder,c.showplotborder||1),f=(0,i.getFirstColor)(!h||(0,a.getValidValue)(c.palettecolors)?p.getPlotColor(d):p.getColor("plotFillColor").split(/\s*\,\s*/)[0]),m=o.isdual,b=o.haslineset;r.maxValue=-Infinity,r.minValue=Infinity,(0,a.parseConfiguration)(s,r,n.config,{data:!0}),r.showValues=(0,a.pluckNumber)(s.showvalues,c.showvalues,"radar"===l?0:1),r.anchorimageurl=(0,a.pluck)(s.anchorimageurl,c.anchorimageurl,u),r.plotColor=f,r.parentYAxis=m?b?1:"s"===(0,a.pluck)(s.parentyaxis&&s.parentyaxis.toLowerCase(),"p")?1:0:0,r.valueposition=r.valueposition.toLowerCase(),r.plotfillcolor=(0,a.pluck)(s.color,c.plotfillcolor,f),r.seriesname=(0,a.parseUnsafeString)(s.seriesname),e=o.useplotgradientcolor,r.plotgradientcolor=0!==e?(0,a.getDefinedColor)(c.plotgradientcolor,p.getColor("plotGradientColor")):"",r.plotfillalpha=(0,a.pluck)(s.alpha,o.plotfillalpha),r.fillColor={color:r.plotfillcolor+(r.plotgradientcolor?","+r.plotgradientcolor:""),alpha:r.plotfillalpha,angle:r.plotfillangle},r.plotborderalpha=g?(0,a.pluck)(s.plotborderalpha,c.plotborderalpha,s.alpha,c.plotfillalpha,"95"):0,r.plotbordercolor=(0,a.pluck)(s.plotbordercolor,c.plotbordercolor,c.areabordercolor,h?(0,a.getValidValue)(c.palettecolors)?p.getPlotColor(0):p.getColor("plotBorderColor").split(/\s*\,\s*/)[0]:"666666"),r.drawLine=(0,a.pluckNumber)(s.drawline,c.drawlines,1),r.plotborderdashstyle=r.dashed?(0,a.getDashStyle)(r.plotborderdashlen,r.plotborderdashgap):"none",r.linecolor=(0,a.pluck)(s.color,c.linecolor,r.plotColor),r.legendSymbolColor="line"===this.type?r.linecolor:r.plotfillcolor,r.includeinlegend=(0,a.pluckNumber)(s.includeinlegend,r.seriesname?1:0),t=(0,a.getDashStyle)(r.linedashlen,r.linedashgap),r.lineDashStyle=r.dashed?t:"none",r.defaultPadding={left:0,right:0},r.shadow=this._parseShadowOptions(),r.drawanchors=(0,a.pluckNumber)(s.drawanchors,s.showanchors,c.showanchors,c.drawanchors),r.anchorbgcolor=(0,i.getFirstColor)((0,a.pluck)(s.anchorbgcolor,o.anchorbgcolor,p.getColor("anchorBgColor"))),r.anchorbordercolor=(0,i.getFirstColor)((0,a.pluck)(s.anchorbordercolor,o.anchorbordercolor,r.linecolor,r.plotColor)),this.setState("visible",1===(0,a.pluckNumber)(s.visible,!Number(s.initiallyhidden),1)&&r.drawLine)},t.prototype._setConfigure=function(e,t){var n,o,i,l,s,c,h,p,d,g=this.getFromEnv("chart"),m=this.config,b=g.config,v=this.config.JSONData||[],y=this.getFromEnv("xAxis"),x=g.isRealTime,C=b.realTimeConfig&&b.realTimeConfig.numDisplaySets,k=this.getFromEnv("dataSource").categories&&this.getFromEnv("dataSource").categories[0]&&this.getFromEnv("dataSource").categories[0].category,w=m.initCatLen=x?k&&Array.isArray(k)&&k.filter(function(e){return!e.vline}).length||0:y.getTicksLen(),S=e||v.data,L=e&&e.data.length,A=b.isDrag,N=this.getSkippingInfo&&this.getSkippingInfo(),_=N&&N.draw||[],P=_.length,F=N&&N.skippingApplied;for(d=L===u&&w>C?w-C:0,i=x?(0,a.pluckNumber)(L,w):Math.min(w,S&&S.length),m.imageCount=0,(l=this.components.data)||(l=this.components.data=[]),m.maxRadius=-Infinity,b.dragTolerance=b.dragTolerance||-Infinity,F&&(i=P),c=d;c<i;c++)s=_[c]||c,e?(n=e&&e.data[s]||{},o=t!==u?l[p=t+s]:l[p=l.length-i+s],h=p):(n=S&&S[s]||{},o=l[s-=d],h=s),o||(o=l[h]={}),o.config||(o.config={}),o.graphics||(o.graphics={}),this._plotConfigure(h,n,L),p&&p++;F&&this.addJob("configureRestID",this._configureRestData.bind(this),r.priorityList.postRender),b.dragTolerance=A?(b.dragTolerance>5?b.dragTolerance:5.5)+f:0,this.ErrorValueConfigure&&this.ErrorValueConfigure()},t.prototype._configureRestData=function(){var e,t,n,o,a,i,r=this.getFromEnv("chart"),l=this.config,s=r.config,c=this.config.JSONData.data||[],h=(this.getSkippingInfo&&this.getSkippingInfo()).drawOnlyMap,u=this.getFromEnv("xAxis").getTicksLen();for(l.imageCount=0,(n=this.components.data)||(n=this.components.data=[]),l.maxRadius=-Infinity,s.dragTolerance=s.dragTolerance||-Infinity,l.maxValue=-Infinity,l.minValue=Infinity,o=0;o<u;o++)h[o]||(t=n[o],e=c&&c[o]||{},a=o,t||(t=n[o]={}),t.config||(n[o].config={}),t.graphics||(t.graphics={}),this._plotConfigure(a,e),i&&i++)},t.prototype._plotConfigure=function(e,t,n){var o,i,r,l,s,c,h,p,d,g,m=this.getFromEnv("chart"),b=this.config,v=m.config,y=this.config.JSONData,x=m.getFromEnv("dataSource").chart,C=this.components.data[e],k=this.getFromEnv("xAxis"),L=this.getFromEnv("yAxis"),A=v.isDrag,N=C&&C.config,_=(0,a.parseUnsafeString)(v.yaxisname),P=(0,a.parseUnsafeString)(v.xaxisname),F=v.tooltipsepchar,E=b.dashed,T=v.realTimeConfig&&v.realTimeConfig.numDisplaySets,D=T-b.initCatLen,O=T&&D>=0?D:0;d=k.getLabel(n?e-n:O+e),N.label=(0,a.getValidValue)((0,a.parseUnsafeString)(d.tooltext||d.label)),t.tooltext!==u&&(t.tooltext=(0,a.parseTooltext)(t.tooltext,[3],{label:d.label},t,x,y)),N.setValue=r=L.getCleanValue(t.value,b.stack100percent),N.setLink=(0,a.pluck)(t.link),N.anchorProps=this._parseAnchorProperties(e),b.maxRadius=S(N.anchorProps.radius+N.anchorProps.borderThickness/2,b.maxRadius),g=N.anchorProps.radius+N.anchorProps.borderThickness/2,N.dragTolerance=A?(g<6?5.5:g+.5)+f:0,N.label=(0,a.getValidValue)((0,a.parseUnsafeString)(d.tooltext||d.label)),N.showValue=(0,a.pluckNumber)(t.showvalue,b.showValues),N.dashed=(0,a.pluckNumber)(t.dashed,E),N.dashStyle=N.dashed?(0,a.getDashStyle)(b.linedashlen,b.linedashgap):"none",N.color=(0,a.pluck)(t.color,b.linecolor),N.setColor=t.color,N.setAlpha=t.alpha,N.setDashed=t.dashed,N.alpha=(0,a.pluck)(t.alpha,t.linealpha,b.linealpha),N.origLabel=(0,a.getValidValue)((0,a.parseUnsafeString)(d.label)),null!==r&&(b.maxValue=S(b.maxValue,r),b.minValue=w(b.minValue,r)),N.setTooltext=(0,a.parseUnsafeString)(t.toolText),N.toolTipValue=i=L.dataLabels(r),N.setDisplayValue=l=(0,a.parseUnsafeString)(t.displayvalue),N.displayValue=(0,a.pluck)(l,i),N.formatedVal=h=N.toolTipValue,N.setTooltext=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(t.tooltext,y.plottooltext,x.plottooltext))),N.valuePosition=(0,a.pluck)(t.valueposition,b.valueposition),N.valuePosition&&(N.valuePosition=N.valuePosition.toLowerCase()),v.showtooltip?null===h?o=!1:N.setTooltext!==u?(s=[1,2,3,4,5,6,7],c={yaxisName:_,xaxisName:P,formattedValue:h,label:N.label},o=(0,a.parseTooltext)(N.setTooltext,s,c,t,x,y)):(v.seriesnameintooltip&&(p=(0,a.getFirstValue)(y&&y.seriesname)),o=p?p+F:"",o+=N.label?N.label+F:"",o+=N.setTooltext?"":N.toolTipValue):o=!1,N.toolText=o,N.setLevelTooltext=N.setTooltext,N._x=t.index===u?e:t.index,N._y=r,N.finalTooltext=N.setTooltext=o,N.hoverEffects=this._parseHoverEffectOptions(C,t),N.anchorProps.isAnchorHoverRadius=N.hoverEffects.anchorRadius,v.dragTolerance=S(v.dragTolerance,b.maxRadius,N.hoverEffects.anchorRadius)},t.prototype.drawCommonElements=function(){var e,t,n,o,i,r,l,s,c=this,h=c.components.data,u=c.getFromEnv("chart"),p=c.config,d=u.config,g=c.getFromEnv("xAxis"),f=c.getFromEnv("yAxis"),m=p.scrollMinVal,b=p.scrollMaxVal,v=!d.drawfullareaborder,y=p.plotbordercolor,x=p.plotborderalpha,C=p.plotborderdashstyle,k=p.plotborderthickness,w=p.fillColor,S=c.getFromEnv("animationManager"),L={x:g.getLimit(),y:f.getLimit()},A=[],N=p.shadow,_=c.getContainer("shadowGroup"),P=g.getState("scrolling"),F=c.getSkippingInfo&&c.getSkippingInfo(),E=F&&F.draw||[],T=E.length,D=F&&F.skippingApplied;for(L.x.minPixel=g.getPixel(L.x.min),L.x.maxPixel=g.getPixel(L.x.max),L.y.minPixel=f.getPixel(L.y.min),L.y.maxPixel=f.getPixel(L.y.max),L.y.base=f.getPixel(0),L.x.base=g.getPixel(0),D&&(m=0,b=T),l=m;l<b;l++)h[r=E[l]||l]&&h[r].config&&(A[r]={config:{_Px:h[r].config._Px,_Pbx:h[r].config._Pbx,_Py:h[r].config._Py,_Pby:h[r].config._Pby,setValue:h[r].config.setValue}});s={begin:m,end:b},o={path:(n=this.getLinePath(h,P?s:null,!c.getState("visible")&&"base")).getPathArr(),stroke:(0,a.toRaphaelColor)({color:y,alpha:x}),"stroke-width":v?0:k,"stroke-linecap":"round",fill:(0,a.toRaphaelColor)(w),"stroke-linejoin":k>2?"round":"miter","stroke-dasharray":C},t=c.getGraphicalElement("lineElement"),e=S.setAnimation({el:t||"path",container:c.getContainer("commonElemsGroup"),attr:c.getState("visible")&&o,component:c,doNotRemove:!0,label:"line",callback:function(){!c.getState("visible")&&this.hide()}}),!t&&e&&c.addGraphicalElement("lineElement",e),c.getState("visible")&&e&&e.show(),c.getState("visible")&&!P&&e.shadow(N,_),P||(i=c.getGraphicalElement("connector"),v?i=c.addGraphicalElement("connector",S.setAnimation({attr:{path:n.getPathArr(),stroke:(0,a.toRaphaelColor)({color:y,alpha:x}),"stroke-width":k,"stroke-linecap":"round","stroke-linejoin":k>2?"round":"miter","stroke-dasharray":C},el:i||"path",container:c.getContainer("commonElemsGroup"),component:c,label:"line",callback:!c.getState("visible")&&function(){this.hide()}})):i&&S.setAnimation({attr:{},el:i,container:c.getContainer("commonElemsGroup"),component:c,label:"line",callback:function(){this.hide()}})),p.prevLim=L,p.prevDataStore=A,"realTimeUpdate"===u.state&&(c.realTimeUpdated=!0),d.connectnulldataOld=d.connectnulldata},t.prototype.parsePlotAttributes=function(e,t){var n,o,i,r,l,s,c,h,u,p,d,g=this.getJSONIndex(),f=this.getState("visible"),m=this.config,y=this.config.JSONData,x=t,C={},k={},w={};h=(d=e.config)._Px,u=d._Py,n=d._x,o=d._y,r=d.setLink,i=d.setValue,C=d.anchorProps,p=d.displayValue,c=d.hoverEffects,s=d.finalTooltext=d.toolText,d.eventArgs={index:x,link:r,value:i,displayValue:p,categoryLabel:d.origLabel,toolText:s,id:m.userID,datasetIndex:g||0,datasetName:y.seriesname,visible:f},l=C.symbol,e._xPos=h,e._yPos=u,e._xVal=n,e._yVal=o,e._index=x,null!==o&&null!==n?(d.eventArgs.x=n,d.eventArgs.y=o,c.enabled&&(w={path:(0,a.polyPathToPath)([c.anchorSides||2,h,u,c.anchorRadius,c.startAngle,c.dip]),fill:(0,a.toRaphaelColor)({color:c.anchorColor,alpha:c.anchorBgAlpha}),stroke:(0,a.toRaphaelColor)({color:c.anchorBorderColor,alpha:c.anchorBorderAlpha}),"stroke-width":c.anchorBorderThickness},k={path:(0,a.polyPathToPath)([l[1]||2,h,u,C.radius,C.startAngle,d.dip||0]),fill:(0,a.toRaphaelColor)({color:C.bgColor,alpha:C.bgAlpha}),stroke:(0,a.toRaphaelColor)({color:C.borderColor,alpha:C.borderAlpha}),"stroke-width":C.borderThickness},c.attrs={hoverEnabled:c.enabled,anchorRadius:C.radius,anchorHoverRadius:c.anchorRadius},c.attrs[b]=w,c.attrs[v]=k,C.isAnchorHoverRadius=c.attrs.anchorRadius),C.imageUrl&&(d.anchorImageLoaded=!1),d.props={element:{attr:{path:(0,a.polyPathToPath)([l[1]||2,h,u,C.radius,C.startAngle,d.dip||0]),fill:(0,a.toRaphaelColor)({color:C.bgColor,alpha:C.bgAlpha}),stroke:(0,a.toRaphaelColor)({color:C.borderColor,alpha:C.borderAlpha}),"stroke-width":C.borderThickness}}}):i&&(i.isNull=!0)},t.prototype.parseLabelAttributes=function(e,t){var n,o,a,i,r,l,s,c,h,p,d,g,f,m,b,v,y,C,k,w,S,L,A=this.getFromEnv("chart"),N=A.config,_=this.getFromEnv("smartLabel"),P=A.config.dataLabelStyle,F=this.components.data,E=N.stack100percent,T=N.rotatevalues?270:0,D=N.canvasTop,O=N.canvasHeight,I=A.config.isstacked,M=t;if(S=(f=e&&e.config)&&f.setValue,e!==u&&S!==u&&null!==S&&!0!==f.labelSkip){switch(h=f.anchorProps,b=e._yPos||e.config._Py,m=e._xPos||e.config._Px,w=h.markerRadius||h.radius-3,o=N.valuepadding+2+w,f.valuePosition){case"above":p=0;break;case"below":p=1;break;default:v=F[M-1]&&F[M-1].config||{},I&&E?(y=v.value,C=f.value):(y=v.setValue,C=f.setValue),p=M&&y>C?1:0}n=f.displayValue,k=f.showValue,x(n)&&""!==n&&null!==C&&k&&(L={text:n,fill:P.color,"text-bound":[P.backgroundColor,P.borderColor,P.borderThickness,P.borderPadding,P.borderRadius,P.borderDash]},a=_.getOriSize(n),f._state=f._state||{},T?(f._state.labelWidth=a.height,f._state.labelHeight=a.width,f._rotated=!0):(f._state.labelWidth=a.width,f._state.labelHeight=a.height,f._rotated=!1),i=r=f._state.labelHeight,i+=o,c=.5*r+o,d=b-D,g=D+O-b,l=b,s=m,i+=4,p?g>i?(l+=c,f._valueBelowPoint=1):d>i&&(l-=c,f._valueBelowPoint=0):d>i?(l-=c,f._valueBelowPoint=0):g>i&&(l+=c,f._valueBelowPoint=1),L.x=s,L.y=l),f.props=f.props||{},f.props.label={attr:L}}else f&&delete f.labelSkip},t.prototype.allocatePosition=function(){var e,t,n=this,o=n.config,a=n.getFromEnv("chart"),i=a.config,r=i.showpercentvalues,l=i.showpercentintooltip,s=n.components,c=s.data,h=n.getFromEnv("xAxis"),p=0,d=0,g=i.isstacked,f=Number(i.stack100percent),m=i.viewPortConfig.step||1,b=a.hasScroll,v=n.getSkippingInfo&&n.getSkippingInfo(),y=v&&v.labelDraw||[],x=v&&v.draw||[];for(t=s.animAttrs=[],n.calculateScrollRange(),h.getState("scrolling")||g&&(f||r||l)&&n.updateYForStack(),n.createCoordinates(),d=o.scrollMinVal;d<o.scrollMaxVal;d+=m)p=x[d]||d,b&&!i.skipAttr&&(p<void 0||p>void 0)||((e=c[p])&&e.config?n.parsePlotAttributes(e,p):t[p]=u);for(m>1&&o.skipIgnorerIndices.map(function(e){return c[e]}).filter(function(e){return e||e.config}).forEach(function(e){return n.parsePlotAttributes(e,p)}),d=o.scrollMinValForLabel;d<o.scrollMaxValForLabel;d+=m)p=y[d]||d,e=c[p],n.parseLabelAttributes(e,p)},t.prototype.drawPlot=function(e,t){var n=this.config,o=e.config,a=e.graphics,i=o.anchorProps,r=this.getState("visible"),l=i.radius,s=i.shadow,c=i.anchorAlpha,h=l&&c,p=this.getContainer("plotGroup"),d=this.getContainer("shadowGroup"),g=this.getFromEnv("animationManager"),f=void 0,m=void 0,y=void 0;null!==o._y&&null!==o._x?(i.imageUrl?this.drawAnchorImage(e):(f=a.element,(y=a.image)&&y.remove(),delete a.image,(n.drawanchors||h)&&r&&null!==e.config.setValue?(f=a.element=g.setAnimation({el:f||"path",container:p,attr:o.props.element.attr,index:t,length:length,callback:function(){this.show()},component:this,label:"anchor"})).shadow(s,d):f&&(this.__removeElem(a.element,"element"),delete a.element,f=u)),m=o.hoverEffects,f&&(m.enabled?f.data("hoverEnabled",m.attrs.hoverEnabled).data("anchorRadius",m.attrs.anchorRadius).data("anchorHoverRadius",m.attrs.anchorHoverRadius).data(b,m.attrs[b]).data(v,m.attrs[v]):f.data("hoverEnabled",!1),f.data("eventArgs",o&&o.eventArgs))):a.element&&(a.element=g.setAnimation({el:a.element,component:this}))},t.prototype.drawPlots=function(){var e,t,n,o=this,a=o.getFromEnv("chart").config,i=o.components,r=o.config,l=i.data,s=0,c=0,h=i.animAttrs,p=r._oldStartIndex,d=r._oldEndIndex,g=o.getGraphicalElement("sharedAnchor"),f=a.viewPortConfig.step||1,m=o.getSkippingInfo&&o.getSkippingInfo(),b=m&&m.draw||[];for(h=i.animAttrs=[],t=r.scrollMinVal,n=r.scrollMaxVal,t>p&&o.flushOnScroll(p,t>d?d:t),n<d&&o.flushOnScroll(n<p?p:n,d),r._oldStartIndex=t,r._oldEndIndex=n,o.hideAllAnchors&&o.hideAllAnchors(),c=t;c<n;c+=f)s=b[c]||c,(e=l[s])&&e.config?o.drawPlot(e,s):h[s]=u;f>1&&r.skipIgnorerIndices.map(function(e){return l[e]}).filter(function(e){return e||e.config}).forEach(function(e){return o.drawPlot(e,s)}),0===s||r.drawanchors?g&&g.hide():g?g.hide():o.getAnchor()},t.prototype.drawAnchorImage=function(e){var t=this.getContainer("plotGroup"),n=e.graphics,o=this.getFromEnv("animationManager"),a=void 0,i=p?n.element:n.image,r=e.config.anchorProps,l=r.anchorAlpha&&r.radius,s=r.imageAlpha;this.getState("visible")&&l?(p||(n.element=o.setAnimation({el:n.element||"path",container:t,attr:e.config.props.element.attr,label:"anchor",component:this}).show()),e.config.props.element.attr.opacity=.01*s,a=o.setAnimation({el:i||"image",container:t,component:this,label:"anchor",attr:{opacity:.01*s}}),p?n.element=a:n.image=a,i?a.attrs.src!==r.imageUrl?a.attr("src",r.imageUrl):a._.RefImg&&A(this,e):(a.on("load",this._onAnchorImageLoad(e)),a.attr("src",r.imageUrl)),a.show()):(n.image&&o.setAnimation({el:n.image,state:"disappearing",component:this,doNotRemove:!0,callback:function(){this.hide()}}),n.element&&o.setAnimation({el:n.element,state:"disappearing",component:this,doNotRemove:!0,callback:function(){this.hide()}}))},t.prototype.getLineSegment=function(e,t,n){var o=t._Px,a=t._Py,i=t._Pbx,r=t._Pby,l=this.getFromEnv("yAxis").getPixel(0),s=t.setValue,c=this.getFromEnv("chart").config.connectnulldata;return"zero"===n?(a=l,r=l):"base"===n&&(a=t._Pby),null===s||s.isNull?c||(e.pointsJoined>0&&(e.path2Arr[e.path2Arr.length-1]!==C&&r!==u&&e.path2Arr.push(C),e.pathArr=e.pathArr.concat(e.path2Arr),e.path2Arr=[]),e.temp=[],e.temp2=[],e.lastValidValue=!1):e.lastValidValue?(e.temp.length&&(e.pathArr=e.pathArr.concat(e.temp),i!==u&&(e.path2Arr=e.temp2,e.temp2=[]),e.temp=[],e.pointsJoined++),e.pathArr.push(["L",o,a]),r!==u&&e.path2Arr.unshift(["L",o,r])):(e.temp.push(["M",o,a]),r!==u&&e.temp2.push(["L",i,r]),e.pointsJoined=0,e.lastValidValue=!0),e},t.prototype.getLinePath=function(e,t,n){var o,a,i,r,l,s,c,h,p=this,d=p.getFromEnv("chart").config,g=e.length,f=t&&t.begin||0,m=p.getState("visible")?t&&t.end||g:0,b=d.viewPortConfig.step||1,v=(p.removeDataLen,[]),x=p.getSkippingInfo&&p.getSkippingInfo(),k=x&&x.draw||[],w=k.length,S=x&&x.skippingApplied,L=p.config.skipIgnorerIndices,A=[],N={},_=0;for(0,v=v.concat(e),S&&(f=0,m=w),a=f+0;a<m+0;a+=b)if(l=v[o=k[a]||a])if((i=l.config).setValue===u||i&&!0===i.isSkipped)i&&delete i.isSkipped;else{if(b>1)for(;L[_]<a;)(c=v[L[_]])&&((h=c.config).setValue===u||h&&!0===h.isSkipped?h&&delete h.isSkipped:(A=A.concat(h),_++));A=A.concat(i),r=i._Pby,s=a}if(b>1)for(o=s+1;o<=a;o++)(l=v[k[o]||o])&&((i=l.config).setValue===u||i&&!0===i.isSkipped?i&&delete i.isSkipped:L.includes(o)&&(A=A.concat(i),r=i._Pby));return(N=A.reduce(function(e,t){return p.getLineSegment(e,t,n)},{temp:[],temp2:[],pathArr:[],path2Arr:[],pointsJoined:0,lastValidValue:!1,getPathArr:y})).path2Arr[N.path2Arr.length-1]!==C&&N.pointsJoined>0&&r!==u&&N.path2Arr.push(C),N},t.prototype._removeDataVisuals=function(e){var t,n,o,a,i=this.components.pool||(this.components.pool={});if(e)for(n in o=e.graphics)t=i[n]||(i[n]=[]),(a=o[n]).hide&&"function"==typeof a.hide&&(a.attr({"text-bound":[]}),a.hide(),a.shadow&&a.shadow(!1)),t.push(o[n])},t.prototype._parseAnchorProperties=function(e,t){var n,o,r,l=this.config,s=this.getName(),c=this.getFromEnv("chart"),h=c.config.anchoralpha,p=!c.config.anchoralpha&&/area/gi.test(s)?0:1,d=l.JSONData,g=c.getFromEnv("dataSource").chart,f=(t||d.data||[])[e]||{},m={};return o=(0,a.pluck)(f.anchorstartangle,d.anchorstartangle,g.anchorstartangle,f.anchorimagealpha,d.anchorimagealpha,g.anchorimagealpha,f.anchorimagescale,d.anchorimagescale,g.anchorimagescale,f.anchorimagepadding,d.anchorimagepadding,g.anchorimagepadding,f.anchorimageurl,d.anchorimageurl,g.anchorimageurl,f.anchorradius,d.anchorradius,g.anchorradius,f.anchorbgcolor,d.anchorbgcolor,g.anchorbgcolor,f.anchorbordercolor,d.anchorbordercolor,g.anchorbordercolor,f.anchoralpha,d.anchoralpha,g.anchoralpha,f.anchorsides,d.anchorsides,g.anchorsides,f.anchorborderthickness,d.anchorborderthickness,g.anchorborderthickness,u)!==u,r=(0,a.pluckNumber)(f.drawanchors,l.drawanchors),m.enabled=o?(0,a.pluckNumber)(r,o):(0,a.pluckNumber)(r,p),m.startAngle=(0,a.pluckNumber)(f.anchorstartangle,l.anchorstartangle),m.imageAlpha=(0,a.pluckNumber)(f.anchorimagealpha,l.anchorimagealpha),m.imageScale=(0,a.pluckNumber)(f.anchorimagescale,l.anchorimagescale),m.imagePadding=(0,a.pluckNumber)(f.anchorimagepadding,l.anchorimagepadding),m.imagePadding<0&&(m.imagePadding=0),m.imageUrl=(0,a.pluck)(f.anchorimageurl,l.anchorimageurl),m.imageUrl&&l.imageCount++,m.radius=m.enabled?(0,a.pluckNumber)(f.anchorradius,l.anchorradius):0,m.isAnchorRadius=(0,a.pluck)(f.anchorradius,d.anchorradius,g.anchorradius),m.bgColor=(0,a.pluck)(f.anchorbgcolor,l.anchorbgcolor),h=m.enabled?(0,i.getFirstAlpha)((0,a.pluck)(f.anchoralpha,l.anchoralpha,m.enabled?a.HUNDREDSTRING:"0")):0,m.anchorAlpha=h,m.bgAlpha=(0,i.getFirstAlpha)((0,a.pluck)(f.anchorbgalpha,l.anchorbgalpha,h))*h/100,m.imageAlpha=m.imageAlpha*h/100,m.borderColor=(0,a.pluck)(f.anchorbordercolor,l.anchorbordercolor),m.borderAlpha=h,m.sides=(0,a.pluck)(f.anchorsides,l.anchorsides),m.borderThickness=(0,a.pluck)(f.anchorborderthickness,l.anchorborderthickness),m.symbol=(0,i.mapSymbolName)(m.sides).split("_"),n=(0,a.pluckNumber)(f.anchorshadow,l.anchorshadow)&&m.radius>=1,m.shadow={opacity:n?h/100:0},m},t.prototype._hideGraphics=function(e){var t,n;for(n in e)if(e.hasOwnProperty(n)){if(!(t=e[n]))continue;t.hide?t.hide():this._hideGraphics(t)}},t.prototype._parseHoverEffectOptions=function(e,t){var n=this.config.JSONData,o=this.getFromEnv("chart"),r=o.getFromEnv("dataSource").chart,l=o.config,s=e.config,c=this.config,h=s.anchorProps||{},p=l.plothovereffect,d=c.drawanchors,g={enabled:!1};return t=t||{},0!==p&&0!==d&&(g.enabled=(0,a.pluck)(t.hovercolor,t.anchorhovercolor,t.hovercolor,n.hovercolor,t.anchorbghovercolor,n.anchorbghovercolor,r.anchorbghovercolor,n.anchorhovercolor,r.anchorhovercolor,t.hoveralpha,t.anchorhoveralpha,n.anchorhoveralpha,r.anchorhoveralpha,t.bghoveralpha,t.anchorbghoveralpha,n.anchorbghoveralpha,r.anchorbghoveralpha,t.anchorborderhovercolor,t.borderhovercolor,n.anchorborderhovercolor,r.anchorborderhovercolor,t.anchorborderhoverthickness,t.borderhoverthickness,n.anchorborderhoverthickness,r.anchorborderhoverthickness,t.anchorborderhoveralpha,t.borderhoveralpha,n.anchorborderhoveralpha,r.anchorborderhoveralpha,t.hoverdip,t.anchorhoverdip,n.anchorhoverdip,r.anchorhoverdip,t.anchorhoverstartangle,n.anchorhoverstartangle,r.anchorhoverstartangle,t.hoversides,t.anchorhoversides,n.anchorhoversides,r.anchorhoversides,t.hoverradius,t.anchorhoverradius,n.anchorhoverradius,r.anchorhoverradius,n.plotfillhovercolor,r.plotfillhovercolor,l.plothovereffect,u)!==u,g.startAngle=(0,a.pluckNumber)(t.anchorhoverstartangle,n.anchorhoverstartangle,r.anchorhoverstartangle,h.startAngle),g.anchorSides=(0,a.pluckNumber)(t.hoversides,t.anchorhoversides,n.anchorhoversides,r.anchorhoversides,h.sides),g.anchorRadius=(0,a.pluckNumber)(t.anchorhoverradius,n.anchorhoverradius,r.anchorhoverradius),g.isAnchorHoverRadius=g.anchorRadius,g.anchorRadius=(0,a.pluckNumber)(g.anchorRadius,h.radius+(p?2:0)),g.anchorScale=(0,a.pluck)(t.hoverscale,n.anchorscale,r.anchorscale),g.imageHoverScale=(0,a.pluckNumber)(t.anchorimagehoverScale,n.anchorimagehoverscale,r.anchorimagehoverscale,110),g.imageHoverAlpha=(0,a.pluckNumber)(t.anchorimagehoveralpha,n.anchorimaghoverealpha,r.anchorimagehoveralpha),g.anchorAlpha=(0,a.pluck)(t.anchorhoveralpha,t.hoveralpha,n.anchorhoveralpha,r.anchorhoveralpha,h.anchorAlpha),g.anchorColor=(0,i.getFirstColor)((0,a.pluck)(t.hovercolor,t.anchorhovercolor,t.hoverColor,t.anchorbghovercolor,n.anchorbghovercolor,n.anchorhovercolor,n.hovercolor,r.anchorbghovercolor,r.anchorhovercolor,r.plotfillhovercolor,h.bgColor)),g.anchorBgAlpha=(0,a.pluck)(t.bghoveralpha,t.anchorbghoveralpha,n.anchorbghoveralpha,r.anchorbghoveralpha,r.plotfillhoveralpha,h.bgAlpha),g.anchorBgAlpha=g.anchorBgAlpha*g.anchorAlpha/100,g.anchorBorderColor=(0,a.pluck)(t.borderhovercolor,t.anchorborderhovercolor,n.anchorborderhovercolor,r.anchorborderhovercolor,h.borderColor),g.anchorBorderAlpha=(0,a.pluck)(t.borderhoveralpha,t.anchorborderhoveralpha,n.anchorborderhoveralpha,r.anchorborderhoveralpha,g.anchorAlpha,h.borderAlpha),g.anchorBorderThickness=(0,a.pluckNumber)(t.borderhoverthickness,t.anchorborderhoverthickness,n.anchorborderhoverthickness,r.anchorborderhoverthickness,r.anchorBorderThickness,h.borderThickness),g.dip=(0,a.pluck)(t.hoverdip,t.anchorhoverdip,n.anchorhoverdip,r.anchorhoverdip,h.dip),g.anchorAnimation=(0,a.pluckNumber)(t.anchorhoveranimation,n.anchorhoveranimation,r.anchorhoveranimation,1)),g},t.prototype._hoverPlotAnchor=function(e,t){var n,o,a,i,r,l=this.getFromEnv("smartLabel"),s=this.getFromEnv("chart").getChildren("canvas")[0].getEffectiveDimensions(),c=s.top,h=c+s.height,u=e.config._Py,f=this.getFromEnv("animationManager"),m=this.getGraphicalElement("sharedAnchor"),y=e.graphics.element||m,x=e.graphics.label,C=e.config||{},k=C.anchorProps.anchorAlpha,w=C&&C.anchorProps.imageUrl,S=p&&w?e.graphics.element:e.graphics.image,L="image"===y.type,A=y.data("anchorRadius"),N=y.data("anchorHoverRadius"),_=y.data(b),P=y.data(v),F=x&&(x.data("isBelow")?1:-1)*(L?.5*(_.height-P.height):N-A),E=t===d?_:P,T=!0,D={path:E.path},O={fill:E.fill,"stroke-width":E["stroke-width"],stroke:E.stroke},I=x&&x.data("rotation")||"";u-3*(n=l.getOriSize(C.displayValue).height)/2+F<c?F=c-u+3*n/2:u+3*n/2+F>h&&(F=h-u-3*n/2),r={transform:"T0,"+(t===d?F:0)+I},f.setAnimationState(t===d?"mouseOver":"mouseOut"),S&&(a=S.data(b),i=S.data(v),(o=t==d?a:i).alpha*=.01),L?D.alpha*=.01:Object.assign(D,O),(t===d&&!N||t===g&&!A)&&(T=!1),f.setAnimation({el:y,label:"anchor",component:this,doNotRemove:!0,callback:function(){!T&&y.hide()},attr:T&&D}),T&&y.show(),S&&(f.setAnimation({el:S,label:"anchor",component:this,attr:T&&o}),T&&S.show()),(e.graphics&&e.graphics.element||m&&m.element)&&k&&x&&f.setAnimation({el:x,label:"label",component:this,doNotRemove:!0,attr:r})},t.prototype.drawLabel=function(e,t){var n,o,i,r,l,s,c,h,p,d,g,f,m=this.getFromEnv("chart"),b=m.config,v=this.getFromEnv("smartLabel"),y=m.config.dataLabelStyle,C=this.components.data,k=this.getFromEnv("paper"),w=this.getFromEnv("animationManager"),S="",L=b.rotatevalues?270:0,A=this.getContainer("labelGroup"),N=this.getState("visible"),_=C.length,P=this.getSkippingInfo&&this.getSkippingInfo(),F=P&&P.skippingApplied,E=P&&P.labelDraw||[],T=E.length,D=(0,a.pluckNumber)(e,0),O=(0,a.pluckNumber)(t,F?T:_),I=T===Math.abs(O-(D+1));for(c={"font-weight":y.fontWeight,"font-style":y.fontStyle,"font-family":y.fontFamily,"font-size":y.fontSize,"line-height":y.lineHeight},v.setStyle(c),p=D;p<O;p++)d=(r=(h=C[F&&I?E[p]:p])&&h.config)&&r.setValue,h!==u&&d!==u&&null!==d&&!0!==r.labelSkip?(n=h.graphics,S=r.displayValue,l=r.showValue,s=n.label,g=r.props.label.attr,x(S)&&l&&N?(i=r.props.label.attr.x,o=r.props.label.attr.y,g.transform=k.getSuggestiveRotation(L,i,o),n.label=s=w.setAnimation({el:s||"text",container:A,component:this,attr:g,label:"label"}),s.data("isBelow",r._valueBelowPoint),s.data("rotation",g.transform)):s&&(n.label=w.setAnimation({el:s,component:this,label:"label"}))):(r&&delete r.labelSkip,(f=h&&h.graphics)&&f.label&&(f.label=w.setAnimation({el:f.label,component:this})))},t.prototype.getAxisValuePadding=function(){return this.config.defaultPadding},t.prototype._hoverFunc=function(e,t,n,o){if(n)return this._hoverPlotAnchor(e,t,o)},t.prototype._onAnchorImageLoad=function(e){var t=this;return function(){var n=e._index;A(t,e),t.config.drawn?t.drawLabel(n,n+1):t.addJob("labelUpdateOnImageLoadID"+n,function(){t.drawLabel(n,n+1)},r.priorityList.label)}},t}(o["default"]);t["default"]=N},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"*.dataset.area":function(){return{"anchor.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}],"anchor.updating":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"anchor.disappearing":[{finalAttr:{opacity:0,"fill-opacity":0,"stroke-opacity":0},slot:"final"}],"line.appearing":function(e){var t=e.component,n=t.components.data,o=t.getFromEnv("chartConfig").isstacked,a=t.getFromEnv("chartConfig").is3D,i=t.getLinePath(n,null,o||a?"base":"zero"),r=e.attr,l=t.getState("_total"),s=t.config._childIndex;return[{initialAttr:{opacity:0,path:i.getPathArr()},finalAttr:{opacity:1,path:r.path},startEnd:{start:o?.5/l*s:0,end:o?.5/l*(s+1):.5},slot:"plot",hookFn:function(){this.attr({opacity:1})}}]},"label.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"label.updating":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"group.appearing":function(e){return"label-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:"plot-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"*.dataset.line":function(){var e=this.getClip("canvas"),t=this.getClip("init");return{"anchor.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"anchor.updating":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot"}]},"anchor.disappearing":function(){return[{finalAttr:{opacity:0,"fill-opacity":0,"stroke-opacity":0},slot:"plot"}]},"line.appearing":function(){return[{initialAttr:{"clip-rect":t},finalAttr:{"clip-rect":e},slot:"middle",callback:function(){this.attr({"clip-rect":null})}}]},"line.updating":function(){return[{initialAttr:{opacity:1,"clip-rect":t},finalAttr:{opacity:1,"clip-rect":e},slot:"plot"}]},"label.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"group.appearing":function(e){return"label-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:"plot-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},,,,function(e,t,n){"use strict";t.__esModule=!0,t.__postSpaceManagement=t.__spaceManager=t.__feedAxesRawData=undefined;var o=r(n(354)),a=r(n(331)),i=n(118);function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}function s(){var e,t,n=this.config,o=this.getFromEnv("color-manager"),a=this.getFromEnv("dataSource"),r=a.chart,l=this.config.is3D,s=l?i.chartPaletteStr.chart3D:i.chartPaletteStr.chart2D;return e={isVertical:!0,isReverse:!1,isOpposit:!1,outCanfontFamily:(0,i.pluck)(r.outcnvbasefont,r.basefont,"Verdana,sans"),outCanfontSize:(0,i.pluckFontSize)(r.outcnvbasefontsize,r.basefontsize,10),outCancolor:(0,i.pluck)(r.outcnvbasefontcolor,r.basefontcolor,o.getColor(s.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:r.xaxisnamepadding,maxLabelWidthPercent:r.maxlabelwidthpercent,minLabelWidthPercent:r.minlabelwidthpercent,axisValuePadding:r.labelpadding,axisNameFont:r.xaxisnamefont,axisNameFontSize:r.xaxisnamefontsize,axisNameFontColor:r.xaxisnamefontcolor,axisNameFontBold:r.xaxisnamefontbold,axisNameFontItalic:r.xaxisnamefontitalic,axisNameBgColor:r.xaxisnamebgcolor,axisNameBorderColor:r.xaxisnamebordercolor,axisNameAlpha:r.xaxisnamealpha,axisNameFontAlpha:r.xaxisnamefontalpha,axisNameBgAlpha:r.xaxisnamebgalpha,axisNameBorderAlpha:r.xaxisnameborderalpha,axisNameBorderPadding:r.xaxisnameborderpadding,axisNameBorderRadius:r.xaxisnameborderradius,axisNameBorderThickness:r.xaxisnameborderthickness,axisNameBorderDashed:r.xaxisnameborderdashed,axisNameBorderDashLen:r.xaxisnameborderdashlen,axisNameBorderDashGap:r.xaxisnameborderdashgap,axisNameWidth:r.xaxisnamewidth,useEllipsesWhenOverflow:r.useellipseswhenoverflow,divLineColor:(0,i.pluck)(r.vdivlinecolor,r.divlinecolor,o.getColor(s.divLineColor)),divLineAlpha:(0,i.pluck)(r.vdivlinealpha,r.divlinealpha,l?o.getColor("divLineAlpha3D"):o.getColor("divLineAlpha")),divLineThickness:(0,i.pluckNumber)(r.vdivlinethickness,r.divlinethickness,1),divLineIsDashed:Boolean((0,i.pluckNumber)(r.vdivlinedashed,r.vdivlineisdashed,r.divlinedashed,r.divlineisdashed,0)),divLineDashLen:(0,i.pluckNumber)(r.vdivlinedashlen,r.divlinedashlen,4),divLineDashGap:(0,i.pluckNumber)(r.vdivlinedashgap,r.divlinedashgap,2),showAlternateGridColor:0,alternateGridColor:(0,i.pluck)(r.alternatehgridcolor,o.getColor("altHGridColor")),alternateGridAlpha:(0,i.pluck)(r.alternatehgridalpha,o.getColor("altHGridAlpha")),numDivLines:r.numvdivlines,labelFont:r.labelfont,labelFontSize:r.labelfontsize,labelFontColor:r.labelfontcolor,labelFontAlpha:r.labelalpha,labelFontBold:r.labelfontbold,labelFontItalic:r.labelfontitalic,axisName:r.xaxisname,axisMinValue:r.xaxisminvalue,axisMaxValue:r.xaxismaxvalue,setAdaptiveMin:r.setadaptivexmin,adjustDiv:r.adjustvdiv,labelDisplay:r.labeldisplay,showLabels:r.showlabels,rotateLabels:r.rotatelabels,slantLabel:(0,i.pluckNumber)(r.slantlabels,r.slantlabel),labelStep:(0,i.pluckNumber)(r.labelstep,r.xaxisvaluesstep),showAxisValues:(0,i.pluckNumber)(r.showxaxisvalues,r.showxaxisvalue),showLimits:r.showvlimits,showDivLineValues:(0,i.pluckNumber)(r.showvdivlinevalues,r.showvdivlinevalues),zeroPlaneColor:r.vzeroplanecolor,zeroPlaneThickness:(0,i.pluckNumber)(r.vzeroplanethickness,r.vdivlinethickness,2),zeroPlaneAlpha:(0,i.pluckNumber)(r.vzeroplanealpha,r.vdivlinealpha,n.zeroplanealpha),showZeroPlaneValue:r.showvzeroplanevalue,trendlineColor:r.trendlinecolor,trendlineToolText:r.trendlinetooltext,trendlineThickness:r.trendlinethickness,rotateAxisName:(0,i.pluckNumber)(r.rotatexaxisname,1),trendlineAlpha:r.trendlinealpha,showTrendlinesOnTop:r.showtrendlinesontop,showAxisLine:l?0:(0,i.pluckNumber)(r.showxaxisline,r.showaxislines,r.drawAxisLines,0),axisLineThickness:(0,i.pluckNumber)(r.xaxislinethickness,r.axislinethickness,1),axisLineAlpha:(0,i.pluckNumber)(r.xaxislinealpha,r.axislinealpha,100),axisLineColor:(0,i.pluck)(r.xaxislinecolor,r.axislinecolor,"#000000")},(t={isVertical:!1,isReverse:!1,isOpposit:!1,outCanfontFamily:(0,i.pluck)(r.outcnvbasefont,r.basefont,"Verdana,sans"),outCanfontSize:(0,i.pluckFontSize)(r.outcnvbasefontsize,r.basefontsize,10),outCancolor:(0,i.pluck)(r.outcnvbasefontcolor,r.basefontcolor,o.getColor(s.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:r.yaxisnamepadding,axisValuePadding:r.yaxisvaluespadding,axisNameFont:r.yaxisnamefont,axisNameFontSize:r.yaxisnamefontsize,axisNameFontColor:r.yaxisnamefontcolor,axisNameFontBold:r.yaxisnamefontbold,axisNameFontItalic:r.yaxisnamefontitalic,axisNameBgColor:r.yaxisnamebgcolor,axisNameBorderColor:r.yaxisnamebordercolor,axisNameAlpha:r.yaxisnamealpha,axisNameFontAlpha:r.yaxisnamefontalpha,axisNameBgAlpha:r.yaxisnamebgalpha,axisNameBorderAlpha:r.yaxisnameborderalpha,axisNameBorderPadding:r.yaxisnameborderpadding,axisNameBorderRadius:r.yaxisnameborderradius,axisNameBorderThickness:r.yaxisnameborderthickness,axisNameBorderDashed:r.yaxisnameborderdashed,axisNameBorderDashLen:r.yaxisnameborderdashlen,axisNameBorderDashGap:r.yaxisnameborderdashgap,axisNameWidth:r.yaxisnamewidth,useEllipsesWhenOverflow:r.useellipseswhenoverflow,axisName:r.yaxisname,divLineColor:(0,i.pluck)(r.divlinecolor,o.getColor(s.divLineColor)),divLineAlpha:(0,i.pluck)(r.divlinealpha,l?o.getColor("divLineAlpha3D"):o.getColor("divLineAlpha")),divLineThickness:(0,i.pluckNumber)(r.divlinethickness,1),divLineIsDashed:Boolean((0,i.pluckNumber)(r.divlinedashed,r.divlineisdashed,0)),divLineDashLen:(0,i.pluckNumber)(r.divlinedashlen,4),divLineDashGap:(0,i.pluckNumber)(r.divlinedashgap,2),showAlternateGridColor:(0,i.pluckNumber)(r.showalternatevgridcolor,1),alternateGridColor:(0,i.pluck)(r.alternatevgridcolor,o.getColor("altVGridColor")),alternateGridAlpha:(0,i.pluck)(r.alternatevgridalpha,o.getColor("altVGridAlpha")),numDivLines:r.numdivlines,axisMinValue:r.yaxisminvalue,axisMaxValue:r.yaxismaxvalue,setAdaptiveMin:r.setadaptiveymin,adjustDiv:r.adjustdiv,labelStep:r.yaxisvaluesstep,showAxisValues:(0,i.pluckNumber)(r.showyaxisvalues,r.showyaxisvalue),showLimits:(0,i.pluckNumber)(r.showyaxislimits,r.showlimits,this.showLimits),showDivLineValues:(0,i.pluckNumber)(r.showdivlinevalues,r.showdivlinevalue),zeroPlaneColor:r.zeroplanecolor,zeroPlaneThickness:(0,i.pluckNumber)(r.zeroplanethickness,r.divlinethickness,2),zeroPlaneAlpha:(0,i.pluckNumber)(r.zeroplanealpha,r.divlinealpha,n.zeroplanealpha),showZeroPlaneValue:r.showzeroplanevalue,trendlineColor:r.trendlinecolor,trendlineToolText:r.trendlinetooltext,trendlineThickness:r.trendlinethickness,trendlineAlpha:r.trendlinealpha,isTrendZone:0,showTrendlinesOnTop:r.showtrendlinesontop,showAxisLine:l?0:(0,i.pluckNumber)(r.showyaxisline,r.showaxislines,r.drawAxisLines,0),axisLineThickness:(0,i.pluckNumber)(r.yaxislinethickness,r.axislinethickness,1),axisLineAlpha:(0,i.pluckNumber)(r.yaxislinealpha,r.axislinealpha,100),axisLineColor:(0,i.pluck)(r.yaxislinecolor,r.axislinecolor,"#000000"),numberFormatterFn:"yAxis",showZeroPlaneOnTop:n.showzeroplaneontop,forceTrendBelow:!!n.is3D}).vtrendlines=a.trendlines,e.trendlines=a.vtrendlines,n.isstacked&&(t.isPercent=(0,i.pluckNumber)(n.stack100percent,0)),{xAxisConf:[e],yAxisConf:[t]}}function c(){var e,t,n,o,a,r,l,s,c,h,u,p,d,g,f,m,b,v,y,x=this.config,C=this.getChildren(),k=C.yAxis&&C.yAxis[0],w=C.xAxis&&C.xAxis||[],S=i.preDefStr.POSITION_BOTTOM,L=x.legendposition,A=x.xDepth,N=x.yDepth,_=C.canvas[0],P=x.canvasBgDepth,F=x.canvasBaseDepth,E=x.canvasBasePadding,T=C.canvas[0].config.canvasBorderWidth,D=x.realTimeConfig&&x.realTimeConfig.showRTValue,O=x.borderWidth,I=x.canvasMarginTop,M=x.canvasMarginBottom,R=x.canvasMarginLeft,V=x.canvasMarginRight,B=x.minCanvasHeight,G=x.minCanvasWidth,j=x.minChartWidth,H=x.minChartHeight,W=x.height,z=x.width,U=!1,q=!1,Y=x.origCanvasTopMargin,K=x.origCanvasBottomMargin,X=x.origCanvasLeftMargin,Z=x.origCanvasRightMargin;x.canvasWidth-2*O<j&&(p=(x.canvasWidth-j)/2),x.canvasHeight-2*O<H&&(u=(x.canvasHeight-H)/2),this._allocateSpace({top:u||O,bottom:u||O,left:p||O,right:p||O}),n=w[0],e=.7*x.availableWidth,x.yAxisSpaceAllocation=b=n&&n.placeAxis(e),n&&this._allocateSpace(b),f=.225*x.availableHeight,g=this._manageActionBarSpace&&this._manageActionBarSpace(f)||{},this._allocateSpace(g),this._manageLegendSpace&&this._manageLegendSpace(),t=L===S?.6*x.availableHeight:.6*x.availableWidth,N&&(this._allocateSpace({left:N}),x.shift=A+E+F),P&&this._allocateSpace({top:P}),x.canvasWidth-2*T<G&&(m=(x.canvasWidth-G)/2),this._allocateSpace({left:m||T,right:m||T}),G>z-R-V&&(q=!0,o=x.canvasWidth-G,y=R+V,R=x.canvasMarginLeft=o*R/y,V=x.canvasMarginRight=o*V/y),l=R>x.canvasLeft?R-x.canvasLeft:0,s=V>z-x.canvasRight?V+x.canvasRight-z:0,this._allocateSpace({left:l,right:s}),this._allocateSpace({left:F}),q&&(y=X+Z,(h=x.canvasWidth)>G&&(l=(o=h-G)*X/y,s=o*Z/y),this._allocateSpace({left:l,right:s})),x.actualCanvasMarginRight=s,x.actualCanvasMarginBottom=r,this._manageChartMenuBar(t),t=.2*x.availableHeight,this._allocateSpace(this._getSumValueSpace(t)),t=.3*x.availableHeight,x.realtimeEnabled&&(D?this._allocateSpace(this._realTimeValuePositioning(t)):this._hideRealTimeValue()),t=.6*x.availableHeight,x.xAxisSpaceAllocation=v=k&&k.placeAxis(t),k&&this._allocateSpace(v),t=.3*x.availableHeight,this._manageScrollerPosition&&this._manageScrollerPosition(t),x.canvasHeight-2*T<B&&(d=(x.canvasHeight-B)/2),this._allocateSpace({top:d||T,bottom:d||T}),B>W-I-M&&(U=!0,o=x.canvasHeight-B,y=I+M,I=x.canvasMarginTop=o*I/y,M=x.canvasMarginBottom=o*M/y),a=I>x.canvasTop?I-x.canvasTop:0,r=M>W-x.canvasBottom?M+x.canvasBottom-W:0,this._allocateSpace({top:a,bottom:r}),U&&(y=Y+K,(c=x.canvasHeight)>B&&(a=(o=c-B)*Y/y,r=o*K/y),this._allocateSpace({top:a,bottom:r})),x.actualCanvasMarginTop=a,x.actualCanvasMarginLeft=l,_.setDimension({top:x.canvasTop,left:x.canvasLeft,width:x.canvasWidth,height:x.canvasHeight})}function h(){var e,t,n,o,a=this.config,i=this.getChildren(),r=i.xAxis&&i.xAxis[0],l=i.yAxis&&i.yAxis[0],s=i.legend&&i.legend[0],c=a.xDepth,h=i.canvas[0].config,u=h.canvasBorderWidth,p=h.canvasPadding,d=Math.max;l&&this._allocateXAxisLabelSpace(l),e=h.canvasPaddingLeft,t=h.canvasPaddingRight,n=h.canvasPaddingTop,o=h.canvasPaddingBottom,l&&l.setAxisDimention({x:h.canvasLeft+e,y:h.canvasTop+h.canvasHeight+u,opposite:h.canvasTop-u,axisLength:h.canvasWidth-e-t}),r&&r.setAxisDimention({x:h.canvasLeft-(a.shift||0)-u,y:h.canvasTop+(c||0)+d(n,p),opposite:h.canvasRight+u,axisLength:h.canvasHeight-(c||0)-d(n,p)-d(o,p)}),s&&s.postSpaceManager()}var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getName=function(){return"MSBarCartesian"},t.getName=function(){return"MSBarCartesian"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.enablemousetracking=!0},t.prototype._feedAxesRawData=function(){return s.call(this)},t.prototype._spaceManager=function(){c.call(this)},t.prototype._postSpaceManagement=function(){h.call(this)},t.prototype.getDSdef=function(){return a["default"]},t.prototype.getDSGroupdef=function(){},t}(o["default"]);t.__feedAxesRawData=s,t.__spaceManager=c,t.__postSpaceManagement=h,t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o=l(n(259)),a=n(355),i=l(n(356)),r=l(n(357));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.registerFactory("dataset",i["default"],["vCanvas"]),n.registerFactory("legend",r["default"]),n}return s(t,e),t.getName=function(){return"MSCartesian"},t.prototype.getName=function(){return"MSCartesian"},t.prototype.getType=function(){return"chartAPI"},t.prototype._createLayers=function(){e.prototype._createLayers.call(this);var t=this.getFromEnv("animationManager");!this.getChildContainer("legendGroup")&&this.addChildContainer("legendGroup",t.setAnimation({el:"group",attr:{name:"legend"},component:this,container:this.getContainer("parentgroup"),label:"group"}))},t.prototype._manageLegendSpace=function(){a._manageLegendSpace.call(this)},t.prototype.manageGradientLegendSpace=function(e){return a.manageGradientLegendSpace.call(this,e)},t}(o["default"]);t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0,t.manageGradientLegendSpace=t._manageLegendSpace=undefined;var o=n(118);t._manageLegendSpace=function(){var e,t,n,a,i=this.config,r=this.getChildren("legend")&&this.getChildren("legend")[0],l=this.getChildren("gLegend")&&this.getChildren("gLegend")[0],s=this.getFromEnv("dataSource").colorrange,c=i.hasLegend,h={},u=this.hasGradientLegend,p=this.getFromEnv("dataSource").chart,d=(0,o.pluckNumber)(p.mapbycategory,0);u&&s&&(0,o.pluckNumber)(s.gradient)&&!d?(e=l.conf,u=!0,i.gLegendEnabled=!0,a=.5,t=e.legendPosition):(e=r&&r.config,u=!1,i.gLegendEnabled=!1,a=(t=e&&e.legendPos)===o.POSITION_RIGHT?.8:.4),n=t===o.POSITION_RIGHT?i.availableWidth*a:i.availableHeight*a,u?h=this.manageGradientLegendSpace(n):!1!==c&&r&&!r.getState("removed")&&(h=r&&r._manageLegendPosition(n)),this._allocateSpace({bottom:h&&h.bottom||0,right:h&&h.right||0})},t.manageGradientLegendSpace=function(e){var t,n,a,i,r=this.config,l=this.getFromEnv("gLegend"),s=l&&l.conf;return r.gLegendPadding=(0,o.pluckNumber)(this.getFromEnv("chart-attrib").legendpadding,10),a=Math.min(r.gLegendPadding,.5*e),s?(t=s.legendPosition,i=l.getLogicalSpace(e),n=t===o.POSITION_BOTTOM?{bottom:(i.height||0)+a}:{right:(i.width||0)+a}):n={bottom:0,right:0},n}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n,a=e.getFromEnv("dataSource").dataset,i=void 0,r=i=e.getChildren().canvas[0].getChildren("vCanvas")[0],l=e.config.defaultDatasetType||"",s=void 0;a?((n=e.getDSGroupdef())&&((0,o.componentFactory)(i,n,"datasetGroup_"+l,1,[a]),s=i.getChildren("datasetGroup_"+l)),s&&(r=s[0]),t=e.getDSdef(),(0,o.datasetFactory)(r,t,"dataset",a.length,a)):e.setChartMessage()};var o=n(118)},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=void 0;(0,a.componentFactory)(e,r["default"],"legend"),(t=e.getChildren("legend")[0]).configure(),e.addToEnv("legend",t),e.config.showLegend||t.remove()};var o,a=n(118),i=n(358),r=(o=i)&&o.__esModule?o:{"default":o}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118),a=n(122),i=h(n(131)),r=h(n(359)),l=n(125),s=h(n(361)),c=n(129);function h(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var p={left:o.POSITION_START,right:o.POSITION_END,center:o.POSITION_MIDDLE},d=Math,g=d.min,f=d.max,m=d.floor,b=d.ceil,v=o.preDefStr.NORMAL,y={fontWeight:{1:o.preDefStr.BOLD,0:v},fontStyle:{1:"italic",0:v},textDecoration:{1:"underline",0:o.preDefStr.noneStr}},x=function(e){var t=void 0,n=void 0;return{dragstart:function(){t=e.config.xL||e.config.xPos,n=e.config.yL||e.config.yPos},dragmove:function(o){var a,i,r=o.originalEvent.data[0],l=o.originalEvent.data[1],s=e.config,h=e.getFromEnv("chartConfig"),u=(s.borderWidth||0)+2;a=g(f(t+r,u),h.width-s.width-u),i=g(f(n+l,u),h.height-s.height-u),s.xPos=s.xL=a,s.yPos=s.yL=i,e.addJob("draw",e.dragDraw,c.priorityList&&c.priorityList.draw)}}};(0,l.addDep)({name:"legendAnimation",type:"animationRule",extension:s["default"]});var C=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=n;return o._stateCosmetics={},o._legendState=[],o.dragDraw=function(){o.draw()},o.drawScroll=function(){o.createItemGroup()},o.config.handlers=x(o),n}return u(t,e),t.prototype.createItem=function(e){var t;return t=new r["default"],this.attachChild(t,"legendItem"),t.setLinkedItem("owner",e),t.addEventListener("mouseover",function(){t.setLegendState("hover",!0)}),t.addEventListener("mouseout",function(){t.removeLegendState("hover")}),t.getId()},t.prototype.getItem=function(e){var t=this.getChildren().legendItem;if(void 0===e)return!1;if(t)for(var n=0;n<t.length;n++)if(t[n].getId()===e)return t[n]},t.prototype.getSortedLegendItems=function(){var e,t=this.getChildren("legendItem")||[],n=this.config.reverselegend,o={},a=[],i=void 0;for(i=0,e=t.length;i<e;i++)void 0===t[i].config.index?o[e+i]=t[i]:o[t[i].config.index]=t[i];return Object.keys(o).sort(function(e,t){return n?t-e:e-t}).forEach(function(e){a.push(o[e])}),a},t.prototype.disposeItem=function(e){var t=this.getItem(e);t&&t.remove()},t.prototype.getName=function(){return"legend"},t.prototype.getType=function(){return"legend"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.enabled=!0,t.symbolWidth=12,t.borderRadius=1,t.lastScrollPos=0,t.oriSymbolPadding=3,t.textPadding=4,t.scrollY=0,t.backgroundColor="#FFFFFF",t.initialItemX=0,t.title={text:o.BLANKSTRING,x:0,y:0,padding:2},t.scroll={},t.itemStyle={}},t.prototype.createLegendGroup=function(){var e,t=this.config,n=this.getFromEnv("chart"),o=n.config,a=this.getFromEnv("animationManager"),i=.5*(t.borderWidth||0)+2,r=this.getContainer("legendGroup");t.xL&&(t.xL=g(f(t.xL,i),o.width-t.width-i)),t.yL&&(t.yL=g(f(t.yL,i),o.height-t.height-i)),e=a.setAnimation({el:r||"group",attr:{name:"legendGroup",transform:["T",t.xL||t.xPos,t.yL||t.yPos]},container:n.getChildContainer("legendGroup"),component:this}),r||this.addContainer("legendGroup",e)},t.prototype.draw=function(){this.createLegendGroup(),this.drawLegendBox(),this.createItemGroup(),this.drawCaption(),this.decideScroll()},t.prototype.decideScroll=function(){var e=this.getFromEnv("animationManager"),t=this.config,n=this.getLinkedItem("legendScrollBar");t.scroll.enabled?(this.createScrollGroup(),this.createScrollBar()):t.hasScroll&&(this.removeLinkedItem("legendScrollBar"),e.setAnimation({el:this.getChildContainer("itemGroup"),attr:{"clip-rect":null,transform:"none"},component:this}),n.config.node.hide(),t.scrollY=0,t.hasScroll=!1)},t.prototype.createItemGroup=function(){var e,t=this.getFromEnv("animationManager"),n=this.getContainer("legendGroup"),o=this.getChildContainer("itemGroup");return e=t.setAnimation({el:o||"group",attr:{name:"item",transform:["T",0,this.config.scrollY||0]},container:n,component:this}),o||this.addChildContainer("itemGroup",e),e},t.prototype.createScrollGroup=function(){var e,t=this.getFromEnv("animationManager"),n=this.getChildContainer("scrollGroup"),o=this.getContainer("legendGroup");e=t.setAnimation({el:n||"group",attr:{name:"scrollGroup"},container:o,component:this,label:"scroller"}),n||this.addChildContainer("scrollGroup",e)},t.prototype.createScrollBar=function(){var e,t,n,i,r,l,s,h=this,u=h.config,p=h.getLinkedItem("legendScrollBar"),d=h.getChildContainer("itemGroup"),g=h.getFromEnv("toolbox"),f=h.getFromEnv("toolBoxAPI"),m=f&&f.Scroller,b=u.borderWidth||0,v=.5*b,y=(0,o.pluckNumber)(u.padding,4),x=.5*y,C=u.scroll,k=u.width,w=u.height;e={conf:{isHorizontal:!1,color:(0,a.convertColor)(h.getFromEnv("chart-attrib").legendscrollbgcolor)},handler:{scroll:function(e){u.lastScrollPos=e,u.scrollY=(n-u.totalHeight)*e,h.addJob("scrollDraw",h.drawScroll,c.priorityList&&c.priorityList.draw)},mousedown:function(e){e.preventDefault(),e.stopPropagation()}}},p||((p=new m).configure(e.conf,(g.idCount||0)+1,g.pId,h.getFromEnv("chartInstance").id),p.attachEventHandlers(e.handler),this.setLinkedItem("legendScrollBar",p),this.config.hasScroll=!0),t=","+k+","+(n=Math.max(w-y,0)),d.attr({"clip-rect":"0,"+x+t}),r=k-10+x-b,l=v,s=Math.max(w-b,0),i={scrollPosition:C.scrollPosition||0,scrollRatio:(n+y)/u.totalHeight,showButtons:!1,displayStyleFlat:C.flatScrollBars},p.draw(r,l,{height:s,scrollRatio:i.scrollRatio,startPercent:0,scrollPosition:u.lastScrollPos||0,color:u.legendScrollBgColor,parentLayer:h.getChildContainer("scrollGroup")})},t.prototype.drawCaption=function(){var e,t,n,a,i=this.getChildContainer("itemGroup"),r=this.getGraphicalElement("caption"),l=this.getFromEnv("animationManager"),s=this.config,c=(0,o.pluckNumber)(s.padding,4),h=s.scroll.enabled,u=s.width;if(s.title&&s.title.text!==o.BLANKSTRING&&s.validLegendItem){switch(s.title.align){case o.POSITION_START:n=c;break;case o.POSITION_END:n=u-c-(h?10:0);break;default:n=.5*u}t=s.title.style,e={text:s.title.text,title:s.title.originalText||o.BLANKSTRING,x:n,y:c,fill:s.title.style.color,direction:s.textDirection,"line-height":t.lineHeight,"vertical-align":o.POSITION_TOP,"text-anchor":s.title.align,opacity:1},a={"font-weight":t.fontWeight,"font-style":t.fontStyle,"font-family":t.fontFamily,"font-size":t.fontSize},r&&r.show(),r?l.setAnimation({el:r,attr:e,component:this}):(r=l.setAnimation({el:"text",attr:e,component:this,container:i}),(r=this.addGraphicalElement("caption",r)).css(a)),this.getFromEnv("toolTipController").enableToolTip(r,s.title.originalText)}else r&&l.setAnimation({el:r,component:this,doNotRemove:!0,callback:function(){r.hide()}})},t.prototype.drawLegendBox=function(){var e,t=this.getFromEnv("animationManager"),n=this.config,o=this.getContainer("legendGroup"),a=n.width,i=this.getGraphicalElement("box"),r=n.height,l=n.borderRadius,s=n.backgroundColor,c=n.borderColor,h=n.borderAlpha,u=n.backgroundAlpha,p=n.borderWidth||0;return e=t.setAnimation({el:i||"rect",attr:{x:0,y:0,width:a,height:r,r:l,stroke:c,"stroke-width":p,fill:s||"none","stroke-opacity":h/100,"fill-opacity":u/100,cursor:n.legendAllowDrag?"move":"default"},container:o,component:this,label:"legendGroup"}),i||(this.addGraphicalElement("box",e),e.shadow(n.shadow)),e},t.prototype.getPosition=function(){var e,t,n,a,i,r=this.getFromEnv("chart").config,l=this.config,s=r.height-r.canvasBottom,c=r.canvasLeft,h=r.canvasWidth,u=l.chartMarginLeft||0,p=l.chartMarginRight||0,d=l.chartMarginBottom||0,g=r.actionBarHeight||0,f=l.actualCanvasMarginLeft||0,m=r.actualCanvasMarginBottom||0,b=r.actualCanvasMarginRight||0,v=l.alignLegendWithCanvas,y=r.height,x=r.canvasTop,C=l.width||0,k=l.height||0,w=r.borderWidth,S=r.oriCanvasLeft,L=r.oriTopSpace,A=r.oriBottomSpace,N=0,_=l.borderWidth||0;return l.legendPos===o.POSITION_RIGHT&&(l.align=o.POSITION_RIGHT,l.verticalAlign=o.POSITION_MIDDLE,i=l.layout="vertical"),i?(e=r.width-p-b-C-w,t=(N=(0,o.pluckNumber)(L,x))+.5*(y-(0,o.pluckNumber)(A,s)-N-k)+(l.y||0)):(n=r.width-(u+f+(p+b)),a=v?h-C:n-C,e=(v?(0,o.pluckNumber)(S,c):u+f)+a/2,t=y-k-m-d-g),(0,o.crispBound)(e,t,C,k,_)},t.prototype.allocatePosition=function(){var e=this.config,t=this.getPosition();e.xPos=t.x,e.yPos=t.y,e.width=t.width,e.height=t.height},t.prototype._manageLegendPosition=function(e){var t=this.config,n=t.legendPos;return t.padding=4,t.textPadding=4,n===o.POSITION_RIGHT?this._placeLegendBlockRight(e):this._placeLegendBlockBottom(e)},t.prototype._placeLegendBlockBottom=function(e){var t,n,a,i,r,l,s,c,h,u,p,d,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D=this.getFromEnv("chart"),O=D.config,I=D.getFromEnv("chartWidth"),M=D.getFromEnv("chartHeight"),R=O.canvasLeft,V=O.width-(O.canvasRight||0),B=D.getFromEnv("smartLabel"),G=this.config,j=G.chartMarginLeft,H=G.chartMarginRight,W=G.chartMarginTop,z=G.alignLegendWithCanvas,U=G.minimiseWrappingInLegend,q=G.legendScale,Y=G.numColumns,K=G.padding,X=2*e,Z=2*K,J={width:Z,height:Z},$=G.title,Q=$.padding,ee=this.getStateCosmetics("default"),te=parseInt(ee.text["font-size"],10)||10,ne=this.getSortedLegendItems(),oe=ne.length,ae=G.oriSymbolPadding,ie=G.textPadding,re=G.legendPadding,le=O.canvasMarginRight,se=O.canvasMarginLeft,ce=D.getChildren("yAxis"),he=ce&&ce[0].config.isVertical?ce:D.getChildren("xAxis"),ue=he&&he[0],pe=he&&he[1],de=ue&&ue.config||{},ge=pe&&pe.config||{},fe=de.nameMaxW,me=ge.nameMaxW,be=de.name&&de.name.style||{},ve=ge.name&&ge.name.style||{},ye=de.axisName||o.BLANKSTRING,xe=ge.axisName||o.BLANKSTRING,Ce=0,ke=0,we=0,Se=0,Le=0,Ae=0,Ne=0,_e=0,Pe=[],Fe=!1,Ee=0,Te=0,De=O.canvasWidth-O.canvasMarginLeft-O.canvasMarginRight,Oe=De;if(G.paddingBottom=O.height-O.canvasBottom,B.useEllipsesOnOverflow(O.useEllipsesWhenOverflow),B.setStyle(be),k=B.getOriSize(ye),B.setStyle(ve),w=B.getOriSize(xe),(S=te+1)<=0&&(S=1),ae*=q,(S=g(S*=q,De-=Z))<=0&&(ae=S=0),G.symbolWidth=S,G.textPadding=4,G.legendHeight=u=S+2*ae,G.rowHeight=a=f(parseInt(ee.text["line-height"],10)||12,u),n=ie+ae+K,B.setStyle((0,o.extend2)({},ee.text)),r=B.getOriSize(o.TESTSTR).height,i=re+G.borderWidth/2+1,i=g(i,e-r-8),De<(re=.05*a)&&(G.padding=re=De=0),(k||w)&&(x=(0,o.pluckNumber)(k.height,0)>(0,o.pluckNumber)(w.height,0)?(C=fe)&&k.width:(C=me)&&w.width),De=z?De:I-(x+W>M-e?2*C+H+j+le+se:H+j+se+le),G.initialItemY=0,G.initialItemX=0,G.showLegend&&0!==oe){for(l=0;l<oe;l+=1)P=F=(t=ne[l]).config||(t.config={}),(E=F.name=(0,o.parseUnsafeString)(P.label))===o.BLANKSTRING||0===P.enabled||!1===P.enabled||t.getState("removed")?F.enabled=0:(F.enabled=1,we+=1,s=!0,c=B.getOriSize(E),Ce=f(Ce,c.width),Ae=f(Ae,g(c.height,X)),ke+=c.width);if(G.validLegendItem=s,Se=ke/we,ke+=(h=u+re+ie+ae+Z)*we,G.x=(R-j-V+H)/2,G.x=!z&&ke>Oe?0:G.x,s){for(Se+=h,Ce+=h,Y>0&&we<Y&&(Y=we),ke<=De&&(Y<=0||Y===we)?(Y=we,Le=Se=ke/we,Fe=!0,Ae>a&&(_e=(Ae-a)/2,a=Ae)):Y>0&&(Le=De/Y)>Se?Le>Ce&&(Le=Ce):De>Ce&&(U||1.5*Se>Ce)?(we<(Y=m(De/Ce))&&(Y=we),Le=Ce):De>=2*Se?(we<(Y=m(De/Se))&&(Y=we),(Le=m(De/Y))>Ce&&(Le=Ce)):(Y=1,Le=De),G.itemWidth=Le,(v=b(Le-h))<0&&(ae=v=ie=0),G.symbolPadding=ae,G.textPadding=ie,G.width=Le*Y-re,$.oriText!==o.BLANKSTRING&&(B.setStyle($.style),c=B.getSmartText($.oriText,De,X),$.text=c.text,c.tooltext&&($.originalText=c.tooltext),_=c.width+Z,G.width<_&&(G.initialItemX=(_-G.width)/2,G.width=_),G.initialItemY=Ne=c.height+Q),B.setStyle((0,o.extend2)({},ee.text)),l=0;l<oe;l+=1)if(0!==(F=(t=ne[l]).config).enabled){if(0===v&&(Pe[Te]=!0,F.name=o.BLANKSTRING,y=1,p=parseInt(Te/Y,10),d=Te%Y,F._legendX=d*Le,F._legendY=p*a+Z,F._legendH=y*a,F._totalWidth=S+ae),Fe)(c=B.getOriSize(F.name)).height<a&&(F._legendTestY=(a-c.height)/2),F._markerYGutter=_e,F._legendX=Ee,F._legendY=Z,F._legendH=a,F._totalWidth=S+n+c.width,Ee+=c.width+h;else{for(c=B.getSmartText(F.name,v,X),F.name=c.text,c.tooltext&&(F.originalText=c.tooltext);!0===Pe[Te];)Te+=1;for(A=c.height/a,N=Te,y=0;y<A;y+=1,N+=Y)Pe[N]=!0;c.height<a&&(F._legendTestY=(a-c.height)/2),p=parseInt(Te/Y,10),d=Te%Y,F._legendX=d*Le,F._legendY=p*a+Z,F._legendH=y*a,F._totalWidth=S+n+c.width}Te++}L=Fe?1:b(Pe.length/Y),J.height+=L*a+Ne,G.height=G.totalHeight=J.height,G.rowHeight=a,G.legendNumColumns=Y,G.height-2*ae>e?(G.height=e,(T=G.scroll||(G.scroll={})).enabled=!0,T.flatScrollBars=G.flatScrollBars,T.scrollBar3DLighting=G.scrollBar3DLighting,G.width=G.width+12>De?G.width:G.width+12):G.scroll.enabled=!1,i+=G.height,G.isActive=!0,G.enabled=!0}else G.enabled=!1,G.width=0,i=0}else i=0,G.height=0,G.width=0;return{bottom:i,right:0}},t.prototype._placeLegendBlockRight=function(e){var t,n,a,i,r,l,s,c,h,u,p=this.config,d=this.getFromEnv("chart"),m=d.config,b=d.getFromEnv("smartLabel"),v=d.getChildren("canvas")[0].config.canvasBorderThickness||0,y=p.textPadding,x=p.title.padding,C=p.oriSymbolPadding,k=p.legendPadding,w=p.legendScale,S=this.getStateCosmetics("default"),L=parseInt(S.text["font-size"],10),A=2*m.canvasHeight,N=0,_=2*p.padding,P={width:_,height:_},F={},E=!1,T=this.getSortedLegendItems(),D=T.length,O=0;if(p.initialItemY=0,p.initialItemX=0,(e-=_+k)<k&&(p.padding=k=e=0),(i=L+1)<=0&&(i=1),C*=w,(i=g(i*=w,e))<=0&&(C=i=0),p.symbolPadding=C,p.symbolWidth=i,p.legendHeight=r=i+2*C,p.rowHeight=f(parseInt(S.text["line-height"],10)||12,r),t=k+p.borderWidth/2+v,(a=e-r-k-y)<0&&(a=0),b.useEllipsesOnOverflow(m.useEllipsesWhenOverflow),b.setStyle((0,o.extend2)({},S.text)),p.showLegend&&0!==D){for(O=0;O<D;O+=1)h=l=(u=T[O]).config||(u.config={}),s=l.name=(0,o.parseUnsafeString)(h.label),l._legendX=0,l._legendY=P.height,0!==h.enabled&&!1!==h.enabled&&s!==o.BLANKSTRING?(l.enabled=1,E=!0,0===a?(P.height+=l._legendH=r,l.name=o.BLANKSTRING,l._totalWidth=i+C):(n=b.getSmartText(s,a,A),l.name=n.text,n.tooltext&&(l.originalText=n.tooltext),n.height<r&&(l._legendTestY=(r-n.height)/2),l._totalWidth=i+C+y+n.width+k,P.height+=l._legendH=f(n.height,r),N=f(n.width,N))):l.enabled=0;p.validLegendItem=E,E?(p.itemWidth=N+r+k+y,p.width=p.itemWidth+_,p.title.oriText!==o.BLANKSTRING&&(b.setStyle(p.title.style),n=b.getSmartText(p.title.oriText,e,A),p.title.text=n.text,n.tooltext&&(p.title.originalText=n.tooltext),c=n.width+_,p.width<c&&(p.initialItemX=(c-p.width)/2,p.width=c),p.initialItemY=n.height+x,P.height+=p.initialItemY),p.height=p.totalHeight=P.height,t=g(p.width+t,e),F.right=t+k,p.isActive=!0,p.enabled=!0):(p.enabled=!1,p.width=0,F.right=0)}else F.right=0,p.height=0,p.width=0;return F},t.prototype.postSpaceManager=function(){var e=this.config,t=e.legendPos,n=this.getFromEnv("chart").config.canvasHeight;t===o.POSITION_RIGHT&&(e.height>n?(e.height=n,e.scroll.enabled=!0,e.scroll.flatScrollBars=e.flatScrollBars,e.scroll.scrollBar3DLighting=e.scrollBar3DLighting,e.width+=(e.scroll.scrollBarWidth=10)+(e.scroll.scrollBarPadding=2)):e.scroll.enabled=!1)},t.prototype.configure=function(){var e,t,n,i,r,l=this.config,s=this.getFromEnv("chart"),c=s.config,h=this.getFromEnv("style"),u=s.getFromEnv("chart-attrib"),d=s.config.is3D,g=this.getFromEnv("color-manager"),m=d?o.chartPaletteStr.chart3D:o.chartPaletteStr.chart2D,b=l.interactiveLegend=!1!==s.hasInteractiveLegend&&Boolean((0,o.pluckNumber)(u.interactivelegend,1)),v=(0,o.pluckNumber)(u.useroundedges,0),x=h.outCancolor,C=(0,o.pluck)(u.legenditemfont,h.outCanfontFamily),k=(0,o.pluckNumber)(u.legendiconscale,1),w=(0,o.pluckFontSize)(u.legenditemfontsize,h.fontSize)+"px",S=(0,o.pluck)(u.legenditemfontcolor,x).replace(/^#?([a-f0-9]+)/gi,"#$1"),L=(0,a.getFirstColor)((0,o.pluck)(u.legenditemhoverfontcolor,S));l.isActive=!1,l.chartMarginTop=c.origMarginTop,l.chartMarginRight=c.origMarginRight,l.chartMarginBottom=c.origMarginBottom,l.chartMarginLeft=c.origMarginLeft,l.reverselegend=(0,o.pluckNumber)(u.reverselegend,0),l.showLegend=(0,o.pluckNumber)(u.showlegend,!s.dontShowLegendByDefault,1),e=(0,o.setLineHeight)({fontSize:w}),l.legendPos=(0,o.pluck)(u.legendposition,s.legendposition,o.POSITION_BOTTOM).toLowerCase(),l.numColumns=(0,o.pluckNumber)(u.legendnumcolumns,0),l.xL=l.yL=0,(k<=0||k>5)&&(k=1),l.drawCustomLegendIcon=(0,o.pluckNumber)(u.drawcustomlegendicon,0),l.legendScale=k,l.legendPadding=(0,o.pluckNumber)(u.legendpadding,7),l.alignLegendWithCanvas=c.alignLegendWithCanvas,l.title.style={fontFamily:(0,o.pluck)(u.legendcaptionfont,C),fontSize:(0,o.pluckFontSize)(u.legendcaptionfontsize,h.fontSize)+"px",color:(0,o.pluck)(u.legendcaptionfontcolor,x).replace(/^#?([a-f0-9]+)/gi,"#$1"),fontWeight:y.fontWeight[(0,o.pluckNumber)(u.legendcaptionfontbold,1)]||o.BLANKSTRING},r=u.legendcaptionalignment?u.legendcaptionalignment.toLowerCase():p.center,l.title.align=p[r]||p.center,l.title.style["text-anchor"]=l.title.align,l.padding=4,t=(0,o.pluck)(u.legendbordercolor,g.getColor(m.legendBorderColor)),n=l.borderAlpha=(0,o.pluckNumber)(u.legendborderalpha,100),l.borderColor=(0,a.convertColor)(t,n),l.borderWidth=(0,o.pluckNumber)(u.legendborderthickness,!v||u.legendbordercolor?1:0),l.borderRadius=(0,o.pluckNumber)(v,0),l.backgroundAlpha=i=(0,o.pluckNumber)(u.legendbgalpha,100),l.backgroundColor=(0,a.convertColor)((0,o.pluck)(u.legendbgcolor,g.getColor(m.legendBgColor)),i),l.symbol3DLighting=Boolean((0,o.pluckNumber)(u.use3dlighting,u.useplotgradientcolor,1)),l.shadow=Boolean((0,o.pluckNumber)(u.legendshadow,1)),l.shadow&&(l.shadow={enabled:l.shadow,opacity:f(n,i)/100}),l.prevReversed=Boolean((0,o.pluckNumber)(l.reversed,0)),l.reversed=Boolean((0,o.pluckNumber)(u.reverselegend,0)),l.lineWidth=(0,o.pluckNumber)(u.linethickness,2),l.borderRadius=(0,o.pluckNumber)(u.legendborderradius,v?3:0),l.legendAllowDrag=Boolean((0,o.pluckNumber)(u.legendallowdrag,0)),l.title.oriText=(0,o.parseUnsafeString)((0,o.getFirstValue)(u.legendcaption,o.BLANKSTRING)),l.legendScrollBgColor=(0,a.getFirstColor)((0,o.pluck)(u.legendscrollbgcolor,u.scrollcolor,g.getColor("altHGridColor"))),l.legendScrollBarColor=(0,o.pluck)(u.legendscrollbarcolor,t),l.legendScrollBtnColor=(0,o.pluck)(u.legendscrollbtncolor,t),l.minimiseWrappingInLegend=(0,o.pluckNumber)(u.minimisewrappinginlegend,0),l.flatScrollBars=(0,o.pluckNumber)(u.flatscrollbars,0),l.scrollBar3DLighting=(0,o.pluckNumber)(u.scrollbar3dlighting,1),l.orderReversed=!1,this.setStateCosmetics("hidden",{symbol:{fill:(0,a.convertColor)((0,o.pluck)(u.legenditemhiddencolor,"cccccc").replace(/^#?([a-f0-9]+)/gi,"#$1")),stroke:(0,a.convertColor)((0,o.pluck)(u.legenditemhiddencolor,"cccccc").replace(/^#?([a-f0-9]+)/gi,"#$1"))},text:{fill:(0,a.convertColor)((0,o.pluck)(u.legenditemhiddencolor,"cccccc").replace(/^#?([a-f0-9]+)/gi,"#$1"))}}),this.setStateCosmetics("default",{text:{fill:(0,a.convertColor)(S),"font-family":C,cursor:b?o.preDefStr.POINTER:"default","font-size":w,"line-height":e,"vertical-align":o.POSITION_TOP,"text-anchor":o.POSITION_START,direction:"rtl"===c.textDirection?"rtl":"initial","font-weight":y.fontWeight[(0,o.pluckNumber)(u.legenditemfontbold,0)]||o.BLANKSTRING},symbol:{bgColor:(0,o.pluck)(u.legendiconbgcolor),cursor:b?o.preDefStr.POINTER:"default",borderColor:(0,o.pluck)(u.legendiconbordercolor),bgAlpha:(0,o.pluck)(u.legendiconbgalpha,u.legendiconalpha,100),borderAlpha:(0,o.pluck)(u.legendiconborderalpha,u.legendiconalpha,100),borderThickness:(0,o.pluckNumber)(u.legendiconborderthickness),startAngle:(0,o.pluckNumber)(u.legendiconstartangle,45),sides:(0,o.pluckNumber)(u.legendiconsides,4)}}),this.setStateCosmetics("hover",function(e,t){return t.hasState("hidden")||(e.text||(e.text={}),e.text.fill=(0,a.convertColor)(L.replace(/^#?([a-f0-9]+)/gi,"#$1")),e.text.cursor="inherit"),e}),l.legendAllowDrag&&!l._dragEvtListenerBinded?(this.addEventListener("fc-dragstart",l.handlers.dragstart),this.addEventListener("fc-dragmove",l.handlers.dragmove),l._dragEvtListenerBinded=!0):(this.removeEventListener("fc-dragstart",l.handlers.dragstart),this.removeEventListener("fc-dragmove",l.handlers.dragmove),l._dragEvtListenerBinded=!1)},t.prototype.getLegendState=function(){return this._legendState},t.prototype.hasState=function(e){var t,n,o=this.getLegendState();for(t=0,n=o.length;t<n;t++)if(o[t]===e)return!0;return!1},t.prototype.setLegendState=function(e,t){this.hasState(e)||(t?this._legendState.push(e):this._legendState.unshift(e)),this.asyncDraw()},t.prototype.removeLegendState=function(e){var t,n,o=1;if(e)for(t=0,n=this._legendState.length;t<n&&o;t++)e===this._legendState[t]&&(this._legendState.splice(t,1),o=0);else this._legendState.length=0;this.asyncDraw()},t.prototype.setStateCosmetics=function(e,t){this._stateCosmetics[e]=t},t.prototype.removeStateCosmetics=function(e){delete this._stateCosmetics[e]},t.prototype.getStateCosmetics=function(e){return this._stateCosmetics[e]},t.prototype.hide=function(){var e=this.getFromEnv("chart").getChildContainer("legendGroup");e&&e.hide()},t}(i["default"]);t["default"]=C},function(e,t,n){"use strict";t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=n(118),i=n(122),r=c(n(131)),l=n(125),s=c(n(360));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=a.preDefStr.POINTER,p="M",d="L",g=function(e,t){var n=e.config,o=e.getLinkedParent().config,r=o.symbolWidth,l=(0,a.pluckNumber)(o.padding,4),s=.5*r,c=(o.initialItemX||0)+n._legendX+l,h=(o.initialItemY||0)+n._legendY-l,p=c+o.symbolPadding+s,d=h+(n._markerYGutter||0)+o.symbolPadding+s,g=(0,i.mapSymbolName)(n.anchorSide),f=n.symbol=g&&g.split("_")||[],m="spoke"===f[0]?1:0;return("line"===n.type||n.drawLine)&&(s*=.6),{path:(0,a.polyPathToPath)([f[1]||2,p,d,s,n.startAngle,n.spoke||m]),cursor:t.cursor||u,stroke:t.stroke,fill:t.fill,"stroke-width":t["stroke-width"]||.5}};(0,l.addDep)({name:"legendItemAnimation",type:"animationRule",extension:s["default"]});var f=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n._stateCosmetics={},n._legendState=[],n}return h(t,e),t.prototype.getName=function(){return"legendItem"},t.prototype.parseLegendCosmetics=function(){var e=this.getLinkedParent(),t=e.getLegendState(),n=this.getLegendState(),o=void 0,i=void 0,r=["default"],l={},s=void 0;for(r=r.concat(t,n),s=0;s<r.length;s++)o=e.getStateCosmetics(r[s]),i=this.getStateCosmetics(r[s]),o&&("function"==typeof o?l=o(l,this):(0,a.extend2)(l,o)),i&&("function"==typeof i?l=i(l,this):(0,a.extend2)(l,i));return l},t.prototype.getType=function(){return"legendItem"},t.prototype.configure=function(e){var t,n,a=this.config;for(t in e)if(e.hasOwnProperty(t))if("object"!==o(e[t]))a[t]=e[t];else{var i=a[t]?a[t]:{};for(n in e[t])i[n]=e[t][n];a[t]=i}},t.prototype.itemClickFn=function(){var e=this.getFromEnv("chart-attrib"),t=(0,a.pluckNumber)(e.interactivelegend,1),n=this.getLinkedItem("owner");t&&n.legendInteractivity(this)},t.prototype.dispose=function(){this.removeEventListener("fc-click",this.click),this.removeEventListener("fc-mouseover",this.mouseover),this._dispose()},t.prototype.getLegendState=function(){return this._legendState},t.prototype.hasState=function(e){var t,n,o=this.getLegendState();for(t=0,n=o.length;t<n;t++)if(o[t]===e)return!0;return!1},t.prototype.setLegendState=function(e,t){this.hasState(e)||(t?this._legendState.push(e):this._legendState.unshift(e)),this.asyncDraw()},t.prototype.removeLegendState=function(e){var t,n,o=1;if(e)for(t=0,n=this._legendState.length;t<n&&o;t++)e===this._legendState[t]&&(this._legendState.splice(t,1),o=0);else this._legendState.length=0;this.asyncDraw()},t.prototype.removeStateCosmetics=function(e){delete this._stateCosmetics[e]},t.prototype.setStateCosmetics=function(e,t){this._stateCosmetics[e]=t},t.prototype.getStateCosmetics=function(e){return this._stateCosmetics[e]},t.prototype.draw=function(){var e,t,n,o,r,l,s,c,h,f,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D,O,I,M,R,V,B,G,j,H,W,z=this.getLinkedParent(),U=z.getFromEnv("chart").config,q=this.getFromEnv("animationManager"),Y=this.config,K=z.config,X=K.legendHeight,Z=K.symbolPadding,J=K.symbolWidth,$=K.interactiveLegend,Q=K.textPadding||2,ee=(0,a.pluckNumber)(K.padding,4),te=K.itemHoverStyle,ne=z.getChildContainer("itemGroup"),oe=K.drawCustomLegendIcon,ae=this.hasState("hidden"),ie={};n=(e=this.parseLegendCosmetics()).symbol,o=K.initialItemX||0,r=K.initialItemY||0,h=Y.type,S=e.symbol.stroke||"000000",L=e.symbol.fill,t=e.symbol.lineWidth||K.lineWidth,N=Y.anchorSide,_=Y.drawLine,f=o+Y._legendX+ee,m=r+Y._legendY-ee,M=this.getGraphicalElement("legendItemBackground"),c=this.getGraphicalElement("legendItemText"),b=this.getGraphicalElement("legendItemLine"),y=this.getGraphicalElement("legendItemSymbol"),!($=(0,a.pluck)(Y.interactiveLegend,$))&&(e.cursor="default"),R=e.text,H=f+X+Q-2,W=m+(Y._legendTestY||0),R.text=Y.name,R.x=H,R.y=W,s=q.setAnimation({el:c||"text",attr:R,component:this,container:ne,label:"icon"}),c||(s=this.addGraphicalElement("legendItemText",s)),s.data("legendItem",Y),V=!1,oe&&!1!==Y.customLegendIcon?(E=!ae&&n.borderColor,T=(0,a.pluck)(n.borderAlpha),P=!ae&&n.bgColor,F=(0,a.pluck)(n.bgAlpha,"100"),D=e.symbol.rawFillColor,L=ae?e.symbol.fill:P||D,L=(0,i.convertColor)(L,F),O=e.symbol.rawStrokeColor,S=ae?e.symbol.stroke:E||O||D,S=(0,i.convertColor)(S,T),x=f+Z+(C=.5*J),l=m+(Y._markerYGutter||0)+Z+C,k="spoke"===(w=(0,i.mapSymbolName)(n.sides)&&(0,i.mapSymbolName)(n.sides).split("_")||[])[0]?1:0,B={path:(0,a.polyPathToPath)([w[1]||2,x,l,C,n.startAngle||0,k]),cursor:e.symbol.cursor||u,stroke:S,fill:L,"stroke-width":(0,a.pluckNumber)(n.borderThickness,1)}):"line"===h||_?(l=m+(Y._markerYGutter||0)+Z+.5*J,j={path:[p,f+Z,l,d,f+Z+J,l]},V=!0,ie={opacity:U.legendiconalpha||1,"stroke-width":t,stroke:S,cursor:e.cursor||u},N&&(B=g(this,e.symbol))):N?B=g(this,e.symbol):"line"!==h&&(S=Y.symbolStroke||S,B={path:function(e,t,n,o,a){var i,r,l,s,c,h,u,g,f,m,b,v=[p],y="Z";switch(a){case"column":case"dragColumn":case"column3D":case"realtimeColumn":case"errorBar2D":r=.5*(i=.25*n),l=.7*o,s=.4*o,v=v.concat([e,t+o,"l",0,-l,i,0,0,l,"z","m",i+r,0,"l",0,-o,i,0,0,o,"z","m",i+r,0,"l",0,-s,i,0,0,s,"z"]);break;case"bar2D":case"bar3D":i=.3*n,r=.6*n,s=(l=o/4)/2,v=v.concat([e,t,d,e+r,t,e+r,t+l,e,t+l,y,p,e,t+l+s,d,e+n,t+l+s,e+n,t+l+s+l,e,t+2*l+s,y,p,e,t+2*(l+s),d,e+i,t+2*(l+s),e+i,t+o,e,t+o,y]);break;case"area":case"area3d":case"areaspline":case"dragArea":case"realTimeArea":case"splinearea":i=.3*n,r=.6*n,l=.6*o,s=.2*o,c=.8*o,v=v.concat([e,t+c,d,e,t+l,e+i,t+s,e+r,t+l,e+n,t+s,e+n,t+c,y]);break;case"pie2D":case"pie3d":case"doughnut2D":case"doughnut3D":r=.9*(i=.5*n),h=e+i+(m=1),g=t+i-m,u=e+i-(b=1),f=t+i+b,v=v.concat([h,g,d,h,g-r+m,"A",r-m,r-m,0,0,1,h+r-m,g,y,p,u,f,d,u,f-r,"A",r,r,0,1,0,u+r,f,y]);break;case"boxandwhisker2d":v=v.concat([e,t,d,e+n,t,e+n,t+o,e,t+o,y]);break;default:v=v.concat([e,t,d,e+n,t,e+n,t+o,e,t+o,y])}return{path:v}}(f+Z,m+(Y._markerYGutter||0)+Z,J,J,h).path,"stroke-width":.5,stroke:S,fill:L,cursor:e.cursor||u}),j&&V?(Object.assign(j,ie),b=q.setAnimation({el:b||"path",attr:j,component:this,callback:function(){this.show()},container:ne}),this.getGraphicalElement("legendItemLine")||(b=this.addGraphicalElement("legendItemLine",b))):b&&b.hide(),B?(B.opacity=(0,a.pluckNumber)(e.symbol.opacity,1),v=q.setAnimation({el:y||"path",attr:B,component:this,callback:function(){this.show()},container:ne,label:"icon"}),y&&y.node||(v=this.addGraphicalElement("legendItemSymbol",v)),v.data("legendItem",Y)):y&&y.hide(),A=e.background&&e.background.legendBackgroundColor?(0,i.convertColor)(e.background.legendBackgroundColor,e.background.alpha):a.TRACKER_FILL,G={x:f,y:m,width:Y._totalWidth,height:Y._legendH,r:0,fill:A,opacity:1,"stroke-width":1,stroke:"none",cursor:e.symbol.cursor||u},I=q.setAnimation({el:M||"rect",attr:G,css:void 0,component:this,label:"background",container:ne}),M||this.addGraphicalElement("legendItemBackground",I),I.data("legendItem",this).data("interactive",$).data("itemHoverStyle",te).data("itemStyle",e)},t}(r["default"]);t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"*.legendItem.legendItem":function(){return{"icon.appearing":function(){return[{initialAttr:{opacity:0},slot:"plot",startEnd:{start:.5,end:1},finalAttr:{opacity:1}}]},"background.appearing":function(e){return[{initialAttr:{opacity:0},slot:"plot",startEnd:{start:.5,end:1},finalAttr:{opacity:e.attr.opacity}}]},"icon.disappearing":function(){return[{finalAttr:{opacity:0},slot:"initial"}]}}}}},function(e,t,n){"use strict";t.__esModule=!0;var o=[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot"}],a=[{slot:"plot",startEnd:{start:0,end:.5}}],i=[{slot:"intial"}];t["default"]={"*.legend.legend":function(){return{"legendGroup.appearing":o,"legendGroup.updating":a,"legendGroup.disappearing":i,"scroller.appearing":o,"scroller.updating":a,"scroller.disappearing":i}}}},function(e,t,n){"use strict";t.__esModule=!0,t.drawLabel=undefined;var o=l(n(331)),a=n(118),i=n(125),r=l(n(363));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=a.preDefStr.visibleStr,h=a.preDefStr.hiddenStr,u=a.preDefStr.POSITION_MIDDLE,p=a.preDefStr.POSITION_START,d=a.preDefStr.POSITION_END,g=Math,f=g.min,m=g.max,b=function(){var e,t,n,o,i,r,l,s,g,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T=this.getFromEnv("chart"),D=T.config,O=this.config.JSONData,I=this.getFromEnv("animationManager"),M=T.getChildren("canvas")[0].config,R=T.config.dataLabelStyle,V=O.data,B=T.config.categories,G=T.config.is3D,j=T.config.isstacked,H=B&&B.length,W=V&&V.length,z=this.getData(),U=T.getFromEnv("smartLabel"),q=M.yDepth,Y=M.xDepth,K=T.getFromEnv("number-formatter"),X="",Z=D.placevaluesinside,J=D.canvasWidth,$=D.canvasLeft,Q=D.valuepadding+2,ee=this.getContainer("labelGroup"),te=this.getSkippingInfo&&this.getSkippingInfo(),ne=te&&te.skippingApplied,oe=te&&te.labelDraw||[],ae=oe.length,ie=this.getState("visible"),re=function(){this.hide()};for(ie&&ee.show(),U.setStyle(R),e=ne?ae:H<W?H:W,i=0;i<e;i++)w=(N=(t=z[o=ne?oe[i]:i])&&t.config)&&N.setValue,void 0!==t&&void 0!==w&&null!==w&&!0!==N.labelSkip?(l=t.graphics)&&(r=V[o],x=t._yPos,C=t._xPos,w=K.getCleanValue(r.value),y=(0,a.pluckNumber)(w)<0,s=t._height,k=t._width,S=j?u:y?Z?p:d:Z?d:p,X=N.displayValue,P=l.label,N.showValue&&(void 0!==(E=X)&&null!==E)&&X!==a.BLANKSTRING&&null!==w?(n={text:X,fill:R.color,"text-bound":[R.backgroundColor,R.borderColor,R.borderThickness,R.borderPadding,R.borderRadius,R.borderDash],"line-height":R.lineHeight,visibility:this.getState("visible")?c:h},L=U.getOriSize(X).width,L+=Q,A=Q,g=x+.5*s,b=C+(y?0:k),v=y?C-$:$+J-(C+k),j?(b=m($+.5*L,b+=.5*(y?k:-k)),b=f($+J-.5*L,b),b-=G?Y:0,g+=G?q:0):Z?k>=L?(b+=y?A:-A,G&&(g+=q,b-=Y)):L<v?(b+=y?-A:A,S=y?d:p,G&&y&&(b-=Y)):(y?(b=C+k+m(L-C-k+$,0)-A,S=d):(b=C-m(L-($+J-C),0)+A,S=p),G&&(b-=Y,g+=q)):v>=L?(b+=y?-A:A,G&&y&&(b-=Y,g+=Y)):(b+=y?A+L:-(A+L),G&&(b-=Y,g+=q)),(b>$+J||b<$)&&(b=$+4,S=p),n["text-anchor"]=S,n.x=b,n.y=g,n["text-bound"]=[R.backgroundColor,R.borderColor,R.borderThickness,R.borderPadding,R.borderRadius,R.borderDash],n.opacity=ie?1:0,_=I.setAnimation({el:P||"text",container:ee,component:this,attr:n,callback:!ie&&re,label:"plotLabel"}),P||(l.label=_)):l.label&&(l.label=I.setAnimation({el:l.label,component:this}))):((F=t&&t.graphics)&&F.label&&F.label.hide(),N&&delete N.labelSkip);this.config.labelDrawn=!0};(0,i.addDep)({name:"barAnimation",type:"animationRule",extension:r["default"]});var v=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"bar2D"},t.prototype.drawLabel=function(){b.call(this)},t}(o["default"]);t.drawLabel=b,t["default"]=v},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118);t["default"]={"initial.dataset.bar2D":function(){var e=this,t=e.getFromEnv("chart"),n=t.config.yDepth||0,a=e.getFromEnv("yAxis");return{"rect.appearing":function(i){var r,l,s,c,h=a.getPixel(a.getAxisBase())+(t.isBar?-n:n),u=i.index,p=e.components.data[u],d=i.attr;return r=d.x,l=d.width,c=Math.sign(r+l/2-h),s=1===c?r:r+l,p._posWRT0=c,[{initialAttr:function(){var e={};return e.x=s,e.width=0,e.opacity=0,e},finalAttr:{opacity:1},startEnd:function(){var t=i.length;return o.animHelperFN.getTimeByValue(o.animHelperFN.animByWeight(u,t,.6),{startPx:h,endPx:1===c?e.config.yAxisMaxPixel:e.config.yAxisMinPixel},{startPx:s,endPx:1===c?d.x+d.width:d.x})},hookFn:function(){this.attr({opacity:1})},effect:"linear",slot:"plot"}]},"plotLabel.appearing":function(){return[{initialAttr:{opacity:0},slot:"final"}]},"*":null}}}},,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.hideFn=t.plotClickHandler=t.labelClickFn=t.trimData=t.plotGraphicClick=undefined;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=p(n(347)),i=n(118),r=n(122),l=n(125),s=p(n(370)),c=p(n(211)),h=n(129),u=p(n(172));function p(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var g=(0,l.getDep)("redraphael","plugin"),f=void 0,m=window,b=m.document,v=!i.hasSVG,y="createTouch"in b,x=y&&!(m.navigator.maxTouchPoints||m.navigator.msMaxTouchPoints),C=i.preDefStr.visibleStr,k=8===b.documentMode?C:"",w=Math,S=w.atan2,L=w.sin,A=w.cos,N=w.max,_=w.min,P=w.abs,F=w.ceil,E=w.floor,T=w.PI,D=T/2,O=180/w.PI,I=2*T,M=T+D,R=function(e,t,n){return n.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,component:n,label:"group"})},V=function(e,t,n,o,a){return S((t-n[1]-o.top)/a,e-n[0]-o.left)},B=function(e,t){return function(n){!t.data("plotItem").seriesData.isRotating&&e.plotGraphicClick.call(t,n)}},G=function(e){return function(t){var n,a,i,r,l,s,c,h,u,p,d,g,f=this.element||this,m=f.plotItem||f.data("plotItem"),b=f.data("eventArgs")||{},v=m.chart,C=e.getFromEnv("animationManager"),k=m.index,w=e.config,S=w.enableMultiSlicing,L=e.components.data[k],A=L.graphics,N=L.config,_=N.doNotSlice,P=N.slicedTranslation;if(!w.isRotating&&t&&v.plotEventHandler(f,t),!(w.isRotating||w.singletonCase||_||(a=!S&&e.sliceInOtherPies(k),(l=N.sliced)&&a))){if(y&&!x){if(p=(new Date).getTime(),m.lastSliceTimeStamp&&p-m.lastSliceTimeStamp<400)return;m.lastSliceTimeStamp=p}return i=A.element,h=A.connector,r=A.label||A.dataLabel,P="object"===(void 0===P?"undefined":o(P))?"t"+P:P,u=N.connectorPath,s=(l?-1:1)*N.transX,c=(l?-1:1)*N.transY,d=i.data("eventArgs")||i.data("eventArgs",{}),v.fireChartInstanceEvent("slicingStart",{slicedState:l,dataIndex:"index"in b&&b.index,data:e.getPlotData(k,l)}),C.setAnimationState("slicing"),C.setAnimation({el:i,attr:{transform:l?"t0,0":P},component:e,label:"slice",callback:function(){v.fireChartInstanceEvent("slicingEnd",{slicedState:l,dataIndex:"index"in b&&b.index,data:e.getPlotData(k,!l)})}}),r&&r.x&&((n=r.data("textPos"))||(n=r.data("textPos",{x:r.x,y:r.y})),C.setAnimation({el:r,attr:{x:r.x+(l?0:s),y:r.y+(l?0:c)},label:"label-sliced",component:e}),n.x=r.x+(l?0:s)),u&&((g=u.slice(0))[1]+=s,g[2]+=c,g[4]+=s,g[5]+=c,g[6]+=s,g[7]+=c,C.setAnimation({el:h,attr:{path:g},label:"connector-sliced",component:e}),N.connectorPath=g),d.isSliced=l=N.sliced=!l,l}}},j=function(e){var t=e.getFromEnv("animationManager");return{plotDragMove:function(t){var n,o=this.data("plotItem"),a=o.chart,i=t.data,r=i[0],l=i[1],s=i[2],c=i[3],u=o.seriesData,p=e.config;isNaN(r)||isNaN(l)||!p.enableRotation||u.singletonCase||u.isRightClicked||(n=V.call(t,s,c,u.pieCenter,u.chartPosition,1),u.dragStartAngle===n||u.isRotating||(u.isRotating=!0,a.fireChartInstanceEvent("RotationStart",{startingAngle:u._rotationalStartAngle=a._startingAngle()})),p.startAngle+=n-u.dragStartAngle,u.dragStartAngle=n,u.moveDuration=0,p.updateInited||(p.updateInited=!0,a.addJob("pie_batch_rotate",a._batchRotate||(a._batchRotate=function(){e._rotate(),p.updateInited=!1}),h.priorityList.draw,{oneInAFrame:!0})))},plotDragStart:function(t){var n,o=this.data("plotItem"),a=o.chart,r=o.seriesData,l=e.config,s=(0,i.pluckNumber)(t.button,t.originalEvent.button),c=-l.startAngle*O,h=t.data[0],u=t.data[1];r.isRightClicked=!(i.touchEnabled||0===s||1===s),l.enableRotation&&!r.isRightClicked&&(r.isRotating=!1,r.chartPosition=function(e,t){var n,o={left:0,top:0};if(e.getBoundingClientRect)n=e.getBoundingClientRect(),o.top=n.top+(m.pageYOffset||b.scrollTop||0)-(b.clientTop||0),o.left=n.left+(m.pageXOffset||b.scrollLeft||0)-(b.clientLeft||0);else for(;e;)o.left+=e.offsetLeft||0,o.top+=e.offsetTop||0,e===b.body||e===b.documentElement||t||(o.left-=e.scrollLeft||0,o.top-=e.scrollTop||0),e=e.offsetParent;return o}(a.getFromEnv("chart-container")),n=V.call(t,h,u,r.pieCenter,r.chartPosition,1),r.dragStartAngle=n,r.startingAngleOnDragStart=c)},plotDragEnd:function(){var t=this.data("plotItem"),n=t.chart,o=n.getChildren("dataset")[0].config,a=n.config,r=t.seriesData,l=-o.startAngle*O;r.isRightClicked||(a.clicked=!0,n.disposed||e._rotate(),delete a.clicked,r.isRotating&&(setTimeout(function(){r.isRotating=!1},0),n.fireChartInstanceEvent("RotationEnd",{startingAngle:(0,i.normalizeAngle)(l,!0),changeInAngle:l-o.startingAngleOnDragStart})),!r.isHovered&&e.config.handlersAPI.onPlotHover(this,!1))},plotRollOver:function(e){var t=this.plotItem||this.data("plotItem"),n=t.chart,o=t.seriesData,a=n.getDatasets()[0],i=a.getFromEnv("animationManager");o.isRotating||(n.plotEventHandler(this,e,"DataPlotRollOver"),a.config.handlersAPI.onPlotHover(this,!0,i)),a.fireEvent("datasetrollover",t),o.isHovered=!0},plotRollOut:function(e){var t=this.plotItem||this.data("plotItem"),n=t.chart,o=t.seriesData,a=n.getDatasets()[0];o.isRotating||(n.plotEventHandler(this,e,"DataPlotRollOut"),a.config.handlersAPI.onPlotHover(this,!1)),a.fireEvent("datasetrollout",t),o.isHovered=!1},onPlotHover:function(n,o){var a=n.data("plotItem"),r=a.center,l=a.rolloverProperties||{},s=o?l.color:a.color,c=o?l.borderWidth:a.borderWidth,h=o?l.borderColor:a.borderColor;s&&(o&&(s.cx=r[0],s.cy=r[1],s.r=a.radius),l.enabled&&t.setAnimation({el:a.graphic,component:e,attr:{fill:(0,i.toRaphaelColor)(s),"stroke-width":c,stroke:h}}))}}},H=function(e,t){return e.point.value-t.point.value},W=function(e,t){return e.angle-t.angle},z=function(e,t){t&&e.getFromEnv("linkClickFN")&&e.getFromEnv("linkClickFN").call({link:t},!0)},U=function(){this.hide()},q=["start","start","end","end"],Y=[-1,1,1,-1],K=[1,1,-1,-1];function X(e){if(this.config.JSONData){var t,n,o=void 0,a=this.getFromEnv("legend"),i=void 0,r=this.config.JSONData,l=r.data&&r.data.length,s=e.data&&e.data.length||0,c=l-s;for(c>0&&this.removeData(s,c,!1),o=0,t=(n=this.components.removeDataArr||[]).length;o<t;o++)(i=n[o].config).legendItemId&&a.disposeItem(i.legendItemId)}}(0,l.addDep)({name:"pie2dAnimation",type:"animationRule",extension:s["default"]}),(0,c["default"])(g);var Z=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.plotGraphicClick=G(n),n}return d(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"pie2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.doughnutradius=0},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,n,o,a,r=this.getFromEnv("chart"),l=r.config,s=this.config,c=this.config.JSONData,h=this.getFromEnv("chart-attrib"),u=r.config.is3D,p=void 0;s.handlersAPI=j(this),this.setState("visible",1===(0,i.pluckNumber)(this.config.JSONData.visible,!Number(this.config.JSONData.initiallyhidden),1)),(0,i.parseConfiguration)({},this.config,r&&r.config),a=s.enableAnimation=(0,i.pluckNumber)(h.animation,h.defaultanimation,1),s.animation=!!a&&{duration:1e3*(0,i.pluckNumber)(h.animationduration,h.moveduration,1)},s.transposeAnim=!(!a&&!(0,i.pluckNumber)(s.transposeanimation,1))&&{duration:1e3*(0,i.pluckNumber)(h.transposeanimduration,.2)},s.showPlotBorder=(0,i.pluckNumber)(h.showplotborder,1),s.showHoverEffect=(0,i.pluckNumber)(h.plothovereffect,h.showhovereffect,f),s.showTooltip=(0,i.pluckNumber)(h.showtooltip,1),s.toolText=(0,i.getValidValue)((0,i.parseUnsafeString)((0,i.pluck)(c.plottooltext,h.plottooltext))),o=s.enableMultiSlicing=(0,i.pluckNumber)(h.enablemultislicing,1),t=s.use3DLighting=(0,i.pluckNumber)(h.use3dlighting,1),p=s.radius3D=t?(0,i.pluckNumber)(h.radius3d,90):100,s.showZeroPies=(0,i.pluckNumber)(h.showzeropies,1),s.showPercentInToolTip=(0,i.pluckNumber)(h.showpercentintooltip,1),s.showLabels=(0,i.pluckNumber)(h.showlabels,1),s.showValues=(0,i.pluckNumber)(c.showvalues,h.showvalues,1),s.showPercentValues=(0,i.pluckNumber)(h.showpercentvalues,h.showpercentagevalues,0),n=s.toolTipSepChar=(0,i.pluck)(h.tooltipsepchar,h.hovercapsepchar,i.COMMASPACE),s.labelSepChar=(0,i.pluck)(h.labelsepchar,n),s.pieBorderColor=(0,i.pluck)(h.plotbordercolor,h.piebordercolor),s.pieBorderAlpha=(0,i.pluckNumber)(h.plotborderalpha,h.pieborderalpha),s.pieBorderThickness=s.showPlotBorder?(0,i.pluckNumber)(h.plotborderthickness,h.pieborderthickness,l.plotborderthickness,1):0,s.plotDashLen=(0,i.pluckNumber)(h.plotborderdashlen,5),s.plotDashGap=(0,i.pluckNumber)(h.plotborderdashgap,4),s.showValueInLegend=(0,i.pluckNumber)(h.showvalueinlegend,0),s.showLabelInLegend=(0,i.pluckNumber)(h.showlabelinlegend,1),s.valueBeforeLabelInLegend=(0,i.pluckNumber)(h.valuebeforelabelinlegend,0),s.showValueAsPercentInLegend=(0,i.pluckNumber)(h.showvalueaspercentinlegend,1),s.legendSepChar=(0,i.pluck)(h.legendsepchar,", "),s.showvalues=(0,i.pluckNumber)(h.showvalues,1),s.chartPosition=(0,i.getPosition)(r.getFromEnv("chart-container"),r),s.timerThreshold=30,p>100&&(p=100),p<0&&(p=0),s.showLegend=(0,i.pluckNumber)(h.showlegend,0),s.reverselegend=!(0,i.pluckNumber)(h.reverselegend,0),r.config.is3D=u,s.pieYScale=(0,i.pluckNumber)(h.pieyscale,40),s.pieYScale<1&&(s.pieYScale=1),s.pieYScale>=100&&(s.pieYScale=80),s.pieYScale/=100,s.pieSliceDepth=(0,i.pluckNumber)(h.pieslicedepth,15),s.pieSliceDepth<1&&(s.pieSliceDepth=1),s.managedPieSliceDepth=s.pieSliceDepth,s.enableMultiSlicing=!!o,s.startAngle=(0,i.pluckNumber)(h.startingangle,0)%360*(-T/180),s.usePerPointLabelColor=h.colorlabelsfromplot==i.ONESTRING,s.reversePlotOrder=(0,i.pluckNumber)(h.reverseplotorder,0),s.animateClockWise=(0,i.pluckNumber)(h.animateclockwise,s.reversePlotOrder),s.showShadow=(0,i.pluckNumber)(h.showshadow,1),s.singletonCase=1===c.data.length,s.valueTotal=0,this._setConfigure(),l.showLegend&&this._addLegend()},t.prototype.trimData=function(e){X.call(this,e)},t.prototype._parseDisplayProperties=function(e,t){var n,o,a,r,l,s,c,h,u,p="",d=this.getFromEnv("chart"),g=this.getFromEnv("number-formatter"),m=d.getFromEnv("chart-attrib"),b=this.config,v=(0,i.pluckNumber)(t.y,g.getCleanValue(e.value,!0)),y=b.valueTotal,x=b.showLabels,C=(0,i.parseUnsafeString)((0,i.pluck)(t.seriesName,e.label,e.name,i.BLANKSTRING)),k=b.showPercentValues,w=b.showPercentInToolTip,S=b.labelSepChar,L=b.toolTipSepChar,A=b.showTooltip;n=(0,i.getValidValue)((0,i.parseUnsafeString)((0,i.pluck)(e.tooltext,b.toolText))),o=t.pValue=g.percentValue(v/y*100),r=t.value=g.dataLabels(v)||i.BLANKSTRING,l=1===(0,i.pluckNumber)(e.showlabel,x)?C:i.BLANKSTRING,s=1===(u=(0,i.pluckNumber)(e.showvalue,b.showValues))?1===k?o:r:i.BLANKSTRING,a=w?o:r,c=(0,i.getValidValue)((0,i.parseUnsafeString)(e.displayvalue)),h=(0,i.pluck)(c,C+S+(k?o:r),i.BLANKSTRING),s=c!==f&&u?c:s!==i.BLANKSTRING&&l!==i.BLANKSTRING?l+S+s:(0,i.pluck)(l,s),A&&(p=n!==f?(0,i.parseTooltext)(n,[1,2,3,5,6,7,14,24,25],{formattedValue:r,label:C,yaxisName:(0,i.parseUnsafeString)(m.yaxisname),xaxisName:(0,i.parseUnsafeString)(m.xaxisname),percentValue:o,sum:g.dataLabels(y),unformattedSum:y},e,m):(p=C)!=i.BLANKSTRING?p+L+a:a),t.displayValue=s,t.displayValueArgs=h,t.toolText=p,t.seriesName=C,t.categoryLabel=C},t.prototype._isStyled=function(e){if(this.getFromEnv("chart").config.usedataplotcolorforlabels||e.labelbordercolor||e.labelbgcolor||e.labelborderthickness||e.labelborderalpha||e.labelalpha||e.labelfont||e.labelfontsize||e.labelfontcolor||e.labelfontalpha||e.labelalpha||e.labelfontbold||e.labelfontitalic||e.labelborderpadding||e.labelborderradius||e.labelbgalpha||e.labelborderdashed||e.labelborderdashlen||e.labelborderdashgap)return!0},t.prototype._setConfigure=function(e,t){var n,o,a,l,s,c,h,p,d,g,m,b,v,y,x,C,k,w,S=this.components,L=S.removeDataArr=S.removeDataArr||[],A=this.getFromEnv("chart"),_=A.getFromEnv("dataSource").chart,P=A.config,F=this.config,E=this.config.JSONData,T=(e||E).data,D=T&&T.length,O=F.showZeroPies,I=F.valueTotal||0,M=[],R=(0,i.pluckNumber)(_.plotborderdashed,0),V=this.components.data||(this.components.data=[]),B=this.getFromEnv("number-formatter"),G=this.getFromEnv("color-manager"),j=F.labelInLeg,H=F.valInLeg,W=F.pieBorderThickness,z=F.reversePlotOrder,U=F.radius3D,q=F.enableMultiSlicing,Y=F.lastSlicedid||0,K=(0,i.pluckNumber)(_.plotBorderDashed,5),X=(0,i.pluckNumber)(_.plotborderdashgap,4),Z=(0,i.pluckNumber)(_.valuebeforelabelinlegend,0),J=(0,i.pluckNumber)(_.showvalueaspercentinlegend,1),$=0,Q=(0,i.pluck)(_.legendsepchar,", ");for(P.dataLabelStyle=(0,i.parsexAxisStyles)({},{},_,P.dataLabelStyle,a),n=0;n<D;n+=1)v=T[n],null===(C=B.getCleanValue(v.value,!0))||!O&&0===C?$+=1:(M.push(v),I+=C);if(!F.singletonCase&&(F.singletonCase=D-$==1),$&&V.length>D-$)for(n=V.length-1;$>0;n-=1,$-=1)V[n]&&(k=(v=V[n]).config,L.push(v),k.y=null);for(0===I&&(M=[]),F.valueTotal=I,F.dataLabelCounter=0,P.allPlotSliceEnabled=P.enableslicing,n=(D=M.length)-1;n>=0;n-=1)y=n,e?(w=M[n],v=t!==f?V[y=t+n]:V[y=V.length-D+n]):(v=V[n]||(V[n]={graphics:{},config:{}}),w=M[n]),(x=v&&v.config)||(x=V[y].config={}),v.graphics||(V[y].graphics={}),x.y=C=B.getCleanValue(w.value,!0),x.seriesName=o=(0,i.parseUnsafeString)((0,i.pluck)(w.label,w.name,i.BLANKSTRING)),x.labellink=(0,i.pluck)(w.labellink,_.labellink),a=(0,i.pluck)(w.color,G.getPlotColor(n)),l=(0,i.pluck)(w.alpha,_.plotfillalpha,i.HUNDREDSTRING),c=(s=x.borderConfig=this._parseBorderConfig(a,l,w)).setPlotBorderColor,h=s.setPlotBorderAlpha,p={opacity:N(l,h)/100},(m=Boolean((0,i.pluckNumber)(w.issliced,_.issliced,0)))&&(q||(-1!==Y&&(V[V.length-Y-1].sliced=!1),F.lastSlicedid=n),F.preSliced=m),b=(0,i.pluckNumber)(w.dashed,R)?(0,i.getDashStyle)((0,i.pluck)(w.dashlen,K),(0,i.pluck)(w.dashgap,X),W):"none",this._parseDisplayProperties(w,x),d=j?o:i.BLANKSTRING,H&&(g=J?B.legendPercentValue(C/I*100):B.legendValue(C),d=Z?g+(d&&Q+d):(d&&d+Q)+g),F.dataLabelCounter+=1,this._isStyled(w)?x.style=(0,i.parsexAxisStyles)(w,{},_,P.dataLabelStyle,a):x.style&&delete x.style,x.showInLegend=d!==i.BLANKSTRING,x.isVisible=!0,x.name=d,x.shadow=p,x.setColor=a,x.color=(0,u["default"])(a,l,U,F.doughnutradius),x._3dAlpha=l,x.borderColor=(0,r.convertColor)(c,h),x.borderWidth=W,x.link=(0,i.getValidValue)(w.link),x.sliced=m,x.dashStyle=b,(x.doNotSlice=(0,i.pluck)(w.enableslicing,P.enableslicing)!=i.ONESTRING)||P.allPlotSliceEnabled!==i.ZEROSTRING||(P.allPlotSliceEnabled=i.ONESTRING),this._parseHoverEffectOptions(n),x.centerLabelConfig=void 0,x.radius3D=U;z&&V&&V.reverse(),F.dataArr=M,F.enableRotation=V.length>1?(0,i.pluckNumber)(_.enablerotation,1):0},t.prototype._parseHoverEffectOptions=function(e){var t,n,o,a,l,s,c,h,u,p,d=this.getFromEnv("chart").getFromEnv("dataSource").chart,g=this.config,m=this.components.data[e].config,b=this.config.JSONData,v=b.data[e],y=m.setColor,x=m._3dAlpha,C=g.radius3D,k=m.borderConfig,w=k.setPlotBorderAlpha,S=k.setPlotBorderColor,L=g.setBorderWidth,A=(0,i.pluckNumber)(m.hovereffect,g.showHoverEffect),N=m.hoverEffects={enabled:A};if(A===f&&(A=N.enabled=(0,i.pluck)(v.hovercolor,b.hovercolor,d.plotfillhovercolor,v.hoveralpha,b.hoveralpha,d.plotfillhoveralpha,v.borderhovercolor,b.borderhovercolor,d.plotborderhovercolor,v.borderhoveralpha,b.borderhoveralpha,d.plotborderhoveralpha,d.plotfillhoveralpha,v.borderhoverthickness,b.borderhoverthickness,d.plotborderhoverthickness,f)!==f),A){if(t=(0,i.pluckNumber)(v.highlightonhover,b.highlight,d.highlight,1),(n=(0,i.pluck)(v.hovercolor,b.hovercolor,d.plotfillhovercolor))&&t&&(t=0),n=(0,i.pluck)(n,y),o=(0,i.pluck)(v.hoveralpha,b.hoveralpha,d.plotfillhoveralpha,x),a=(0,i.pluck)(v.borderhovercolor,b.borderhovercolor,d.plotborderhovercolor,S),l=(0,i.pluck)(v.borderhoveralpha,b.borderhoveralpha,d.plotborderhoveralpha,d.plotfillhoveralpha,w),s=(0,i.pluckNumber)(v.borderhoverthickness,b.borderhoverthickness,d.plotborderhoverthickness,L),n.replace(/,+?$/,""),1===t){for(u=(h=(c="string"==typeof n)?n.split(/\s{0,},\s{0,}/):n.color.split(/\s{0,},\s{0,}/)).length,p=0;p<u;p++)h[p]=(0,r.getLightColor)(h[p],70);c?n=h.join(","):n.color=h.join(",")}this._setHoverColor(N,n,o,C),N.alpha=o,N.borderColor=(0,r.convertColor)(a,l),N.borderAlpha=l,N.borderWidth=s}else N.enabled=!1},t.prototype.placeDataLabels=function(e,t,n,o){var a,r,l,s,c,h,u,p,d,g,m,b,v,y,x,C,S,O,R,V,G,j,X,Z,J,$,Q,ee,te,ne,oe,ae,ie,re,le,se,ce,he,ue,pe,de,ge,fe,me,be,ve,ye=this,xe=ye.getFromEnv("chart"),Ce=xe.config,ke=ye.getFromEnv("animationManager"),we=ye.getFromEnv("toolTipController"),Se=xe.getChildren("legend")[0],Le=ye.getContainer("label-group"),Ae=ye.config,Ne=Ce.canvasLeft,_e=Ce.canvasTop,Pe=Ce.canvasWidth,Fe=Ne+.5*Ce.canvasWidth,Ee=_e+.5*Ce.canvasHeight,Te=xe.getFromEnv("smartLabel"),De=Ae.dataLabelOptions,Oe=De.style,Ie=(0,i.pluckNumber)(F(parseFloat(Oe.lineHeight)),12),Me=1===t.length&&Ce.singletonPlaceValue,Re=De.skipOverlapLabels,Ve=De.manageLabelOverflow,Be=De.connectorPadding,Ge=De.distance,je=o&&o.metrics||[Fe,Ee,2*Ae.pieMinRadius,Ae.innerSize||0],He=je[1],We=je[0],ze=.5*je[2],Ue=[[],[],[],[]],qe=Ne,Ye=_e,Ke=Pe,Xe=n.labelsRadius=ze+Ge,Ze=parseInt(Oe.fontSize,10),Je=Ze,$e=Je/2,Qe=[Be,Be,-Be,-Be],et=n.labelsMaxInQuadrant=E(Xe/Je),tt=De.isSmartLineSlanted,nt=je[3]/2,ot=Number.POSITIVE_INFINITY,at=[],it=[],rt=Ae.handlersAPI.plotDragStart,lt=Ae.handlersAPI.plotDragEnd,st=Ae.handlersAPI.plotDragMove,ct=Ae.handlersAPI.plotRollOver,ht=Ae.handlersAPI.plotRollOut,ut=function(e){var t={},n="";for(n in e)t[n]=e[n];return e},pt=function(e,t){return function(){e.attr(t)}};if(Se?(r=(a=Se.config).symbolWidth,l=a.align,s=a.borderWidth):(r=0,l=0,s=0),Te.useEllipsesOnOverflow(Ce.useEllipsesWhenOverflow),e||Te.setStyle(Oe),!nt&&Ae.singletonCase&&Me)Z=t[0],(me=Z.config._textAttrs).text&&(ge=Z.graphics,de=Z.config,ie=ge.label,Z.slicedTranslation=[qe,Ye],me["text-anchor"]="middle",me.x=0,me.y=0,me.transform=["t",We,He],ae=ke.setAnimation({el:ie||"text",attr:me,component:ye,css:be,label:"label",container:Le}),ie||(ge.label=ae,ae.on("fc-dragstart",rt).on("fc-dragmove",st).on("fc-dragend",lt).on("fc-click",z.bind(ae,xe,Z.config.labellink)).on("fc-click",B(ye,ae)).on("fc-mouseover",ct).on("fc-mouseout",ht)),ae.x=We,ae.data("textPos",{x:We,y:He}).data("plotItem",me.plotItem).data("eventArgs",me.eventArgs),null!==de.y&&de.y!==f&&ae.show(),ge.connector&&ke.setAnimation({el:ge.connector,component:ye,attr:{path:[]}}));else if(Me)he=nt+(ze-nt)/2,(0,i.fcEach)(t,function(e){de=e.config,(me=de._textAttrs).text&&(ge=e.graphics,ie=ge.label,null!==de.y&&de.y!==f&&(($=ge.connector)&&$.show(),ae&&ae.show()),me.transform="t0,0",J=de.angle,j=He+he*L(J),O=We+he*A(J),me._x=O,me._y=j,e.sliced&&(ce=e.slicedTranslation,re=ce[0]-qe,le=ce[1]-Ye,O+=re,j+=le),me["text-anchor"]="middle",me.x=0,me.y=0,me.transform=["t",O,j],ae=ke.setAnimation({el:ie||"text",attr:me,component:ye,label:"label",css:be,container:Le}),ie||(ge.label=ae,ae.on("fc-dragstart",rt).on("fc-dragmove",st).on("fc-dragend",lt).on("fc-click",z.bind(ae,xe,e.config.labellink)).on("fc-click",B(ye,ae)).on("fc-mouseover",ct).on("fc-mouseout",ht)),ae.x=me._x,ae.x=me._x,ae.y=me._y,ae.data("plotItem",me.plotItem).data("eventArgs",me.eventArgs),me.visibility===k&&ae.show())});else{for(u=t.length-1;u>=0;u--)Z=t[u],de=Z.config,((me=de._textAttrs||{}).text=de.displayValue)?(ge=Z.graphics,null!==de.y&&de.y!==f&&(ae=ge.label,($=ge.connector)&&$.show(),ae&&ae.show()),me.text=de.displayValue,me.transform="t0,0",(J=de.angle%I)<0&&(J=I+J),Ue[J>=0&&J<D?1:J<T?2:J<M?3:0].push({point:Z,angle:J})):(Z.graphics.connector&&(Z.graphics.connector=ke.setAnimation({el:Z.graphics.connector,component:ye})),Z.graphics.label&&(Z.graphics.label=ke.setAnimation({el:Z.graphics.label,component:ye,callback:U})));for(u=y=4;u--;){if(Re&&(ee=Ue[u].length-et)>0)for(Ue[u].sort(H),d=0,v=(te=Ue[u].splice(0,ee)).length;d<v;d+=1)Z=te[d].point,me=Z.config._textAttrs,(ge=Z.graphics).label&&(ge.label=ke.setAnimation({el:ge.label,component:ye})),ge.connector&&(ge.connector=ke.setAnimation({el:ge.connector,component:ye}));Ue[u].sort(W)}for(oe=N(Ue[0].length,Ue[1].length,Ue[2].length,Ue[3].length),ne=N(_(oe,et)*Je,Xe+Je),it=Ue[0].concat(Ue[1]),at=Ue[2].concat(Ue[3]),u=it.length-1;u>=0;u--)delete(pe=it[u].point.config).clearance,delete pe.clearanceShift,g=P(ne*L(pe.angle)),Math.abs(ot-g)<2*Ie&&(pe.clearance=0,it[u+1].point.clearanceShift=Ie/2),ot=g;for(ot=Number.POSITIVE_INFINITY,u=0,v=at.length;u<v;u++)delete(pe=at[u].point.config).clearance,delete pe.clearanceShift,g=P(ne*L(pe.angle)),Math.abs(ot-g)<2*Ie&&(pe.clearance=0,at[u-1].point.clearanceShift=Ie/2),ot=g;for(Ue[1].reverse(),Ue[3].reverse();y--;){for(v=(X=Ue[y]).length,Re||($e=(Je=v>et?ne/v:Ze)/2),b=v*Je,c=ne,u=0;u<v;u+=1,b-=Je)c<(g=P(ne*L(X[u].angle)))?g=c:g<b&&(g=b),c=(X[u].oriY=g)-Je;for(h=q[y],m=ne-(v-1)*Je,c=0,u=X.length-1;u>=0;u-=1,m+=Je)Z=X[u].point,J=X[u].angle,de=Z.config,(me=de._textAttrs||{}).text&&((be=de._textCss).cursor=de.labellink?"pointer":"",ge=Z.graphics,x=de.sliced,ae=ge.label,(g=P(ne*L(J)))<c?g=c:g>m&&(g=m),c=g+Je,ue=de.clearance===f?2*F((0,i.pluckNumber)(parseFloat(de.style.border),12),12):2*F((0,i.pluckNumber)(parseFloat(de.style.border),de.clearance)),V=(g+X[u].oriY)/2,C=We+K[y]*Xe*A(w.asin(V/ne)),V*=Y[y],V+=He,G=He+ze*L(J),S=We+ze*A(J),(y<2&&C<S||y>1&&C>S)&&(C=S),j=V-$e-2,R=(O=C+Qe[y])+Qe[y],me._x=R,Ve&&(p=y>1?R-Ce.canvasLeft:Ce.canvasLeft+Ke-R,Te.setStyle(de.style),Ie=(0,i.pluckNumber)(F(parseFloat(de.style.lineHeight)),12)+ue,"right"===l&&de.transX>0?p-=r+2*s:"right"!==l&&de.transY>0&&(V-=Je),se=Te.getSmartText(de.displayValue,p,Ie),de.clearance===f&&se.height>Je&&(V+=Je),me.text=se.text,me.tooltip=se.tooltext),me._y=V,x&&(re=de.transX,le=de.transY,O+=re,C+=re,S+=re,G+=le,V+=le,j+=le,R+=re),me["text-anchor"]=h,me.vAlign="middle",me.opacity=1,me.x=R,me.y=V,fe=ae&&ae.data("textPos"),null!==de.y&&de.y!==f&&(fe?(ve=ut(me),ke.setAnimation({el:ae,attr:ve,callback:pt(ae,me),component:ye})):(ae=ge.label=ke.setAnimation({el:"text",attr:me,css:be,label:"label",container:Le,component:ye})).on("fc-dragstart",rt).on("fc-dragmove",st).on("fc-dragend",lt).on("fc-click",z.bind(ae,xe,Z.config.labellink)).on("fc-click",B(ye,ae)).on("fc-mouseover",ct).on("fc-mouseout",ht)),ae.x=me._x,ae._x=me._x,ae.y=me._y,me.tooltip&&(we.enableToolTip(ae,me.tooltip),delete me.tooltip),me.visibility===k&&ae.show(),ae.data("textPos",{x:R,y:V}).data("plotItem",me.plotItem).data("eventArgs",me.eventArgs),($=ge.connector)&&(de.connectorPath=Q=["M",S,G,"L",tt?C:S,V,O,V],$.data("connectorPath")&&Ce.clicked||ke.setAnimation({el:$,attr:{path:Q},label:"connector",component:ye}),$.data("connectorPath",{path:Q})))}}},t.prototype._setHoverColor=function(e,t,n,o){o?e.color=(0,u["default"])(t,n,o,this.config.doughnutradius):(e.color=t,e.alpha=n)},t.prototype.updateData=function(){var t=this.config,n=this.components.data;t.valueTotal-=n[arguments[1]].config.y,e.prototype.updateData.call(this,arguments)},t.prototype._rotate=function(){var e,t,n,o,a,r,l,s,c,h=this.getFromEnv("chart"),u=this.config,p=this.components.data,d=h.config,g=u.piePlotOptions,m=(u.startAngle||0)%I,b=u.slicingDistance,v=u.valueTotal,y=I/v,x=d.canvasLeft+.5*d.canvasWidth,C=d.canvasTop+.5*d.canvasHeight,k=u.pieMinRadius,w=.5*(g.innerSize||0);for(a=r=m,c=0;c<p.length;c+=1)l=p[c].config,s=p[c].graphics,null!==(n=l.y)&&n!==f&&(r=a,o=.5*((a-=u.singletonCase?I:n*y)+r),l.angle=o,l.transX=A(o)*b,l.transY=L(o)*b,l.slicedTranslation="t"+A(o)*b+i.COMMASTRING+L(o)*b,(t=l._rotateAttrs)||(t=l._rotateAttrs={ringpath:[],transform:i.BLANKSTRING}),(e=t.ringpath)[0]=x,e[1]=C,e[2]=k,e[3]=w,e[4]=a,e[5]=r,s.element.attr({ringpath:t.ringpath,transform:l.sliced?l.slicedTranslation:""}));this.placeDataLabels(!0,p,u)},t.prototype._parsePiePlotOptions=function(){var e=this.config;return{size:e.pieMinRadius,slicedOffset:e.slicingDistance}},t.prototype._parseDataLabelOptions=function(){return{style:this.getFromEnv("chart").config.dataLabelStyle}},t.prototype._addLegend=function(){var e,t,n,o,a=this.getFromEnv("legend"),r=this.components.data;for(e=0;e<r.length;e++)if(null!==(t=r[e].config).y&&t.seriesName)o={index:e,type:this.getName(),label:t.seriesName,enabled:(0,i.pluckNumber)(t.includeInLegend,1)},(n=a.getItem(t.legendItemId))||(t.legendItemId=a.createItem(this),n=a.getItem(t.legendItemId),this.addExtEventListener("fc-click",n.itemClickFn,n)),n.configure(o),n.setStateCosmetics("default",{symbol:{fill:(0,i.toRaphaelColor)(t.setColor),rawFillColor:t.setColor,stroke:(0,i.toRaphaelColor)(t.borderColor)}});else{if(!t.legendItemId)continue;(n=a.getItem(t.legendItemId))&&a.disposeItem(n.getId()),delete t.legendItemId}},t.prototype.getPlotData=function(e,t){var n,a,i,r=this.components.data[e].config,l=this.config.userData||(this.config.userData=[]);if(l[e])n=l[e];else{for(i in n=l[e]={},r)"object"!==o(a=r[i])&&"function"!=typeof a&&0!==i.indexOf("_")&&(n[i]=a);n.value=n.y,n.categoryLabel=n.label=n.seriesName,delete n.y,delete n.total,delete n.doNotSlice,delete n.name,delete n.seriesName,delete n.centerAngle,delete n.showInLegend,delete n.angle,delete n.endAngle,delete n.isVisible,delete n.setColor,delete n.slicedTranslation,delete n.startAngle,delete n.transX,delete n.transY,delete n.pValue}return n.sliced=t,n},t.prototype._parseBorderConfig=function(e,t,n){var o=this.config.pieBorderColor,a=this.getFromEnv("chart").getFromEnv("dataSource").chart,l=(0,i.pluck)(n.bordercolor,o),s=(0,i.pluck)(n.borderalpha,a.plotborderalpha,a.pieborderalpha);return{setPlotBorderColor:l=(0,i.pluck)(l,(0,r.getLightColor)(e,25)).split(i.COMMASTRING)[0],setPlotBorderAlpha:s=a.showplotborder==i.ZEROSTRING?i.ZEROSTRING:(0,i.pluck)(s,t,"80")}},t.prototype.legendInteractivity=function(e){var t,n=this.components.data,o=void 0,a=e.getId(),i=void 0;for(o=0,t=n.length;o<t;o++)n[o].config.legendItemId===a&&(i=n[o].graphics,this.plotGraphicClick.call(i.element))},t.prototype.hideElements=function(){var e=this.data&&this.data("plotItem").chart,t=e.getChildren("dataset")&&e.getChildren("dataset")[0],n=0,o=this._&&this._.shadows||[];if(t)for(this.hide();n<o.length;n+=1)o[n].hide()},t.prototype._createContainer=function(){var e,t,n,o,a=this.getName(),i=this.groupName,r=this.getLinkedParent(),l=i||this.dsGroup||a;!r.getChildContainer(l+"Group")&&(l="default"),e=r.getChildContainer("datalabelsGroup"),t=this.getContainer("pie-groups")||this.addContainer("pie-groups",R("pie",e,this)),n=this.getContainer("pie-plot-groups")||this.addContainer("pie-plot-groups",R("pie-plot",t,this)),o=this.getContainer("pie-label-groups")||this.addContainer("pie-label-groups",R("pie-label",t,this)),this.getContainer("plot-group")||this.addContainer("plot-group",R("plots",n,this)),this.getContainer("plot-shadow-group")||this.addContainer("plot-shadow-group",R("plot-shadows",n,this).toBack()),this.getContainer("label-group")||this.addContainer("label-group",R("labels",o,this)),this.getContainer("connector-shadow-group")||this.addContainer("connector-shadow-group",R("connector-shadows",o,this)),this.getContainer("anchor-shadow-group")||this.addContainer("anchor-shadow-group",R("anchor-shadows",o,this))},t.prototype.allocatePosition=function(){var e,t,n=this.components.data,o=n.length;for(e=0;e<o;e++)t=n[e],this.parsePlotAttributes(t,e),this.parseLabelAttributes(t,e)},t.prototype.parsePlotAttributes=function(e,t){var n,o,a,l,s,c,h,u,p,d,g,m,b,y,x=this.components.data,C=this.getFromEnv("chart"),k=C.config,w=this.config,S=t,N=x.length,_=k.canvasWidth,P=k.canvasHeight,F=k.canvasLeft+.5*_,E=k.canvasTop+.5*P,T=w.valueTotal,D=w.piePlotOptions=this._parsePiePlotOptions(),O=D.slicedOffset,M=D.size,R=.5*(w.innerSize||0),V=(w.startAngle||0)%I,B=V-I,G=w.animateClockWise;b=T&&I/T,w.pieCenter=[F,E],l=V,s=V,t>0&&(l=x[t-1].config.startAngle,s=x[t-1].config.endAngle),h=(c=e.config).y,u=c.displayValue,p=c.sliced,n=c.toolText,o=!!c.link,null!==h&&h!==f&&!1!==c.isVisible&&((d=c.color).r=M,d.cx=F,d.cy=E,s=l,g=.5*((l-=w.singletonCase?I:h*b)+s),G?B:V,m=w.previousData={cx:F,cy:E,r:M,r2:R},a=this.config.drawn?[m.cx,m.cy,m.r,m.r2,l,s]:[F,E,M,R,l,s],c.eventArgs={index:w.reversePlotOrder?N-1-S:S,link:c.link,value:c.y,displayValue:c.displayValueArgs,categoryLabel:c.categoryLabel,isSliced:p,toolText:n,pValue:c.pValue},p&&(c.slicedTranslation="t"+A(g)*O+","+L(g)*O),y={"stroke-width":c.borderWidth,stroke:c.borderColor,fill:v?function(e,t){var n=t?1:f;return(0,i.toRaphaelColor)({color:(0,r.getFirstColor)(e.color,n),alpha:(0,r.getFirstAlpha)(e.alpha,n)})}(c.color,w.doughnutradius):(0,i.toRaphaelColor)(c.color),transform:p?c.slicedTranslation:"","stroke-dasharray":c.dashStyle,redrawDataLabels:V,ringpath:a,cursor:o?"pointer":""},c.props={element:{attr:y}},c.eventArgs={index:w.reversePlotOrder?N-1-S:S,link:c.link,value:c.y,displayValue:c.displayValueArgs,categoryLabel:c.categoryLabel,isSliced:p,toolText:n,pValue:c.pValue},c.plotItem={chart:C,index:S,seriesData:w,value:h,pValue:c.pValue,displayValue:c.displayValue||"",angle:c.angle=g,angle1:c.startAngle=l,angle2:c.endAngle=s,slicedX:A(g)*O,slicedY:L(g)*O,sliced:p,labelText:u,toolText:n,name:c.name,link:c.link,percentage:T?h*T/100:0,originalIndex:N-S-1,style:c.style,color:(0,i.toRaphaelColor)(c.color),borderColor:c.borderColor,borderWidth:c.borderWidth,rolloverProperties:c.hoverEffects,radius:M,center:[F,E],innerDiameter:2*R,centerLabelConfig:c.centerLabelConfig,isVisible:c.isVisible,label:c.seriesName,connector:void 0,transX:c.transX=A(g)*O,transY:c.transY=L(g)*O,slicedTranslation:c.slicedTranslation="t"+A(g)*O+","+L(g)*O})},t.prototype.parseLabelAttributes=function(e){var t,n,o,a,i,r=this.getFromEnv("chart").config,l=r.dataLabelStyle,s=this.config,c=r.style,h=r.textDirection,u=s.dataLabelOptions;(a=(t=e.config)._textAttrs)||(a=t._textAttrs={}),n=t.y,o=t.displayValue,c=t.style,null!==n&&n!==f&&!1!==t.isVisible&&(o!==f?(c&&((i=t._textCss)||(i=t._textCss={}),i.fontFamily=c.fontFamily,i.fontSize=c.fontSize,i.lineHeight=c.lineHeight,i.fontWeight=c.fontWeight,i.fontStyle=c.fontStyle),t.plotItem.style=t.style=c||(c=l),a.text=o,a.fill=c.color||"#000000",a["text-bound"]=[c.backgroundColor,c.borderColor,c.borderThickness,c.borderPadding,c.borderRadius,c.borderDash],a.direction=h,a.lineHeight=c.lineHeight,a.visibility=C):a.visibility="hidden",t.props.label={attr:a,css:i},t.props.connector={attr:{visibility:k,"stroke-width":u.connectorWidth,stroke:u.connectorColor||"#606060"}})},t.prototype.draw=function(){var e,t,n,o,a,r,l,s,c,h,u,p,d,g,m,b,v,y,x,C,k,w,S,L=this,A=L.getFromEnv("animationManager"),N=L.getFromEnv("chart").config,_=N.dataLabelStyle,F=L.config,E=F.showShadow,T=N.alphaanimation,D=L.components,O=D.data,I=D.removeDataArr=D.removeDataArr||[],M=N.style,R=L.pool,V=L.getState("visible"),G=D.data||[],j=G.length,H=N.canvasWidth,W=N.canvasHeight,z=N.canvasLeft+.5*H,q=N.canvasTop+.5*W,Y=F.handlersAPI.plotDragStart,K=F.handlersAPI.plotDragEnd,X=F.handlersAPI.plotDragMove,Z=F.handlersAPI.plotRollOver,J=F.handlersAPI.plotRollOut,$=function(){var e=F.pieCenter||[],t=F.piePlotOptions||[],n={cx:e[0],cy:e[1],r:t.size,r2:.5*(F.innerSize||0)};return function(e){var t,o=!1;for(t in e)if(P(e[t]-n[t])>5){o=!0;break}return o}}(),Q=F.piePlotOptions=L._parsePiePlotOptions(),ee=F.dataLabelOptions,te=Q.size,ne=.5*(F.innerSize||0),oe={plot:{data:[],animType:"linear"},initial:{data:[]},final:{data:[]}},ae=L.getFromEnv("toolTipController");for(L.getContainer("pie-groups")||L._createContainer(),s=L.getContainer("plot-group"),c=L.getContainer("plot-shadow-group"),h=L.getContainer("label-group"),u=L.getContainer("connector-shadow-group"),p=L.getContainer("anchor-shadow-group"),L.config.drawn&&(e=$({cx:z,cy:q,r:te,r2:ne})&&!1),h.css(_),x=F.valueTotal,V&&x?(s.show(),c.show(),h.show(),u.show(),p.show()):(s.hide(),c.hide(),h.hide(),u.hide(),p.hide()),I.length&&L.removeElement(oe),t=0;t<j;t+=1)d=(n=G[t]).graphics,(w=(g=n.config)._textAttrs)||(w=g._textAttrs={}),m=g.y,b=g.displayValue,o=g.toolText,M=g.style,null!==m&&m!==f&&!1!==g.isVisible&&(r=d.element,y=d.label,k=d.connector,b!==f?(M?((S=g._textCss)||(S=g._textCss={}),S.fontFamily=M.fontFamily,S.fontSize=M.fontSize,S.lineHeight=M.lineHeight,S.fontWeight=M.fontWeight,S.fontStyle=M.fontStyle):g._textCss&&(y&&y.removeCSS(),delete g._textCss,S=f),g.style=M||(M=_),w=g.props.label.attr,y?S&&(y.css(S),delete S.fontFamily,delete S.fontSize,delete S.lineHeight,delete S.fontWeight,delete S.fontStyle,S=f):R&&R.label&&R.label.length&&(y=d.label=R.label.splice(0,1)[0]),y&&A.setAnimation({el:y,attr:{opacity:1},component:L}),ee.distance>0&&ee.connectorWidth&&ee.enableSmartLabels?(k||R&&R.connector.length&&(k=d.connector=R.connector.splice(0,1)[0]),C=A.setAnimation({el:k||"path",container:h,label:"connector",attr:g.props.connector.attr,component:L}).show(),k||(d.connector=C,C.on("fc-dragstart",Y).on("fc-dragmove",X).on("fc-dragend",K).on("fc-mouseover",Z).on("fc-mouseout",J)),A.setAnimation({el:C,attr:{opacity:1},doNotRemove:!0,component:L})):k&&A.setAnimation({el:k,doNotRemove:!0,attr:{opacity:0},component:L})):(y&&A.setAnimation({el:y,callback:U,doNotRemove:!0,component:L}),k&&A.setAnimation({el:k,callback:U,doNotRemove:!0,component:L})),x?(y&&y.show(),C&&C.show()):(y&&y.hide(),C&&C.hide()),T&&A.setAnimation({el:s,attr:{opacity:1},component:L,callback:void 0}),x&&A.setAnimation({el:h,attr:{opacity:1},component:L}),a=A.setAnimation({el:r||"ringpath",attr:g.props.element.attr,label:"ringpath",props:{startAngle:L.config.startAngle},container:s,component:L}),r||(d.element=a,a.on("fc-dragstart",Y).on("fc-dragmove",X).on("fc-dragend",K).on("fc-click",B(L,a)).on("fc-mouseover",Z).on("fc-mouseout",J)),v=g.plotItem,l=g.eventArgs,v.graphic=a,a.show().shadow(E&&g.shadow,c).data("plotItem",v).data("dataset",this).data("eventArgs",l),ae.enableToolTip(a,o),w.plotItem=v,w.eventArgs=l,C&&C.data("plotItem",v).data("eventArgs",l));L.placeDataLabels(!1,O,F,null,oe),!L.config.__attachRestoreColor&&L.addExtEventListener("animationComplete",function(){var t,n;if(e)for(t=0;t<j;t+=1)(n=G[t]).graphics.element&&n.graphics.element.attr({fill:(0,i.toRaphaelColor)(n.config.color)})},A),L.config.__attachRestoreColor=!0,L.config.drawn=!0},t.prototype.sliceInOtherPies=function(e){var t,n=this.components.data,o=n.length,a=0;for(this.enableMultiSlicing=!0;o--;)o!==e&&(t=n[o]).config.sliced&&++a&&this.plotGraphicClick.call(t.graphics);return this.enableMultiSlicing=!1,!!a},t.prototype.removeElement=function(){var e,t,n,o,a=this.getFromEnv("animationManager"),i=this.getFromEnv("chart").config,r=this.components.removeDataArr||[],l=this.pool=this.pool={},s=r.length,c=this.config,h=i.canvasWidth,u=i.canvasHeight,p=i.canvasLeft+.5*h,d=i.canvasTop+.5*u,g=this.hideElements,f=c.pieMinRadius,m=.5*(c.innerSize||0),b=c.startAngle-I;for(o=0;o<s;o++){for(t in n=r[0].graphics)(e=n[t])&&("element"===t?a.setAnimation({el:e,attr:{ringpath:[p,d,f,m,b,b+.01],transform:""},callback:g,component:this}):a.setAnimation({el:e,attr:{opacity:0},callback:g,component:this}),l[t]||(l[t]=[]),l[t].push(e));r.splice(0,1)}},t.prototype.getEventArgs=function(e){var t=e.config.index,n=this.components.data[t].config||{};return{datasetName:n.seriesName,datasetIndex:t,id:n.userID,visible:n.isVisible,label:n.seriesName,value:n.value,percentValue:n.pValue,tooltext:n.toolText,link:n.link,sliced:n.sliced}},t.prototype.remove=function(t){var n=this.config.legendItemId,o=this.getFromEnv("legend");o&&n&&o.disposeItem(n),e.prototype.remove.call(this,t)},t}(a["default"]);t["default"]=Z,t.plotGraphicClick=G,t.trimData=X,t.labelClickFn=z,t.plotClickHandler=B,t.hideFn=U},function(e,t,n){"use strict";t.__esModule=!0;t["default"]={"initial.dataset.pie2D":function(){return{"group.appearing":function(e){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:e.component.getFromEnv("chartConfig").alphaanimation?"plot":"initial"}]},"ringpath.appearing":function(e){var t=e.component,n=e.attr.ringpath.slice(0),o=e.attr.ringpath.slice(0),a=e.props.startAngle,i=e.component.config,r=t.getFromEnv("chartConfig"),l=i.animateClockWise;return r.alphaanimation?[{}]:(l&&(o[4]+=2*Math.PI,o[5]+=2*Math.PI),n[4]=a,n[5]=a,[{initialAttr:{ringpath:n},finalAttr:{ringpath:o,transform:""},startEnd:{start:0,end:.75},effect:"linear",slot:"plot"},{initialAttr:{transform:"",ringpath:o},finalAttr:{ringpath:o},startEnd:{start:.75,end:1},effect:"linear",slot:"plot"}])},"label.appearing":[{initialAttr:{opacity:"0"},finalAttr:{opacity:"1"},slot:"final"}],"connector.updating":function(e){return[{initialAttr:{path:e.attr.path,"stroke-opacity":"0"},finalAttr:{"stroke-opacity":"1"},slot:"final"}]},"label.updating":function(e){return[{initialAttr:{x:e.el.attrs.x},slot:"plot"}]}}},"slicing.dataset.pie2D":function(){return{"slice.updating":function(e){return"t0,0"!==(e.attr&&e.attr.transform)?[{initialAttr:{transform:"t0,0"},slot:"plot"}]:[{finalAttr:{transform:"t0,0"},slot:"plot"}]}}}}},,,,,,,function(e,t,n){"use strict";t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t["default"]=function(e){var t,n,a,i=window.parseFloat,r=e._createNode,l=e._setFillAndStroke,s=e.el.constructor,c={Q:"L",Z:"X",q:"l",z:"x",",":" "},h=/,?([achlmqrstvxz]),?/gi,u=function(){return this.join(",").replace(h,t)};e.svg?(t="$1",n=function(){var n=e.is(arguments[0],"array")?arguments[0]:Array.prototype.slice.call(arguments);n?"string"==typeof n?n=n.replace(h,t):n.toString=u:n="M0,0",this.node.setAttribute("d",n.toString())},e._engine.litepath=function(t,n,o,a,i){var c,h=r("path");return(a||n).canvas.appendChild(h),(c=new s(h,n,a)).type="litepath",c.id=h.raphaelid=e._oid++,h.raphael=!0,l(c,i||{fill:"none",stroke:"#000"}),c},e._getPath.litepath=function(t){return e.parsePathString(t.node.getAttribute("d"))}):e.vml&&(t=function(e,t){return c[t]||t},a=function(){var e=this;return e._transform.apply(e,arguments),e._.bcoord&&(e.node.coordsize=e._.bcoord),e},n=function(e){return e?"string"==typeof e?e=e.replace(h,t):e.toString=u:e="M0,0",this.node.path=e,this},e._engine.litepath=function(t,n,o,l,c){var h,u=r("shape"),p=u.style,d=new s(u,n,l),g=c||{fill:"none",stroke:"#000"};return p.cssText="position:absolute;left:0;top:0;width:21600px;height:21600px;",o=i(o),isNaN(o)?u.coordsize="21600 21600":(d._.bzoom=o,p.width="1px",p.height="1px",u.coordsize=d._.bcoord=o+" "+o),u.coordorigin=n.coordorigin,d.type="litepath",d.id=u.raphaelid=e._oid++,u.raphael=!0,d._transform=d.transform,d.transform=a,e._setFillAndStroke(d,g),(l||n).canvas.appendChild(u),(h=r("skew")).on=!0,u.appendChild(h),d.skew=h,d},e._getPath.litepath=function(t){return e.parsePathString(t.node.path||"")}),e.fn.litepath=function(t,a,i){var r,l,c;return"object"===(void 0===t?"undefined":o(t))&&t.constructor!==s&&(r=t,l=(t=t.litepath).zoom,i=t.group),a&&a.constructor===s?(i=a,l=void 0):l=a,t&&t.constructor===s&&(i=t,t=""),(c=e._engine.litepath(t,this,l,i,r)).ca.litepath=n,t&&c.attr("litepath",e.is(t,"array")?[t]:t),this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c}}},,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.setAxisDimention=t.getSpecificyAxisConf=t.getSpecificxAxisConf=t._feedAxesRawData=undefined;var o=l(n(354)),a=l(n(384)),i=n(118),r=l(n(385));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c,h,u,p,d=Math.max,g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.registerFactory("axis",a["default"],["canvas"]),n.registerFactory("dataset",r["default"],["vCanvas"]),n}return s(t,e),t.getName=function(){return"MSDyBaseCartesian"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.syncaxislimits=0},t.prototype._feedAxesRawData=function(){var e,t,n,o,a,r,l,s,c,h=this.config,u=this.getFromEnv("color-manager"),p=this.getFromEnv("dataSource"),d=this.getFromEnv("chart-attrib"),g=this.config.is3D,f=g?i.chartPaletteStr.chart3D:i.chartPaletteStr.chart2D,m=h.primaryAxisOnleft=(0,i.pluckNumber)(d.primaryaxisonleft,1),b=(0,i.pluckNumber)(d.syncaxislimits,0),v=[{line:[]}],y=[{line:[]}],x=p.trendlines||[],C=(0,i.pluckNumber)(d.showzeroplane,1),k=(0,i.pluckNumber)(d.showzeroplanevalue);for(C||k!==i.UNDEF||(k=0),e=this.getSpecificxAxisConf(),t=this.getSpecificyAxisConf(),n={isActive:!1,isPercent:this.isPercentage,axisIndex:1,uniqueClassName:1,outCanfontFamily:(0,i.pluck)(d.outcnvbasefont,d.basefont,"Verdana,sans"),outCanfontSize:(0,i.pluckFontSize)(d.outcnvbasefontsize,d.basefontsize,10),outCancolor:(0,i.pluck)(d.outcnvbasefontcolor,d.basefontcolor,u.getColor(f.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:d.yaxisnamepadding,axisValuePadding:d.yaxisvaluespadding,axisNameFont:d.syaxisnamefont,axisNameFontSize:d.syaxisnamefontsize,axisNameFontColor:d.syaxisnamefontcolor,axisNameFontBold:d.syaxisnamefontbold,axisNameFontItalic:d.syaxisnamefontitalic,axisNameBgColor:d.syaxisnamebgcolor,axisNameBorderColor:d.syaxisnamebordercolor,axisNameAlpha:d.syaxisnamealpha,axisNameFontAlpha:d.syaxisnamefontalpha,axisNameBgAlpha:d.syaxisnamebgalpha,axisNameBorderAlpha:d.syaxisnameborderalpha,axisNameBorderPadding:d.syaxisnameborderpadding,axisNameBorderRadius:d.syaxisnameborderradius,axisNameBorderThickness:d.syaxisnameborderthickness,axisNameBorderDashed:d.syaxisnameborderdashed,axisNameBorderDashLen:d.syaxisnameborderdashlen,axisNameBorderDashGap:d.syaxisnameborderdashgap,axisNameWidth:d.syaxisnamewidth,useEllipsesWhenOverflow:d.useellipseswhenoverflow,rotateAxisName:(0,i.pluckNumber)(d.rotateyaxisname,1),axisName:d.syaxisname,divLineColor:(0,i.pluck)(d.divlinecolor,u.getColor(f.divLineColor)),divLineAlpha:(0,i.pluck)(d.divlinealpha,u.getColor("divLineAlpha")),divLineThickness:(0,i.pluckNumber)(d.divlinethickness,1),divLineIsDashed:Boolean((0,i.pluckNumber)(d.divlinedashed,d.divlineisdashed,0)),divLineDashLen:(0,i.pluckNumber)(d.divlinedashlen,4),divLineDashGap:(0,i.pluckNumber)(d.divlinedashgap,2),showAlternateGridColor:(0,i.pluckNumber)(d.showalternatehgridcolor,1),alternateGridColor:(0,i.pluck)(d.alternatehgridcolor,u.getColor("altHGridColor")),alternateGridAlpha:(0,i.pluck)(d.alternatehgridalpha,u.getColor("altHGridAlpha")),numDivLines:d.numdivlines,axisMinValue:b?(0,i.pluckNumber)(d.syaxisminvalue,d.pyaxisminvalue,d.yaxisminvalue):d.syaxisminvalue,axisMaxValue:b?(0,i.pluckNumber)(d.syaxismaxvalue,d.pyaxismaxvalue,d.yaxismaxvalue):d.syaxismaxvalue,setAdaptiveMin:d.setadaptivesymin||d.setadaptiveymin,adjustDiv:d.adjustdiv,labelStep:d.yaxisvaluesstep,showAxisValues:(0,i.pluckNumber)(d.showsyaxisvalues,d.showsyaxisvalue,d.showyaxisvalues,d.showyaxisvalue),showLimits:(0,i.pluckNumber)(d.showsecondarylimits,d.showyaxislimits,d.showlimits),showDivLineValues:(0,i.pluckNumber)(d.showdivlinesecondaryvalue,d.showyaxisvalues,d.showyaxisvalue,1),showZeroPlane:C,zeroPlaneColor:d.zeroplanecolor,zeroPlaneThickness:(0,i.pluckNumber)(d.zeroplanethickness,d.divlinethickness,2),zeroPlaneAlpha:d.zeroplanealpha,showZeroPlaneValue:k,trendlineColor:d.trendlinecolor,trendlineToolText:d.trendlinetooltext,trendlineThickness:d.trendlinethickness,trendlineAlpha:d.trendlinealpha,showTrendlinesOnTop:d.showtrendlinesontop,showAxisLine:g?0:(0,i.pluckNumber)(d.showsyaxisline,d.showaxislines,d.drawAxisLines,0),axisLineThickness:(0,i.pluckNumber)(d.syaxislinethickness,d.axislinethickness,1),axisLineAlpha:(0,i.pluckNumber)(d.syaxislinealpha,d.axislinealpha,100),axisLineColor:(0,i.pluck)(d.syaxislinecolor,d.axislinecolor,"#000000")},e.vtrendlines=(0,i.extend2)([],p.vtrendlines),s=0,l=x.length;s<l;s++)for(r=(o=x[s]&&x[s].line||[]).length,c=0;c<r;c++)"s"===(a=o[c]||{}).parentyaxis?v[0].line.push(a):y[0].line.push(a);return t.trendlines=(0,i.extend2)([],y),n.trendlines=(0,i.extend2)([],v),1===m?(t.isVertical=!0,t.isReverse=!0,t.isOpposit=!1,n.isVertical=!0,n.isReverse=!0,n.isOpposit=!0):(t.isVertical=!0,t.isReverse=!0,t.isOpposit=!0,n.isVertical=!0,n.isReverse=!0,n.isOpposit=!1),{yAxisConf:[t,n],xAxisConf:[e]}},t.prototype.getSpecificxAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config.is3D,n=this.getBasexAxisConf(),o=this.config;return n.zeroPlaneThickness=(0,i.pluckNumber)(e.vzeroplanethickness,e.vdivlinethickness,2),n.zeroPlaneAlpha=(0,i.pluckNumber)(e.vzeroplanealpha,e.vdivlinealpha,o.zeroplanealpha),n.showZeroPlaneValue=e.showvzeroplanevalue,n.showAxisLine=t?0:(0,i.pluckNumber)(e.showxaxisline,e.showaxislines,e.drawAxisLines,0),n.axisLineColor=(0,i.pluck)(e.xaxislinecolor,e.axislinecolor,"#000000"),n.isReverse=!1,n.showAlternateGridColor=(0,i.pluckNumber)(e.showalternatevgridcolor,0),n.numDivLines=e.numvdivlines,n.maxLabelHeight=e.maxlabelheight,n.axisName=e.xaxisname,n.setAdaptiveMin=e.setadaptivexmin,n.showLimits=e.showvlimits,n.showDivLineValues=(0,i.pluckNumber)(e.showvdivlinevalues,e.showvdivlinevalues),n},t.prototype.getSpecificyAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config.is3D,n=t?i.chartPaletteStr.chart3D:i.chartPaletteStr.chart2D,o=this.config,a=this.getFromEnv("color-manager"),r=(0,i.pluckNumber)(e.syncaxislimits,0),l=(0,i.pluckNumber)(e.showzeroplane,1),s=(0,i.pluckNumber)(e.showzeroplanevalue);return l||s!==i.UNDEF||(s=0),{outCanfontFamily:(0,i.pluck)(e.outcnvbasefont,e.basefont,"Verdana,sans"),outCanfontSize:(0,i.pluckFontSize)(e.outcnvbasefontsize,e.basefontsize,10),outCancolor:(0,i.pluck)(e.outcnvbasefontcolor,e.basefontcolor,a.getColor(n.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:(0,i.pluckNumber)(e.pyaxisnamepadding,e.yaxisnamepadding),axisValuePadding:(0,i.pluckNumber)(e.pyaxisvaluespadding,e.yaxisvaluespadding),axisNameFont:(0,i.pluck)(e.pyaxisnamefont,e.yaxisnamefont),axisNameFontSize:(0,i.pluckNumber)(e.pyaxisnamefontsize,e.yaxisnamefontsize),axisNameFontColor:(0,i.pluck)(e.pyaxisnamefontcolor,e.yaxisnamefontcolor),axisNameFontBold:(0,i.pluckNumber)(e.pyaxisnamefontbold,e.yaxisnamefontbold),axisNameFontItalic:(0,i.pluckNumber)(e.pyaxisnamefontitalic,e.yaxisnamefontitalic),axisNameBgColor:(0,i.pluck)(e.pyaxisnamebgcolor,e.yaxisnamebgcolor),axisNameBorderColor:(0,i.pluck)(e.pyaxisnamebordercolor,e.yaxisnamebordercolor),axisNameAlpha:(0,i.pluckNumber)(e.pyaxisnamealpha,e.yaxisnamealpha),axisNameFontAlpha:(0,i.pluckNumber)(e.pyaxisnamefontalpha,e.yaxisnamefontalpha),axisNameBgAlpha:(0,i.pluckNumber)(e.pyaxisnamebgalpha,e.yaxisnamebgalpha),axisNameBorderAlpha:(0,i.pluckNumber)(e.pyaxisnameborderalpha,e.yaxisnameborderalpha),axisNameBorderPadding:(0,i.pluckNumber)(e.pyaxisnameborderpadding,e.yaxisnameborderpadding),axisNameBorderRadius:(0,i.pluckNumber)(e.pyaxisnameborderradius,e.yaxisnameborderradius),axisNameBorderThickness:(0,i.pluckNumber)(e.pyaxisnameborderthickness,e.yaxisnameborderthickness),axisNameBorderDashed:(0,i.pluckNumber)(e.pyaxisnameborderdashed,e.yaxisnameborderdashed),axisNameBorderDashLen:(0,i.pluckNumber)(e.pyaxisnameborderdashlen,e.yaxisnameborderdashlen),axisNameBorderDashGap:(0,i.pluckNumber)(e.pyaxisnameborderdashgap,e.yaxisnameborderdashgap),axisNameWidth:(0,i.pluckNumber)(e.pyaxisnamewidth,e.yaxisnamewidth),useEllipsesWhenOverflow:e.useellipseswhenoverflow,rotateAxisName:(0,i.pluckNumber)(e.rotateyaxisname,1),axisName:(0,i.pluck)(e.pyaxisname,e.yaxisname),divLineColor:(0,i.pluck)(e.divlinecolor,a.getColor(n.divLineColor)),divLineAlpha:(0,i.pluck)(e.divlinealpha,a.getColor("divLineAlpha")),divLineThickness:(0,i.pluckNumber)(e.divlinethickness,1),divLineIsDashed:Boolean((0,i.pluckNumber)(e.divlinedashed,e.divlineisdashed,0)),divLineDashLen:(0,i.pluckNumber)(e.divlinedashlen,4),divLineDashGap:(0,i.pluckNumber)(e.divlinedashgap,2),showAlternateGridColor:(0,i.pluckNumber)(e.showalternatehgridcolor,1),alternateGridColor:(0,i.pluck)(e.alternatehgridcolor,a.getColor("altHGridColor")),alternateGridAlpha:(0,i.pluck)(e.alternatehgridalpha,a.getColor("altHGridAlpha")),numDivLines:e.numdivlines,axisMinValue:r?(0,i.pluckNumber)(e.syaxisminvalue,e.pyaxisminvalue,e.yaxisminvalue):(0,i.pluckNumber)(e.pyaxisminvalue,e.yaxisminvalue),axisMaxValue:r?(0,i.pluckNumber)(e.syaxismaxvalue,e.pyaxismaxvalue,e.yaxismaxvalue):(0,i.pluckNumber)(e.pyaxismaxvalue,e.yaxismaxvalue),setAdaptiveMin:e.setadaptiveymin,adjustDiv:e.adjustdiv,labelStep:e.yaxisvaluesstep,showAxisValues:(0,i.pluckNumber)(e.showyaxisvalues,e.showyaxisvalue),showLimits:(0,i.pluckNumber)(e.showyaxislimits,e.showlimits,this.showLimits),showDivLineValues:(0,i.pluckNumber)(e.showdivlinevalues,e.showdivlinevalue),showZeroPlane:l,zeroPlaneColor:e.zeroplanecolor,zeroPlaneThickness:(0,i.pluckNumber)(e.zeroplanethickness,e.divlinethickness,o.zeroplanethickness,2),zeroPlaneAlpha:(0,i.pluckNumber)(e.zeroplanealpha,e.divlinealpha,o.zeroplanealpha),showZeroPlaneValue:s,showZeroPlaneOnTop:o.showzeroplaneontop,trendlineColor:e.trendlinecolor,trendlineToolText:e.trendlinetooltext,trendlineThickness:e.trendlinethickness,trendlineAlpha:e.trendlinealpha,showTrendlinesOnTop:e.showtrendlinesontop,showAxisLine:t?0:(0,i.pluckNumber)(e.showyaxisline,e.showaxislines,e.drawAxisLines,0),axisLineThickness:(0,i.pluckNumber)(e.yaxislinethickness,e.axislinethickness,1),axisLineAlpha:(0,i.pluckNumber)(e.yaxislinealpha,e.axislinealpha,100),axisLineColor:(0,i.pluck)(e.yaxislinecolor,e.axislinecolor,"#000000"),forceTrendBelow:!!o.is3D}},t.prototype.setAxisDimention=function(){var e,t,n=this.config,o=this.getChildren(),a=o.yAxis,i=o.xAxis&&o.xAxis[0],r=a[0],l=a[1],s=n.xDepth,c=o.canvas[0].config,h=c.canvasBorderWidth,u=c.canvasPadding,p=c.canvasPaddingLeft,g=c.canvasPaddingRight,f=c.canvasPaddingTop,m=n.primaryAxisOnleft,b=c.canvasPaddingBottom;i&&i.setAxisDimention({x:n.canvasLeft+(s||0)+d(p,u),y:n.canvasBottom+(n.shift||0)+h,opposite:n.canvasTop-h,axisLength:n.canvasWidth-(s||0)-d(p,u)-d(g,u)}),m?(n.yAxisStartXPos=n.canvasLeft-h,n.sYAxisStartXPos=n.canvasRight+h):(n.yAxisStartXPos=n.canvasRight+h,n.sYAxisStartXPos=n.canvasLeft-h),e=n.yAxisStartXPos,t=n.sYAxisStartXPos,r&&r.setAxisDimention({x:e,y:n.canvasTop+f,opposite:t,axisLength:n.canvasHeight-f-b}),l&&l.setAxisDimention({x:t,y:n.canvasTop+f,opposite:e,axisLength:n.canvasHeight-f-b})},t}(o["default"]);t._feedAxesRawData=c=g.prototype._feedAxesRawData,t.getSpecificxAxisConf=h=g.prototype.getSpecificxAxisConf,t.getSpecificyAxisConf=u=g.prototype.getSpecificyAxisConf,t.setAxisDimention=p=g.prototype.setAxisDimention,t._feedAxesRawData=c,t.getSpecificxAxisConf=h,t.getSpecificyAxisConf=u,t.setAxisDimention=p,t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.getChildren("canvas")[0],r=function(e,t){return JSON.stringify(e)!==JSON.stringify(t)},l={zoomable:!0,pannable:!0},s=void 0,c=!!Number(e.config.syncaxislimits),h=void 0,u=n.getChildren("axisRefVisualCartesian")[0],p=e._feedAxesRawData(),d=function(e){var t=e.sender;u.addexplicitDrawItems(t.getId(),t),u.asyncDraw()};(0,o.componentFactory)(e,i["default"],"xAxis",1,p.xAxisConf),(0,o.componentFactory)(e,a["default"],"yAxis",2,p.yAxisConf),s=(t=e.getChildren()).xAxis[0],(h=t.yAxis).forEach(function(t){t.setLinkedItem("canvas",n),u.setLinkedItem(t.getId(),t),u.addExtEventListener("visiblerangeset",d,t),n.attachAxis(t,!0,e.zoomY?l:{})}),s.setLinkedItem("canvas",n),u.setLinkedItem(s.getId(),s),h[1].setAxisConfig({dependentInfo:{id:h[0].getId(),count:!0,limit:c}}),h[1].getState("divlineEventAdded")||(h[1].addExtEventListener("divlinesSet",function(e){var t=h[1].config.dependentInfo;e.sender.getId()===t.id&&(t.numDivLines=e.data)},h[0]),h[1].setState("divlineEventAdded",!0)),c&&(h[1].getState("dataLimitEventAdded")||(h[1].addExtEventListener("dataLimitSet",function(e){var t=h[1].config.dependentInfo;e.sender.getId()===t.id&&r(t.dataLimit,e.data)&&(t.dataLimit=e.data,h[1].config.isDataLimitSet&&h[1].setDataLimit())},h[0]),h[1].setState("dataLimitEventAdded",!0)),h[0].setAxisConfig({dependentInfo:{id:h[1].getId(),limit:!0}}),h[0].getState("dataLimitEventAdded")||(h[0].addExtEventListener("dataLimitSet",function(e){var t=h[0].config.dependentInfo;e.sender.getId()===t.id&&r(t.dataLimit,e.data)&&(t.dataLimit=e.data,h[0].setDataLimit())},h[1]),h[0].setState("dataLimitEventAdded",!0))),u.addExtEventListener("visiblerangeset",d,s),n.attachAxis(s,!1,e.zoomX?l:{}),e._setCategories()};var o=n(118),a=r(n(292)),i=r(n(321));function r(e){return e&&e.__esModule?e:{"default":e}}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getFromEnv("dataSource").dataset,n=e.getChildren().canvas[0].getChildren("vCanvas"),r=n[0],l=n[1],s=void 0,c=e.getFromEnv("chartConfig").isdual,h=void 0,u={vCanvasDatasetsDef0:{},vCanvasDatasetsDef1:{}},p=void 0,d=void 0,g=void 0,f=void 0,m=void 0,b=void 0,v=void 0,y={},x={};for(t||e.setChartMessage(),h=0;h<t.length;h++)"s"===(m=(s=t[h]).parentyaxis||"").toLowerCase()&&c?(f=(0,o.pluck)(s.renderas,e.config.sDefaultDatasetType),b=l,v=x,p=u.vCanvasDatasetsDef1):(f=(0,o.pluck)(s.renderas,e.config.defaultDatasetType),b=r,v=y,p=u.vCanvasDatasetsDef0),f=e.getDSType(f,"s"===m.toLowerCase()),(g=e.getDSGroupdef(f,"s"===m.toLowerCase()))&&((0,o.componentFactory)(b,g,i),v[g.getName().toLowerCase()]=!0),v[f.toLowerCase()]=!0,p[f]?(p[f].conf.push(s),p[f].indices.push(h)):(p[f]={},p[f].indices=[h],p[f].classDef=e.getDSdef(f),p[f].conf=[s],p[f].pYAxis=m.toLowerCase(),p[f].parent=g?b.getChildren(i)[0]:b);for(var C in e.config._hascolumn=!1,u)if(u.hasOwnProperty(C))for(f in p=u[C])p.hasOwnProperty(f)&&("group"===(d=p[f]).parent.getType()&&d.parent.configure(d.conf),(0,o.datasetFactory)(d.parent,d.classDef,"dataset_"+f,d.conf.length,d.conf,d.indices),"column"===f&&(e.config._hascolumn=!0));(0,a.removeComponents)(n[0],Object.keys(y)),(0,a.removeComponents)(n[1],Object.keys(x))};var o=n(118),a=n(386),i="multiseriesColumnManager"},function(e,t,n){"use strict";t.__esModule=!0;t.removeComponents=function(e,t){e&&e.iterateComponents(function(e){-1!==t.indexOf(e.getName().toLowerCase())||e.getLinkedParent().getState("removed")||e.remove()})}},,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(347)),a=n(118),i=c(n(397)),r=n(125),l=n(398),s=c(n(399));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=a.preDefStr.setRolloverAttrStr,p=a.preDefStr.setRolloutAttrStr;(0,r.addDep)({name:"mssplineareaAnimation",type:"animationRule",extension:s["default"]});var d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.drawCommonElements=a.stubFN,n}return h(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes&&e.prototype.configureAttributes.call(this,t),i["default"].call(this)},t.prototype.getDataLimits=function(){return{max:this.config.maxValue,min:this.config.minValue}},t.prototype.drawPlots=function(){var e,t,n,o,i,r,s,c,h,d,g,f,m,b,v,y,x,C,k,w,S,L,A,N,_=this.config,P=this.getFromEnv("chart"),F=P.config,E=this.getFromEnv("xAxis"),T=null,D=[],O=this.components.data,I=F.connectnulldata,M=F.minimizetendency,R=_.plotbordercolor,V=_.plotborderalpha,B=_.plotBorderDashStyle,G=_.plotborderthickness,j=this.getContainer(),H=[],W=this.getGraphicalElement("splineElement"),z=_.fillColor,U=this.components.removeDataArr||[],q=U.length,Y=j&&j.shadowGroup,K=_.shadow,X=this.getState("visible"),Z={},J=!F.drawfullareaborder,$=this.getGraphicalElement("connector"),Q=this.getFromEnv("animationManager"),ee=_._oldStartIndex,te=_._oldEndIndex,ne=this.config.JSONData.renderas||P.config.defaultDatasetType,oe=/area/gi.test(ne);for(_.imagesLoaded=0,O||(O=this.components.data),e=E.getTicksLen(),A=_.scrollMinVal,N=_.scrollMaxVal,A>ee&&this.flushOnScroll(ee,A>te?te:A),N<te&&this.flushOnScroll(N<ee?ee:N,te),_._oldStartIndex=A,_._oldEndIndex=N,t=A;t<N;t++)(c=O[t])&&(g=(s=c&&c.config).setValue,C=(Z=s.anchorProps).shadow,h=c.graphics.element,d=c.graphics.hotElement,w=c.graphics.image,null===g?(h&&h.hide(),d&&d.hide(),w&&w.hide(),I||(T=null)):(i=s._Py,o=s._Px,!1===X&&(i=s._Pby),D.push({x:o,y:i,lastXPos:r,lastYPos:T}),r=o,T=i,b=Z.anchorAlpha,x=Z.radius&&b,m=s.hoverEffects,y=h?X&&x?"updating":"disappearing":"appearing",Z.imageUrl?this.drawAnchorImage(c):(v=Object.assign({},s.props.element.attr),"disappearing"!==y&&X||(v=a.UNDEF),h=c.graphics.element=Q.setAnimation({el:h||"path",attr:v,container:j.plotGroup,component:this,label:"anchor"}),w&&w.hide(),h&&h.show().shadow(C,j.anchorShadowGroup).data("anchorRadius",Z.radius).data("anchorHoverRadius",m.anchorRadius).data("eventArgs",s.eventArgs),m.enabled&&h&&h.data("anchorRadius",Z.radius).data("anchorHoverRadius",m.anchorRadius).data("hoverEnabled",m.enabled).data(u,m.attrs.setRolloverAttr).data(p,m.attrs.setRolloutAttr))));for(n=e,S={path:H=(H=(0,l.getSplinePath)(D,s&&s._Pby,M,oe,n).closedPath).join(),stroke:(0,a.toRaphaelColor)({color:R,alpha:V}),"stroke-width":J?0:G,fill:(0,a.toRaphaelColor)(z),"stroke-linecap":"round","stroke-linejoin":G>2?"round":"miter","stroke-dasharray":B},this.getState("visible")||(S=a.UNDEF),!(f=Q.setAnimation({el:W||"path",attr:S,container:j.commonElemsGroup,component:this,label:"line"}))&&W&&this.removeGraphicalElement(W),W||this.addGraphicalElement("splineElement",f),""!==H&&this.getState("visible")?f.show().shadow(K,Y):f&&f.hide(),J&&(L={path:[],stroke:(0,a.toRaphaelColor)({color:R,alpha:V}),"stroke-width":G,"stroke-linecap":"round","stroke-linejoin":G>2?"round":"miter","stroke-dasharray":B,name:"connector"},k=Q.setAnimation({el:$||"path",attr:L,container:j.areaGroup,state:$?this.getState("visible")?"updating":"disappearing":"appearing",component:this,label:"line"}),$||this.addGraphicalElement("connector",k)),t=0;t<q;t++)this._removeDataVisuals(U.shift())},t.prototype.getName=function(){return"splinearea"},t}(o["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0;var o=function(e,t,n){var o,i,r,l,s={};for(i=0;i<e.length;++i)s["D"+e[i].index]=0;for(o=0;o<10;++o)for(i=0;i<e.length;++i)r=0===i?(3*(e[i+1].y-e[i].y)-s["D"+e[i+1].index])/2:i===e.length-1?(3*(e[i].y-e[i-1].y)-s["D"+e[i-1].index])/2:(3*(e[i+1].y-e[i-1].y)-s["D"+e[i+1].index]-s["D"+e[i-1].index])/4,s["D"+e[i].index]=r;for(l=Math.round(t/(e.length-1)),i=1;i<e.length;++i)a(i,e,s,n,l)},a=function(e,t,n,o,a){var i,r,l,s,c,h,u,p,d,g,f,m,b=t,v=e;for(i=n["D"+b[0].index],r=n["D"+b[v].index],l=b[0].y,s=i,c=3*(b[v].y-b[0].y)-2*i-r,h=2*(b[0].y-b[v].y)+i+r,u=o.max,p=o.min,d=0,g=a;d<=g;d++)(m=l+s*(f=d/g)+c*f*f+h*f*f*f)<p&&(p=m),m>u&&(u=m);o.max=u,o.min=p};t["default"]=function(){var e,t=this.config,n=this.getFromEnv("chart"),a=this.getFromEnv("chartConfig"),i=n.config.origRenderWidth,r=a.connectnulldata,l=a.minimizetendency,s=this.components.data,c=Number.MIN_VALUE,h=Number.MAX_VALUE;0===l&&(e=function u(e,t,n,a,i){var r=[],l=!1,s=a||0;for(i=i||{max:Number.MIN_VALUE,min:Number.MAX_VALUE};s<e.length;++s)if(l){if(isNaN(e[s].config.setValue)||null===e[s].config.setValue){if(n)continue;break}r.push({index:s,y:e[s].config.setValue})}else{if(isNaN(e[s].config.setValue)||null===e[s].config.setValue)continue;l=!0,r.push({index:s,y:e[s].config.setValue})}return r.length>2&&o(r,t,i),s<e.length&&!n&&u(e,t,n,s,i),i}(s,i,r),t.maxValue=Math.max(t.maxValue,e.max),t.minValue=Math.min(t.minValue,e.min),t.maxValue===c&&(t.maxValue=0),t.minValue===h&&(t.minValue=0))}},function(e,t,n){"use strict";t.__esModule=!0;var o="M",a="Z",i="R",r="C",l=Math,s=l.sqrt,c=l.abs,h=function(e,t,n,o){return(o-t)/(n-e)},u=function(e,t,n,o){return(e-n)*t+o},p=function(e,t,n,o){return(e-o)/t+n},d=function(e,t,n,o){var a=(o-t)/s((n-e)*(n-e)+(o-t)*(o-t)),i=c(.5*a);return e*i+n*(1-i)},g=function(e,t,n,o){var l=e.length,s=e[l-1],c=s.length,h=s[0],u=s[c-2];c<3||(h!==i&&h!==r||3!==c||(e[l-1][0]="L"),t&&e.push(["L",u,o,n,o,a]))};t.getSplinePath=function(e,t,n,l,s){var c,f,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D,O,I,M,R,V,B=n,G=[null],j=[],H=[];for(R=0,V=e.length;R<V;R+=1)L=e[R],I=e[R-1]||{},M=e[R+1]||{},v=L.x,f=L.y,y=I.x,m=I.y,x=M.x,b=M.y,C=L.lastYPos,k=L.lastXPos,E=j.length,w=H.length,B?null!==C?(c=D,R===e.length-1?(F=G[R-T-1],P=u(_=A=(v+y)/2,F,y,m),(m>f&&P<f||m<f&&P>f)&&(_=p(P=f,F,y,m)),D.push(_,P,A,(f+m)/2,v,f),j.push(D),H.push(D),l&&g(j,!0,O,t),l&&g(H,!1)):(F=G[R-T-1],m>f&&b>=f||m<f&&b<=f?(S=0,A=d(y,m,v,f),N=f,R-T!=1?(P=u(_=A,F,y,m),(m>f&&P<f||m<f&&P>f)&&(_=p(P=f,F,y,m)),D.push(_,P,A,N,v,f)):D.push((v+y)/2,(f+m)/2,A,N,v,f)):m===f?(S=0,D.push(y,m,v,f,v,f)):(m>f&&f>b||m<f&&f<b)&&(S=h(y,m,x,b),A=d(y,m,v,f),N=u(A,S,v,f),(m>f&&N>m||m<f&&N<m)&&(A=p(N=m,S,v,f)),R-T!=1?(P=u(_=A,F,y,m),(m>f&&P<f||m<f&&P>f)&&(_=p(P=f,F,y,m)),D.push(_,P,A,N,v,f)):D.push((v+y)/2,(f+m)/2,A,N,v,f)),G.push(S))):null===C&&0!==R?(c||(c=[]),c[0]===r&&(j.push(D),H.push(D),l&&g(j,!0,O,t),l&&g(H,!1)),j.push([o,v,f]),H.push([o,v,f]),O=v,D=[r],T=R,G=[null]):(j.push([o,v,f]),H.push([o,v,f]),O=v,D=[r],T=R):null!==C?E>=2?(j[E-1][0]===o&&j.push([i]),H[w-1][0]===o&&H.push([i]),E=j.length,w=H.length,(c=j[E-1]).length,j[E-1].push(v),j[E-1].push(f),H[w-1].push(v),H[w-1].push(f),R===s-1&&c[0]===i&&(g(j,!0,O,t),g(H,!1))):(j.push([o,k,C]),j.push([i,v,f]),H.push([o,k,C]),H.push([i,v,f]),O=k):null===C&&E>=2&&((c=j[E-1])[0]===i&&(g(j,!0,O,t),g(H,!1)),j.push([o,v,f]),H.push([o,v,f]),O=v);return c=j[j.length-1],l&&c&&(c[c.length-1]===a||c[0]!==i&&c[0]!==r||(g(j,!0,O,t),g(H,!1))),l||(j=B?j:H).length>=2&&g(j,!1),{closedPath:j,openPath:H}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(118);t["default"]={"*.dataset.splinearea":function(){return{"anchor.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}],"anchor.updating":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"anchor.disappearing":[{finalAttr:{opacity:0,"fill-opacity":0,"stroke-opacity":0},slot:"final"}],"line.appearing":function(e){var t=e.component,n=t.components.data,a=t.getLinePath(n,null,"zero"),i=e.attr;return[{initialAttr:{opacity:0,path:function(e){var t=e.length,n=[],a=void 0,i=void 0,r=!1,l=!0,s=void 0;for(s=0;s<t;++s)a=e[s],l?(n.push(a),i=(0,o.extend2)([],a),l=!1):"Z"!==a?r||(n.push(a),a.toString()===e[s-1].toString()&&(r=!0)):(l=!0,r=!1,i[0]="L",n.push(i,"Z"));return n}(a.getPathArr())},finalAttr:{opacity:1,path:i&&i.path},startEnd:{start:0,end:.5},slot:"plot",hookFn:function(){this.attr({opacity:1})}}]},"label.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"label.updating":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"group.appearing":function(e){return"label-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:"plot-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]}}}}},function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(346)),a=n(118),i=c(n(397)),r=n(125),l=n(398),s=c(n(401));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}(0,r.addDep)({name:"mssplineAnimation",type:"animationRule",extension:s["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return h(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"spline"},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes&&e.prototype.configureAttributes.call(this,t),i["default"].call(this)},t.prototype.getDataLimits=function(){return{max:this.config.maxValue,min:this.config.minValue}},t.prototype.drawCommonElements=function(){var e,t,n,o,i,r=this.components.data,s=this.config,c=Number(this.getFromEnv("chartConfig").connectnulldata),h=this.getFromEnv("xAxis"),u=this.getFromEnv("yAxis"),p=s.lineDashStyle,d=s.linethickness,g=[],f=null,m={color:s.linecolor,alpha:s.alpha},b={x:h.getLimit(),y:u.getLimit()},v=this.getState("visible")?r.length:0,y=s.lineOb||{},x=[],C=this.getFromEnv("chart"),k=/area/gi.test(C.defaultDatasetType);for(b.x.minPixel=h.getPixel(b.x.min),b.x.maxPixel=h.getPixel(b.x.max),b.y.minPixel=u.getPixel(b.y.min),b.y.maxPixel=u.getPixel(b.y.max),b.y.base=u.getPixel(0),b.x.base=h.getPixel(0),t=0;t<v;++t)(n=r[t])&&(i=(o=n.config||{}).setValue,o._Pbx=void 0,o._Pby=void 0,x[t]={config:{_Px:o._Px,_Py:o._Py,setValue:o.setValue}},c||null!==i&&void 0!==i?(g.push({x:o._Px,y:o._Py,lastYPos:f,lastXPos:e}),f=o._Py,e=o._Px):f=null);s.pathStartIndex=0,s.pathEndIndex=void 0,y["default"]=y["default"]||{},y["default"].used=!0,y["default"].path=[{pathArr:(0,l.getSplinePath)(g,u.getPixel(u.getAxisBase()),C.config.minimizetendency,k).closedPath,path2Arr:[],getPathArr:function(){var e=this.pathArr,t=this.path2Arr;return e.length||t.length?e.concat(t):[]}}],y["default"].attr={"stroke-dasharray":p,"stroke-width":d,stroke:(0,a.toRaphaelColor)(m),"stroke-linecap":"round"},this._drawCommonElementsHelper(y),this.config.lineOb=y,s.prevLim=b,s.prevDataStore=x},t}(o["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(349),i=(o=a)&&o.__esModule?o:{"default":o};t["default"]={"*.dataset.spline":i["default"]["*.dataset.line"]}},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(131),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=Math,c=s.min,h=s.max,u=s.abs,p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.setState("visible",!0),n}return l(t,e),t.prototype.getType=function(){return"group"},t.getName=function(){return"columnMultiSeriesgroup"},t.prototype.getName=function(){return"columnMultiSeriesgroup"},t.prototype.preConfigure=function(t){if(!t)return!1;this.config.JSONData=t,e.prototype.preConfigure.call(this,t)},t.prototype.configure=function(t){if(!t)return!1;e.prototype.configure.call(this,t)},t.prototype.setVisibility=function(){var e=0;this._mapChildren(function(e){e.setVisibility&&e.setVisibility()}),this._mapChildren(function(t){t.getState("visible")&&e++}),this.setState("visible",!!e)},t.prototype.createContainer=function(){var e=this.getFromEnv("animationManager"),t=void 0,n=void 0,o=this.getLinkedParent().getChildContainer();for(t in o)n=o[t],!this.getChildContainer(t)&&this.addChildContainer(t,e.setAnimation({el:"group",attr:{name:"manager-"+t},component:this,container:n}))},t.prototype.allocatePosition=function(){this.setColumnPosition()},t.prototype.draw=function(){this.createContainer()},t.prototype.getCanvasPadding=function(){var e,t,n={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return this.setColumnPosition(),this._mapChildren(function(o){for(t in e=!o.getState("removed")&&o.getState("visible")&&o.getCanvasPadding&&o.getCanvasPadding()||{})e.hasOwnProperty(t)&&(n[t]=Math.max(e[t],n[t]))}),n},t.prototype.setColumnPosition=function(){var e,t,n,o,a=this.getFromEnv("chartConfig"),i=this.getFromEnv("chart-attrib"),l=this.getFromEnv("xAxis"),s=this.getFromEnv("numOfColumns"),p=a.plotSpacePercent,d=h((0,r.pluckNumber)(p,20)%100,0),g=d/200,f=l.getPixel(0),m=l.getPixel(1),b=this.getFromEnv("chart").isBar?a.maxBarHeight:a.maxColWidth,v=u(m-f),y=void 0,x=a.plotPaddingPercent,C=!0,k=a.overlapColumns,w=0,S=0;this.addToEnv("groupMaxWidth",v),this._mapChildren(function(e){e.getState("removed")||!1===e.getState("visible")||S++}),this.addToEnv("numOfColumns",S),this.addToEnv("numColDiff",(0,r.pluckNumber)(s-S,0)),y=(1-.01*p)*v||c(v*(1-2*g),b*(S||1)),void 0===i.plotspacepercent&&y>=a.canvasWidth/2&&(y=v-b/2),n=c((e=0===S?y:y/S)-1,S>1?k||void 0!==x?x>0?e*x/100:0:4:0),this.addToEnv("plotWidth",e-n),t=-(S/2*e-e/2),this._mapChildren(function(o){!o.getState("removed")&&o.getState("visible")&&(o.addToEnv("shift",t+w*e+n/2),w++)}),m-(o=y/2)-(f-o+y)<4&&(C=!1),0===d&&(C=!0),this.addToEnv("isCrisp",C)},t.prototype.childChanged=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.config,n=this.getLinkedParent(),o=void 0,a=0,i=this.getState("visible"),r={},l=void 0;this._mapChildren(function(e){e.getState("visible")&&a++}),this.setState("visible",!!a),i!==!!a&&(l=!0),!1!==e.dataLimitChanged&&((o=this.getDataLimits()).min===t.range.min&&o.max===t.range.max||(t.range.min=o.min,t.range.max=o.max,r.dataLimitChanged=!0,l=!0)),l?n.childChanged&&n.childChanged(r):this.asyncDraw()},t.prototype.getAxisValuePadding=function(){var e={},t=-Infinity,n=-Infinity;return this._mapChildren(function(o){o.getState("removed")||(e=o.getAxisValuePadding&&o.getAxisValuePadding()||{},t=Math.max(t,e.left||-Infinity),n=Math.max(n,e.right||-Infinity))}),t===-Infinity&&(t=0),n===-Infinity&&(n=0),this.config.padding||(this.config.padding={},this.config.padding.left=t,this.config.padding.right=n),{left:t,right:n}},t.prototype.getDataLimits=function(e){var t=+Infinity,n=-Infinity,o=void 0,a=0,i=function(e){n=Math.max(n,e.max),t=Math.min(t,e.min)};return this._mapChildren(function(t){t.getState("removed")||(!1!==t.getState("visible")?(a++,o=t.getDataLimits(e),i(o)):e&&(o=t.getDataLimits(e),i(o)))}),a?this.setState("visible",!0):this.setState("visible",!1),this.config.range||(this.config.range={},this.config.range.min=this.config.dataMin,this.config.range.max=this.config.dataMax),{max:n,min:t}},t.prototype.isVisible=function(){return!this.isNotVisible},t}(i["default"]);t["default"]=p},,function(e,t,n){"use strict";t.__esModule=!0;var o=r(n(354)),a=r(n(331)),i=r(n(402));function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.eiMethods={},n}return l(t,e),t.getName=function(){return"MSColumn2D"},t.prototype.getName=function(){return"MSColumn2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.friendlyName="Multi-series Column Chart",this.config.defaultDatasetType="column",this.config.enablemousetracking=!0},t.prototype.getDSdef=function(){return a["default"]},t.prototype.getDSGroupdef=function(){return i["default"]},t}(o["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0,t.scrollTo=undefined;var o=n(129);t.scrollTo=function(e){var t=this.apiInstance;t.addJob("scrollToAPoint",function(){if(e>=0&&e<=1){var n=(t.getChildren&&t.getChildren()).xAxis[0],o=n.getLimit&&n.getLimit(),a=n.getVisibleConfig&&n.getVisibleConfig(),i=a.maxValue-a.minValue,r=o.max-o.min,l=e*(r-i)+o.min,s=l+i,c=(a.minValue-o.min)/(r-i);t.fireChartInstanceEvent("scrollStart",{scrollPosition:c}),n.setVisibleConfig(l,s),t.fireChartInstanceEvent("scrollEnd",{previousScrollPosition:c,scrollPosition:e})}},o.priorityList.postRender)}},,,,function(e,t,n){"use strict";t.__esModule=!0;var o=l(n(131)),a=n(118),i=n(125),r=l(n(410));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=a.preDefStr.visibleStr,h=Math,u=h.min,p=h.max;(0,i.addDep)({name:"cartesianStackAnimation",type:"animationRule",extension:r["default"]});var d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.setState("visible",!0),n}return s(t,e),t.prototype.getType=function(){return"group"},t.getName=function(){return"cartesianStackGroup"},t.prototype.getName=function(){return"cartesianStackGroup"},t.prototype.preConfigure=function(t){if(!t)return!1;this.config.JSONData=t,e.prototype.preConfigure.call(this,t)},t.prototype.configure=function(t){if(!t)return!1;e.prototype.configure.call(this,t)},t.prototype.setSkippingInfo=function(e){this.addToEnv("skipInfo",e||{drawOnlyMap:[],plotsPerBin:1,draw:[],hide:[],skippingApplied:!1,dragHashMap:[],prevDrawArray:[]})},t.prototype.getSkippingInfo=function(){return this.getFromEnv("skipInfo")||{drawOnlyMap:[],plotsPerBin:1,draw:[],hide:[],skippingApplied:!1,dragHashMap:[],prevDrawArray:[]}},t.prototype.setVisibility=function(){var e=0;this._mapChildren(function(t){t.getState("visible")&&e++}),this.setState("visible",!!e)},t.prototype.createContainer=function(){var e=this.getFromEnv("animationManager"),t=void 0,n=this.getLinkedParent(),o=void 0,a=n.getChildContainer();for(t in a)o=a[t],!this.getChildContainer(t)&&this.addChildContainer(t,e.setAnimation({el:"group",attr:{name:"manager-"+t},container:o,component:this}));!this.getContainer("sumLabelsLayer")&&this.addContainer("sumLabelsLayer",e.setAnimation({el:"group",attr:{name:"manager-sumLabelsLayer","class":"fusioncharts-datalabels"},label:"group",container:n.getChildContainer("sumLabelsLayer"),component:this})),!this.getChildContainer("commonElemGroup")&&this.addChildContainer("commonElemGroup",e.setAnimation({el:"group",attr:{name:"manager-common-elem-group"},label:"group",container:n.getChildContainer("areaVcanvasGroup"),component:this})),!this.getChildContainer("anchorGroup")&&this.addChildContainer("anchorGroup",e.setAnimation({el:"group",attr:{name:"manager-anchor-group"},label:"group",container:n.getChildContainer("areaVcanvasGroup"),component:this}))},t.prototype.draw=function(){this.createContainer(),this.drawSumValue()},t.prototype._setStackPosition=function(){var e=+Infinity,t=-Infinity,n=this.getFromEnv("numOfColumns"),o=0,i=[],r=this.getSkippingInfo&&this.getSkippingInfo()||{},l=r.draw||[],s=l.length,c=r.skippingApplied;this._mapChildren(function(n){if(!n.getState("removed")&&!1!==n.getState("visible")){o++;var a=void 0,r=n.getData(),h=void 0,d=void 0,g=void 0,f=0,m=r&&r.length,b=0;for(c&&(m=s),d=0;d<m;d++)(a=r[h=l[d]||d])&&a.config&&void 0!==a.config.setValue&&(i[h]||(i[h]={}),g=a.config.setValue,i[h].positive||(i[h].positive=0),i[h].negative||(i[h].negative=0),g>=0?(f=g+(b=i[h].positive),i[h].positive=f):g<0&&(f=g+(b=i[h].negative),i[h].negative=f),null!==g&&(i[h].isNotNull=!0),t=p(f,t),e=u(f,e),a.config._y=f,a.config._b=b)}}),this.config.stackValues=i,this.config.dataMin=e,this.config.dataMax=t,o?this.setState("visible",!0):this.setState("visible",!1),this.addToEnv("stackValues",i),this.addToEnv("numOfColumns",o),this.addToEnv("numColDiff",(0,a.pluckNumber)(n-o,0))},t.prototype.allocatePosition=function(){this._setStackPosition()},t.prototype._getXpos=function(e){var t=this.getFromEnv("shift")||0;return this.getFromEnv("xAxis").getPixel(e)+t},t.prototype.drawSumValue=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,t=arguments[1],n=this.config,o=this.getFromEnv("yAxis"),i=this.getFromEnv("paper"),r=this.getFromEnv("animationManager"),l=this.getFromEnv("chart"),s=l.isBar,h=this.getFromEnv("smartLabel"),u=l.config,p=u.canvasRight,d=this.getFromEnv("chart-attrib"),g=(0,a.pluckNumber)(u.stack100percent),f=u.rotatevalues?270:0,m=n.stackValues,b=t||m&&m.length,v=u.dataLabelStyle,y=void 0,x=void 0,C=void 0,k=void 0,w=void 0,S=void 0,L=this.getContainer("sumLabelsLayer"),A=this.getGraphicalElement("sumLabels"),N=void 0,_=void 0,P=void 0,F=void 0,E=void 0,T=void 0,D=void 0,O=void 0,I=void 0,M=void 0;if((0,a.pluckNumber)(d.showsum,l.showsum,0)){if(L.css(v),h.setStyle(v),(O=A&&A.length)>(I=m.length))for(;O>=I;)M=A[O],O--,M&&(M.hide(),this.removeGraphicalElement(M));for(y=e;y<b;y++)N=Array.isArray(A)&&A[y],m[y]&&m[y].isNotNull?(E=(D=(P=m[y].positive)+(F=m[y].negative))<0?F:P,(T=o.dataLabels(D))&&(k=v.backgroundColor,w=v.borderColor,S=h.getOriSize(T),s?(C=this._getXpos(y)+S.height/2,x=o.getPixel(g?100:E)+S.width/2,g||(x-=x+S.width>p?x+S.width-p:0)):(x=this._getXpos(y),C=o.getPixel(g?100:E)),(_=this.getSumValuePosition(S,{stack100percent:g,rotateValues:f,xPos:x,yPos:C,offsetY:E})).text=T,_.fill=v.color,_["text-bound"]=[k,w,v.borderThickness,v.borderPadding,v.borderRadius,v.borderDash],_["line-height"]=v.lineHeight,_.visibility=c,_.transform=i.getSuggestiveRotation(f,_.x,_.y),_["text-anchor"]&&delete _["text-bound"],(N=r.setAnimation({el:N||"text",attr:_,label:"text",container:L,component:this})).show(),Array.isArray(A)&&A[y]||this.addGraphicalElement("sumLabels",N,!0))):N&&N.hide()}else r.setAnimation({el:L,label:"sumLabelGroup"}),L.hide()},t.prototype.getSumValuePosition=function(e,t){var n,o,a,i=this.getFromEnv("chart"),r=i.config,l=r.canvasBottom,s=r.canvasTop,c=i.config.is3D,h=i.isBar,u=t.stack100percent,p=r.yDepth,d=r.xDepth,g=t.yPos,f=t.xPos,m=this.getFromEnv("canvasConfig").canvasBorderWidth,b=t.offsetY;return a=(a=n=t.rotateValues?e.width:e.height)/2+2,u?s<=n?g=a:(g=h?t.yPos:s-a-m,f+=h?m:0):(b>=0&&((o=g-s)<n?g=g+a-o:(g-=a,f+=h?2:0)),b<0&&((o=l-g)<n?g-=a:g+=a,c&&(f-=d,g+=p))),{x:f,y:g}},t.prototype.childChanged=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.config,n=this.getLinkedParent(),o=void 0,a=this.getState("visible"),i=0,r={},l=void 0;this._mapChildren(function(e){e.getState("visible")&&i++}),this.setState("visible",!!i),a!==!!i&&(l=!0),!1!==e.dataLimitChanged&&((o=this.getDataLimits()).min===t.range.min&&o.max===t.range.max||(t.range.min=o.min,t.range.max=o.max,r.dataLimitChanged=!0,l=!0)),l?n.childChanged&&n.childChanged(r):this.asyncDraw()},t.prototype.getAxisValuePadding=function(){var e={},t=-Infinity,n=-Infinity;return this._mapChildren(function(o){o.getState("removed")||(e=o.getAxisValuePadding&&o.getAxisValuePadding()||{},t=Math.max(t,e.left||-Infinity),n=Math.max(n,e.right||-Infinity))}),t===-Infinity&&(t=0),n===-Infinity&&(n=0),this.config.padding||(this.config.padding={},this.config.padding.left=t,this.config.padding.right=n),{left:t,right:n}},t.prototype.getDataLimits=function(e){return this._setStackPosition(),this.config.range||(this.config.range||(this.config.range={}),this.config.range.min=this.config.dataMin,this.config.range.max=this.config.dataMax),e?this._getStackLimit():{max:this.config.dataMax,min:this.config.dataMin}},t.prototype._getStackLimit=function(){var e=+Infinity,t=-Infinity,n=[],o=this.getSkippingInfo&&this.getSkippingInfo()||{},a=o.draw||[],i=a.length,r=o.skippingApplied;return this._mapChildren(function(o){if(!o.getState("removed")){var l=void 0,s=o.getData(),c=void 0,h=void 0,d=void 0,g=0,f=s&&s.length;for(r&&(f=i),h=0;h<f;h++)(l=s[c=a[h]||h])&&l.config&&void 0!==l.config.setValue&&null!==l.config.setValue&&(n[c]||(n[c]={}),d=l.config.setValue,n[c].positive||(n[c].positive=0),n[c].negative||(n[c].negative=0),d>0?(g=d+n[c].positive,n[c].positive=g):d<0&&(g=d+n[c].negative,n[c].negative=g),t=p(g,t),e=u(g,e))}}),{max:t,min:e}},t.prototype.isVisible=function(){return!this.isNotVisible},t.prototype.getMaxSumValueSpace=function(){var e,t,n,o,a,i=this.config.stackValues,r=this.getFromEnv("chart"),l={},s=i&&i.length,c=this.getFromEnv("number-formatter"),h=0,u=0,d=this.getFromEnv("smartLabel"),g=r.config.dataLabelStyle;for(d.useEllipsesOnOverflow(r.config.useEllipsesWhenOverflow),d.setStyle(g),e=0;e<s;e++)i[e]&&(a=i[e].positive+i[e].negative,t=c.dataLabels(a),n=(l=d.getOriSize(t)).width,o=l.height,u=p(u,n),h=p(h,o));return{maxWidth:u,maxHeight:h}},t.prototype.getCanvasPadding=function(){var e,t,n={paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0};return this._setStackPosition(),this._mapChildren(function(o){for(t in e=o.getCanvasPadding&&o.getCanvasPadding()||{})e.hasOwnProperty(t)&&(n[t]=Math.max(e[t],n[t]))}),n},t}(o["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0;var o=function(){return[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"plot"}]},a=function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]};t["default"]={"initial.group.cartesianStackGroup":function(){return{"group.appearing":o,"text.appearing":a,"*":null}},"initial.group.marimekkoStackgroup":function(){return{"text.appearing":a,"*":null}}}},,,,function(e,t,n){"use strict";t.__esModule=!0;var o=s(n(404)),a=s(n(415)),i=s(n(417)),r=s(n(357)),l=n(118);function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=function(e,t,n){var o,a,i,r,l,s,c,h,u,p,d,g=n&&n.length,f=e,m=t;if(!g)return undefined;for(o=g-1;o>=0;o--)if(h=(i=n[o]).x1,u=i.y1,p=i.x2,d=i.y2,i.isTrendZone){if(f>=h&&f<=p&&m>=u&&m<=d)return i}else if(u!==d&&h!==p?(r=a=(u-d)/(h-p),l=-1,s=u-a*h,c=Math.abs(r*f+l*m+s)/Math.sqrt(Math.pow(r,2)+Math.pow(l,2))):h===p?c=Math.abs(h-f):u===d&&(c=Math.abs(u-m)),c<=i.tolerance)return i},u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.registerFactory("axis",i["default"],["canvas"]),n.registerFactory("legend",r["default"]),n.registerFactory("quadrant",function(e){var t=e.getChildren("canvas")[0],n=void 0,o=e.getChildren(),i=function(){return n.asyncDraw()};(0,l.componentFactory)(t,a["default"],"quadrant"),(n=t.getChildren("quadrant")[0]).addExtEventListener("visiblerangeset",i,o.xAxis[0]),n.addExtEventListener("visiblerangeset",i,o.yAxis[0]),n.configure()},["dataset"]),n}return c(t,e),t.getName=function(){return"ScatterBase"},t.prototype.mouseoutHandler=function(e,t,n){var o=this.config.datasetOrder||this.getDatasets(),a=this.getChildren("mouseTracker")[0];o[t]&&o[t].components.data[n]?o[t]._firePlotEvent("fc-mouseout",n,e):this.getFromEnv("toolTipController").hideAll(),delete a._lastDatasetIndex,delete a._lastPointIndex},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t),this.config.drawTrendRegion=0},t.prototype.__setDefaultConfig=function(){var t=this.config;e.prototype.__setDefaultConfig&&e.prototype.__setDefaultConfig.call(this),t.valuefontbold=0,t.stickytracking=1,t.usemessagelog=0,t.animationeffect="linear",t.showshadow=1,t.showhovereffect=void 0,t.plothovereffect=void 0,t.anchorhovereffect=void 0,t.plotborderdashed=void 0,t.stack100percent=void 0,t.showpercentvalues=void 0,t.showpercentintooltip=void 0,t.plotbordercolor=void 0,t.showtooltip=1,t.seriesnameintooltip=1,t.rotatevalues=0,t.minimizetendency=0,t.plotfillangle=270,t.valuepadding=2,t.useplotgradientcolor=1,t.plotborderthickness=1,t.plotfillalpha="70",t.showvalues=1,t.valueposition="auto",t.tooltipsepchar=", ",t.usedataplotcolorforlabels=0,t.placevaluesinside=0,t.showplotborder=1,t.use3dlighting=1,t.useroundedges=0,t.plotspacepercent=20,t.plotpaddingpercent=void 0,t.plotfillratio=void 0,t.maxcolwidth=50,t.plotborderdashlen=5,t.plotborderdashgap=4,t.useScaleRecursively=!0,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.setadaptivexmin=1},t.prototype._drawTrendTooltip=function(e,t){var n=this.getFromEnv("toolTipController"),o=this.config.currentTrendToolTip,a=e.tooltext,i=t.originalEvent;o?n.draw(i,a,o):o=this.config.currentTrendToolTip=n.draw(i,a)},t.prototype._mouseEvtHandler=function(e,t){var n,o,a,i,r,s,c,u,p,d,g=this,f=t.mouseTracker,m=g.getChildren("canvas")[0],b=g.getFromEnv("toolTipController"),v=e.originalEvent,y=g.config,x=y.canvasBaseDepth||0,C=y.canvasLeft-(y.toleranceLeft||0),k=y.canvasRight+(y.toleranceRight||0),w=y.canvasBottom+(y.toleranceBottom||0),S=y.canvasTop-(y.toleranceTop||0),L=y.datasetOrder||g.getDatasets(),A=!1,N=L.length,_=f._lastDatasetIndex,P=f._lastPointIndex;if(i=(a=(0,l.getMouseCoordinate)(g.getFromEnv("chart-container"),v,g)).chartX,r=a.chartY,i>C-x&&i<k&&r>S&&r<w+x){for(;N--&&!A;)(s=L[N])&&s.getState("visible")&&((c=s._getHoveredPlot&&s._getHoveredPlot(i,r))&&c.hovered||n)&&(A=!0,c.datasetIndex=N,d=f.getMouseEvents(e,c.datasetIndex,c.pointIndex));n=h(i,r,m.config.vtrendlines),o=h(i,r,m.config.trendlines)}if((!A||d&&d.fireOut)&&void 0!==_&&L[_]&&L[_]._firePlotEvent&&(d&&!d.events.length?f.mouseoutTimer=setTimeout(function(){g.mouseoutHandler(e,_,P)},20):(g.mouseoutHandler(e,_,P),clearTimeout(f.mouseoutTimer))),A)for(g.config.currentTrendToolTip&&b.hide(g.config.currentTrendToolTip),(p=d.events&&d.events.length)&&(f._lastDatasetIndex=c.datasetIndex,P=f._lastPointIndex=c.pointIndex),u=0;u<p;u+=1)s&&s._firePlotEvent&&s._firePlotEvent(d.events[u],P,e,c.datasetIndex);else n&&n.tooltext?g._drawTrendTooltip(n,e):o&&o.tooltext?g._drawTrendTooltip(o,e):g.config.currentTrendToolTip&&b.hide(g.config.currentTrendToolTip)},t.prototype._setCategories=function(){var e=this.getFromEnv("dataSource"),t=e.chart,n=this.getChildren("xAxis"),o=(0,l.pluck)(t.xaxislabelmode,"categories"),a=e.categories,i=a&&a[0]&&a[0].category;n[0].setAxisConfig({xAxisLabelMode:"categories"}),"auto"!==o&&"mixed"!==o&&i&&i.length>0?n[0].setTickValues(i):"auto"!==o?(n[0].setTickValues(i),n[0].setAxisConfig({xAxisLabelMode:"mixed"})):(n[0].setTickValues(i),n[0].setAxisConfig({xAxisLabelMode:"auto"}))},t.prototype._allocateSpace=function(e){var t=this.getChildren("canvas"),n=t&&t[0].config,o=this.config,a=o.canvasHeight,i=o.canvasWidth,r=o.availableHeight,l=o.availableWidth;o.canvasLeft+=e.left||0,o.canvasTop+=e.top||0,i=o.canvasWidth=Math.max(i-((e.left||0)+(e.right||0)),0),a=o.canvasHeight=Math.max(a-((e.top||0)+(e.bottom||0)),0),o.availableHeight=Math.max(r-((e.top||0)+(e.bottom||0)),0),o.availableWidth=Math.max(l-((e.left||0)+(e.right||0)),0),o.canvasRight=o.canvasLeft+i,o.canvasBottom=o.canvasTop+a,n&&(n.canvasPaddingLeft=Math.max(n.canvasPaddingLeft,e.paddingLeft||0),n.canvasPaddingRight=Math.max(n.canvasPaddingRight,e.paddingRight||0),n.canvasPaddingTop=Math.max(n.canvasPaddingTop,e.paddingTop||0),n.canvasPaddingBottom=Math.max(n.canvasPaddingBottom,e.paddingBottom||0)),t[0].setDimension({top:o.canvasTop,left:o.canvasLeft,width:o.canvasWidth,height:o.canvasHeight})},t.prototype._postSpaceManagement=function(){var e,t=this.config,n=this.getChildren(),o=n.xAxis&&n.xAxis[0],a=n.legend&&n.legend[0],i=t.xDepth,r=this.getChildren("canvas");for(this.setAxisDimention(),o&&this._allocateXAxisLabelSpace(o),o&&o.shiftLabels(-i,0),a&&a.postSpaceManager(),e=0;e<(r&&r.length);e++)r[e].setCanvasPadding();this.setAxisDimention()},t.prototype._checkInvalidSpecificData=function(){if(!this.getFromEnv("dataSource").dataset)return!0},t}(o["default"]);t["default"]=u},function(e,t,n){"use strict";t.__esModule=!0;var o=s(n(131)),a=n(118),i=n(122),r=n(125),l=s(n(416));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var h=a.preDefStr.POSITION_START,u=a.preDefStr.POSITION_TOP,p=a.preDefStr.POSITION_BOTTOM,d=a.preDefStr.POSITION_END;(0,r.addDep)({name:"quadrantAnimation",type:"animationRule",extension:l["default"]});var g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=n;return o.pIndex=1,o.components={},o.conf={},o.graphics={},n}return c(t,e),t.prototype.getType=function(){return"canvas"},t.prototype.getName=function(){return"quadrant"},t.prototype.configure=function(){var e,t,n,o,r,l,s,c,h,u,p,d,g,f,m,b,v,y,x,C,k,w,S,L,A=this.conf,N=this.getFromEnv("chart"),_=N.config,P=N.getFromEnv("dataSource").chart,F=N.getChildren("canvas")[0].config,E=_.dataLabelStyle,T=N.getFromEnv("smartLabel");(A.enabled=(0,a.pluckNumber)(P.drawquadrant,0))&&(v=(0,a.pluckNumber)(P.quadrantxval),y=(0,a.pluckNumber)(P.quadrantyval),x=(0,i.convertColor)((0,a.pluck)(P.quadrantlinecolor,F.canvasBorderColor),(0,a.pluck)(P.quadrantlinealpha,P.quadrantlinealpha,a.HUNDREDSTRING)),C=(0,a.pluckNumber)(P.quadrantlinethickness,F.canvasBorderThickness),w=(0,a.pluckNumber)(P.quadrantlinedashed,P.quadrantlineisdashed,0),k=(0,a.pluckNumber)(P.quadrantlinedashlen,4),S=(0,a.pluckNumber)(P.quadrantlinedashgap,2),L=w?(0,a.getDashStyle)(k,S):"none",A.xVal=v,A.yVal=y,A.quadrantLineColor=x,A.quadrantLineThickness=C,A.dashStyle=L,g=(0,a.getValidValue)(P.quadrantlabeltl,""),f=(0,a.getValidValue)(P.quadrantlabeltr,""),m=(0,a.getValidValue)(P.quadrantlabelbl,""),b=(0,a.getValidValue)(P.quadrantlabelbr,""),A.quadrantLabelPadding=(0,a.pluckNumber)(P.quadrantlabelpadding,3),T.useEllipsesOnOverflow(_.useEllipsesWhenOverflow),T.setStyle(E),""!==g?(l=(0,a.getFirstValue)(P.quadrantlabeltlbordercolor,P.quadrantlabelbordercolor,""),s=(0,a.pluck)(P.quadrantlabeltlbgcolor,P.quadrantlabelbgcolor),c=(0,a.pluckNumber)(P.quadrantlabeltlborderthickness,P.quadrantlabelborderthickness,1),l=l?(0,i.convertColor)(l,(0,a.pluckNumber)(P.quadrantlabeltlborderalpha,P.quadrantlabelborderalpha,P.quadrantlabeltlalpha,P.quadrantlabelalpha,100)):"",(h=A.tlConfig)||(h=A.tlConfig={enabled:!0,styleObj:{}}),h.label=g,h.styleObj.fontSize=(0,a.pluck)((0,a.pluckNumber)(P.quadrantlabeltlfontsize,P.quadrantlabelfontsize),parseInt(E.fontSize,10))+"px",h.styleObj.lineHeight=E.lineHeight,h.styleObj.fontFamily=(0,a.pluck)(P.quadrantlabeltlfont,P.quadrantlabelfont,E.fontFamily),h.styleObj.color=(0,i.convertColor)((0,a.pluck)(P.quadrantlabeltlfontcolor,P.quadrantlabelfontcolor,E.color),(0,a.pluckNumber)(P.quadrantlabeltlfontalpha,P.quadrantlabelfontalpha,100)),h.styleObj.fontWeight=(0,a.pluckNumber)(P.quadrantlabeltlfontbold,P.quadrantlabelfontbold)?"bold":"normal",h.styleObj.fontStyle=(0,a.pluckNumber)(P.quadrantlabeltlfontitalic,P.quadrantlabelfontitalic)?"italic":"normal",(0,a.setLineHeight)(h.styleObj),e=l,t=(0,a.pluckNumber)(P.quadrantlabeltlborderpadding,P.quadrantlabelborderpadding,2),n=(0,a.pluckNumber)(P.quadrantlabeltlborderradius,P.quadrantlabelborderradius,0),o=s?(0,i.convertColor)(s,(0,a.pluckNumber)(P.quadrantlabeltlbgalpha,P.quadrantlabelbgalpha,P.quadrantlabeltlalpha,P.quadrantlabelalpha,100)):"",r=(0,a.pluckNumber)(P.quadrantlabeltlborderdashed,P.quadrantlabelborderdashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(P.quadrantlabeltlborderdashlen,P.quadrantlabelborderdashlen,4),(0,a.pluckNumber)(P.quadrantlabeltlborderdashgap,P.quadrantlabelborderdashgap,2)):"none",h["text-bound"]=[o,e,c,t,n,r]):A.tlConfig&&(A.tlConfig.label=g),""!==f?(l=(0,a.getFirstValue)(P.quadrantlabeltrbordercolor,P.quadrantlabelbordercolor,""),s=(0,a.pluck)(P.quadrantlabeltrbgcolor,P.quadrantlabelbgcolor),c=(0,a.pluckNumber)(P.quadrantlabeltrborderthickness,P.quadrantlabelborderthickness,1),l=l?(0,i.convertColor)(l,(0,a.pluckNumber)(P.quadrantlabeltrborderalpha,P.quadrantlabelborderalpha,P.quadrantlabeltralpha,P.quadrantlabelalpha,100)):"",(u=A.trConfig)||(u=A.trConfig={enabled:!0,styleObj:{}}),u.label=(0,a.getValidValue)(P.quadrantlabeltr,""),u.styleObj.fontSize=(0,a.pluck)((0,a.pluckNumber)(P.quadrantlabeltrfontsize,P.quadrantlabelfontsize),parseInt(E.fontSize,10))+"px",u.styleObj.lineHeight=E.lineHeight,u.styleObj.fontFamily=(0,a.pluck)(P.quadrantlabeltrfont,P.quadrantlabelfont,E.fontFamily),u.styleObj.color=(0,i.convertColor)((0,a.pluck)(P.quadrantlabeltrfontcolor,P.quadrantlabelfontcolor,E.color),(0,a.pluckNumber)(P.quadrantlabeltrfontalpha,P.quadrantrabelfontalpha,100)),u.styleObj.fontWeight=(0,a.pluckNumber)(P.quadrantlabeltrfontbold,P.quadrantlabelfontbold)?"bold":"normal",u.styleObj.fontStyle=(0,a.pluckNumber)(P.quadrantlabeltrfontitalic,P.quadrantlabelfontitalic)?"italic":"normal",(0,a.setLineHeight)(u.styleObj),e=l,t=(0,a.pluckNumber)(P.quadrantlabeltrborderpadding,P.quadrantlabelborderpadding,2),n=(0,a.pluckNumber)(P.quadrantlabeltrborderradius,P.quadrantlabelborderradius,0),o=s?(0,i.convertColor)(s,(0,a.pluckNumber)(P.quadrantlabeltrbgalpha,P.quadrantlabelbgalpha,P.quadrantlabeltralpha,P.quadrantlabelalpha,100)):"",r=(0,a.pluckNumber)(P.quadrantlabeltrborderdashed,P.quadrantlabelborderdashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(P.quadrantlabeltrborderdashlen,P.quadrantlabelborderdashlen,4),(0,a.pluckNumber)(P.quadrantlabeltrborderdashgap,P.quadrantlabelborderdashgap,2)):"none",u["text-bound"]=[o,e,c,t,n,r]):A.trConfig&&(A.trConfig.label=f),""!==m?(l=(0,a.getFirstValue)(P.quadrantlabelblbordercolor,P.quadrantlabelbordercolor,""),s=(0,a.pluck)(P.quadrantlabelblbgcolor,P.quadrantlabelbgcolor),c=(0,a.pluckNumber)(P.quadrantlabelblborderthickness,P.quadrantlabelborderthickness,1),l=l?(0,i.convertColor)(l,(0,a.pluckNumber)(P.quadrantlabelblborderalpha,P.quadrantlabelborderalpha,P.quadrantlabelblalpha,P.quadrantlabelalpha,100)):"",(p=A.blConfig)||(p=A.blConfig={enabled:!0,styleObj:{}}),p.label=m,p.styleObj.fontSize=(0,a.pluck)((0,a.pluckNumber)(P.quadrantlabelblfontsize,P.quadrantlabelfontsize),parseInt(E.fontSize,10))+"px",p.styleObj.lineHeight=E.lineHeight,p.styleObj.fontFamily=(0,a.pluck)(P.quadrantlabelblfont,P.quadrantlabelfont,E.fontFamily),p.styleObj.color=(0,i.convertColor)((0,a.pluck)(P.quadrantlabelblfontcolor,P.quadrantlabelfontcolor,E.color),(0,a.pluckNumber)(P.quadrantlabelblfontalpha,P.quadrantlabelfontalpha,100)),p.styleObj.fontWeight=(0,a.pluckNumber)(P.quadrantlabelblfontbold,P.quadrantlabelfontbold)?"bold":"normal",p.styleObj.fontStyle=(0,a.pluckNumber)(P.quadrantlabelblfontitalic,P.quadrantlabelfontitalic)?"italic":"normal",(0,a.setLineHeight)(p.styleObj),e=l,t=(0,a.pluckNumber)(P.quadrantlabelblborderpadding,P.quadrantlabelborderpadding,2),n=(0,a.pluckNumber)(P.quadrantlabelblborderradius,P.quadrantlabelborderradius,0),o=s?(0,i.convertColor)(s,(0,a.pluckNumber)(P.quadrantlabelblbgalpha,P.quadrantlabelbgalpha,P.quadrantlabelblalpha,P.quadrantlabelalpha,100)):"",r=(0,a.pluckNumber)(P.quadrantlabelblborderdashed,P.quadrantlabelborderdashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(P.quadrantlabelblborderdashlen,P.quadrantlabelborderdashlen,4),(0,a.pluckNumber)(P.quadrantlabelblborderdashgap,P.quadrantlabelborderdashgap,2)):"none",p["text-bound"]=[o,e,c,t,n,r]):A.blConfig&&(A.blConfig.label=m),""!==b?(l=(0,a.getFirstValue)(P.quadrantlabelbrbordercolor,P.quadrantlabelbordercolor,""),s=(0,a.pluck)(P.quadrantlabelbrbgcolor,P.quadrantlabelbgcolor),c=(0,a.pluckNumber)(P.quadrantlabelbrborderthickness,P.quadrantlabelborderthickness,1),l=l?(0,i.convertColor)(l,(0,a.pluckNumber)(P.quadrantlabelbrborderalpha,P.quadrantlabelborderalpha,P.quadrantlabelbralpha,P.quadrantlabelalpha,100)):"",(d=A.brConfig)||(d=A.brConfig={enabled:!0,styleObj:{}}),d.label=(0,a.getValidValue)(P.quadrantlabelbr,""),d.styleObj.fontSize=(0,a.pluck)((0,a.pluckNumber)(P.quadrantlabelbrfontsize,P.quadrantlabelfontsize),parseInt(E.fontSize,10))+"px",d.styleObj.lineHeight=E.lineHeight,d.styleObj.fontFamily=(0,a.pluck)(P.quadrantlabelbrfont,P.quadrantlabelfont,E.fontFamily),d.styleObj.color=(0,i.convertColor)((0,a.pluck)(P.quadrantlabelbrfontcolor,P.quadrantlabelfontcolor,E.color),(0,a.pluckNumber)(P.quadrantlabelbrfontalpha,P.quadrantrabelfontalpha,100)),d.styleObj.fontWeight=(0,a.pluckNumber)(P.quadrantlabelbrfontbold,P.quadrantlabelfontbold)?"bold":"normal",d.styleObj.fontStyle=(0,a.pluckNumber)(P.quadrantlabelbrfontitalic,P.quadrantlabelfontitalic)?"italic":"normal",(0,a.setLineHeight)(d.styleObj),o=s?(0,i.convertColor)(s,(0,a.pluckNumber)(P.quadrantlabelbrbgalpha,P.quadrantlabelbgalpha,P.quadrantlabelbralpha,P.quadrantlabelalpha,100)):"",e=l,t=(0,a.pluckNumber)(P.quadrantlabelbrborderpadding,P.quadrantlabelborderpadding,2),n=(0,a.pluckNumber)(P.quadrantlabelbrborderradius,P.quadrantlabelborderradius,0),r=(0,a.pluckNumber)(P.quadrantlabelbrborderdashed,P.quadrantlabelborderdashed,0)?(0,a.getDashStyle)((0,a.pluckNumber)(P.quadrantlabelbrborderdashlen,P.quadrantlabelborderdashlen,4),(0,a.pluckNumber)(P.quadrantlabelbrborderdashgap,P.quadrantlabelborderdashgap,2)):"none",d["text-bound"]=[o,e,c,t,n,r]):A.brConfig&&(A.brConfig.label=b))},t.prototype._preDraw=function(){var e,t,n,o,a,i,r=this.conf,l=this.getFromEnv("chart"),s=l.getChildren("xAxis")[0],c=l.getChildren("yAxis")[0],h=s.getLimit(),u=c.getLimit(),p=h.max,d=u.max,g=h.min,f=u.min,m=l.config,b=m.canvasWidth,v=m.canvasHeight,y=r.quadrantLabelPadding,x=r.tlConfig,C=r.trConfig,k=r.blConfig,w=r.brConfig;return e=r.xVal||(r.xVal=(g+p)/2),(t=r.yVal||(r.yVal=(f+d)/2))>=f&&t<=d&&e>=g&&e<=p?(o=b-(n=b/(p-g)*(e-g)),a=v-(i=v/(d-f)*(t-f)),n-=y,o-=y,i-=y,((a-=y)<0||n<0)&&(x.enabled=!1),(a<0||o<0)&&(C.enabled=!1),(i<0||n<0)&&(k.enabled=!1),(i<0||n<0)&&(w.enabled=!1)):r.enabled=!1,this},t.prototype._createGroups=function(){var e,t=this.getFromEnv("chart"),n=t.getFromEnv("animationManager"),o=t.getChildren("canvas")[0].getChildContainer("quadrantGroup"),a=this.getContainer("quadrantChildContainer"),i=this.getContainer("quadrantLineGroup"),r=this.getContainer("quadrantTLGroup"),l=this.getContainer("quadrantTRGroup"),s=this.getContainer("quadrantBLGroup"),c=this.getContainer("quadrantBRGroup");e=n.setAnimation({el:a||"group",attr:{name:"quadrant-child-container"},container:o,component:this,label:"group"}),a||this.addContainer("quadrantChildContainer",e),this.addContainer("quadrantLineGroup",n.setAnimation({el:i||"group",attr:{name:"quadrantLineGroup"},container:e,component:this,label:"group"})),this.addContainer("quadrantTLGroup",n.setAnimation({el:r||"group",attr:{name:"quadrantTLGroup"},container:e,component:this,label:"group"})),this.addContainer("quadrantTRGroup",n.setAnimation({el:l||"group",attr:{name:"quadrantTRGroup"},container:e,component:this,label:"group"})),this.addContainer("quadrantBLGroup",n.setAnimation({el:s||"group",attr:{name:"quadrantBLGroup"},container:e,component:this,label:"group"})),this.addContainer("quadrantBRGroup",n.setAnimation({el:c||"group",attr:{name:"quadrantBRGroup"},container:e,component:this,label:"group"}))},t.prototype.draw=function(){var e,t,n,o,a,i,r,l=this._preDraw(),s=l.conf,c=l.getFromEnv("chart"),g=c.config,f=g.reverseXAxis,m={wrtVisible:!0},b=l.getFromEnv("smartLabel"),v=l.getFromEnv("animationManager"),y=l.graphics,x=y.tlLabel,C=y.trLabel,k=y.blLabel,w=y.brLabel,S=g.textDirection,L=c.getChildren("xAxis")[0],A=c.getChildren("yAxis")[0],N=s.tlConfig||{},_=s.trConfig||{},P=s.blConfig||{},F=s.brConfig||{},E=N.enabled&&N.label,T=_.enabled&&_.label,D=P.enabled&&P.label,O=F.enabled&&F.label,I=g.canvasLeft,M=g.canvasTop,R=s.quadrantLabelPadding,V=L.getLimit(),B=A.getLimit(),G=f?V.min:V.max,j=f?V.max:V.min,H=B.max,W=B.min,z=L.getPixel(j,m)+R,U=L.getPixel(G,m)-R,q=A.getPixel(W,m)-R,Y=A.getPixel(H,m)+R,K=L.getPixel(s.xVal,m),X=A.getPixel(s.yVal,m),Z=K-z,J=U-K,$=X-Y,Q=q-X,ee=y.horizontalQuadLine,te=y.verticalQuadLine,ne=function(){this.hide()};l._createGroups(),t=l.getContainer("quadrantChildContainer"),n=l.getContainer("quadrantLineGroup"),o=l.getContainer("quadrantTLGroup"),a=l.getContainer("quadrantTRGroup"),i=l.getContainer("quadrantBLGroup"),r=l.getContainer("quadrantBRGroup"),s.enabled?(t.show(),y.horizontalQuadLine=v.setAnimation({el:ee||"path",container:n,attr:{path:"M"+I+" "+X+"h"+g.canvasWidth,stroke:s.quadrantLineColor,"stroke-dasharray":s.dashStyle,"stroke-width":s.quadrantLineThickness,"stroke-linecap":"butt"},component:l,label:"path"}),y.verticalQuadLine=v.setAnimation({el:te||"path",container:n,attr:{path:"M"+K+" "+M+"v"+g.canvasHeight,stroke:s.quadrantLineColor,"stroke-width":s.quadrantLineThickness,"stroke-dasharray":s.dashStyle,"stroke-linecap":"butt"},component:l,label:"path"}),E?(b.useEllipsesOnOverflow(g.useEllipsesWhenOverflow),b.setStyle(s.tlConfig.styleObj),e=b.getSmartText(E,Z,$),(x=y.tlLabel=v.setAnimation({el:x||"text",attr:{"text-anchor":h,"vertical-align":u,x:z,y:Y,text:e.text,direction:S,"text-bound":s.tlConfig["text-bound"]},container:o,component:l,label:"text"})).css(s.tlConfig.styleObj)):x&&v.setAnimation({el:x,callback:ne,component:this,label:"text"}),T?(b.setStyle(s.trConfig.styleObj),e=b.getSmartText(T,J,$),(C=y.trLabel=v.setAnimation({el:C||"text",attr:{"text-anchor":d,"vertical-align":u,direction:S,x:U,y:Y,text:e.text,"text-bound":s.trConfig["text-bound"]},container:a,component:l,label:"text"})).css(s.trConfig.styleObj)):C&&v.setAnimation({el:C,callback:ne,component:this,label:"text"}),D?(b.setStyle(s.blConfig.styleObj),e=b.getSmartText(D,Z,Q),(k=y.blLabel=v.setAnimation({el:k||"text",attr:{"text-anchor":h,"vertical-align":p,direction:S,x:z,y:q,text:e.text,"text-bound":s.blConfig["text-bound"]},container:i,component:l,label:"text"})).css(s.blConfig.styleObj)):k&&v.setAnimation({el:k,callback:ne,component:this,label:"text"}),O?(b.setStyle(s.brConfig.styleObj),e=b.getSmartText(O,J,Q),(w=y.brLabel=v.setAnimation({el:w||"text",attr:{"text-anchor":d,"vertical-align":p,direction:S,x:U,y:q,text:e.text,"text-bound":s.brConfig["text-bound"]},container:r,component:l,label:"text"})).css(s.brConfig.styleObj)):w&&v.setAnimation({el:w,callback:ne,component:this,label:"text"})):t&&v.setAnimation({el:t,component:l,doNotRemove:!0,callback:function(){this.hide()},label:"group"})},t}(o["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0,t["default"]={"initial.canvas.quadrant":function(){return{"path.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"axis"}]},"text.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot"}]}}}}},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0],n=t.getChildren("axisRefVisualCartesian")[0],o={zoomable:!0,pannable:!0},i=e._feedAxesRawData(),l=void 0,s=void 0,c=function(e){var t=e.sender;n.addexplicitDrawItems(t.getId(),t),n.asyncDraw()};(0,a.componentFactory)(e,r["default"],"yAxis",1,i.yAxisConf),(0,a.componentFactory)(e,r["default"],"xAxis",1,i.xAxisConf),l=e.getChildren("yAxis")[0],s=e.getChildren("xAxis")[0],l.setLinkedItem("canvas",t),s.setLinkedItem("canvas",t),n.setLinkedItem(l.getId(),l),n.setLinkedItem(s.getId(),s),n.addExtEventListener("visiblerangeset",c,s),n.addExtEventListener("visiblerangeset",c,l),t.attachAxis(s,!1,e.zoomX?o:{}),t.attachAxis(l,!0,e.zoomY?o:{}),e._setCategories()};var o,a=n(118),i=n(292),r=(o=i)&&o.__esModule?o:{"default":o}},function(e,t,n){"use strict";t.__esModule=!0;var o=c(n(346)),a=n(118),i=n(122),r=n(125),l=c(n(419)),s=c(n(420));function c(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var u=Math,p=u.max,d=u.min,g=u.round;(0,r.addDep)({name:"scatterAnimation",type:"animationRule",extension:s["default"]});var f=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return h(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.setupHoverTracker=function(){var e,t,n,o,a,i,r,s=this.config.searchDataArr=[],c=this.components.data,h={},u=this.getSkippingInfo&&this.getSkippingInfo(),p=u&&u.draw||[],d=p.length,g=u&&u.skippingApplied;for(n=c.length,g&&(n=d),t=0;t<n;t++)(i=c[e=p[t]||[t]])&&(o=(r=i.config)._Px,a=r._Py,h=r.anchorProps,s.push({x:o,y:a,index:e,data:i,r:h.radius||0}));this.config.dataTree=(new l["default"]).buildKdTree(s)},t.prototype.getName=function(){return"scatter"},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,n,o,r,l,s=this.getFromEnv("chart"),c=this.config,h=c.JSONData,u=s.areaAlpha,p=s.getFromEnv("dataSource").chart,d=this.getFromEnv("color-manager"),g=(0,a.pluckNumber)(h.showplotborder,p.showplotborder||1),f=d.getPlotColor(this.index),m=c.lineDashed=(0,a.pluckNumber)(h.linedashed,h.dashed,p.linedashed,0),b=this.isLineSet;c.plotColor=f,r=(0,a.pluckNumber)(s.defaultPlotShadow,d.getColor("showShadow")),c.xAxisLabelMode=(0,a.pluck)(p.xaxislabelmode,"categories"),c.toolTipSepChar=(0,a.pluck)(p.tooltipsepchar,", "),c.defaultValuePadding={left:0,right:0},c.parentYAxis=n=b?1:"s"===(0,a.pluck)(h.parentyaxis&&h.parentyaxis.toLowerCase(),"p")?1:0,this.config.yAxis=this.getFromEnv("yAxis")[n],c.connectNullData=(0,a.pluckNumber)(p.connectnulldata,0),c.seriesname=(0,a.parseUnsafeString)(h.seriesname),c.includeinlegend=(0,a.pluckNumber)(h.includeinlegend,c.seriesname?1:0),c.enableAnimation=o=(0,a.pluckNumber)(p.animation,p.defaultanimation,1),c.animation=!!o&&{duration:1e3*(0,a.pluckNumber)(p.animationduration,1)},c.transposeanimation=(0,a.pluckNumber)(p.transposeanimation,o),c.transposeanimduration=1e3*(0,a.pluckNumber)(p.transposeanimduration,.2),c.showvalues=(0,a.pluckNumber)(h.showvalues,p.showvalues),c.valuePadding=(0,a.pluckNumber)(p.valuepadding,2),c.valuePosition=(0,a.pluck)(h.valueposition,p.valueposition,"auto"),c.showTooltip=(0,a.pluckNumber)(p.showtooltip,1),c.seriesNameInTooltip=(0,a.pluckNumber)(p.seriesnameintooltip,1),c.plotFillColor=c.plotfillcolor=(0,a.pluck)(h.color,p.plotfillcolor,f),c.plotFillAngle=c.plotFillAngle=(0,a.pluck)(p.plotfillangle,270),c.plotFillAlpha=c.plotfillalpha=(0,a.pluck)(h.alpha,p.plotfillalpha,u,"70"),l=(0,a.pluckNumber)(p.useplotgradientcolor,1),c.plotGradientColor=c.plotgradientcolor=0!==l?(0,a.getDefinedColor)(p.plotgradientcolor,d.getColor("plotGradientColor")):"",c.fillColor=c.fillcolor={color:c.plotfillcolor+(c.plotgradientcolor?","+c.plotgradientcolor:a.BLANKSTRING),alpha:c.plotfillalpha,angle:c.plotFillAngle},c.plotBorderAlpha=c.plotborderalpha=g?(0,a.pluck)(h.plotborderalpha,p.plotborderalpha,h.alpha,"95"):0,c.plotBorderColor=c.plotbordercolor=(0,a.pluck)(h.plotbordercolor,p.plotbordercolor,p.areabordercolor,"666666"),c.dashed=t=(0,a.pluckNumber)(h.dashed,p.plotborderdashed),c.plotBorderDashLen=c.plotborderdashlen=(0,a.pluck)(h.plotborderdashlen,p.plotborderdashlen,5),c.plotBorderDashGap=c.plotborderdashgap=(0,a.pluck)(h.plotborderdashgap,p.plotborderdashgap,4),c.plotBorderThickness=c.plotborderthickness=(0,a.pluckNumber)(h.plotborderthickness,p.plotborderthickness,1),c.plotBorderDashStyle=c.plotborderdashstyle=t?(0,a.getDashStyle)(c.plotborderdashlen,c.plotborderdashgap):"none",c.showHoverEffect=c.showhovereffect=(0,a.pluckNumber)(p.plothovereffect,p.anchorhovereffect,p.showhovereffect,void 0),c.rotateValues=(0,a.pluckNumber)(p.rotatevalues)?270:0,c.drawLine=(0,a.pluckNumber)(h.drawline,p.drawlines,0),c.lineThickness=c.linethickness=(0,a.pluckNumber)(h.linethickness,p.linethickness,2),c.lineDashLen=c.linedashlen=(0,a.pluckNumber)(h.linedashlen,p.linedashlen,5),c.lineDashGap=c.linedashgap=(0,a.pluckNumber)(h.linedashgap,p.linedashgap,4),c.lineAlpha=c.linealpha=(0,a.pluckNumber)(h.linealpha,p.linealpha,h.alpha,a.HUNDREDSTRING),c.lineColor=c.linecolor=(0,a.pluck)(h.linecolor,p.linecolor,h.color,c.plotColor),c.lineDashStyle=c.linedashstyle=(0,a.getDashStyle)(c.linedashlen,c.linedashgap),c.lineDashStyle=c.linedashstyle=m?c.linedashstyle:"none",c.shadow={opacity:(0,a.pluckNumber)(p.showshadow,r)?c.linealpha/100:0},c.drawanchors=(0,a.pluckNumber)(h.drawanchors,h.showanchors,p.drawanchors,p.showanchors),c.anchorbgcolor=(0,i.getFirstColor)((0,a.pluck)(h.anchorbgcolor,p.anchorbgcolor,d.getColor("anchorBgColor"))),c.anchorbordercolor=(0,i.getFirstColor)((0,a.pluck)(h.anchorbordercolor,h.color,p.anchorbordercolor,c.linecolor)),c.anchorradius=(0,a.pluckNumber)(h.anchorradius,p.anchorradius,3),c.anchoralpha=(0,a.pluck)(h.anchoralpha,h.alpha,p.anchoralpha,a.HUNDREDSTRING),c.anchorbgalpha=(0,a.pluck)(h.anchorbgalpha,h.alpha,p.anchorbgalpha,a.HUNDREDSTRING),c.anchorborderthickness=(0,a.pluck)(h.anchorborderthickness,p.anchorborderthickness,1),c.anchorsides=(0,a.pluckNumber)(h.anchorsides,p.anchorsides,c.index+3),c.anchorimageurl=(0,a.pluck)(h.anchorimageurl,p.anchorimageurl),c.anchorimagealpha=(0,a.pluckNumber)(h.anchorimagealpha,p.anchorimagealpha,100),c.anchorimagescale=(0,a.pluckNumber)(h.anchorimagescale,p.anchorimagescale,100),c.anchorimagepadding=(0,a.pluckNumber)(h.anchorimagepadding,p.anchorimagepadding,1),c.anchorstartangle=(0,a.pluckNumber)(h.anchorstartangle,p.anchorstartangle,90),c.anchorshadow=(0,a.pluckNumber)(h.anchorshadow,p.anchorshadow,0),c.plotToolText=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(h.plottooltext,p.plottooltext))),this.setState("visible",1===(0,a.pluckNumber)(h.visible,!Number(h.initiallyhidden),1)),this._setConfigure(),!1!==s.config.hasLegend&&s.config.showLegend&&this._addLegend(),this.setState("dirty",!0)},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.getFromEnv("chart"),n=this.getFromEnv("xAxis"),o=t.hasScroll,a=this.components.data.length;e.scrollMinVal=o?p(g(n.getVisibleConfig().minValue)-1,0):0,e.scrollMaxVal=o?d(g(n.getVisibleConfig().maxValue)+2,a):a,e.scrollMinValForLabel=e.scrollMinVal,e.scrollMaxValForLabel=e.scrollMaxVal},t.prototype._setConfigure=function(){var e,t,n,o,i,r,l,s,c,h,u,p,d=-Infinity,g=+Infinity,f=d,m=g,b=g,v=d,y=this.components.data||(this.components.data=[]),x=this.getFromEnv("chart"),C=this.config,k=C.JSONData,w=x.getFromEnv("dataSource").chart,S=k.data||[],L=S.length,A=this.getFromEnv("number-formatter"),N=(0,a.parseUnsafeString)(w.yaxisname),_=(0,a.parseUnsafeString)(w.xaxisname),P=C.lineDashed,F=C.linedashstyle,E=C.parentYAxis,T=C.toolTipSepChar,D=C.seriesname;for(C.imageCount=0,e=0;e<L;e+=1)o=S[e],(t=(n=y[e]||(y[e]={})).config||(n.config={})).setValue=i={x:A.getCleanValue(o.x),y:A.getCleanValue(o.y)},null!==i.x&&null!==i.y&&(i.x>v&&(v=i.x,C.rightMostData=n),i.x<b&&(b=i.x,C.leftMostData=n),i.y>f&&(f=i.y,C.topMostData=n),i.y<m&&(m=i.y,C.bottomMostData=n)),t._x=i.x,t._y=i.y,t.setLink=(0,a.pluck)(o.link),t.anchorProps=this._parseAnchorProperties(e),t.showValue=(0,a.pluckNumber)(o.showvalue,C.showvalues),t.dashed=(0,a.pluckNumber)(o.dashed,P),t.color=(0,a.pluck)(o.color,C.linecolor),t.alpha=(0,a.pluck)(o.alpha,C.linealpha),t.dashStyle=t.dashed?F:"none",t.toolTipValue=l=A.dataLabels(i.y,E),t.setDisplayValue=p=(0,a.parseUnsafeString)(o.displayvalue),h=t.formatedVal=(0,a.pluck)(o.toolTipValue,A.dataLabels(i.y,E)),u=A.xAxis(i.x),t.displayValue=(0,a.pluck)(p,l),t.setTooltext=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(o.tooltext,C.plotToolText))),C.showTooltip?void 0!==t.setTooltext?(s=[4,5,6,7,8,9,10,11],c={yaxisName:N,xaxisName:_,yDataValue:h,xDataValue:u},r=(0,a.parseTooltext)(t.setTooltext,s,c,o,w,k)):null===h?r=!1:(r=D?D+T:a.BLANKSTRING,r+=i.x?u+T:a.BLANKSTRING,r+=l):r=!1,t.toolText=r,n?n.graphics||(y[e].graphics={}):n=y[e]={graphics:{}},t.hoverEffects=this._parseHoverEffectOptions(n,o),t.anchorProps.isAnchorHoverRadius=t.hoverEffects.anchorRadius;C.xMax=v,C.xMin=b,C.yMin=m,C.yMax=f,this.ErrorValueConfigure&&this.ErrorValueConfigure()},t.prototype._getHoveredPlot=function(e,t){var n=this.config.dataTree.getNeighbour({x:e,y:t},!0);if(n)return{pointIndex:n.index||n.i,hovered:!0,pointObj:n.data}},t.prototype.drawPlots=function(){e.prototype.drawPlots.call(this),this.setupHoverTracker()},t.prototype.getRegressionPoints=function(){var e,t,n,o,a,i,r,l,s=this.getChildren("regression"),c=-Infinity,h=Infinity,u=-Infinity,p=Infinity;if(s&&s.length&&!s[0].getState("removed")){for(r=(e=s[0]._config.regressionPoints||[]).length,t=0;t<r;t++)for(a=e[t],n=0;n<a.length;n++)for(l=(i=a[n]||[]).length,o=0;o<l;o++)c=Math.max(c,i[o].x),h=Math.min(h,i[o].x),u=Math.max(u,i[o].y),p=Math.min(p,i[o].y);return{max:u,min:p,xMax:c,xMin:h}}},t.prototype.getDataLimits=function(){var e=this.config,t=this.getFromEnv("chart").config,n=e.yMax,o=e.yMin,a=e.xMax,i=e.xMin,r=-Infinity,l=+Infinity,s=t.transposeAxis,c=this.getRegressionPoints();return!1===this.getState("visible")&&s&&(n=r,o=l,a=r,i=l),c&&(n=Math.max(n,c.max),o=Math.min(o,c.min),a=Math.max(a,c.xMax),i=Math.min(i,c.xMin)),{max:n,min:o,xMax:a,xMin:i}},t.prototype.getAxisValuePadding=function(){return this.config.defaultValuePadding},t.prototype.getCanvasPadding=function(){var e,t,n,o,i,r,l,s,c,h,u,g,f,m,b,v,y,x=this.config||(this.config={}),C=this.components||{},k=this.getFromEnv("chartConfig"),w=k.rotatevalues,S=this.getFromEnv("xAxis"),L=this.getFromEnv("yAxis"),A=S.config.isReverse,N=this.getFromEnv("dataLabelStyle"),_=C.data||[],P=_.length,F=x.leftMostData||_[0],E=x.rightMostData||_[_.length-1],T=x.topMostData,D=x.bottomMostData,O=d(k.canvasHeight,k.canvasWidth)/8,I=S.getValue(0),M=1,R=1,V=k.zMax,B=x.bubbleScale,G={},j={},H=0,W=0,z=S.config.axisRange,U=z.min,q=z.max,Y=L.config.axisRange,K=Y.min,X=Y.max,Z=S.getPixel(U),J=S.getPixel(q),$=this.getFromEnv("smartLabel"),Q={paddingLeft:0,paddingRight:0},ee=0;for(e=O/Math.sqrt(V),c=0;c<P;c++)t=_[c].config,n=F.config,o=E.config,l=Math.sqrt(t.z),m=Math.round(l*e)*B||0,b=S.getValue(m)-I,h=t.x-b/2,1===M&&(l=Math.sqrt(n.z),m=Math.round(l*e)*B||0,b=S.getValue(m)-I,u=n.x-b/2),1===R&&(l=Math.sqrt(o.z),m=Math.round(l*e)*B||0,b=S.getValue(m)-I,g=o.x-b/2),M=0,R=0,u>h&&(F=_[c],M=1),g<h&&(E=_[c],R=1);return F&&(r=(i=F.config).anchorProps.radius,(v=i.showValue)&&(f=i.displayValue,$.useEllipsesOnOverflow(k.useEllipsesWhenOverflow),$.setStyle(N),j=$.getOriSize(f),ee=w?j.height:j.width),null!==i.setValue&&(h=S.getPixel(i.setValue.x),W=A?J-(s=h-.5*ee):Z-(s=h-.5*ee),H=!A&&h-r<=Z||A&&h-r<=J?A?J-(h-r):Z-(h-r):0),Q.paddingLeft=p(W,H)),E&&(v=(i=E.config).showValue,r=i.anchorProps.radius,v&&(f=i.displayValue,$.setStyle(N),G=$.getOriSize(f),ee=w?G.height:G.width),null!==i.setValue&&(W=(s=(h=S.getPixel(i.setValue.x))-Z+.5*ee)-J+Z,A&&(W=s),H=!A&&h+r>=J||A&&h+r>=Z?A?h+r-Z:h+r-J:0),Q.paddingRight=p(W,H)),T&&(r=(i=T.config).anchorProps.radius||0,X=L.getPixel(X),null!==i.setValue&&(y=L.getPixel(i.setValue.y),H=(0,a.pluckNumber)(r,0)+(0,a.pluckNumber)(i.anchorProps.borderThickness,0)/2),Q.paddingTop=X-(y-H)>0?X-(y-H):0),D&&(r=(i=D.config).anchorProps.radius||0,K=L.getPixel(K),null!==i.setValue&&(y=L.getPixel(i.setValue.y),H=(0,a.pluckNumber)(r,0)+(0,a.pluckNumber)(i.anchorProps.borderThickness,0)/2),Q.paddingBottom=y+H-K>0?y+H-K:0),Q},t.prototype._addLegend=function(){var e,t,n,o,r,l,s,c=this.getFromEnv("chart"),h=this.config,u=c.getChildren("legend")[0],p=(0,a.pluckNumber)(h.drawanchors,1),d={fillColor:(l=h.anchorbgcolor,s=a.HUNDREDSTRING,l=(0,i.getFirstColor)(l),s=(0,i.getFirstAlpha)(s),{FCcolor:{gradientUnits:"objectBoundingBox",cx:.4,cy:.4,r:"100%",color:(0,i.getLightColor)(l,70)+","+(0,i.getDarkColor)(l,50),alpha:s+","+s,ratio:a.BGRATIOSTRING,radialGradient:!0}}),lineColor:{FCcolor:{color:h.anchorbordercolor,alpha:h.anchoralpha}},lineWidth:h.anchorborderthickness};u.config.symbol3DLighting?d.fillcolor&&d.fillcolor.FCcolor?(e=(0,a.extend2)({},d.fillcolor)).FCcolor.alpha="100":e=(0,a.pluck)(d.fillColor):e={FCcolor:{color:(0,a.pluck)((t=d.fillColor)&&(t.FCcolor&&t.FCcolor.color.split(",")[0]||t)),angle:0,ratio:"0",alpha:"100"}},o={enabled:h.includeInLegend,type:this.type,drawLine:(0,a.pluck)(h.drawLine,!0),anchorSide:p?h.anchorsides:0,label:(0,a.getFirstValue)(this.config.JSONData.seriesname)},h.includeinlegend?((r=u.getItem(this.config.legendItemId))?r.configure({style:u.config.itemStyle,hiddenStyle:u.config.itemHiddenStyle,datasetVisible:u.config.datasetVisible,hoverStyle:u.config.itemHoverStyle}):(this.config.legendItemId=u.createItem(this),r=u.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){r.itemClickFn()},r)),r.configure(o),r.setStateCosmetics("default",{symbol:{fill:(0,a.toRaphaelColor)(e),rawFillColor:h.anchorbgcolor,rawStrokeColor:h.lineColor,stroke:(0,a.toRaphaelColor)((0,a.pluck)((n=d.lineColor)&&(n.FCcolor&&n.FCcolor.color.split(",")[0]||n))),"stroke-width":h.anchorborderthickness}}),this.getState("visible")?r.removeLegendState("hidden"):r.setLegendState("hidden")):this.config.legendItemId&&u.disposeItem(this.config.legendItemId)},t.prototype.getDSGroupdef=function(){},t.prototype.trimData=function(e){if(this.config.JSONData){var t=this.config,n=t&&t.context,o=n&&n.prevCatlen,a=this.getFromEnv("xAxis").getTicksLen(),i=o-a,r=t.JSONData,l=r.data&&r.data.length,s=e.data&&e.data.length||0,c=l-s,h=void 0,u=void 0;i>c?(h=i,u=a):(h=c,u=s),h>0&&this.removeData(u,h,!1)}},t}(o["default"]);t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0; +/** ! + * @license FusionCharts JavaScript Library - KDtree + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + * + * @version //? write(JSON.parse(require('fs').readFileSync('./package.json')).version); + */ +var o=function(e,t,n,o,a){return Math.pow(n-e,2)+Math.pow(o-t,2)<=Math.pow(a,2)},a=Math.PI,i=Math.cos,r=Math.sin,l=Math.max,s=Math.min,c=a/180,h=function(e,t,n,o,a,i){var r,l,s;return r=(o-t)*(a-n),l=(n-e)*(i-o),isNaN(r)&&(r=0),isNaN(l)&&(l=0),0===(s=r-l)?0:s>0?1:2},u=function(e,t,n,o,a,i){return n<=l(e,a)&&n>=s(e,a)&&o<=l(t,i)&&o>=s(t,i)},p=function(e,t,n,o,a,i,r,l){var s=h(e,t,n,o,a,i),c=h(e,t,n,o,r,l),p=h(a,i,r,l,e,t),d=h(a,i,r,l,n,o);return s!==c&&p!==d||(!(0!==s||!u(e,t,a,i,n,o))||(!(0!==c||!u(e,t,r,l,n,o))||(!(0!==p||!u(a,i,e,t,r,l))||!(0!==d||!u(a,i,n,o,r,l)))))},d=function(e,t,n,l,s,d,g){var f,m,b,v,y,x,C,k=Infinity,w=0,S=!1;if(o(e,t,n,l,s)&&d>=3){for(m=void 0===g?.5*a:g%360*c,C=2*a/d,b=n+s*i(-m),x=l+s*r(-m),f=0;f<d;f++){if(v=n+s*i(-(m+=C)),y=l+s*r(-m),p(b,x,v,y,e,t,k,t)){if(0===h(b,x,e,t,v,y))return u(b,x,e,t,v,y);w++}b=v,x=y}S=w%2!=0}return S},g=function(e,t){return!e||e&&t&&t.i>e.i?t:e};var f=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);this.configure(t)}return e.prototype.configure=function(e){this.validatorFn=e?this.shapeValidator():this.defaultValidator()},e.prototype.defaultValidator=function(){var e=this;return function(t){var n=e.mousePoint;return!!(t&&Math.pow((t.x-n.x)/e.xLimit,2)+Math.pow((t.y-n.y)/e.yLimit,2)<=1)}},e.prototype.shapeValidator=function(){var e=this;return function(t){var n,a,i,r,l,s,c,h,u=e.mousePoint,p=t&&t.shapeInfo,g=!1,f=u.x,m=u.y;switch(p&&p.type){case"circle":a=p.radius,g=o(f,m,t.x,t.y,a);break;case"arc":n=p.innerradius,a=p.radius,g=!o(f,m,t.x,t.y,n)&&o(f,m,t.x,t.y,a);break;case"polygon":a=p.radius,r=p.startAngle,i=p.sides,g=d(f,m,t.x,t.y,a,i,r);break;case"rect":case"rectangle":l=t.x,c=t.y,s=l+(p.width||0),h=c+(p.height||0),g=f>=l&&f<=s&&m>=c&&m<=h;break;case"default":g=!1}return g}},e.prototype.buildKdTree=function(e){return this.kdTree=function(e){var t,n,o,a=e&&e[0]&&e[0].r||5,i=Math.max,r=Math.floor,l=Math.sqrt,s=Math.min,c=Math.log,h=Math.exp,u=Math.pow;function p(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}for(n=function(e,t,o,a){for(var u,d,g,f,m,b,v,y,x,C;a>o;){for(a-o>600&&(d=t-o+1,g=c(u=a-o+1),f=.5*h(2*g/3),m=.5*l(g*f*(u-f)/u)*(d-u/2<0?-1:1),b=i(o,r(t-d*f/u+m)),v=s(a,r(t+(u-d)*f/u+m)),n(e,t,b,v)),y=e[t],x=o,C=a,p(e,o,t),e[a].x>y.x&&p(e,o,a);x<C;){for(p(e,x,C),x++,C--;e[x].x<y.x;)x++;for(;e[C].x>y.x;)C--}e[o].x===y.x?p(e,o,C):p(e,++C,a),C<=t&&(o=C+1),t<=C&&(a=C-1)}},o=function(e,t,n,a){for(var u,d,g,f,m,b,v,y,x,C;a>n;){for(a-n>600&&(d=t-n+1,g=c(u=a-n+1),f=.5*h(2*g/3),m=.5*l(g*f*(u-f)/u)*(d-u/2<0?-1:1),b=i(n,r(t-d*f/u+m)),v=s(a,r(t+(u-d)*f/u+m)),o(e,t,b,v)),y=e[t],x=n,C=a,p(e,n,t),e[a].y>y.y&&p(e,n,a);x<C;){for(p(e,x,C),x++,C--;e[x].y<y.y;)x++;for(;e[C].y>y.y;)C--}e[n].y===y.y?p(e,n,C):p(e,++C,a),C<=t&&(n=C+1),t<=C&&(a=C-1)}},t=(e=e||[]).length;t--;)e[t].r>a&&(a=e[t].r),e[t].i=t,e[t].x=+e[t].x,e[t].y=+e[t].y;return{tree:0===e.length?{}:function d(e,t,a,i){var r,l={},s=i?"y":"x";return t===a?(l.point=e[t],l):a-t==1?(e[t][s]>e[a][s]?(l.point=e[t],l.left={point:e[a]}):(l.point=e[a],l.left={point:e[t]}),l):(r=t+a>>1,i?o(e,r,t,a):n(e,r,t,a),l.point=e[r],l.left=d(e,t,r-1,!i),l.right=d(e,r+1,a,!i),l)}(e,0,e.length-1,!1),search:function(e,t,n,o){var i,r,s,c=this.tree,h=e-a,p=e+a,d=t-a,g=t+a,f=!1,m=0;function b(e,t,n,o){return l(u(e-n,2)+u(t-o,2))}function v(o,a){return"circle"===n?b(o,a,e,t)<=h:o>=h&&o<=p&&a>=d&&a<=g}function y(e,t,n){return e>=t&&e<=n}function x(n){var o=y(e,n.x1,n.x2)&&y(t,n.y1,n.y2),a=b(e,t,n.point.x,n.point.y);if(!i)return i=n,f=o,void(m=a);o?f?n.point.i>i.point.i&&(i=n,f=o,m=a):(i=n,f=o,m=a):f||a<m&&(i=n,f=o,m=a)}function C(o,a){"circle"===n?h=o:(h=e-o||0,p=e+o||0,d=t-a||0,g=t+a||0)}return o=o||{},s=function(e){e&&e.point&&(C(o.rx||e.point.r,o.ry||e.point.r),v(e.point.x,e.point.y)&&x(e),d<=e.point.y&&r(e.left),g>=e.point.y&&r(e.right))},(r=function(e){e&&e.point&&(C(o.rx||e.point.r,o.ry||e.point.r),v(e.point.x,e.point.y)&&x(e),h<=e.point.x&&s(e.left),p>=e.point.x&&s(e.right))})(c),i&&i.point||i}}}(e),this.tree=this.kdTree.tree,this},e.prototype.getNeighbour=function(e,t,n){var o=this.tree,a={x1:e.x-this.xLimit,x2:e.x+this.xLimit,y1:e.y-this.yLimit,y2:e.y+this.yLimit},i=this.validatorFn;return this.mousePoint=e,t?this.kdTree&&this.kdTree.search(e.x,e.y,n,e.options):o?this._searchBtwnLimit(a,o,!0,i):void 0},e.prototype._searchBtwnLimit=function(e,t,n,o){var a,i,r=n?"x":"y",l=n?e.x1:e.y1,s=n?e.x2:e.y2;if(void 0!==(a=t&&t.point&&t.point[r]))return o(t.point)&&(i=t.point),a>=l&&t.left&&(i=g(i,this._searchBtwnLimit(e,t.left,!n,o))),a<=s&&t.right&&(i=g(i,this._searchBtwnLimit(e,t.right,!n,o))),i},e.prototype._setSearchLimit=function(e,t){this.xLimit=e,this.yLimit=t},e}();f.prototype.constructor=f,t["default"]=f},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(349),i=(o=a)&&o.__esModule?o:{"default":o};t["default"]={"*.dataset.scatter":i["default"]["*.dataset.line"]}},,,,function(e,t,n){"use strict";t.__esModule=!0,t._checkInvalidSpecificData=undefined;var o=l(n(354)),a=l(n(331)),i=l(n(409)),r=l(n(425));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(){var e=this.getFromEnv("dataSource"),t=e.dataset,n=e.categories,o=void 0;if(!t||!n)return!0;if(o=t.length)for(;o--;)if(!t[o].dataset)return!0},h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.registerFactory("dataset",r["default"],["vCanvas"]),n}return s(t,e),t.getName=function(){return"MSStackedColumn2D"},t.prototype._checkInvalidSpecificData=function(){return c.call(this)},t.prototype.getName=function(){return"MSStackedColumn2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Stacked Column Chart",t.defaultDatasetType="column",t.isstacked=!0,t.enablemousetracking=!0},t.prototype.getDSdef=function(){return a["default"]},t.prototype.getDSGroupdef=function(){return i["default"]},t}(o["default"]);t["default"]=h,t._checkInvalidSpecificData=c},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getFromEnv("dataSource").dataset,n=t&&t.length,o=void 0,i=void 0,l=0,s=void 0,c=e.getChildren("canvas")[0].getChildren("vCanvas")[0],h=void 0,u=void 0,p=[],d=void 0;if(t){for((0,a.componentFactory)(c,r["default"],"multiSeriesGroup_column"),d=c.getChildren("multiSeriesGroup_column")[0],o=0;o<n;o++)p.push(t[o].dataset);for((0,a.componentFactory)(d,e.getDSGroupdef(),"stackedGroup_column",n,p),u=d.getChildren("stackedGroup_column"),o=0;o<u.length;o++)if(!0!==u[o].getState("removed")){if(!(s=t[o].dataset))return void e.setChartMessage();i=s&&s.length,h=Array(i).fill(o*l).map(function(e,t){return e+t}),(0,a.datasetFactory)(u[o],e.getDSdef(),"dataset_column",i,s,h),l=i}e.config._lastDatasetIndex=h[h.length-1]}else e.setChartMessage()};var o,a=n(118),i=n(402),r=(o=i)&&o.__esModule?o:{"default":o}},,function(e,t,n){"use strict";t.__esModule=!0;var o=a(n(347));function a(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var r=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.defaultPlotShadow=0,n}return i(t,e),t.getName=function(){return"MSArea"},t.prototype.getName=function(){return"MSArea"},t.prototype.getDSdef=function(){return o["default"]},t.prototype.getDSGroupdef=function(){return undefined},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Area Chart",t.defaultDatasetType="area",t.defaultcrosslinethickness=1},t}(a(n(428))["default"]);t["default"]=r},function(e,t,n){"use strict";t.__esModule=!0,t._setDefaultConfig=undefined;var o,a=n(404),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=r.preDefStr.SEVENTYSTRING,c=function(){var e=this.config;e.anchorborderthickness=1,e.anchorimageurl=void 0,e.anchorimagepadding=1,e.anchorsides=1,e.anchoralpha=void 0,e.anchorbgalpha=r.HUNDREDSTRING,e.anchorimagealpha=r.HUNDREDSTRING,e.anchorimagescale=100,e.anchorstartangle=90,e.anchorshadow=0,e.anchorbgcolor=void 0,e.anchorbordercolor=void 0,e.anchorradius=3,e.showvalues=1,e.plotfillalpha=s,e.linedashlen=5,e.linedashgap=4,e.linedashed=void 0,e.linealpha=r.HUNDREDSTRING,e.linethickness=2,e.drawfullareaborder=1,e.connectnulldata=0},h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.getName=function(){return"AreaBase"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),c.call(this)},t}(i["default"]);t["default"]=h,t._setDefaultConfig=c},,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0;var o=n(118),a=h(n(383)),i=n(424),r=h(n(346)),l=h(n(331)),s=h(n(409)),c=h(n(440));function h(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var p=o.preDefStr.SEVENTYSTRING,d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.stack100percent=0,n.hasLineSet=!0,n.lineset=!0,n.registerFactory("dataset",c["default"],["vCanvas"]),n}return u(t,e),t.getName=function(){return"MSStackedColumn2DLineDy"},t.prototype.getName=function(){return"MSStackedColumn2DLineDy"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.sDefaultDatasetType="line",t.friendlyName="Multi-series Dual Y-Axis Stacked Column and Line Chart",t.defaultDatasetType="column",t.isdual=!0,t.haslineset=!0,t.isstacked=!0,t.enablemousetracking=!0,t.anchorborderthickness=1,t.anchorimageurl=void 0,t.anchorimagepadding=1,t.anchorsides=1,t.anchoralpha=void 0,t.anchorbgalpha=o.HUNDREDSTRING,t.anchorimagealpha=o.HUNDREDSTRING,t.anchorimagescale=100,t.anchorstartangle=90,t.anchorshadow=0,t.anchorbgcolor=void 0,t.anchorbordercolor=void 0,t.anchorradius=3,t.showvalues=1,t.plotfillalpha=p,t.linedashlen=5,t.linedashgap=4,t.linedashed=void 0,t.linealpha=o.HUNDREDSTRING,t.linethickness=2,t.drawfullareaborder=1,t.connectnulldata=0},t.prototype._checkInvalidSpecificData=function(){return i._checkInvalidSpecificData.call(this)},t.prototype.getDSdef=function(e){return"line"===e?r["default"]:l["default"]},t.prototype.getDSGroupdef=function(){return s["default"]},t}(a["default"]);t["default"]=d},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.getFromEnv("dataSource"),o=n.dataset,a=n.lineset,s=void 0,c=e.getChildren("canvas")[0].getChildren("vCanvas")[1];o||0!==a.length?((0,i["default"])(e),t=e.config._lastDatasetIndex+1,a&&a.length?(s=Array(a.length).fill(t).map(function(e,t){return e+t}),(0,r.datasetFactory)(c,e.getDSdef("line"),"dataset_line",a.length,a,s)):l(c)):e.setChartMessage()};var o,a=n(425),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118);var l=function(e){var t=e.getChildren("dataset_line"),n=void 0;for(n=t&&t.length-1;n>-1;n--)t[n].remove()}},,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0;var o=i(n(428)),a=i(n(346));function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.defaultPlotShadow=1,n.axisPaddingLeft=0,n.axisPaddingRight=0,n}return r(t,e),t.getName=function(){return"MSLine"},t.prototype.getName=function(){return"MSLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Line Chart",t.defaultDatasetType="line",t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1},t.prototype.getDSdef=function(){return a["default"]},t.prototype.getDSGroupdef=function(){},t}(o["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var o=n(428),a=i(n(400));function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.defaultPlotShadow=1,n}return r(t,e),t.getName=function(){return"Spline"},t.prototype.getName=function(){return"Spline"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Spline Chart",t.singleseries=!0,t.defaultDatasetType="msspline",t.minimizetendency=0,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,o._setDefaultConfig.call(this)},t.prototype.getDSdef=function(){return a["default"]},t}(i(n(258))["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var o=r(n(455)),a=n(428),i=r(n(396));function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.defaultPlotShadow=0,n}return l(t,e),t.getName=function(){return"SplineArea"},t.prototype.getName=function(){return"SplineArea"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;a._setDefaultConfig.call(this),t.friendlyName="Spline Area Chart",t.singleseries=!0,t.hasLegend=!1,t.defaultDatasetType="mssplinearea",t.anchoralpha="100",t.minimizetendency=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,t.showzeroplaneontop=1},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSGroupdef=function(){},t}(o["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var o=n(428),a=i(n(400));function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.defaultPlotShadow=1,n}return r(t,e),t.getName=function(){return"MSSpline"},t.prototype.getName=function(){return"MSSpline"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Spline Chart",t.defaultDatasetType="msspline",t.minimizetendency=0,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,o._setDefaultConfig.call(this)},t.prototype.getDSdef=function(){return a["default"]},t.prototype.getDSGroupdef=function(){},t}(i(n(354))["default"]);t["default"]=l},function(e,t,n){"use strict";t.__esModule=!0;var o=n(428),a=r(n(383)),i=r(n(400));function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.isDual=!0,n}return l(t,e),t.getName=function(){return"MSSplineDy"},t.prototype.getName=function(){return"MSSplineDy"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Dual Y-Axis Spline Chart",t.defaultDatasetType="msspline",t.minimizetendency=0,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,t.isdual=!0,o._setDefaultConfig.call(this)},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSGroupdef=function(){},t.prototype.getDSType=function(){return"spline"},t}(a["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;var o=r(n(457)),a=n(428),i=r(n(396));function r(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.friendlyName="Multi-series Spline Area Chart",n.defaultPlotShadow=0,n}return l(t,e),t.getName=function(){return"MSSplineArea"},t.prototype.getName=function(){return"MSSplineArea"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;a._setDefaultConfig.call(this),t.defaultDatasetType="mssplinearea",t.minimizetendency=0,t.zeroplanethickness=2,t.zeroplanealpha=80,t.showzeroplaneontop=1,t.enablemousetracking=!0,t.defaultcrosslinethickness=1},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSGroupdef=function(){},t}(o["default"]);t["default"]=s},,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t._clearChart=t._linearDataParser=t.feedData=t.realTimeDraw=t._RTmanageSpace=t.realTimeUpdate=t._getData=t._isUpdateActive=t._restartUpdate=t._stopUpdate=t.eiMethods=t._realTimeConfigure=undefined;var o=n(118),a=n(129),i=Math.max,r=o.regex.dropHash,l=0,s=0,c=function(e){var t=[];return e.iterateComponents(function(e){"dataset"===e.getType()&&t.push(e)}),t},h={feedData:function(){var e,t,n=this.apiInstance,o=arguments[1];if(!o)return n.feedData.apply(n,arguments);e=arguments[0],n.addJob("feedDataId"+s+++l++,function(){t=n.feedData(e),"function"==typeof o&&o(t)},a.priorityList.postRender)},setData:function(){var e=this.apiInstance,t=arguments[0],n=arguments[1];e.addJob("setDataId"+s++,function(){e._setData(t,n)},a.priorityList.postRender)},stopUpdate:function(){var e=this.apiInstance;e.addJob("stopUpdateId"+s++,function(){e._stopUpdate()},a.priorityList.postRender)},restartUpdate:function(){this.apiInstance._restartUpdate.apply(this.apiInstance,arguments)},isUpdateActive:function(){return this.apiInstance._isUpdateActive.apply(this.apiInstance,arguments)},clearChart:function(){var e=this.apiInstance;e.addJob("clearChartId"+s++,function(){e._clearChart()},a.priorityList.postRender)},getData:function(){return this.apiInstance._getData.apply(this.apiInstance,arguments)},getDataForId:function(){return this.apiInstance._getDataForId.apply(this.apiInstance,arguments)},setDataForId:function(){return this.apiInstance._setDataForId.apply(this.apiInstance,arguments)},getDataJSON:function(){return this.apiInstance._getDataJSON.apply(this.apiInstance,arguments)}};t._realTimeConfigure=function(){var e,t,n,a=this.config,l=a.realTimeConfig||(a.realTimeConfig={}),s=this.getFromEnv("dataSource"),c=s.chart,h=(0,o.pluckNumber)(c.usemessagelog,0),u=(0,o.pluckNumber)(c.messagegoestolog,1),p=s.categories&&Array.isArray(s.categories)&&s.categories[0]&&s.categories[0].category&&s.categories[0].category.length||0;l.showRTValue=(0,o.pluckNumber)(c.showrealtimevalue,1),l.dataStreamURL=(0,o.parseUnsafeString)(c.datastreamurl,o.BLANKSTRING),l.dataStamp=c.datastamp,l.useMessageLog=h&&u,l.clearInterval=(0,o.pluckNumber)(c.clearchartinterval,0),l.realtimeValueSeparator=(0,o.pluck)(c.realtimevaluesep,o.COMMASPACE),l.refreshInterval=e=(0,o.pluckNumber)(c.refreshinterval,c.updateinterval,2),l.updateInterval=this.config.updateInterval=(0,o.pluckNumber)(c.updateinterval,e),l.realtimeValuePadding=(0,o.pluckNumber)(c.realtimevaluepadding),l.realtimeValueFont=(0,o.pluck)(c.realtimevaluefont,o.BLANKSTRING),l.realtimeValueFontBold=(0,o.pluck)(c.realtimevaluefontbold,0),l.realtimeValueFontColor=t=(0,o.pluck)(c.realtimevaluefontcolor,o.BLANKSTRING),l.realtimeValueFontSize=n=(0,o.pluckNumber)(c.realtimevaluefontsize,o.BLANKSTRING),l.realTimeValuePadding=(0,o.pluckNumber)(c.realtimevaluepadding,5),l.fontWeight=(0,o.pluckNumber)(c.realtimevaluefontbold,0)?"bold":"normal",l.numDisplaySets=(0,o.pluckNumber)(c.numdisplaysets,i(p,15)),l.refreshInstantly=(0,o.pluckNumber)(c.refreshinstantly,0),l.showRTmenuItem=(0,o.pluckNumber)(c.showrtmenuitem,0),l.sync=(0,o.pluckNumber)(c.sync,e>.6),t&&(l.realtimeValueFontColor=t.replace(r,o.HASHSTRING)),n&&(l.realtimeValueFontSize=n+"px"),e*=1e3},t.eiMethods=h,t._stopUpdate=function(e){var t=this.config.realTimeConfig,n=this.config.timers&&this.config.timers.setTimeout.loadData;this.getChildren("dataStreamer")[0]._stopUpdate(),n&&clearTimeout(n),t.clearIntervalFlag=!1,this.fireChartInstanceEvent("dataRestored",{source:e})},t._restartUpdate=function(){this.getChildren("dataStreamer")[0]._restartUpdate()},t._isUpdateActive=function(){return this.getChildren("dataStreamer")[0]._isUpdateActive()},t._getData=function(){var e,t,n,o,a,r=this.getChildren(),l=this.getDatasets(),s=r.xAxis&&r.xAxis[0]||r.scale,c=[],h=0;if(l){for(e=l.length,t=0;t<e;t++)h=i(h,l[t].components.data.length);for(t=0;t<h;t++)for((a=c[t]=[])[0]=s.getLabel(t).label,n=1;n<=e;n++)o=l[n-1].components.data[t],a[n]=o&&o.config.setValue;return c}},t.realTimeUpdate=function(e){var t,n,o=c(this),a=this.config.cachedArrivedJSON,i=a&&a.categories,r=e.dataset,l=e.categories&&e.categories.category||[];for(this.fireChartInstanceEvent("updateDataReceived",e),this.fireEvent("realtimeDataUpdate",e),!this.config.cachedArrivedJSON&&(a=this.config.cachedArrivedJSON={}),a.dataset=a.dataset||[],(i=a.categories||(a.categories={})).category=i.category||[],t=0;t<o.length;t++)(n=a.dataset[t]||(a.dataset[t]={})).data||(n.data=[]),n.data.push.apply(n.data,r[t].data);i.category.push.apply(i.category,l)},t._RTmanageSpace=function(){var e,t,n,o,a,r,l,s,c,h,u,p,d=this.config,g=this.getChildren(),f=g.xAxis[0],m=g.yAxis[0],b=g.yAxis[1],v=g.canvas&&g.canvas[0],y=v.config,x=y.canvasBorderWidth,C=y.canvasPaddingTop,k=y.canvasPaddingBottom,w=y.canvasPadding||0,S=y.canvasPaddingLeft,L=y.canvasPaddingRight,A=d.xAxisSpaceAllocation,N=d.yAxisSpaceAllocation||[],_=N[0]&&N[0].spaceTaken||{},P=N[1]&&N[1].spaceTaken||{},F=d.primaryAxisOnleft,E=m&&JSON.stringify(m.getAxisDimension()),T=m&&JSON.stringify(m.getAxisDimension());o=d.availableHeight,0!=(e=(d.xAxisSpaceAllocation=f.placeAxis(o+A.bottom)).bottom-A.bottom)&&(this._allocateSpace({bottom:e}),a=d.availableWidth,N[0].spaceTaken=t=m.placeAxis(a+_.left),this._allocateSpace({left:t.left-_.left}),a=d.availableWidth,r=d.canvasLeft-x,s=d.canvasRight+x,b&&(l=s,c=r,0===F&&(h=r,r=l,l=h,h=s,s=c,c=h),N[1].spaceTaken=n=b.placeAxis(a+(P.right||0)),this._allocateSpace({right:(n.right||0)-(P.right||0)}),b.setAxisDimention({x:l,y:d.canvasTop+C,opposite:c,axisLength:d.canvasHeight-C-k})),f&&f.setAxisDimention({x:d.canvasLeft+i(S,w),y:d.canvasBottom+(d.shift||0)+x,opposite:d.canvasTop-x,axisLength:d.canvasWidth-i(S,w)-i(L,w)}),m&&m.setAxisDimention({x:r,y:d.canvasTop+C,opposite:s,axisLength:d.canvasHeight-C-k})),this.canvasPadding&&v.setCanvasPadding(),v.setDimension({top:d.canvasTop,left:d.canvasLeft,width:d.canvasWidth,height:d.canvasHeight}),x=y.canvasBorderWidth,C=y.canvasPaddingTop,k=y.canvasPaddingBottom,w=y.canvasPadding||0,S=y.canvasPaddingLeft,L=y.canvasPaddingRight,b&&b.setAxisDimention({x:d.canvasRight+x,y:d.canvasTop+C,opposite:c,axisLength:d.canvasHeight-C-k}),f&&f.setAxisDimention({x:d.canvasLeft+i(S,w),y:d.canvasBottom+(d.shift||0)+x,opposite:d.canvasTop-x,axisLength:d.canvasWidth-i(S,w)-i(L,w)}),m&&m.setAxisDimention({x:d.canvasLeft-x,y:d.canvasTop+C,opposite:d.canvasRight+x,axisLength:d.canvasHeight-C-k}),u=m&&JSON.stringify(m.getAxisDimension()),p=m&&JSON.stringify(m.getAxisDimension()),d.drawYAxis=u!==E,d.drawSyAxis=p!==T},t.realTimeDraw=function(){var e,t,n,o,i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},r=this,l=r.config,s=r.getChildren(),h=s.canvas&&s.canvas[0],u=s.xAxis&&s.xAxis[0],p=s.yAxis&&s.yAxis[0],d=s.yAxis&&s.yAxis[1],g=c(r),f=g.length,m=l.cachedArrivedJSON,b=m&&m.dataset,v=m&&m.categories&&m.categories.category||[],y=u&&u.getTicksLen(),x=l.realTimeConfig=l.realTimeConfig||(l.realTimeConfig={}),C=x.prevData,k=0,w=x.showRTValue,S=x.clear,L=function(){var e,t,n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],o=n.length,a=[];for(e=0;e<o;++e)t=n[e],a.push(t.value);return a};if(l._eventArgs=i,i.prevData=C,x.prevData=[],r.getFromEnv("animationManager").setAnimationState("realTimeUpdate"),r.__rtDrawStartAt=new Date,r.__realtimeUpdateComplete||(r.__realtimeUpdateComplete=function(){o=new Date-r.__rtDrawStartAt,S||(l._eventArgs.latency=o,l._eventArgs.updateObject=x.legacyUpdateObj),r.getChildren("dataStreamer")[0].addToEnv("realtimeDrawingLatency",o),r.fireChartInstanceEvent("realTimeUpdateComplete",l._eventArgs)}),r.addJob("realtimeupdatecomplete",r.__realtimeUpdateComplete,a.priorityList.postRender),g){if(h.asyncDraw(),m){if(u){for(u.asyncDraw(),u.categoryInsert(y,v,!0),n=0,e=v.length;n<e;n++)v[n].vline||(k+=1);u.categoryDelete(0,k,!0),u.categoryTranslate(k)}if(l._sumValuesUpdated=!1,S){for(n=0;n<f;n++)g[n]._realTimeConfigure(!0);x.clear=!1}for(n=0;n<f;n++)t=b[n],g[n].addData(t),g[n].removeData(0,t.data.length),g[n].resetCatPos(),g[n].setMaxMin(),g[n].getLinkedParent().childChanged(),x.prevData.push(L(t.data));l.cachedArrivedJSON=void 0}r.rtManageSpace&&r._RTmanageSpace(),l.drawYAxis&&p&&p.asyncDraw(),l.drawSyAxis&&d&&d.asyncDraw(),r._preDraw(),w&&r._drawRealTimeValue&&r.asyncRealTimeValueDraw()}},t.feedData=function(e){var t=this.getFromEnv("dataStreamer");t.responseTextHandler(e),t.refreshVisualHandler({source:"feedData",data:e})},t._linearDataParser=function(e){var t,n,a,r,l,s,h,u,p,d,g,f,m,b,v,y,x,C,k,w,S,L,A,N,_,P,F,E,T,D=c(this),O=D&&D.length,I=this.config.realTimeConfig.legacyUpdateObj={},M=I.values=[],R=I.target=[],V=I.valueVisibility=[],B=I.toolTexts=[],G=I.toolTextsTarget=[],j=I.colors=[],H=I.links=[],W=0,z={categories:{category:[]},dataset:[]},U=z.categories.category,q=z.dataset,Y=e;for(e=e&&e.toString&&e.toString()||"",this.rtParserModify&&(Y=Y.replace(/([^\\])(\|)/g,"$1,"),e=e.replace(/\|/g,",")),b=0,v=(t=e.split("&")).length;b<v;b+=1)if(a=(n=t[b].split("="))[1],(n=n[0])!==o.BLANKSTRING&&void 0!==n&&void 0!==a&&a!==o.BLANKSTRING)switch(n.toLowerCase()){case"label":I.labels=y=a.split(",");break;case"vline":I.vlines=x=a.split(",");break;case"vlinelabel":I.vlineLabels=p=a.split(",");break;case"vlinecolor":I.vlineColors=d=a.split(",");break;case"vlinethickness":I.vlineThickness=g=a.split(",");break;case"vlinedashed":I.vlineDashed=f=a.split(",");break;case"value":C=a.split("|");break;case"target":k=a.split("|");break;case"showlabel":I.showLabels=m=a.split(",");break;case"showvalue":r=a.split("|");break;case"tooltext":l=(l=(l=(l=Y.match(/tooltext=(.*?\\&)*.*?[^\\]&/i))?l[0].substr(9,l[0].length-10):Y.match(/(tooltext=)(.*)/i)[2])&&l.replace(/([^\\])(\|)/g,"$1_FC@@**")).split("_FC@@**");break;case"targettooltext":s=a.split("|");break;case"link":u=a.split("|");break;case"color":h=a.split("|");break;case"datastamp":I.dataStamp=w=a;break;case"stopupdate":I.pause=S="1"==a;break;case"clear":I.clear=L="1"==a;break;default:I[n]=z[n]=a}for(P=C&&C.length,b=0;b<P;b++)M[b]=C[b].split(","),R[b]=k&&k[b]&&k[b].split(","),V[b]=r&&r[b]&&r[b].split(","),G[b]=s&&s[b]&&s[b].split(","),j[b]=h&&h[b]&&h[b].split(","),H[b]=u&&u[b]&&u[b].split(","),l&&(T=l[b])&&(T=T.replace(/([^\\])(\,)/g,"$1_FC@@**"),B[b]=T.split("_FC@@**")),W=i(W,M[b].length);for(E=y&&y.length,A=i(E||0,W||0),b=0;b<A;b++)U.push({label:y&&y[b],color:d&&d[b],showlabel:m&&m[b]});for(x&&U.push({label:p&&p[0],vline:x&&x[0],color:d&&d[0],thickness:g&&g[0],dashed:f&&f[0],showlabel:m&&m[0]}),b=0;b<O;b++){for(N=(F={}).data=[],_=0;_<A;_++)N.push({value:M[b]&&M[b][_],target:R[b]&&R[b][_],showvalue:V[b]&&V[b][_],tooltext:B[b]&&B[b][_]&&decodeURIComponent(B[b][_].replace(/\\/g,"")),tooltexttarget:G[b]&&G[b][_],color:j[b]&&j[b][_],link:H[b]&&H[b][_]&&decodeURIComponent(H[b][_])});q.push(F)}return S&&this._stopUpdate(),L&&this._clearChart(),w&&(this.config.dataStamp=w),z},t._clearChart=function(e){var t,n,o=this.getChildren(),a=o.xAxis&&o.xAxis[0],i=c(this),r=a.getTicksLen(),l=a.getVisibleConfig(),s=l.maxValue,h=l.minValue,u=r>s?s-h:r,p=this.config.realTimeConfig||(this.config.realTimeConfig={}),d=p.showRTValue,g=i.length;if(p.clear=!0,i){for(a&&a.categoryDelete(0,u,!0),this.config._sumValuesUpdated=!1,n=0;n<g;n++)t=i[n],i[n].removeData(0,t.components.data.length),i[n].resetCatPos();this._setCategories()}d&&this._drawRealTimeValue&&this.asyncRealTimeValueDraw(),this.fireChartInstanceEvent("ChartCleared",{source:e},[this.getId(),e])}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){n(517),n(84),n(518),n(521),n(532),n(535),n(537),e.exports=n(7).Map},function(e,t,n){"use strict";var o=n(96),a={};a[n(62)("toStringTag")]="z",a+""!="[object z]"&&n(18)(Object.prototype,"toString",function(){return"[object "+o(this)+"]"},!0)},function(e,t,n){for(var o=n(519),a=n(48),i=n(18),r=n(6),l=n(8),s=n(87),c=n(62),h=c("iterator"),u=c("toStringTag"),p=s.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},g=a(d),f=0;f<g.length;f++){var m,b=g[f],v=d[b],y=r[b],x=y&&y.prototype;if(x&&(x[h]||l(x,h,p),x[u]||l(x,u,b),s[b]=p,v))for(m in o)x[m]||i(x,m,o[m],!0)}},function(e,t,n){"use strict";var o=n(80),a=n(520),i=n(87),r=n(24);e.exports=n(86)(Array,"Array",function(e,t){this._t=r(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=undefined,a(1)):a(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){"use strict";var o=n(522),a=n(528);e.exports=n(529)("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:undefined)}},{get:function(e){var t=o.getEntry(a(this,"Map"),e);return t&&t.v},set:function(e,t){return o.def(a(this,"Map"),0===e?0:e,t)}},o,!0)},function(e,t,n){"use strict";var o=n(9).f,a=n(46),i=n(523),r=n(21),l=n(524),s=n(525),c=n(86),h=n(520),u=n(526),p=n(13),d=n(527).fastKey,g=n(528),f=p?"_s":"size",m=function(e,t){var n,o=d(t);if("F"!==o)return e._i[o];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,c){var h=e(function(e,o){l(e,h,t,"_i"),e._t=t,e._i=a(null),e._f=undefined,e._l=undefined,e[f]=0,o!=undefined&&s(o,n,e[c],e)});return i(h.prototype,{clear:function(){for(var e=g(this,t),n=e._i,o=e._f;o;o=o.n)o.r=!0,o.p&&(o.p=o.p.n=undefined),delete n[o.i];e._f=e._l=undefined,e[f]=0},"delete":function(e){var n=g(this,t),o=m(n,e);if(o){var a=o.n,i=o.p;delete n._i[o.i],o.r=!0,i&&(i.n=a),a&&(a.p=i),n._f==o&&(n._f=a),n._l==o&&(n._l=i),n[f]--}return!!o},forEach:function(e){g(this,t);for(var n,o=r(e,arguments.length>1?arguments[1]:undefined,3);n=n?n.n:this._f;)for(o(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!m(g(this,t),e)}}),p&&o(h.prototype,"size",{get:function(){return g(this,t)[f]}}),h},def:function(e,t,n){var o,a,i=m(e,t);return i?i.v=n:(e._l=i={i:a=d(t,!0),k:t,v:n,p:o=e._l,n:undefined,r:!1},e._f||(e._f=i),o&&(o.n=i),e[f]++,"F"!==a&&(e._i[a]=i)),e},getEntry:m,setStrong:function(e,t,n){c(e,t,function(e,n){this._t=g(e,t),this._k=n,this._l=undefined},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?h(0,"keys"==e?t.k:"values"==e?t.v:[t.k,t.v]):(this._t=undefined,h(1))},n?"entries":"values",!n,!0),u(t)}}},function(e,t,n){var o=n(18);e.exports=function(e,t,n){for(var a in t)o(e,a,t[a],n);return e}},function(e,t){e.exports=function(e,t,n,o){if(!(e instanceof t)||o!==undefined&&o in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var o=n(21),a=n(92),i=n(93),r=n(10),l=n(31),s=n(95),c={},h={};(t=e.exports=function(e,t,n,u,p){var d,g,f,m,b=p?function(){return e}:s(e),v=o(n,u,t?2:1),y=0;if("function"!=typeof b)throw TypeError(e+" is not iterable!");if(i(b)){for(d=l(e.length);d>y;y++)if((m=t?v(r(g=e[y])[0],g[1]):v(e[y]))===c||m===h)return m}else for(f=b.call(e);!(g=f.next()).done;)if((m=a(f,v,g.value,t))===c||m===h)return m}).BREAK=c,t.RETURN=h},function(e,t,n){"use strict";var o=n(6),a=n(9),i=n(13),r=n(62)("species");e.exports=function(e){var t=o[e];i&&t&&!t[r]&&a.f(t,r,{configurable:!0,get:function(){return this}})}},function(e,t,n){var o=n(20)("meta"),a=n(11),i=n(19),r=n(9).f,l=0,s=Object.isExtensible||function(){return!0},c=!n(14)(function(){return s(Object.preventExtensions({}))}),h=function(e){r(e,o,{value:{i:"O"+ ++l,w:{}}})},u=e.exports={KEY:o,NEED:!1,fastKey:function(e,t){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,o)){if(!s(e))return"F";if(!t)return"E";h(e)}return e[o].i},getWeak:function(e,t){if(!i(e,o)){if(!s(e))return!0;if(!t)return!1;h(e)}return e[o].w},onFreeze:function(e){return c&&u.NEED&&s(e)&&!i(e,o)&&h(e),e}}},function(e,t,n){var o=n(11);e.exports=function(e,t){if(!o(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},function(e,t,n){"use strict";var o=n(6),a=n(5),i=n(18),r=n(523),l=n(527),s=n(525),c=n(524),h=n(11),u=n(14),p=n(97),d=n(89),g=n(530);e.exports=function(e,t,n,f,m,b){var v=o[e],y=v,x=m?"set":"add",C=y&&y.prototype,k={},w=function(e){var t=C[e];i(C,e,"delete"==e?function(e){return!(b&&!h(e))&&t.call(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!h(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return b&&!h(e)?undefined:t.call(this,0===e?0:e)}:"add"==e?function(e){return t.call(this,0===e?0:e),this}:function(e,n){return t.call(this,0===e?0:e,n),this})};if("function"==typeof y&&(b||C.forEach&&!u(function(){(new y).entries().next()}))){var S=new y,L=S[x](b?{}:-0,1)!=S,A=u(function(){S.has(1)}),N=p(function(e){new y(e)}),_=!b&&u(function(){for(var e=new y,t=5;t--;)e[x](t,t);return!e.has(-0)});N||((y=t(function(t,n){c(t,y,e);var o=g(new v,t,y);return n!=undefined&&s(n,m,o[x],o),o})).prototype=C,C.constructor=y),(A||_)&&(w("delete"),w("has"),m&&w("get")),(_||L)&&w(x),b&&C.clear&&delete C.clear}else y=f.getConstructor(t,e,m,x),r(y.prototype,n),l.NEED=!0;return d(y,e),k[e]=y,a(a.G+a.W+a.F*(y!=v),k),b||f.setStrong(y,e,m),y}},function(e,t,n){var o=n(11),a=n(531).set;e.exports=function(e,t,n){var i,r=t.constructor;return r!==n&&"function"==typeof r&&(i=r.prototype)!==n.prototype&&o(i)&&a&&a(e,i),e}},function(e,t,n){var o=n(11),a=n(10),i=function(e,t){if(a(e),!o(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,o){try{(o=n(21)(Function.call,n(40).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(a){t=!0}return function(e,n){return i(e,n),t?e.__proto__=n:o(e,n),e}}({},!1):undefined),check:i}},function(e,t,n){var o=n(5);o(o.P+o.R,"Map",{toJSON:n(533)("Map")})},function(e,t,n){var o=n(96),a=n(534);e.exports=function(e){return function(){if(o(this)!=e)throw TypeError(e+"#toJSON isn't generic");return a(this)}}},function(e,t,n){var o=n(525);e.exports=function(e,t){var n=[];return o(e,!1,n.push,n,t),n}},function(e,t,n){n(536)("Map")},function(e,t,n){"use strict";var o=n(5);e.exports=function(e){o(o.S,e,{of:function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},function(e,t,n){n(538)("Map")},function(e,t,n){"use strict";var o=n(5),a=n(22),i=n(21),r=n(525);e.exports=function(e){o(o.S,e,{from:function(e){var t,n,o,l,s=arguments[1];return a(this),(t=s!==undefined)&&a(s),e==undefined?new this:(n=[],t?(o=0,l=i(s,arguments[2],2),r(e,!1,function(e){n.push(l(e,o++))})):r(e,!1,n.push,n),new this(n))}})}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){!function(e){var t=e.getChildren("colorManager");if(!e.getFromEnv("dataSource").colorrange)return t&&(t[0].config.legendItemIds=[]),void e.deleteFromEnv("colorManager");if(t)return e.addToEnv("colorManager",t[0]),void t[0].configure();t=new i["default"],e.attachChild(t,"colorManager"),e.addToEnv("colorManager",t),t.configure()}(e)};var o,a=n(580),i=(o=a)&&o.__esModule?o:{"default":o}},function(e,t,n){"use strict";t.__esModule=!0;var o=s(n(131)),a=s(n(581)),i=s(n(583)),r=n(118),l=n(122);function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}function h(e){var t=e||p;return(0,l.getValidColor)(t)||p}var u="rgba(192,192,192,"+(r.isIE?.002:1e-6)+")",p="#000000",d=function(){var e,t={};return t.legendCarpetConf={spreadFactor:.85,allowDrag:!1,captionAlignment:"center",padding:{v:3,h:3},style:{fill:"#e4d9c1",stroke:"#c4b89d"}},t.legendCaptionConf={spreadFactor:.2,padding:{v:2,h:2},style:{fill:"#786B50",fontFamily:"sans-serif",fontSize:"12px",fontWeight:"bold",fontStyle:"normal"},bound:{style:{stroke:"none"}}},t.legendBodyConf={spreadFactor:.8,padding:{v:2,h:2},bound:{style:{stroke:"none"}}},t.legendAxisConf={legendAxisHeight:11,spreadFactor:.4,padding:{v:1,h:1},style:{stroke:"none","stroke-opacity":0,"stroke-width":1},line:{grooveLength:3,offset:8,style:{stroke:"rgba(255, 255, 255, 0.65)","stroke-width":1.5}},shadow:{style:{stroke:"none",fill:(0,r.toRaphaelColor)({FCcolor:{alpha:"25,0,0",angle:360,color:"000000,FFFFFF,FFFFFF",ratio:"0,30,40"}})}},bound:{style:{stroke:"none"}}},t.sliderGroupConf={showTooltip:1,outerCircle:{rFactor:1.4,style:{fill:u,stroke:"#757575","stroke-width":3}},innerCircle:{rFactor:.65,style:{fill:u,stroke:"#FFFFFF"}}},t.axisTextItemConf={spreadFactor:.3,padding:{v:1,h:1},style:{fill:"#786B50",fontFamily:"sans-serif",fontSize:"12px",fontWeight:"normal",fontStyle:"normal"}},{init:function(t){e=t.chart},legacyDataParser:function(t,n){var o,a,i,s,c,u,p,d,g,f,m,b,v,y={},x=e.getFromEnv("number-formatter"),C=e.getFromEnv("dataSource"),k=C.dataset,w=C.data;if(n=n||{},!t)return!1;for("maps"!==e.defaultDatasetType||void 0!==n.min&&void 0!==n.max?"HeatMap"!==e.getName()||void 0!==n.min&&void 0!==n.max||(n={min:Infinity,max:-Infinity},k.forEach(function(e){e.data&&e.data.forEach(function(e){n.min=Math.min(n.min,(0,r.pluckNumber)(e.value,n.min)),n.max=Math.max(n.max,(0,r.pluckNumber)(e.value,n.max))})})):(n={min:Infinity,max:-Infinity},w&&w.forEach(function(e){n.min=Math.min(n.min,(0,r.pluckNumber)(e.value,n.min)),n.max=Math.max(n.max,(0,r.pluckNumber)(e.value,n.min))})),y.mapByPercent=m=!!(0,r.pluckNumber)(t.mapbypercent,0),o=t.color||[],void 0===t.minvalue&&(t.minvalue=void 0!==n.min?m?0:n.min:0),void 0===t.maxvalue&&(t.maxvalue=void 0!==n.max?m?100:n.max:100),t.maxvalue!==t.minvalue&&n.min!==Infinity&&n.max!==-Infinity||(t.minvalue=0,t.maxvalue=100),b=!1,c=0,p=o.length;c<p;c++)if(o[c].maxvalue){b=!0;break}for(b||(o=[]),i=t.code,d=y.colorRange=[],y.gradient=!!(0,r.pluckNumber)(t.gradient,1),o.length?i=h(i):(i?(s=h(i),i=h()):(i=h(),v=i,s=(0,l.getLightColor)(v,1)),o.push({code:s,maxvalue:t.maxvalue,label:void 0})),function(t){var n,o,a,i=e.getFromEnv("number-formatter");for(n=0,o=t.length;n<o;n++)(a=t[n].maxvalue)&&(t[n].maxvalue=i.getCleanValue(a))}(o),o=o.sort(function(e,t){return e.maxvalue-t.maxvalue}),g=f=t.minvalue&&x.getCleanValue(t.minvalue),f=(void 0!==g||null!==g)&&(m?g+"%":x.legendValue(g)),d.push({code:(0,r.dehashify)(i),value:g,displayValue:f,label:t.startlabel}),c=0,p=o.length;c<p;c++)u=h((a=o[c]).code||a.color),g=f=a.maxvalue,isNaN(parseInt(g,10))||(f=(void 0!==g||null!==g)&&(m?g+"%":x.legendValue(g)),d.push({code:(0,r.dehashify)(u),value:g,displayValue:f,label:a.label||a.displayvalue}));return d[d.length-1].label=t.endlabel||a.label,y},getDefaultConf:function(e){return t[e]}}}(),g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.datasource={},n.config.legendItemIds=[],n}return c(t,e),t.prototype.configure=function(){var e,t=this.getFromEnv("chart"),n="maps"===t.defaultDatasetType,o="TreeMap"===t.getName(),l=this.getFromEnv("dataSource").chart.mapbycategory,s=t.getFromEnv("number-formatter"),c=void 0,h=t.config.showLegend,u=t.getChildren("colorRange")&&t.getChildren("colorRange")[0];switch(t.addToEnv("colorManager",this),this.datasource=t.getFromEnv("dataSource"),e=this.datasource.colorrange,u&&u.remove({instant:!0}),h||(this.config.legendItemIds=[]),n?e.gradient&&Number(e.gradient)?"gradient":e.color?"icon":"none":o?"gradient":e.gradient&&"0"!=e.gradient&&!Number(l)?"gradient":"icon"){case"gradient":d.init({chart:t}),c=d.legacyDataParser(e),(0,r.componentFactory)(t,i["default"],"colorRange",1,[c]),u=t.getChildren("colorRange")[0],t.addToEnv("colorRange",u),c||(u._dontPlot=!0),this.config.legendItemIds=[],this._configureGradientLegend(u);break;case"icon":(0,r.componentFactory)(t,a["default"],"colorRange",1,[{colorRange:e,sortLegend:0,mapByCategory:(0,r.pluckNumber)(l,0),defaultColor:"cccccc",numberFormatter:s}]),t.addToEnv("colorRange",t.getChildren("colorRange")[0]),h&&this._addLegendItems();break;case"none":t.deleteFromEnv("colorManager"),this.config.legendItemIds=[]}},t.prototype._configureGradientLegend=function(e){var t=this,n=t.getFromEnv("chart").getFromEnv("gLegend");n&&(n.setColorRange(e),t.addExtEventListener("rangeUpdated",function(e,n){t.fireEvent("legendUpdate",{"original-event":e,maxMinArray:n,component:"gradientlegend"})},n))},t.prototype._addLegendItems=function(){var e=this.config,t=this.getFromEnv("chart"),n=t.getChildren("legend")[0],o=t.getFromEnv("colorRange").colorArr,a=void 0,i=void 0,s=o.length,c=void 0,h=void 0,u=void 0;for(h=0;h<s;h++)u={label:(0,r.pluck)(o[h].label,o[h].displayvalue),datasetObj:o[h],index:h},i=(0,l.getLightColor)(o[h].code,40),a={FCcolor:{color:o[h].code+","+o[h].code+","+i,ratio:"0,70,30",angle:270,alpha:"100,100,100"}},(c=n.getItem(e.legendItemIds[h]))||(e.legendItemIds.push(n.createItem(this)),(c=n.getItem(e.legendItemIds[h])).addEventListener("fc-click",c.itemClickFn)),c.removeLegendState("hidden"),o[h].legendItemId=c&&c.getId(),c.configure(u),c.setStateCosmetics("default",{symbol:{fill:(0,r.toRaphaelColor)(a),rawFillColor:o[h].code}});for(h=s;h<e.legendItemIds.length;h++)n.disposeItem(e.legendItemIds[h]);e.legendItemIds.splice(s)},t.prototype.legendInteractivity=function(e){var t=this.getFromEnv("colorRange").colorArr[e.config.index];this.fireEvent("legendUpdate",{legendItem:e,colorObj:t,component:"legend"})},t.prototype.getColor=function(e){var t=this.datasource.colorrange,n=this.datasource.chart.mapbycategory;return!Number(n)&&Number(t.gradient)?{code:this.getColorByValue(e)}:this.getColorObj(e)},t.prototype.getValueRatio=function(){return this.getFromEnv("colorRange").getValueRatio()},t.prototype.getCumulativeValueRatio=function(){return this.getFromEnv("colorRange").getCumulativeValueRatio()},t.prototype.getBoxFill=function(e){return this.getFromEnv("colorRange").getBoxFill(e)},t.prototype.getColorByValue=function(e){return this.getFromEnv("colorRange").getColorByValue(e)},t.prototype.getColorObj=function(e){return this.getFromEnv("colorRange").getColorObj(e)},t}(o["default"]);t["default"]=g},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(118),i=n(582),r=n(131);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=n;return o.mapByCategory=!1,o.colorArr=[],o.noValidRange=!0,o.sortLegend=!1,n}return l(t,e),t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.defaultObj={code:"CCCCCC",alpha:"100"}},t.prototype.getType=function(){return"colorComponent"},t.prototype.getName=function(){return"colorBucket"},t.prototype.configure=function(e){if(e){var t=this.mapByCategory,n=e.numberFormatter,o=e.colorRange||{},i=(0,a.extend2)([],o.color),r=this.getLinkedParent(),l=this.getFromEnv("dataSource"),s=Math.min(Math.max((0,a.pluckNumber)(l.chart.palette,0)-1,0),4),c=r.defaultPaletteOptions&&r.defaultPaletteOptions.paletteColors[s],h=(0,a.pluckNumber)(n.getCleanValue(o.maxvalue),Infinity),u=(0,a.pluckNumber)(n.getCleanValue(o.minvalue),-Infinity),p=this.colorArr,d=void 0,g=void 0,f=void 0,m=void 0,b=void 0,v=void 0,y=void 0,x=void 0,C=void 0,k=void 0,w=void 0;if(void 0!==e.mapByCategory&&(t=this.mapByCategory=!!Number(e.mapByCategory)),(i=t?i.filter(function(e){return e.code||e.color}):i.filter(function(e){return e.minvalue||e.maxvalue})).forEach(function(e){e.minvalue&&e.maxvalue&&+e.maxvalue<+e.minvalue&&(x=e.maxvalue,e.maxvalue=e.minvalue,e.minvalue=x),e.minvalue?e.maxvalue?(k=n.getCleanValue(e.minvalue),C=n.getCleanValue(e.maxvalue),e.rangeLabel=n.dataLabels(k)+"-"+n.dataLabels(C)):(k=n.getCleanValue(e.minvalue),e.maxvalue=C=h,e.rangeLabel=C===Infinity?">"+n.dataLabels(k):n.dataLabels(k)+"-"+n.dataLabels(C)):(e.minvalue=k=u,C=n.getCleanValue(e.maxvalue),e.rangeLabel=k===-Infinity?"<"+n.dataLabels(C):n.dataLabels(k)+"-"+n.dataLabels(C))}),i.sort(function(e,t){return+e.minvalue==+t.minvalue?e.maxvalue-t.maxvalue:e.minvalue-t.minvalue}),i&&(d=i.length)){for(p.length=0,g=0;g<d;g+=1)y=i[g],f=(0,a.pluck)(y.color,y.code,c&&c[g]),m=(0,a.pluck)(y.alpha),v=(0,a.pluck)(y.bordercolor),b=(0,a.pluck)(y.borderalpha,100),C=(0,a.pluckNumber)(y.maxvalue),k=(0,a.pluckNumber)(y.minvalue),w=(0,a.pluck)(y.label,y.displayvalue,y.rangeLabel),(f&&C>=k||t&&w)&&p.push({code:f,alpha:m||"100",oriAlpha:m,maxvalue:C,minvalue:k,label:(0,a.parseUnsafeString)(w),labelId:w.toLowerCase(),bordercolor:v,borderAlpha:b,name:y.name});this.sortedColorArr=this.colorArr.slice(0)}else this.noValidRange=!0,this.colorArr=[],this.sortedColorArr=[]}},t.prototype.getColorObj=function(e){if(void 0===e)return{outOfRange:!0};var t=void 0,n=this.sortedColorArr,o=this.gradient?1:0,r=n[o],l=void 0;if(this.mapByCategory){for(e=(0,a.parseUnsafeString)(e).toLowerCase()||e.toString().toLowerCase();r;){if(r.labelId===e||r.maxvalue>=e&&r.minvalue<=e)return{code:r.code,alpha:r.alpha||"100",oriAlpha:r.oriAlpha,seriesIndex:o,legendItemId:r.legendItemId};r=n[o+=1]}return{outOfRange:!0}}if(this.gradient){if(this.scaleMin<=e&&this.scaleMax>=e){for(;r&&r.maxvalue<e;)r=n[o+=1];return l=(e-r.minvalue)/r.range,{code:function(e,t,n){var o=e[0],a=e[1],r=e[2],l=o+(t[0]-o)*n,s=a+(t[1]-a)*n,c=r+(t[2]-r)*n;return{hex:(i.COLOR_BLACK+(l<<16|s<<8|c).toString(16)).slice(-6),rgb:[l,s,c]}}(n[o-1].codeRGB,r.codeRGB,l).hex}}return{outOfRange:!0}}for(;r;){if(e<r.minvalue&&!t)return 0===o?{code:r.code,alpha:r.alpha||"100",oriAlpha:r.oriAlpha,seriesIndex:o,name:r.name,label:r.label,outOfRange:!0,bordercolor:r.bordercolor,borderalpha:r.borderAlpha}:{code:n[o-1].code,alpha:n[o-1].alpha||"100",oriAlpha:n[o-1].oriAlpha,seriesIndex:o,name:n[o-1].name,label:n[o-1].label,outOfRange:!0,bordercolor:n[o-1].bordercolor,borderalpha:n[o-1].borderAlpha};if(e>r.maxvalue&&o===n.length-1)return{code:r.code,alpha:r.alpha||"100",oriAlpha:r.oriAlpha,seriesIndex:o,name:r.name,label:r.label,outOfRange:!0,bordercolor:r.bordercolor,borderalpha:r.borderAlpha};if(r.maxvalue>e&&r.minvalue<=e)return{code:r.code,alpha:r.alpha||"100",oriAlpha:r.oriAlpha,seriesIndex:o,name:r.name,label:r.label,bordercolor:r.bordercolor,borderalpha:r.borderAlpha};if(e===r.maxvalue&&(t={code:r.code,alpha:r.alpha||"100",oriAlpha:r.oriAlpha,seriesIndex:o,name:r.name,label:r.label,bordercolor:r.bordercolor,borderalpha:r.borderAlpha}),o===n.length-1&&t)return t;r=n[o+=1]}return n.length?void 0:{outOfRange:!0}},t.prototype.getColorRangeArr=function(e,t){var n,o,i,r,l,s,c,h,u=this.colorArr,p=[];if(!this.defaultAsigned&&(e>t&&(n=e,e=t,t=n),e<t&&(r=this.getColorObj(e),s=this.getColorObj(t),r&&s))){for(l=e,o=r.seriesIndex,i=s.seriesIndex;o<=i;o+=1)(c=(0,a.extend2)({},u[o])).minvalue!==l&&(c.minvalue=l),p.push(c),h=c,l=c.maxvalue;h&&(h.maxvalue=t)}return p},t}(((o=r)&&o.__esModule?o:{"default":o})["default"]);t["default"]=s},function(e,t,n){"use strict";t.__esModule=!0;t.HUNDREDSTRING="100",t.BLANK="",t.COLOR_BLACK="#000000"},function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(131),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118),l=n(122);function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.colorRange={},n.valueRatio={},n.data={},n.mapByPercent=undefined,n}return s(t,e),t.prototype.getType=function(){return"colorComponent"},t.prototype.getName=function(){return"gradientColorRange"},t.prototype.configure=function(e){if(e){var t,n,o=void 0;for(this.data=e,this.appender="",n=this.colorRange=e.colorRange.sort(function(e,t){return e.value-t.value}),this.valueRatio=void 0,this.values=[],o=0,t=n.length;o<t;o++)this.values.push(n[o].value)}},t.prototype.getValueRatio=function(){var e,t,n=this.colorRange,o=n.length,a=this.valueRatio,i=n[o-1].value,r=n[0].value,l=i-r,s=0;if(a)return a;for(a=this.valueRatio=[],e=0;e<o;e++)t=(n[e].value-r)/l,a.push(100*(t-s)),s=t;return a},t.prototype.getCumulativeValueRatio=function(){var e,t,n=this.colorRange,o=n.length,a=n[0].value,i=n[o-1].value,r=[];for(t=0;t<o;t++)e=n[t],r.push((e.value-a)/(i-a)*100);return r},t.prototype.getBoxFill=function(e){var t,n,o,a,i=this.colorRange,l=i.length,s=[];for(a=e?90:0,n=0;n<l;n++)t=i[n],s.push(t.code);return o={FCcolor:{alpha:"100,100,100",angle:a,color:s.join(","),ratio:this.getValueRatio().join(",")}},(0,r.toRaphaelColor)(o)},t.prototype.getColorByValue=function(e){var t,n,o,a,i=this.values,r=this.colorRange;if(void 0!==e&&null!==e){for(n=0,t=i.length;n<t;n++){if(e===i[n]){a=r[n].code;break}if(!n&&e<i[n]){o=!0;break}if(n===t-1&&e>i[n]){o=!0;break}if(e>i[n]&&e<i[n+1]){s=r[n],c=r[n+1],h=e,u=void 0,p=void 0,void 0,void 0,void 0,void 0,void 0,void 0,d=s.value,g=s.code,f=(0,l.HEXtoRGB)(g),m=c.value,b=c.code,v=(0,l.HEXtoRGB)(b),u=m-d,p=[Math.round(f[0]+(v[0]-f[0])/u*(h-d)),Math.round(f[1]+(v[1]-f[1])/u*(h-d)),Math.round(f[2]+(v[2]-f[2])/u*(h-d))],a=(0,l.RGBtoHex)(p);break}}var s,c,h,u,p,d,g,f,m,b,v;if(!o)return a}},t}(i["default"]);t["default"]=c},function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){!function(e){var t=e.getFromEnv("dataSource").colorrange,n=e.getFromEnv("dataSource").chart.mapbycategory,r="maps"===e.defaultDatasetType,l="TreeMap"===e.getName(),s=void 0,c=e.getFromEnv("legend"),h=e.getFromEnv("gLegend");s=t&&e.config.showLegend?r?t.gradient&&Number(t.gradient)?"gradient":t.color?"icon":"none":l?t.gradient&&"0"!=t.gradient?"gradient":"none":t.gradient&&"0"!=t.gradient&&!Number(n)?"gradient":"icon":"none";switch(s){case"gradient":e.deleteFromEnv("legend"),c&&c.remove(),(0,o.componentFactory)(e,a["default"],"gLegend",1),(h=e.getChildren("gLegend")[0]).configure(),e.addToEnv("gLegend",h);break;case"icon":e.deleteFromEnv("gLegend"),h&&h.remove(),(0,o.componentFactory)(e,i["default"],"legend",1,{showLegend:!0}),(c=e.getChildren("legend")[0]).configure(),e.addToEnv("legend",c);break;case"none":e.deleteFromEnv("gLegend"),e.deleteFromEnv("legend"),h&&h.remove(),c&&c.remove()}}(e)};var o=n(118),a=r(n(585)),i=r(n(358));function r(e){return e&&e.__esModule?e:{"default":e}}},function(e,t,n){"use strict";t.__esModule=!0;var o,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(118),r=n(122),l=n(131),s=(o=l)&&o.__esModule?o:{"default":o};function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var p=void 0,d={},g="rgba(192,192,192,"+(i.isIE?.002:1e-6)+")",f=void 0,m=!1,b=!0,v="#000000",y={}.hasOwnProperty,x="M",C="L",k=void 0;function w(e,t){return function n(e,t){var o,i;for(i in e)y.call(e,i)&&(o=e[i],t[i]===p?t[i]=o:"object"===(void 0===o?"undefined":a(o))&&null!==o&&n(o,t[i]))}(e,t),t}function S(e){var t=e||v;return(0,r.getValidColor)(t)||v}function L(e){var t,n=e.fontSize+"";return n?(t=n.replace(/(\d+)(px)*/,"$1px"),e.fontSize=t,e):e}function A(e){return!(e!==p&&void 0!==e&&null!==e&&!isNaN(e))}d.CAPTION="CAPTION",d.LEGEND_BODY="LEGEND_BODY",d.AXIS_LABEL="LEGEND_LABEL",d.LEGEND_AXIS="LEGEND_AXIS",d.RANGE="RANGE",d.AXIS_VALUE="AXIS_VALUE",f=function(){var e,t={};return t.legendCarpetConf={spreadFactor:.85,allowDrag:!1,captionAlignment:"center",padding:{v:3,h:3},style:{fill:"#e4d9c1",stroke:"#c4b89d"}},t.legendCaptionConf={spreadFactor:.2,padding:{v:2,h:2},style:{fill:"#786B50",fontFamily:"sans-serif",fontSize:"12px",fontWeight:"bold",fontStyle:"normal"},bound:{style:{stroke:"none"}}},t.legendBodyConf={spreadFactor:.8,padding:{v:2,h:2},bound:{style:{stroke:"none"}}},t.legendAxisConf={legendAxisHeight:11,spreadFactor:.4,padding:{v:1,h:1},style:{stroke:"none","stroke-opacity":0,"stroke-width":1},line:{grooveLength:3,offset:8,style:{stroke:"rgba(255, 255, 255, 0.65)","stroke-width":1.5}},shadow:{style:{stroke:"none",fill:(0,i.toRaphaelColor)({FCcolor:{alpha:"25,0,0",angle:360,color:"000000,FFFFFF,FFFFFF",ratio:"0,30,40"}})}},bound:{style:{stroke:"none"}}},t.sliderGroupConf={showTooltip:1,outerCircle:{rFactor:1.4,style:{fill:g,stroke:"#757575","stroke-width":3}},innerCircle:{rFactor:.65,style:{fill:g,stroke:"#FFFFFF"}}},t.axisTextItemConf={spreadFactor:.3,padding:{v:1,h:1},style:{fill:"#786B50",fontFamily:"sans-serif",fontSize:"12px",fontWeight:"normal",fontStyle:"normal"}},{init:function(t){e=t.chart},legacyDataParser:function(t,n){var o,a,l,s,c,h,u,d,g,f,m,b,v,y={},x=e.getFromEnv("number-formatter");if(!t)return!1;for(y.mapByPercent=m=!!(0,i.pluckNumber)(t.mapbypercent,0),o=t.color||[],t.minvalue===p&&(t.minvalue=n.min!==p?m?0:n.min:0),t.maxvalue===p&&(t.maxvalue=n.max!==p?m?100:n.max:100),b=!1,c=0,u=o.length;c<u;c++)if(o[c].maxvalue){b=!0;break}for(b||(o=[]),l=t.code,d=y.colorRange=[],y.gradient=!!(0,i.pluckNumber)(t.gradient,1),o.length?l=S(l):(l?(s=S(l),l=S()):(l=S(),v=l,s=(0,r.getLightColor)(v,1)),o.push({code:s,maxvalue:t.maxvalue,label:p})),function(t){var n,o,a,i=e.getFromEnv("number-formatter");for(n=0,o=t.length;n<o;n++)(a=t[n].maxvalue)&&(t[n].maxvalue=i.getCleanValue(a))}(o),o=o.sort(function(e,t){return e.maxvalue-t.maxvalue}),g=f=t.minvalue&&x.getCleanValue(t.minvalue),f=(g!==p||null!==g)&&(m?g+"%":x.legendValue(g)),d.push({code:(0,i.dehashify)(l),value:g,displayValue:f,label:t.startlabel}),c=0,u=o.length;c<u;c++)h=S((a=o[c]).code||a.color),g=f=a.maxvalue,isNaN(parseInt(g,10))||(f=(g!==p||null!==g)&&(m?g+"%":x.legendValue(g)),d.push({code:(0,i.dehashify)(h),value:g,displayValue:f,label:a.label||a.displayvalue}));return d[d.length-1].label=t.endlabel||a.label,y},getDefaultConf:function(e){return t[e]}}}();var N=function(e){function t(){c(this,t);var n=h(this,e.call(this));return k=n,n.enabled=!1,n.drawOptions={},n.components={},n}return u(t,e),t.prototype.getType=function(){return"gradientLegend"},t.prototype.getName=function(){return"gLegend"},t.prototype.setColorRange=function(e){var t=this.drawOptions.colorRange=e;t&&t._preparationGoneWrong&&(this._dontPlot=!0)},t.prototype.configureAttributes=function(){var e,t,n,o,a,l,s,c,h,u,d=this.getFromEnv("chart"),g=this.getFromEnv("dataSource").chart,m=this.conf={},b=g.outcnvbasefont,v=g.outcnvbasefontsize,y=g.outcnvbasefontcolor,x=d.config.dataLabelStyle;f.init({chart:d}),this.data=this.getFromEnv("dataSource").colorrange,this._dontPlot||(this.drawOptions={smartLabel:this.getFromEnv("smartLabel"),gLegend:this},this._dontPlot=!1,this._recalculateLogicalSpace=!0,m.caption=(0,i.pluck)(g.legendcaption),m.legendPosition=(0,i.pluck)(g.legendposition,"bottom").toLowerCase(),m.showLegend=(0,i.pluckNumber)(g.showlegend,1),m.interactiveLegend=(0,i.pluckNumber)(g.interactivelegend,1),m.showLegendLabels=(0,i.pluckNumber)(g.showlegendlabels,1),e=g.legenditemfontcolor||y,t=g.legenditemfont||b,n=g.legenditemfontsize||v,o=(0,i.pluckNumber)(g.legenditemfontbold,0),a=g.legendcaptionfontcolor||y,l=g.legendcaptionfont||b,s=g.legendcaptionfontsize||v,c=(0,i.pluckNumber)(g.legendcaptionfontbold,1),u=(h=g.legendaxisbordercolor?(0,i.hashify)((0,i.dehashify)(g.legendaxisbordercolor)):p)?(0,i.pluckNumber)(g.legendaxisborderalpha,100)/100:p,m.axisTextItemConf={style:{fill:e?(0,r.convertColor)((0,i.pluck)(e)):x.color,fontFamily:t?(0,i.pluck)(t):x.fontFamily,fontSize:n?(0,i.pluckNumber)(n):x.fontSize.match(/\d+/)[0],fontWeight:o?"bold":x.fontWeight}},m.legendCaptionConf={style:{fill:a?(0,r.convertColor)((0,i.pluck)(a)):x.color,fontFamily:l?(0,i.pluck)(l):x.fontFamily,fontSize:s?(0,i.pluckNumber)(s):x.fontSize.match(/\d+/)[0],fontWeight:c?"bold":x.fontWeight,fontStyle:"normal"}},m.legendAxisConf={legendAxisHeight:11,style:{stroke:h,"stroke-opacity":u},line:{style:{stroke:(0,r.convertColor)((0,i.pluck)(g.legendscalelinecolor,"FFF8E9"),(0,i.pluckNumber)(g.legendscalelinealpha,100)),"stroke-width":(0,i.pluckNumber)(g.legendscalelinethickness)}}},m.sliderGroupConf={showTooltip:(0,i.pluckNumber)(g.showtooltip,1),outerCircle:{rFactor:(0,i.pluckNumber)(g.sliderdiameterfactor),style:{stroke:(0,r.convertColor)((0,i.pluck)(g.legendpointerbordercolor,"757575"),(0,i.pluckNumber)(g.legendpointerborderalpha,100))}},innerCircle:{rFactor:(0,i.pluckNumber)(g.sliderholediameterfactor),style:{stroke:(0,r.convertColor)((0,i.pluck)(g.legendpointercolor,"FFFFFF"),(0,i.pluckNumber)(g.legendpointeralpha,100))}}},m.legendCarpetConf={spreadFactor:(0,i.pluckNumber)(g.legendspreadfactor),allowDrag:!!(0,i.pluckNumber)(g.legendallowdrag,0),captionAlignment:(0,i.pluck)(g.legendcaptionalignment,"center"),style:{fill:(0,r.convertColor)((0,i.pluck)(g.legendbgcolor,"e4d9c1"),(0,i.pluckNumber)(g.legendbgalpha,100)),stroke:(0,r.convertColor)((0,i.pluck)(g.legendbordercolor,"c4b89d"),(0,i.pluckNumber)(g.legendborderalpha,100)),"stroke-width":(0,i.pluckNumber)(g.legendborderthickness,1)}})},t.prototype.postConfigureInit=function(){var e,t,n,o,a,i,r,l,s,c,h,u=this.conf;this.elem={},u.interactiveLegend?(o=w(f.getDefaultConf("sliderGroupConf"),u.sliderGroupConf),this.sGroup?((n=this.elem.sGroup=this.sGroup).configure(o),this.elem.sGroup.gLegend=this):(this.sGroup=this.elem.sGroup=n=new I(o),n.configure(o),this.elem.sGroup.gLegend=this)):(this.sGroup&&this.sGroup.dispose(),this.sGroup&&delete this.sGroup),(o=w(f.getDefaultConf("legendCarpetConf"),u.legendCarpetConf)).legendPosition=u.legendPosition,h=f.getDefaultConf("legendBodyConf"),"bottom"===u.legendPosition?(this.drawOptions.refSideKey="canvasWidth",this.drawOptions.refOffsetKey="canvasLeft",a=w(f.getDefaultConf("axisTextItemConf"),u.axisTextItemConf),h.legendPosition="bottom",(c=w(f.getDefaultConf("legendAxisConf"),u.legendAxisConf)).legendPosition="bottom",a.legendPosition="bottom"):(this.drawOptions.refSideKey="canvasHeight",this.drawOptions.refOffsetKey="canvasTop",a=w(f.getDefaultConf("axisTextItemConf"),u.axisTextItemConf),h.legendPosition="right",(c=w(f.getDefaultConf("legendAxisConf"),u.legendAxisConf)).legendPosition="right",a.legendPosition="right"),Object.keys(this.components).length||(this.components.LegendCarpet=new P,this.components.LegendBody=new E,this.components.LegendAxis=new D,this.components.LegendValues=new M,u.showLegendLabels&&(this.components.LegendLabels=new T)),t=this.components.LegendAxis,l=this.components.LegendValues,e=this.components.LegendCarpet,i=this.components.LegendBody,u.showLegendLabels&&(r=this.components.LegendLabels),this.components.LegendCarpet.configure(o),this.components.LegendValues.configure(a),this.components.LegendAxis.configure(c),this.components.LegendBody.configure(this.drawOptions.colorRange,h,a),u.showLegendLabels&&r.configure(a),u.caption?(s=w(f.getDefaultConf("legendCaptionConf"),u.legendCaptionConf),this.componentCaption&&Object.keys(this.componentCaption).length?this.componentCaption.configure(u.caption,s):(this.componentCaption=new F).configure(u.caption,s),e.addCompositions(this.componentCaption,d.CAPTION)):(e.removeCompositions(d.CAPTION),this.componentCaption&&this.componentCaption.dispose(),delete this.componentCaption),n&&t.addCompositions(n,d.RANGE),r&&i.addCompositions(r,d.AXIS_LABEL),i.addCompositions(t,d.LEGEND_AXIS),i.addCompositions(l,d.AXIS_VALUE),e.addCompositions(i,d.LEGEND_BODY),this.elem.gl=new _(e)},t.prototype.getValueRange=function(){var e,t,n=this.elem&&this.elem.sGroup,o=n.sliders,a=n.extremes;return e=o["false"].currPos,t=a[1]-a[0]+o["true"].currPos,[{min:n.getValueFormPixel(e),max:n.getValueFormPixel(t)}]},t.prototype._dispose=function(){this.elem&&this.elem.gl&&this.elem.gl.dispose(),this.elem={},e.prototype._dispose.call(this)},t.prototype.getCalculatedLogicalSpace=function(){return this._logicalArea},t.prototype.setCalculatedLogicalSpace=function(e){this._logicalArea=e},t.prototype.getLogicalSpace=function(e){var t,n,o,a=this.conf,i={height:0,width:0},r=this.drawOptions,l=this.getFromEnv("chartConfig");return this._recalculateLogicalSpace?this._dontPlot?i:(this._recalculateLogicalSpace=!1,this.postConfigureInit(),a.showLegend?(n=r.refSideKey,o=r.refOffsetKey,this.drawOptions.refSide=l[n],this.drawOptions.refOffset=l[o],this.drawOptions.maxOtherSide=e||this.drawOptions.maxOtherSide,this.elem.gl&&(t=this.elem.gl.getLogicalSpace(this.drawOptions,!0),this.elem.gl&&this.setCalculatedLogicalSpace(t)),this.getCalculatedLogicalSpace()):i):(n=r.refSideKey,o=r.refOffsetKey,this.drawOptions.refSide=l[n],this.drawOptions.refOffset=l[o],this.drawOptions.maxOtherSide=e||this.drawOptions.maxOtherSide,t=this.elem.gl.getLogicalSpace(this.drawOptions,!0),this.setCalculatedLogicalSpace(t),this.getCalculatedLogicalSpace()||i)},t.prototype.resetLegend=function(){var e;(e=this.elem&&this.elem.sGroup)&&e.reset()},t.prototype.allocatePosition=function(){var e,t,n,o,a,i,r=this.getFromEnv("chart"),l=r.config,s=this.conf||{},c=s.legendPosition,h=l.canvasLeft,u=l.canvasTop,p=l.canvasWidth,d=l.canvasHeight,g=l.marginBottom,f=l.marginRight;r.config.gLegendEnabled&&(e=this.getCalculatedLogicalSpace(),n=s.width=e.width,o=s.height=e.height,"bottom"===c?(a=h+((t=p-n)<0?0:t/2),i=l.height-e.height-g-(l.actionBarHeight||0)):(i=u+((t=d-o)<0?0:t/2),a=l.width-e.width-f),s.xPos=a,s.yPos=i)},t.prototype.draw=function(){var e=this.getFromEnv("chart"),t=e.getFromEnv("dataSource").colorrange,n=this.conf||{},o=e.hasGradientLegend;e.config.gLegendEnabled&&t&&o&&this.drawLegendComponent(n.xPos,n.yPos,{parentGroup:e.getContainer("parentgroup"),animationManager:e.getFromEnv("animationManager")})},t.prototype.drawLegendComponent=function(e,t,n){var o,a=this.conf;this._dontPlot||(a.showLegend?(this.drawOptions.animationManager=n.animationManager,this.drawOptions.parentGroup=n.parentGroup,this.drawOptions.x=e,this.drawOptions.y=t,this.drawOptions.maxOtherSide=this.drawOptions.maxOtherSide||n.maxOtherSide,o=this.elem.gl.draw(this.drawOptions).getBBox(),a.xPos=o.x,a.yPos=o.y,a.height=o.height,a.width=o.width,this.enabled=!0):this.enabled=!1)},t}(s["default"]),_=function(){function e(t){c(this,e),this.carpet=t}return e.prototype.draw=function(e){return this.carpet.draw(e)},e.prototype.getLogicalSpace=function(e,t){return this.carpet.getLogicalSpace(e,t)},e.prototype.dispose=function(){this.carpet&&this.carpet.group&&this.carpet.group.remove()},e}(),P=function(){function e(t){c(this,e),this.conf=t,this._id="GL_CARPET",this.compositionsByCategory={},this.node=p,this.group=p,this._lSpace=p,this.autoRecalculate=!1,this.groupName="fc-gradient-legend",this.moveInstructions={}}return e.prototype.configure=function(e){this.conf=e},e.prototype.getName=function(){return"LegendCarpet"},e.prototype.getType=function(){return"legend"},e.prototype.addCompositions=function(e,t){this.compositionsByCategory[t]=e},e.prototype.removeCompositions=function(e){delete this.compositionsByCategory[e]},e.prototype.getBoundingBox=function(e){var t,n,o=this.conf,a=o.spreadFactor,i=e.refSide,r=e.alignment,l=e.refOffset,s=e.x,c=e.y;return"bottom"===this.conf.legendPosition?(t=o.width=i*a,n=e.maxOtherSide,!r||s!==p&&null!==s||(s=(l+i)/2-t/2)):(n=o.height=i*a,t=e.maxOtherSide,!r||c!==p&&null!==c||(c=(l+i)/2-n/2)),{width:t,height:n,x:s,y:c}},e.prototype.getPostCalcDecisionsH=function(e,t){var n,o=this.conf.padding,a=0;for(n in this.moveInstructions={},t)a+=t[n].height||0;e.height=a+2*o.v},e.prototype.getLogicalSpace=function(e,t){var n,o,a,i,r,l=this._lSpace,s=["CAPTION","LEGEND_BODY"],c=this.conf.padding,h=this.compositionsByCategory,u=0,p={},d=0;if(l&&!t)return l.isImpure=!0,l;(A((l=this._lSpace=o=this.getBoundingBox(e)).x)||A(l.y)||A(l.height)||A(l.width))&&(this.autoRecalculate=!0),(a=w(o,{})).height-=2*c.v,a.width-=2*c.h,a.x+=c.h,a.y+=c.v;for(var g=0;g<s.length;g++)(n=h[s[g]])&&((r=w(a,{})).y+=u,u=a.height*n.conf.spreadFactor,r.height=u+d,i=n.getLogicalSpace(w(r,{}),e,t),d=r.height-i.height,p[s[g]]=i,u=i.height);return this.getPostCalcDecisions(o,p),this._lSpace=o,o},e.prototype.setupDragging=function(){var e=this.group,t=0,n=0,o=0,a=0;e.css({cursor:"move"}),e.drag(function(i,r){t=i,n=r,e.attr({transform:"t"+(o+t)+","+(a+n)})},function(){o+=t,a+=n},i.stubFN)},e.prototype.draw=function(e){var t,n,o,a=this.conf,i=["CAPTION","LEGEND_BODY"],r=this.compositionsByCategory,l=e.animationManager,s=e.parentGroup;this.getLogicalSpace(e,this.autoRecalculate),o=this._lSpace,this.group=t=l.setAnimation({el:this.group||"group",attr:{name:this.groupName},component:k,container:s,label:"carpetGroup"}),this.node=l.setAnimation({el:this.node||"rect",attr:o,css:a.style,component:k,container:t,label:"rect"});for(var c=0;c<i.length;c++)(n=r[i[c]])&&n.draw(a.captionAlignment,o,{animationManager:l,colorRange:e.colorRange,numberFormatter:e.numberFormatter,parentLayer:t,smartLabel:e.smartLabel,moveInstructions:this.moveInstructions[void 0],gLegend:e.gLegend});return a.allowDrag&&this.setupDragging(),this.node},e.prototype.getPostCalcDecisions=function(e,t){return"bottom"===this.conf.legendPosition?this.getPostCalcDecisionsH(e,t):this.getPostCalcDecisionsV(e,t)},e.prototype.getPostCalcDecisionsV=function(e,t){var n,o,a,i=this.conf.padding,r=Number.NEGATIVE_INFINITY,l=this.moveInstructions;for(o in this.getPostCalcDecisionsH(e,t),t)r=r<(n=t[o].width)?n:r;for(o in e.width=r+2*i.h,t)(a=r-(n=t[o].width))&&(l[o]="t"+a/2+",0")},e}(),F=function(){function e(t,n){c(this,e),this.rawText=t,this.conf=n,this._id="GL_CAPTION",this.node=p,this.bound=p,this._lSpace=p,this.LegendCaption={},this.LegendCaption.LEFT={x:function(e,t){return t.x+e.width/2+2}},this.LegendCaption.RIGHT={x:function(e,t){return t.x+t.width-e.width/2-2}},this.LegendCaption.CENTER={x:function(){var e=arguments[1];return e.x+e.width/2}}}return e.prototype.configure=function(e,t){this.rawText=e,this.conf=t},e.prototype.getName=function(){return"LegendCaption"},e.prototype.getType=function(){return"caption"},e.prototype.getLogicalSpace=function(e,t,n){var o,a,i,r,l=this.conf.padding,s=this._lSpace,c=this.rawText,h=t.gLegend.getFromEnv("chartConfig");return s&&!n?(s.isImpure=!0,s):(s=this._lSpace={bound:{height:0,width:0},node:{logicArea:p,smartText:p}},o=t.smartLabel,c?((a=w(e,{})).height-=2*l.v,a.width-=2*l.h,a.x+=l.h,a.y+=l.v,o.useEllipsesOnOverflow(h.useEllipsesWhenOverflow),L(r=w(this.conf.style,{})),o.setStyle(this._metaStyle=r),i=o.getSmartText(c,a.width,a.height),a.height=i.height,a.width=i.width,e.height=i.height+2*l.v,e.width=i.width+2*l.h,s.node.smartText=i,s.node.logicArea=a,s.bound=e,e):s.bound)},e.prototype.draw=function(){var e,t,n,o,a,i,r,l,s,c,h,u=this.conf,p=u.bound||{};return arguments.length>=3?(r=arguments[0],l=arguments[1],s=arguments[2]):arguments.length>=2&&(r=arguments[0],s=arguments[1]),e=s.parentLayer,h=s.animationManager,this.group=t=h.setAnimation({el:this.group||"group",attr:{name:"legend-caption"},css:u.style,component:k,container:e}),this.getLogicalSpace(l,s),c=(a=this._lSpace).node,o=a.bound,this.bound=n=h.setAnimation({el:this.bound||"rect",attr:o,css:p.style,container:t,component:k}),i="string"==typeof r?this.LegendCaption[r.toUpperCase()].x(c.smartText,l||c.logicArea):r,this.node=h.setAnimation({el:this.node||"text",attr:{text:c.smartText.text,x:i,y:c.logicArea.y+c.smartText.height/2,lineHeight:this._metaStyle.lineHeight,fill:u.style.fill},container:t,component:k}),{group:t,bound:n,node:this.node}},e.prototype.dispose=function(){this.group.remove(),this.bound.remove(),this.node.remove()},e}(),E=function(){function e(t,n,o){c(this,e),this.colorRange=t,this.conf=n,this.childTextConf=o,this._id="GL_BODY",this.bound=p,this.group=p,this.compositionsByCategory={},this._lSpace=p,this.SC_STACK=[d.AXIS_LABEL,d.LEGEND_AXIS,d.AXIS_VALUE],this.DARW_STACK=[d.AXIS_VALUE,d.LEGEND_AXIS,d.AXIS_LABEL]}return e.prototype.configure=function(e,t,n){this.colorRange=e,this.conf=t,this.childTextConf=n,this.compositionsByCategory={}},e.prototype.getName=function(){return"LegendBody"},e.prototype.getType=function(){return"legend"},e.prototype.addCompositions=function(e,t){this.compositionsByCategory[t]=e},e.prototype.getSpaceTaken=function(e){return"bottom"===this.conf.legendPosition?e.height:e.width},e.prototype.getLogicalSpace=function(e,t,n){var o,a,i,r,l,s,c,h=this._lSpace,u=this.conf.padding,d=this.compositionsByCategory,g=0;if(h&&!n)return h.isImpure=!0,h;for(h=this._lSpace={bound:{height:0,width:0},node:{logicArea:p}},(r=w(e,{})).height-=2*u.v,r.width-=2*u.h,r.x+=u.h,r.y+=u.v,l=this.getCompositionPlotAreaFor(r),t.colorRange=this.colorRange,s=0,c=this.SC_STACK.length;s<c;s++)(o=d[this.SC_STACK[s]])&&(a=l(i,o.conf.spreadFactor),i=o.getLogicalSpace(w(a,{}),t,n),g+=this.getSpaceTaken(i));return this.updateEffectivePlotArea(e,r,g),h.node.logicArea=r,h.bound=e,e},e.prototype.draw=function(){var e,t,n,o,a,i,r,l,s,c,h=this.childTextConf,u=this.conf.bound.style||{},p=this.compositionsByCategory;for(arguments.length>=3?(i=arguments[1],l=arguments[2]):arguments.length>=2&&(l=arguments[1]),t=l.parentLayer,e=l.animationManager,this.getLogicalSpace(i,l),r=this._lSpace,this.group=a=e.setAnimation({el:this.group||"group",attr:{name:"legend-body",transform:"t0,0"},css:h.style,container:t,component:k}),this.bound=n=e.setAnimation({el:this.bound||"rect",attr:r.bound,css:u,container:a,component:k}),l.colorRange=this.colorRange,l.parentLayer=a,s=0,c=this.DARW_STACK.length;s<c;s++)(o=p[this.DARW_STACK[s]])&&o.draw(l);return l.moveInstructions&&a.attr({transform:l.moveInstructions}),{bound:n,group:a}},e.prototype.getCompositionPlotAreaFor=function(e){var t,n="bottom"===this.conf.legendPosition;return t=w(e,{}),function(o,a){return o=o||{},n?(t.y+=o.height||0,t.height=e.height*a):(t.x+=o.width||0,t.width=e.width*a),t}},e.prototype.updateEffectivePlotArea=function(e,t,n){var o=this.conf.padding;"bottom"===this.conf.legendPosition?(t.height=n,e.height=n+2*o.v):(t.width=n,e.width=n+2*o.h)},e}(),T=function(){function e(t){c(this,e),this.conf=t,this.node=[],this._id="GL_LABELS"}return e.prototype.configure=function(e){this.conf=e},e.prototype.getType=function(){return"label"},e.prototype.getName=function(){return"LegendLabel"},e.prototype.getEffectivePlotArea=function(e){var t=this.conf.padding;return e.height-=2*t.v,e.width-=2*t.h,e.x+=t.h,e.y+=t.v,e},e.prototype.getLogicalSpace=function(e,t,n){var o,a,i,r,l,s,c,h,u,d,g,f,m,b,v,y,x,C,k,S,A,N,_,P="bottom"===this.conf.legendPosition,F=this._lSpace,E=this.conf,T=E.padding,D=[],O=t.gLegend.getFromEnv("chartConfig"),I=[];if(F&&!n)return F.isImpure=!0,F;for(o=t.colorRange,a=t.smartLabel,d=o.getCumulativeValueRatio(),i=o.colorRange,m=(F=this._lSpace={bound:{height:0,width:0},node:{logicArea:p,smartTexts:[]}}).node.smartTexts,h=w(e,{}),v=this.getEffectivePlotArea(h),_=P?v.width:v.height,a.useEllipsesOnOverflow(O.useEllipsesWhenOverflow),N=w(E.style,{}),L(this._metaStyle=N),a.setStyle(N),y=a.getSmartText("W"),r=0,l=i.length;r<l;r++)(u=i[r].label)?I.push({oriIndex:r,label:u}):m[r]=p;if(0===(l=I.length))return{height:0,width:0};for(f=g=l>1?(d[I[l-1].oriIndex]-d[I[0].oriIndex])/2*_/100:Math.max(d[I[0].oriIndex],100-d[I[0].oriIndex])/2*_/100,P?((S=a.getSmartText(I[0].label,f,v.height)).x=d[I[0].oriIndex]*v.width/100,s=S.x+S.width):((S=a.getSmartText(I[0].label,f,v.width)).y=d[I[0].oriIndex]*v.height/100,s=S.y+S.width),D.push(S.height),m[I[0].oriIndex]=S,P?((S=a.getSmartText(I[l-1].label,f,v.height)).x=d[I[l-1].oriIndex]*v.width/100,c=S.x-S.width):((S=a.getSmartText(I[l-1].label,f,v.width)).y=d[I[l-1].oriIndex]*v.height/100,c=S.y-S.width),D.push(S.height),m[I[l-1].oriIndex]=S,k=s,r=1;r<l-1;r++)u=I[r].label,A=I[r].oriIndex,S=p,x=r+1===l-1?c:d[I[r+1].oriIndex]*_/100,C=d[I[r].oriIndex]*_/100,(g=Math.min(C-k,x-C))>2*y.width&&(P?(S=a.getSmartText(u,g,v.height)).x=d[A]*v.width/100:(S=a.getSmartText(u,g,v.width)).y=d[A]*v.height/100,k=g,D.push(S.height)),m[I[r].oriIndex]=S;return b=Math.max.apply(Math,D),P?(v.height=b,e.height=b+2*T.v):(v.width=b,e.width=b+2*T.v),F.node.logicArea=v,F.bound=e,e},e.prototype.draw=function(){var e,t,n,o,a,i,r,l,s,c,h,u,p="bottom"===this.conf.legendPosition,d=this.conf,g=d.bound&&d.bound.style||{stroke:"none"},f={};arguments.length>=2&&arguments[1]?(o=arguments[0],r=arguments[1]):arguments.length>=1&&(r=arguments[0]),u=r.animationManager,e=r.parentLayer,this.getLogicalSpace(o,r),s=(i=this._lSpace).node.logicArea,c=i.node.smartTexts,this.group=n=u.setAnimation({el:this.group||"group",attr:{name:"legend-labels"},container:e,component:k}),this.bound=t=u.setAnimation({el:this.bound||"rect",attr:i.bound,css:g,container:n,component:k});for(var m=0;m<this.node.length;m++)this.node[m].remove();for(this.node=[],l=0,h=c.length;l<h;l++)(a=c[l])&&(p?(f.y=s.y+a.height/2,f.x=l===h-1?s.x+a.x-a.width/2:l?s.x+a.x:s.x+a.x+a.width/2):(f.x=s.x+a.height/2,f.y=l===h-1?s.y+a.y-a.width/2:l?s.y+a.y:s.y+a.y+a.width/2),this.node.push(u.setAnimation({el:"text",attr:{text:a.text,x:f.x,y:f.y,lineHeight:this._metaStyle.lineHeight,fill:d.style.fill,transform:p?"R0":"R270,"+f.x+","+f.y},container:n,component:k})));return{group:n,bound:t,node:this.node}},e}(),D=function(){function e(t){c(this,e),this.conf=t,this._id="FL_AXIS",this.node=p,this.group=p,this.shadow=p,this.markerLine=p,this.compositionsByCategory={}}return e.prototype.configure=function(e){this.conf=e},e.prototype.getName=function(){return"LegendAxis"},e.prototype.getType=function(){return"axis"},e.prototype.addCompositions=function(e,t){this.compositionsByCategory[t]=e},e.prototype.getLogicalSpace=function(){var e,t,n,o,a,i,r="bottom"===this.conf.legendPosition,l=arguments[0],s=arguments[2],c=this._lSpace,h=this.conf,u=h.padding,g=h.legendAxisHeight,f=this.compositionsByCategory,m=0;return c&&!s?(c.isImpure=!0,c):(c=this._lSpace={bound:{height:0,width:0},node:{logicArea:p}},(a=w(l,{})).height-=2*u.v,a.width-=2*u.h,a.x+=u.h,a.y+=u.v,e=g/2+h.line.offset,t=g/2,(o=f[d.RANGE])&&(i=o.sliders["false"].conf.outerCircle.rFactor*g,t+=m=Math.max(i/2-g/2,0)),r?(a.y+=m,a.height=n=t+e+m,l.height=n+2*u.v):(a.x+=m,a.width=n=t+e+m,l.width=n+2*u.v),c.node.logicArea=a,c.bound=l,l)},e.prototype.getDrawableAxisArea=function(e){var t=this.conf,n="bottom"===this.conf.legendPosition;return{x:e.x,y:e.y,width:n?e.width:t.legendAxisHeight,height:n?t.legendAxisHeight:e.height,r:t.legendAxisHeight/2}},e.prototype.preDrawingRangeParamV=function(e){return{x:e.x+e.width/2,calculationBase:e.width,rangeStart:e.y,rangeEnd:e.y+e.height,prop:"x"}},e.prototype.preDrawingRangeParamH=function(e){return{y:e.y+e.height/2,calculationBase:e.height,rangeStart:e.x,rangeEnd:e.x+e.width,prop:"y"}},e.prototype.preDrawingRangeParam=function(e){return"bottom"===this.conf.legendPosition?this.preDrawingRangeParamH(e):this.preDrawingRangeParamV(e)},e.prototype.getScaleMarkerPathStrH=function(e,t){var n,o,a,i,r,l=w(e,{}),s=this.conf.line,c="",h="";for(l.x+=l.r,l.width-=2*l.r,r=l.y+l.height,n=0,o=t.length;n<o;n++)a=t[n],i=l.x+a*l.width/100,c+=x+i+","+(r-s.grooveLength)+C+i+","+(r+s.offset);return c+(h+=x+l.x+","+(r+s.offset)+C+(l.x+l.width)+","+(r+s.offset))},e.prototype.getColorGradientH=function(e){return{axis:e.getBoxFill(),shadow:(0,i.toRaphaelColor)({FCcolor:{alpha:"25,0,0",angle:90,color:"000000,FFFFFF,FFFFFF",ratio:"0,30,40"}})}},e.prototype.draw=function(){var e,t,n,o,a,i,r,l,s,c,h,u,p,g,f=this.conf,m=f.bound||{},b=f.line,v=m.style||{},y=this.compositionsByCategory;for(n in arguments.length>=2?(t=arguments[0],u=arguments[1]):arguments.length>=1&&(u=arguments[0]),p=u.animationManager,e=u.parentLayer,a=(o=u.colorRange).getCumulativeValueRatio(),this.getLogicalSpace(t,u),h=this._lSpace,this.group=r=p.setAnimation({el:this.group||"group",attr:{name:"legend-axis"},container:e,component:k}),this.bound=p.setAnimation({el:this.bound||"rect",attr:h.bound,css:v,component:k,container:r}),c=this.getDrawableAxisArea(h.node.logicArea),s=this.getColorGradient(o),f.style.fill=s.axis,f.shadow.style.fill=s.shadow,this.node=p.setAnimation({el:this.node||"rect",attr:c,css:f.style,container:r,component:k}),this.shadow=p.setAnimation({el:this.shadow||"rect",attr:c,css:f.shadow.style,container:r,component:k}),g=this.getScaleMarkerPathStr(c,a),this.path=p.setAnimation({el:this.path||"path",attr:{path:g},css:b.style,container:r,component:k}),y)switch(i=y[n],n){case d.RANGE:u[(l=this.preDrawingRangeParam(c)).prop]=l[l.prop],u.key=l.prop,u.rCalcBase=l.calculationBase,u.parentLayer=r,i.draw(l.rangeStart,l.rangeEnd,u)}},e.prototype.getScaleMarkerPathStr=function(e,t){return"bottom"===this.conf.legendPosition?this.getScaleMarkerPathStrH(e,t):this.getScaleMarkerPathStrV(e,t)},e.prototype.getColorGradient=function(e){return"bottom"===this.conf.legendPosition?this.getColorGradientH(e):this.getColorGradientV(e)},e.prototype.getScaleMarkerPathStrV=function(e,t){var n,o,a,i,r,l=w(e,{}),s=this.conf.line,c="",h="";for(l.y+=l.r,l.height-=2*l.r,i=l.x+l.width,n=0,a=t.length;n<a;n++)o=t[n],r=l.y+o*l.height/100,c+=x+(i-s.grooveLength)+","+r+C+(i+s.offset)+","+r;return c+(h+=x+(i+s.offset)+","+l.y+C+(i+s.offset)+","+(l.y+l.height))},e.prototype.getColorGradientV=function(e){return{axis:e.getBoxFill(!0),shadow:(0,i.toRaphaelColor)({FCcolor:{alpha:"25,0,0",angle:360,color:"000000,FFFFFF,FFFFFF",ratio:"0,30,40"}})}},e}(),O=function(){function e(t,n,o){c(this,e),this.conf=n.conf,this.sliderIndex=t,this.rangeGroup=n.sliderGroup,this._id=o,this.node=p,this.tracker=p,this.currPos=0,this.swing=[]}return e.prototype.configure=function(e,t,n){this.conf=t.conf,this.sliderIndex=e,this.rangeGroup=t.sliderGroup,this._id=n,this.currPos=0,this.swing=[]},e.prototype.getType=function(){return"slider"},e.prototype.getName=function(){return"Slider"},e.prototype.updateSwingRange=function(e,t){this.swing[+e]=t},e.prototype.draw=function(e,t,n,o){var a,i,r,l,s,c,h,u=o.parentLayer,p=o.animationManager,d=this.conf,f=d.outerCircle,m=d.innerCircle,b=p.getFromEnv("chart").config,v=Math.ceil(f.rFactor*o.rCalcBase/2),y=Math.ceil(m.rFactor*o.rCalcBase/2),x=v-y,C=o.gLegend.getFromEnv("toolTipController"),w=this.sliderIndex;return d.outerRadius=v,d.innerRadius=y,this._scaleVal=t,m.style["stroke-width"]=x,y+=l=Math.ceil(f.style["stroke-width"]/2),i=this.node=p.setAnimation({el:this.node||"group",attr:{name:"fc-gl-slider",cursor:"pointer",transform:"t0,0"},container:u,component:k}),"x"===o.key?(s=n,c=e,c+=w?-y:+y):(s=e,c=n,s+=w?-y:+y),this.oCircle=p.setAnimation({el:this.oCircle||"circle",attr:{cx:s,cy:c,r:v},css:f.style,container:i,component:k}),this.iCircle=p.setAnimation({el:this.iCircle||"circle",attr:{cx:s,cy:c,r:y},css:m.style,container:i,component:k}),h=this.tracker=p.setAnimation({el:this.tracker||"circle",attr:{cx:s,cy:c,r:v+5,fill:g,stroke:g,cursor:"pointer"},container:i,component:k}),i.attr({transform:"x"===o.key?"t0,"+this.currPos:"t"+this.currPos+",0"}),a=b.showToolTip?t:"",C.enableToolTip(h,a),this._dragAPI=r=this.getDragAPI("x"===o.key),h.undrag(),h.drag(r.dragging,r.dragStart,r.dragEnd),{translateAscending:v+l}},e.prototype.getDragAPI=function(e){var t,n,o,a,i=this,r=i.node,l=i.sliderIndex,s=i.rangeGroup,c=i.conf.innerRadius;return{dragging:function(h){var u,p,d,g,f;return h.stopPropagation(),d=e?h.data[1]:h.data[0],l?(u=t[0]-t[1]+c,p=0):(u=0,p=t[1]-t[0]-c),(f=i.currPos+d)<u?d+=u-f:f>p&&(d-=f-p),r.attr({transform:e?"t0,"+(i.currPos+d):"t"+(i.currPos+d)+",0"}),n=d,o&&clearTimeout(o),o=setTimeout(function(){s.updateWhenInRest(i,i.currPos+d)},100),g=s.updateWhenInMove(i,i.currPos+d),i.conf.showTooltip&&i.tracker.data("__FC_tooltipText",g),a=!0,!0},dragStart:function(e){e.stopPropagation(),t=i.swing,a=!1,s.dragStarted(i)},dragEnd:function(){var e;s.dragCompleted(i,a,i.currPos+n),a&&(o&&clearTimeout(o),o=setTimeout(function(){s.updateWhenInRest(i,i.currPos)},100),i.currPos+=n,e=t[+l]+i.currPos,s.updateRange(i,e))}}},e.prototype.dispose=function(){this.node.remove(),this.oCircle.remove(),this.iCircle.remove(),this.tracker.remove()},e}(),I=function(){function e(t){c(this,e);var n=t,o={};this._id="GL_SG1",this.conf=t,o.conf=n,this.extremes=[],this.sliders={},this.min=undefined,this.max=undefined,o.sliderGroup=this,this.valueRange=[],this.callbacks=[],this.sliders[m]=new O(m,o,this._id+"_"+ +m),this.sliders[b]=new O(b,o,this._id+"_"+ +b)}return e.prototype.configure=function(e){var t=e,n={};this.min=undefined,this.max=undefined,this.conf=e,n.conf=t,n.sliderGroup=this,this.sliders[m].configure(m,n,this._id+"_"+ +m),this.sliders[b].configure(b,n,this._id+"_"+ +b)},e.prototype.getType=function(){return"slider"},e.prototype.getName=function(){return"SliderGroup"},e.prototype.initRange=function(e,t){var n=e.sliderIndex;this.extremes[+n]=t},e.prototype.updateRange=function(e,t){var n=e.sliderIndex;this.sliders[!n].updateSwingRange(n,t)},e.prototype.reset=function(){var e={};e.conf=this.conf,e.sliderGroup=this,this.min=undefined,this.max=undefined,this.sliders[m].configure(m,e,this._id+"_"+ +m),this.sliders[b].configure(b,e,this._id+"_"+ +b),this.draw.apply(this,this._drawParams)},e.prototype.draw=function(e,t,n){var o,a,i,r,l,s,c=this.sliders,h=c[m],u=c[b],p=n.colorRange,d=p.colorRange,g=p.data.mapByPercent,f=n.gLegend.getFromEnv("number-formatter");return this._fcChart=n.gLegend.getFromEnv("chart"),this.getValueFormPixel=function(e,t,n,o){var a=(t-e)/(o-n);this.getValueFormPixel=function(t){return e+a*t}},this.updateWhenInMove=function(e,t){this.updateWhenInMove=function(n,o){var a,i,r=this.extremes;return a=n.sliderIndex?r[1]-r[0]+o:o,i=this.getValueFormPixel(a),i=t?parseFloat(i).toFixed(2)+"%":e.legendValue(i)}},this._drawParams=[e,t,n],this.updateWhenInMove(f,g),i=h.conf.outerCircle,a=h.conf.innerCircle,r=Math.ceil(a.rFactor*n.rCalcBase/2),r+=Math.ceil(i.style["stroke-width"]/2),this.extremes[0]=e+r,this.extremes[1]=t-r,l=this.extremes[1]-this.extremes[0],this.min=this.min?this.min:d[0].value,this.max=this.max?this.max:d[d.length-1].value,s=d[d.length-1].value-d[0].value,h.currPos=l*(this.min-d[0].value)/s,u.currPos=l*(this.max-d[0].value)/s-l,h.draw(e,g?f.legendPercentValue(this.min):f.legendValue(this.min),n[n.key],n),o=u.draw(t,g?f.legendPercentValue(this.max):f.legendValue(this.max),n[n.key],n),h.swing=this.extremes.slice(0),u.swing=this.extremes.slice(0),h.swing[1]+=u.currPos,u.swing[0]+=h.currPos,this.getValueFormPixel(d[0].value,d[d.length-1].value,this.extremes[0],this.extremes[1]),o},e.prototype.updateWhenInRest=function(e,t){var n,o,a=this.sliders,i=this.extremes,r=e.sliderIndex;r?(n=a[!r].currPos,o=i[1]-i[0]+t):(n=t,o=i[1]-i[0]+a[!r].currPos),this.min=Number(this.getValueFormPixel(n).toFixed(2)),this.max=Number(this.getValueFormPixel(o).toFixed(2)),this.gLegend.fireEvent("rangeUpdated",[{min:this.min,max:this.max}])},e.prototype.dragStarted=function(e){var t=this.sliders,n=this.extremes,o=e.conf,a=this._fcChart;a.fireChartInstanceEvent("legendpointerdragstart",{pointerIndex:+e.sliderIndex,pointers:[{value:this.getValueFormPixel(t["false"].currPos)},{value:this.getValueFormPixel(n[1]-n[0]+t["true"].currPos)}],legendPointerHeight:o.outerRadius,legendPointerWidth:o.innerRadius,outerRadius:o.outerRadius,innerRadius:o.innerRadius},[a.id])},e.prototype.dragCompleted=function(e,t,n){var o,a,i=this.sliders,r=this.extremes,l=e.conf,s=this.getValueFormPixel(i["false"].currPos),c=this.getValueFormPixel(r[1]-r[0]+i["true"].currPos),h=this._fcChart;e.sliderIndex?(o=s,a=this.getValueFormPixel(r[1]-r[0]+n)):(o=this.getValueFormPixel(n),a=c),t&&h.fireChartInstanceEvent("legendrangeupdated",{previousMinValue:s,previousMaxValue:c,minValue:o,maxValue:a},[h.id]),h.fireChartInstanceEvent("legendpointerdragstop",{pointerIndex:+e.sliderIndex,pointers:[{value:o},{value:a}],legendPointerHeight:l.outerRadius,legendPointerWidth:l.innerRadius,outerRadius:l.outerRadius,innerRadius:l.innerRadius},[h.id])},e.prototype.dispose=function(){this.sliders[m].dispose(),this.sliders[b].dispose()},e}(),M=function(e){function t(){c(this,t);var n=h(this,e.call(this,arguments[0]));return n._id="GL_VALUES",n.node=[],n}return u(t,e),t.prototype.configure=function(e){this.conf=e},t.prototype.getName=function(){return"LegendValues"},t.prototype.getType=function(){return"legend"},t.prototype.getLogicalSpace=function(e,t,n){var o,a,i,r,l,s,c,h,u,d,g,f,m,b,v,y,x,C,k,S,A,N,_,P,F,E="bottom"===this.conf.legendPosition,T=this._lSpace,D=this.conf,O=D.padding,I=t.gLegend.getFromEnv("chartConfig"),M=[],R=[];if(T&&!n)return T.isImpure=!0,T;for(o=t.colorRange,a=t.smartLabel,i=o.colorRange,c=o.getCumulativeValueRatio(),F=(T=this._lSpace={bound:{height:0,width:0},node:{logicArea:p,smartTexts:[]}}).node.smartTexts,(S=w(e,{})).height-=2*O.v,S.width-=2*O.h,S.x+=O.h,S.y+=O.v,a.useEllipsesOnOverflow(I.useEllipsesWhenOverflow),P=w(D.style,{}),L(this._metaStyle=P),a.setStyle(P),_=a.getSmartText("W"),s=i.length,E?(g=h=(c[s-1]-c[0])/2*S.width/100,N=i[0].displayValue,(r=a.getSmartText("string"!=typeof N&&N!==p&&N.toString()||N,g,S.height)).x=c[0]*S.width/100,f=r.x+r.width,M.push(r.height)):(g=h=(c[s-1]-c[0])/2*S.height/100,(r=a.getSmartText(i[0].displayValue,S.width,g)).y=c[0]*S.height/100,v=r.y+r.width,R.push(r.width)),F[0]=r,E?((r=a.getSmartText(i[s-1].displayValue,g,S.height)).x=c[s-1]*S.width/100,b=r.x-r.width,M.push(r.height),m=f):((r=a.getSmartText(i[s-1].displayValue,S.width,g)).y=c[s-1]*S.height/100,x=r.y-r.height,R.push(r.width),y=v),F[s-1]=r,l=1;l<s-1;l++)r=p,A=i[l].displayValue,E?(u=l+1===s-1?b:c[l+1]*S.width/100,d=c[l]*S.width/100,(h=Math.min(d-m,u-d))>1.5*_.width&&((r=a.getSmartText(A,2*h,S.height)).x=c[l]*S.width/100,m=h,M.push(r.height))):(u=l+1===s-1?x:c[l+1]*S.height/100,d=c[l]*S.height/100,(h=Math.min(d-y,u-d))>2*_.height&&((r=a.getSmartText(A,S.width,2*h)).y=c[l]*S.height/100,y=h,R.push(r.width))),F[l]=r;return E?(C=Math.max.apply(Math,M),S.height=C,e.height=C+2*O.v):(k=Math.max.apply(Math,R),S.width=k,e.width=k+2*O.h),T.node.logicArea=S,T.bound=e,e},t.prototype.draw=function(){var e,t,n,o,a,i,r,l,s,c,h,u,p,d=this.conf,g="bottom"===d.legendPosition,f=d.bound&&d.bound.style||{stroke:"none"},m={};arguments.length>=2&&arguments[1]?(o=arguments[0],r=arguments[1]):arguments.length>=1&&(r=arguments[0]),p=r.animationManager,e=r.parentLayer,l=r.colorRange.getCumulativeValueRatio(),this.getLogicalSpace(o,r),i=(a=this._lSpace).node.logicArea,h=a.node.smartTexts,this.group=n=p.setAnimation({el:this.group||"group",attr:{name:"legend-values"},container:e,component:k}),this.bound=t=p.setAnimation({el:this.bound||"rect",attr:a.bound,css:f,container:n,component:k});for(var b=0;b<this.node.length;b++)this.node[b].remove();for(this.node=[],s=0,c=l.length;s<c;s++)(u=h[s])&&(g?(m.y=i.y+u.height/2,m.x=s===c-1?i.x+u.x-u.width/2:s?i.x+u.x:i.x+u.x+u.width/2):(m.x=i.x+u.width/2,m.y=s===c-1?i.y+u.y-u.height/2:s?i.y+u.y:i.y+u.y+u.height/2),this.node.push(p.setAnimation({el:"text",attr:{text:u.text,x:m.x,y:m.y,lineHeight:this._metaStyle.lineHeight,fill:d.style.fill},container:n,component:k})));return{group:n,bound:t}},t}(T);t["default"]=N},,,,function(e,t,n){"use strict";t.__esModule=!0,t.getCoordinates=t.getPlotFromPixel=t.polarToCartesian=t.cartesianToPolar=undefined;var o=n(118),a=function(e){return e*(Math.PI/180)},i=function(e){return e*(180/Math.PI)},r=function(e,t){var n,o;return n=Math.sqrt(e*e+t*t),o=i(Math.atan(t/e)),e<0&&t>=0?o+=180:e<0&&t<0?o+=180:e>0&&t<0&&(o+=360),{radius:n,theta:a(o)}},l=function(e,t){return!(arguments.length>2&&arguments[2]!==undefined)||arguments[2]||(t=a(t)),{x:e*Math.cos(t),y:e*Math.sin(t)}};t.cartesianToPolar=r,t.polarToCartesian=l,t.getPlotFromPixel=function(e,t){var n,o,a=e.x,l=e.y,s=t.getScale();return o=r(a,l),n=s.getDomainValue(o.theta),i(n)},t.getCoordinates=function(e,t){var n,a=t.getScale(),i=e.radius,r=t.config,s=r.axisDimention.centerX,c=r.axisDimention.centerY,h=void 0;return i=(0,o.pluckNumber)(i,r.radius,0),n=a.getRangeValue(e.theta),(h=l(i,n)).x+=s,h.y+=c,h}},,,,function(e,t,n){"use strict";t.__esModule=!0;t["default"]=[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"axis"}]},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.symbolList=undefined;var o,a=(0,n(125).getDep)("redraphael","plugin"),i=Math.cos,r=Math.sin,l=Math.PI;t.symbolList=o={pinModeIcon:function(e,t,n){var o=.5*n,a=e-n,i=e+n,r=e-o,l=e+o,s=e+.5,c=s+1,h=s+1.5,u=t-n,p=t+o,d=t-o,g=t+(n-o);return["M",a,u,"L",r,d,r,g,a,p,e-.5,p,e,t+n+.5,s,p,i,p,l,g,l,d,i,u,h,u,h,d,h,g,c,g,c,d,h,d,h,u,"Z"]},zoomOutIcon:function(e,t,n){var o=e-.2*n,l=t-.2*n,s=.8*n,c=a.rad(43),h=a.rad(48),u=o+s*i(c),p=l+s*r(c),d=o+s*i(h),g=l+s*r(h),f=n,m=a.rad(45);return["M",u,p,"A",s,s,0,1,0,d,g,"Z","M",u+1,p+1,"L",u+f*i(m),p+f*r(m),d+f*i(m),g+f*r(m),d+1,g+1,"Z","M",o-2,l,"L",o+2,l,"Z"]},resetIcon:function(e,t,n){var o=n,a=e-o,s=t,c=(l/2+l)/2,h=e+o*i(c),u=t+o*r(c),p=2*o/3;return["M",a,s,"A",o,o,0,1,1,h,u,"L",h+p,u-1,h+2,u+p-.5,h,u]},zoomInIcon:function(e,t,n){var o=e-.2*n,l=t-.2*n,s=.8*n,c=a.rad(43),h=a.rad(48),u=o+s*i(c),p=l+s*r(c),d=o+s*i(h),g=l+s*r(h),f=n,m=a.rad(45);return["M",u,p,"A",s,s,0,1,0,d,g,"Z","M",u+1,p+1,"L",u+f*i(m),p+f*r(m),d+f*i(m)-1,g+f*r(m)-1,d+1,g+1,"Z","M",o-2,l,"L",o+2,l,"Z","M",o,l-2,"L",o,l+2,"Z"]},zoomModeIcon:function(e,t,n){var o=[],l=e-.2*n,s=t-.2*n,c=.8*n,h=a.rad(43),u=a.rad(48),p=l+c*i(h),d=s+c*r(h),g=l+c*i(u),f=s+c*r(u),m=n,b=a.rad(45),v=p+m*i(b),y=d+m*r(b),x=g+m*i(b)-1,C=f+m*r(b)-1;return o=o.concat(["M",p,d,"A",c,c,0,1,0,g,f,"Z","M",p+1,d+1,"L",v,y,x,C,x+1,C-1,x+1.5,C+1.5,x-1,C+1,x,C,g+1,f+1,"Z","M",l-2,s,"L",l+2,s,"Z","M",l,s-2,"L",l,s+2,"Z"])},panModeIcon:function(e,t,n){var o;return[].concat(["M",(o=e)-(n*=2.5)/16,t-n/8,"L",o+n/16,t-n/8,"L",o+n/16,t-n/3.2,"L",o+6*n/32,t-10*n/32,"L",o,t-n/2,"L",o-6*n/32,t-10*n/32,"L",o-n/16,t-n/3.2,"Z","M",o+4*n/32,t-2*n/32,"L",o+10*n/32,t-2*n/32,"L",o+10*n/32,t-6*n/32,"L",o+16*n/32,t,"L",o+10*n/32,t+6*n/32,"L",o+10*n/32,t+2*n/32,"L",o+4*n/32,t+2*n/32,"Z","M",o+2*n/32,t+5*n/32,"L",o+2*n/32,t+10*n/32,"L",o+6*n/32,t+10*n/32,"L",o,t+16*n/32,"L",o-6*n/32,t+10*n/32,"L",o-2*n/32,t+10*n/32,"L",o-2*n/32,t+5*n/32,"Z","M",o-4*n/32,t-2*n/32,"L",o-10*n/32,t-2*n/32,"L",o-10*n/32,t-6*n/32,"L",o-16*n/32,t,"L",o-10*n/32,t+6*n/32,"L",o-10*n/32,t+2*n/32,"L",o-4*n/32,t+2*n/32,"Z"])}},t.symbolList=o},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(402),i=(o=a)&&o.__esModule?o:{"default":o},r=n(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],i=Object.getOwnPropertyDescriptor(t,a);i&&i.configurable&&e[a]===undefined&&Object.defineProperty(e,a,i)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getType=function(){return"group"},t.prototype.getName=function(){return"columnOverlappedGroup"},t.prototype.setColumnPosition=function(){var e=this.getFromEnv("chart-attrib"),t=this.getFromEnv("xAxis"),n=this.getFromEnv("chart"),o=this.getFromEnv("numOfColumns"),a=Math.max((0,r.pluckNumber)(e.plotspacepercent),0),i=Math.max((0,r.pluckNumber)(a,20)%100,0),l=i/200,s=t.getPixel(0),c=t.getPixel(1),h=n.isBar?n.config.maxBarHeight:n.config.maxColWidth,u=Math.abs(c-s),p=void 0,d=!0,g=0,f=0;this.addToEnv("groupMaxWidth",u),this._mapChildren(function(e){e.getState("removed")||!1===e.getState("visible")||f++}),this.addToEnv("numOfColumns",f),this.addToEnv("numColDiff",(0,r.pluckNumber)(o-f,0)),void 0===(p=this.getFromEnv("plotWidth"))&&(p=(1-.01*a)*u||Math.min(u*(1-2*l),h*(f||1))),this._mapChildren(function(e){e.getState("removed")||!1===e.getState("visible")||(e.addToEnv("plotWidth",p-p/f*g),g++)}),c-NaN-(s-NaN+void 0)<4&&(d=!1),0===i&&(d=!0),this.addToEnv("isCrisp",d)},t}(i["default"]);t["default"]=s}])]); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.common.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.maps.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.maps.js new file mode 100755 index 0000000000000000000000000000000000000000..97b7f7bee069f7adc9ef11eb12d47b43bf5e1bcb --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.maps.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[12],{715:function(e,t,o){"use strict";t.__esModule=!0,t.Maps=undefined;var r,a=o(716),n=(r=a)&&r.__esModule?r:{"default":r};t.Maps=n["default"],t["default"]={name:"maps",type:"package",requiresFusionCharts:!0,extension:function(e){return e.addDep(n["default"])}}},716:function(e,t,o){"use strict";t.__esModule=!0;var r=m(o(354)),a=m(o(131)),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}(o(272)),i=m(o(120)),l=o(124),s=o(118),c=o(122),d=m(o(184)),h=m(o(121)),p=m(o(717)),u=m(o(262)),f=m(o(579)),g=m(o(584));function m(e){return e&&e.__esModule?e:{"default":e}}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function k(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),r=0;r<o.length;r++){var a=o[r],n=Object.getOwnPropertyDescriptor(t,a);n&&n.configurable&&e[a]===undefined&&Object.defineProperty(e,a,n)}}(e,t))}var y=(0,h["default"])({foregroundcolor:"333333",foregroundalpha:"100",foregrounddarkcolor:"111111",foregrounddarkalpha:"100",foregroundlightcolor:"666666",foregroundlightalpha:"100",backgroundlightcolor:"FFFFFF",backgroundlightalpha:"100",backgroundlightangle:90,backgroundlightratio:"",backgroundcolor:"FFFFCC",backgroundalpha:"100",backgrounddarkcolor:"ffcc66",backgrounddarkalpha:"100",backgrounddarkangle:270,backgrounddarkratio:"",shadow:1},n),C="0,100",w={basefontcolor:"foregroundcolor",bordercolor:"foregrounddarkcolor",borderalpha:"foregrounddarkalpha",bgcolor:"backgroundlightcolor",bgalpha:"backgroundlightalpha",bgangle:"backgroundlightangle",bgratio:"backgroundlightratio",canvasbordercolor:"foregrounddarkcolor",canvasborderalpha:"foregrounddarkalpha",canvasbgcolor:"backgroundlightcolor",canvasbgalpha:"backgroundlightalpha",canvasbgangle:"backgroundlightangle",canvasbgratio:"backgroundlightratio",tooltipbordercolor:"foregrounddarkcolor",tooltipborderalpha:"foregrounddarkalpha",tooltipbgcolor:"backgroundlightcolor",tooltipbgalpha:"backgroundlightalpha",tooltipfontcolor:"foregroundcolor",legendbordercolor:"foregrounddarkcolor",legendborderalpha:"foregrounddarkalpha",markerbordercolor:"foregroundlightcolor",markerborderalpha:"foregroundlightalpha",markerfillcolor:"backgrounddarkcolor",markerfillalpha:"backgrounddarkalpha",markerfillangle:"backgrounddarkangle",markerfillratio:"backgrounddarkratio",plotfillcolor:"backgroundcolor",plotfillalpha:"backgroundalpha",plotfillangle:"backgroundangle",plotfillratio:"backgroundratio",plothoverfillcolor:"backgrounddarkcolor",plothoverfillalpha:"backgrounddarkalpha",plothoverfillangle:"backgrounddarkangle",plothoverfillratio:"backgrounddarkratio",plotbordercolor:"foregroundcolor",plotborderalpha:"foregroundalpha",shadow:"shadow"},F={getMapName:function(){return this.jsVars.instanceAPI.getName().toLowerCase()},getEntityList:function(){var e=this.jsVars.instanceAPI.getDatasets()||[],t=void 0,o=void 0,r=void 0,a=e.length,n=[],i=void 0,l=void 0;for(t=0;t<a;t++)if("entities"===(r=e[t]||[]).getName()){o=r;break}for(t in a=(i=o.components.data).length,i)i.hasOwnProperty(t)&&(l=(i[t]||{}).config||{},n.push({id:l.id,originalId:l.originalId||l.id,label:l.label,shortlabel:l.shortLabel,value:l.value,formattedValue:l.formattedValue,toolText:l.toolText}));return n},getMapAttribute:function(){return(0,l.raiseWarning)(this,"12061210581","run","JavaScriptRenderer~getMapAttribute()",'Use of deprecated "getMapAttribute()". Replace with "getChartAttribute()".'),this.getChartAttribute.apply(this,arguments)},exportMap:function(){return(0,l.raiseWarning)(this,"12061210581","run","JavaScriptRenderer~exportMap()",'Use of deprecated "exportMap()". Replace with "exportChart()".'),this.exportChart&&this.exportChart.apply(this,arguments)},addMarker:function(e){var t=this.jsVars.instanceAPI.getDatasets()||[],o=t.length,r=void 0,a=void 0,n=void 0;for(r=0;r<o;r++)if("markers"===(a=t[r]||[]).getName()){n=a;break}n&&!n.addMarkerItem(e)&&(0,l.raiseWarning)(this,"1309264086","run","MapsRenderer~addMarker()","Failed to add marker. Check the options and try again.")},updateMarker:function(e,t){var o=this.jsVars.instanceAPI.getDatasets()||[],r=o.length,a=void 0,n=void 0,i=void 0;for(a=0;a<r;a++)if("markers"===(n=o[a]||[]).getName()){i=n;break}i&&e&&(e=(e+E).toLowerCase(),i.updateMarkerItem(e,t))},removeMarker:function(e){var t=this.jsVars.instanceAPI.getDatasets()||[],o=t.length,r=void 0,a=void 0,n=void 0;for(r=0;r<o;r++)if("markers"===(a=t[r]||[]).getName()){n=a;break}e&&(e=(e+E).toLowerCase(),n._removeMarkerItem(e))}},E="",A=window.Math,x=A.min,L=A.max,N=function(e){function t(o,r){b(this,t);var a,n=v(this,e.call(this));for(a in n.subpalette="",n.key="",n.index=r,o)n.subpalette=y[o[a]],n[a]=n.subpalette instanceof Array?n.subpalette[r]:n.subpalette,n.key=a;return n}return k(t,e),t}(a["default"]),S=function(e){function t(){b(this,t);var o=v(this,e.call(this));return o.friendlyName="Map",o.revision=1,o.hasCanvas=!0,o.standaloneInit=!1,o.defaultDatasetType="maps",o.defaultSeriesType="geo",o.fireGroupEvent=!0,o.legendposition="right",o.hasGradientLegend=!0,o.isMap=!0,o.defaultPaletteOptions={paletteColors:[["A6A6A6","CCCCCC","E1E1E1","F0F0F0"],["A7AA95","C4C6B7","DEDFD7","F2F2EE"],["04C2E3","66E7FD","9CEFFE","CEF8FF"],["FA9101","FEB654","FED7A0","FFEDD5"],["FF2B60","FF6C92","FFB9CB","FFE8EE"]],bgColor:["FFFFFF","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:[C,C,C,C,C],bgAlpha:["100","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendColor:["545454","60634E","415D6F","845001","68001B"],plotFillColor:["545454","60634E","415D6F","845001","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50]},o.colorPaletteMap=w,o.eiMethods=F,o.registerFactory("legend",g["default"],["canvas"]),o.registerFactory("axis",function(){},["canvas"]),o.registerFactory("colormanager-decider",f["default"],["legend"]),o.registerFactory("dataset",p["default"],["colormanager-decider"]),o.registerFactory("canvas",u["default"]),o}return k(t,e),t.prototype._checkInvalidSpecificData=function(){return this.config.invalid=!1,!1},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;!t.baseWidth&&(t.baseWidth=400),!t.baseHeight&&(t.baseHeight=300),!t.baseScaleFactor&&(t.baseScaleFactor=1)},t.getName=function(){return"maps"},t.getType=function(){return"chartAPI"},t.prototype.getName=function(){return this.config.name||"GEO"},t.prototype.getType=function(){return"chartAPI"},t.prototype.configureAttributes=function(t){var o,r=this.getChildren("colorPalette")&&this.getChildren("colorPalette")[0];o=t.chart=t.chart||t.graph||t.map||{},this.jsonData=t,(0,s.componentFactory)(this,d["default"],"mapAnnotations"),r||(r=new N(this.colorPaletteMap,(o.palette>0&&o.palette<6?o.palette:(0,s.pluckNumber)(this.paletteIndex,1))-1),this.attachChild(r,"colorPalette")),this.config.skipCanvasDrawing=!0,e.prototype.configureAttributes.call(this,t),this._parseBackgroundCosmetics()},t.prototype.parseChartAttr=function(t){var o,r,a,n,i=void 0,l=this.jsonData,c=l.chart||l.map,d=l.markers,h=new N(this.colorPaletteMap,(c.palette>0&&c.palette<6?c.palette:(0,s.pluckNumber)(this.paletteIndex,1))-1),p=(0,s.pluck)(c.entitybordercolor,c.bordercolor,h.plotbordercolor),u=(0,s.pluck)(c.entityfillcolor,c.fillcolor,h.plotfillcolor),f=(0,s.pluck)(c.entityfillalpha,c.fillalpha,h.plotfillalpha),g=(0,s.pluck)(c.entityfillratio,c.fillratio,h.plotfillratio),m=(0,s.pluck)(c.entityfillangle,c.fillangle,h.plotfillangle),b=(0,s.pluck)(c.nullentityfillcolor,c.nullentitycolor,u),v=(0,s.pluckNumber)(c.usevaluesformarkers,l.markers&&l.markers.items&&l.markers.items.length,!(l.markers&&l.markers.application&&l.markers.application.length&&l.markers.definition&&l.markers.definition.length));e.prototype.parseChartAttr.call(this,t),(i=this.config).origMarginTop=(0,s.pluckNumber)(c.charttopmargin,c.maptopmargin,11),i.origMarginLeft=(0,s.pluckNumber)(c.chartleftmargin,c.mapleftmargin,11),i.origMarginBottom=(0,s.pluckNumber)(c.chartbottommargin,c.mapbottommargin,11),i.origMarginRight=(0,s.pluckNumber)(c.chartrightmargin,c.maprightmargin,11),i.labelsOnTop=(0,s.pluckNumber)(c.entitylabelsontop,1),o=(n=i.style).inCancolor,r=n.inCanfontFamily,a=n.inCanfontSize,i.entityOpts={baseScaleFactor:i.baseScaleFactor,dataLabels:{style:{fontFamily:r,fontSize:a,lineHeight:n.inCanLineHeight,color:n.inCancolor}},fillColor:u,fillAlpha:f,fillRatio:g,fillAngle:m,borderColor:p,borderAlpha:(0,s.pluck)(c.entityborderalpha,c.borderalpha,this.borderAlpha,"100"),borderThickness:(0,s.pluckNumber)(c.showentityborder,c.showborder,1)?(0,s.pluckNumber)(c.entityborderthickness,c.borderthickness,1):0,scaleBorder:(0,s.pluckNumber)(c.scaleentityborder,c.scaleborder,0),hoverFillColor:(0,s.pluck)(c.entityfillhovercolor,c.hoverfillcolor,c.hovercolor,h.plothoverfillcolor),hoverFillAlpha:(0,s.pluck)(c.entityfillhoveralpha,c.hoverfillalpha,c.hoveralpha,h.plothoverfillalpha),hoverFillRatio:(0,s.pluck)(c.entityfillhoverratio,c.hoverfillratio,c.hoverratio,h.plothoverfillratio),hoverFillAngle:(0,s.pluck)(c.entityfillhoverangle,c.hoverfillangle,c.hoverangle,h.plothoverfillangle),hoverBorderThickness:(0,s.pluck)(c.entityborderhoverthickness,c.hoverborderthickness),hoverBorderColor:(0,s.pluck)(c.entityborderhovercolor,p,h.plotbordercolor),hoverBorderAlpha:(0,s.pluck)(c.entityborderhoveralpha,h.plotborderalpha),nullEntityColor:b,nullEntityAlpha:(0,s.pluck)(c.nullentityfillalpha,c.nullentityalpha,f),nullEntityRatio:(0,s.pluck)(c.nullentityfillratio,c.nullentityratio,g),nullEntityAngle:(0,s.pluck)(c.nullentityfillangle,c.nullentityangle,m),connectorColor:(0,s.pluck)(c.labelconnectorcolor,c.connectorcolor,o),connectorAlpha:(0,s.pluck)(c.labelconnectoralpha,c.connectoralpha,"100"),connectorThickness:(0,s.pluckNumber)(c.labelconnectorthickness,c.borderthickness,1),showHoverEffect:(0,s.pluckNumber)(c.showentityhovereffect,c.usehovercolor,c.showhovereffect,1),hoverOnNull:(0,s.pluckNumber)(c.hoveronnull,c.entityhoveronnull,1),labelPadding:(0,s.pluckNumber)(c.labelpadding,5),showLabels:(0,s.pluckNumber)(c.showlabels,1),labelsOnTop:(0,s.pluckNumber)(c.entitylabelsontop,1),includeNameInLabels:(0,s.pluckNumber)(c.includenameinlabels,1),includeValueInLabels:(0,s.pluckNumber)(c.includevalueinlabels,0),useSNameInTooltip:(0,s.pluckNumber)(c.usesnameintooltip,0),useShortName:(0,s.pluckNumber)(c.usesnameinlabels,1),labelSepChar:(0,s.pluck)(c.labelsepchar,", "),showTooltip:(0,s.pluckNumber)(c.showentitytooltip,c.showtooltip,1),tooltipSepChar:(0,s.pluck)(c.tooltipsepchar,", "),tooltext:c.entitytooltext,hideNullEntities:(0,s.pluckNumber)(c.hidenullentities,0),showHiddenEntityBorder:(0,s.pluckNumber)(c.showhiddenentityborder,1),showNullEntityBorder:(0,s.pluckNumber)(c.shownullentityborder,1),hiddenEntityColor:(0,s.pluck)(c.hiddenentitycolor,c.hiddenentityfillcolor,c.hiddenentityalpha||c.hiddenentityfillalpha?b:"ffffff"),hiddenEntityAlpha:(0,s.pluck)(c.hiddenentityalpha,c.hiddenentityfillalpha,.001),shadow:(0,s.pluckNumber)(c.showshadow,this.defaultPlotShadow,h.shadow)},i.markerOpts={dataLabels:{style:{fontFamily:(0,s.pluck)(c.markerfont,r),fontSize:(0,s.pluckNumber)(c.markerfontsize,parseInt(a,10)),fontColor:(0,s.pluck)(c.markerfontcolor,o)}},showTooltip:(0,s.pluckNumber)(c.showmarkertooltip,c.showtooltip,1),showLabels:(0,s.pluckNumber)(c.showmarkerlabels,c.showlabels,1),showHoverEffect:(0,s.pluckNumber)(c.showmarkerhovereffect,1),labelPadding:(0,s.pluck)(c.markerlabelpadding,"5"),labelWrapWidth:(0,s.pluckNumber)(c.markerlabelwrapwidth,0),labelWrapHeight:(0,s.pluckNumber)(c.markerlabelwrapheight,0),fillColor:(0,s.pluck)(c.markerfillcolor,c.markerbgcolor,h.markerfillcolor),fillAlpha:(0,s.pluck)(c.markerfillalpha,h.markerfillalpha),fillAngle:(0,s.pluck)(c.markerfillangle,h.markerfillangle),fillRatio:(0,s.pluck)(c.markerfillratio,h.markerfillratio),fillPattern:(0,s.pluck)(c.markerfillpattern,h.markerbgpattern),hoverFillColor:c.markerfillhovercolor,hoverFillAlpha:c.markerfillhoveralpha,hoverFillRatio:c.markerfillhoverratio,hoverFillAngle:c.markerfillhoverangle,borderThickness:(0,s.pluck)(c.markerborderthickness,1),borderColor:(0,s.pluck)(c.markerbordercolor,h.markerbordercolor),borderAlpha:(0,s.pluckNumber)(c.markerborderalpha,h.markerborderalpha),hoverBorderThickness:c.markerborderhoverthickness,hoverBorderColor:c.markerborderhovercolor,hoverBorderAlpha:c.markerborderhoveralpha,radius:(0,s.pluckNumber)(c.markerradius&&(0,s.trimString)(c.markerradius),7),shapeId:(0,s.pluck)(c.defaultmarkershape,"circle"),labelSepChar:(0,s.pluck)(c.labelsepchar,", "),tooltipSepChar:(0,s.pluck)(c.tooltipsepchar,", "),autoScale:(0,s.pluckNumber)(c.autoscalemarkers,0),tooltext:(0,s.pluck)(d&&d.tooltext,c.markertooltext),dataEnabled:v,valueToRadius:(0,s.pluckNumber)(c.markerradiusfromvalue,1),valueMarkerAlpha:(0,s.pluck)(c.valuemarkeralpha,"75"),hideNull:(0,s.pluckNumber)(c.hidenullmarkers,0),nullRadius:(0,s.pluckNumber)(c.nullmarkerradius,c.markerradius,7),adjustViewPort:(0,s.pluckNumber)(c.adjustviewportformarkers,0),startAngle:(0,s.pluckNumber)(c.markerstartangle,90),maxRadius:(0,s.pluckNumber)(c.maxmarkerradius,0),minRadius:(0,s.pluckNumber)(c.minmarkerradius,0),applyAll:(0,s.pluckNumber)(c.applyallmarkers,0),shadow:(0,s.pluckNumber)(c.showmarkershadow,c.showshadow,0)},i.connectorOpts={showHoverEffect:(0,s.pluckNumber)(c.showconnectorhovereffect,1),thickness:(0,s.pluckNumber)(c.connectorthickness,c.markerconnthickness,"2"),color:(0,s.pluck)(c.connectorcolor,c.markerconncolor,h.markerbordercolor),alpha:(0,s.pluck)(c.connectoralpha,c.markerconnalpha,"100"),hoverThickness:(0,s.pluckNumber)(c.connectorhoverthickness,c.connectorthickness,c.markerconnthickness,"2"),hoverColor:(0,s.pluck)(c.connectorhovercolor,c.connectorcolor,c.markerconncolor,h.markerbordercolor),hoverAlpha:(0,s.pluck)(c.connectorhoveralpha,c.connectoralpha,c.markerconnalpha,"100"),dashed:(0,s.pluckNumber)(c.connectordashed,c.markerconndashed,0),dashLen:(0,s.pluckNumber)(c.connectordashlen,c.markerconndashlen,3),dashGap:(0,s.pluckNumber)(c.connectordashgap,c.markerconndashgap,2),font:(0,s.pluck)(c.connectorfont,c.markerconnfont,r),fontColor:(0,s.pluck)(c.connectorfontcolor,c.markerconnfontcolor,o),fontSize:(0,s.pluckNumber)(c.connectorfontsize,c.markerconnfontsize,parseInt(a,10)),showLabels:(0,s.pluckNumber)(c.showconnectorlabels,c.showmarkerlabels,c.showlabels,1),labelBgColor:(0,s.pluck)(c.connectorlabelbgcolor,c.markerconnlabelbgcolor,h.plotfillcolor),labelBorderColor:(0,s.pluck)(c.connectorlabelbordercolor,c.markerconnlabelbordercolor,h.markerbordercolor),shadow:(0,s.pluckNumber)(c.showconnectorshadow,c.showmarkershadow,c.showshadow,0),showTooltip:(0,s.pluckNumber)(c.showconnectortooltip,c.showmarkertooltip,c.showtooltip,1),tooltext:(0,s.pluck)(d&&d.connectortooltext,c.connectortooltext),hideOpen:(0,s.pluckNumber)(c.hideopenconnectors,1)},i.adjustViewPortForMarkers=(0,s.pluckNumber)(c.adjustviewportformarkers,v)},t.prototype._attachMouseEvents=function(){var e=this.getFromEnv("eventListeners"),o=this.getFromEnv("chart-container");e.push(i["default"].listen(o,s.hasTouch?"touchstart":"click",t.searchMouseMove,this)),e.push(i["default"].listen(window.document,s.hasTouch?"touchstart":"mousemove",t.searchMouseMove,this))},t.prototype._dispose=function(){var o=this.getFromEnv("chart-container");s.hasTouch&&(i["default"].unlisten(o,"touchstart",t.searchMouseMove),i["default"].unlisten(window.document,"touchstart",t.searchMouseMove)),i["default"].unlisten(o,"click",t.searchMouseMove),i["default"].unlisten(window.document,"mousemove",t.searchMouseMove),e.prototype._dispose.call(this)},t.searchMouseMove=function(e){var t,o=e.data,r=o.config,a=o.getDatasets()[1],n=a&&a.getFromEnv("toolTipController"),i=a&&a.config.currentToolTip,l=o.config.lastHoveredPoint,c={};o.getFromEnv("chart-container")&&o.config.lastInteractionEvent!==e.originalEvent&&(o.config.lastInteractionEvent=e.originalEvent,(t=function(e,t){var o=(0,s.getMouseCoordinate)(t.getFromEnv("chart-container"),e),r=o.chartX,a=o.chartY,n=t.config,i=n.canvasLeft,l=n.canvasTop,c=n.canvasLeft+n.canvasWidth,d=n.canvasHeight+n.canvasTop;return o.insideCanvas=!1,o.originalEvent=e,r>i&&r<c&&a>l&&a<d&&(o.insideCanvas=!0),o}(e,o))&&t.insideCanvas?(r.lastMouseEvent=e,c={x:t.chartX,y:t.chartY},o._searchNearestNeighbour(c,e)):(l&&a&&a.hoverOutFn.call(l.element),o.config.lastHoveredPoint=null,n&&n.hide(i)))},t.prototype._searchNearestNeighbour=function(e,t){var o=this.getDatasets()[1],r=void 0;if(o){if(!o.components.kDTree)return;(r=o.getElement(e))?o.highlightPoint(r,t):o.highlightPoint(!1,t)}},t.prototype._createLayers=function(){e.prototype._createLayers.call(this),this._attachMouseEvents()},t.prototype._parseBackgroundCosmetics=function(){var e,t=this.getChildren("background")[0].config,o=this.getChildren("colorPalette")[0],r=this.getFromEnv("chart-attrib");e=t.showBorder=(0,s.pluckNumber)(r.showcanvasborder,1),t.borderWidth=e?(0,s.pluckNumber)(r.canvasborderthickness,1):0,t.borderRadius=t.borderRadius=(0,s.pluckNumber)(r.canvasborderradius,0),t.borderDashStyle=t.borderDashStyle=(0,s.pluckNumber)(r.borderdashed,0)?(0,s.getDashStyle)((0,s.pluckNumber)(r.borderdashlen,4),(0,s.pluckNumber)(r.borderdashgap,2)):"none",t.borderAlpha=(0,s.pluck)(r.canvasborderalpha,o.borderAlpha),t.borderColor=t.borderColor=(0,c.convertColor)((0,s.pluck)(r.canvasbordercolor,o&&o.borderColor),t.borderAlpha)},t.prototype._getBackgroundCosmetics=function(){var e=this.getFromEnv("chart-attrib")||this.jsonData.map,t=this.getChildren("colorPalette")[0];return{FCcolor:{color:(0,s.pluck)(e.bgcolor,e.canvasbgcolor,t.bgcolor),alpha:(0,s.pluck)(e.bgalpha,e.canvasbgalpha,t.bgalpha),angle:(0,s.pluck)(e.bgangle,e.canvasbgangle,t.bgangle),ratio:(0,s.pluck)(e.bgratio,e.canvasbgratio,t.bgratio)}}},t.prototype._parseCanvasCosmetics=function(){e.prototype._parseCanvasCosmetics.call(this);var t=this.config,o=this.getFromEnv("chart-attrib")||this.jsonData.map,r=this.getChildren("canvas")[0].config;t.origMarginTop=(0,s.pluckNumber)(o.maptopmargin,11),t.origMarginLeft=(0,s.pluckNumber)(o.mapleftmargin,11),t.origMarginBottom=(0,s.pluckNumber)(o.mapbottommargin,11),t.origMarginRight=(0,s.pluckNumber)(o.maprightmargin,11),t.origCanvasLeftMargin=(0,s.pluckNumber)(o.canvasleftmargin,0),t.origCanvasRightMargin=(0,s.pluckNumber)(o.canvasrightmargin,0),t.origCanvasTopMargin=(0,s.pluckNumber)(o.canvastopmargin,0),t.origCanvasBottomMargin=(0,s.pluckNumber)(o.canvasbottommargin,0),r.canvasBorderRadius=(0,s.pluckNumber)(o.canvasborderradius,0),r.origCanvasTopPad=(0,s.pluckNumber)(o.canvastoppadding,0),r.origCanvasBottomPad=(0,s.pluckNumber)(o.canvasbottompadding,0),r.origCanvasLeftPad=(0,s.pluckNumber)(o.canvasleftpadding,0),r.origCanvasRightPad=(0,s.pluckNumber)(o.canvasrightpadding,0)},t.prototype.preliminaryScaling=function(){for(var e=this.jsonData,t=e.markers&&e.markers.items||[],o=t&&t.length||0,r=Infinity,a=Infinity,n=-Infinity,i=-Infinity,l=void 0,s=void 0,c=void 0;o--;)c=t[o],l=Number(c.x),s=Number(c.y),r=x(r,l),a=x(a,s),n=L(n,l),i=L(i,s);return{x:r,y:a,x1:n,y1:i}},t.prototype.getScalingParameters=function(e,t,o,r){var a=e/t,n=o/(e*this.config.baseScaleFactor),i=r/(t*this.config.baseScaleFactor),l=0,s=0,c=void 0,d=void 0;return n>i?(l+=(o-r*a)/2,d=200/(t*(c=i))):(s+=(r-o/a)/2,d=200/(e*(c=n))),{scaleFactor:c,strokeWidth:d,translateX:l,translateY:s}},t.prototype.calculateMarkerBounds=function(e,t,o){var r,a=this.config,n=a.markerOpts,i=this.getDatasets(),l=this.getDataLimits(),s=l.dataMin,c=l.dataMax,d=n.hideNull,h=n.nullRadius,p=n.valueToRadius,u=void 0,f=void 0,g=void 0,m=void 0,b=void 0,v=void 0,k=void 0,y=Infinity,C=Infinity,w=-Infinity,F=-Infinity,E=void 0,A=void 0,N=void 0,S=void 0;for(v=0,r=i.length;v<r;v++)"markers"===(k=i[v]).getName()&&(u=k);if(u)for(v in u.calculateMarkerRadiusLimits(),g=(f=u.config||{}).minRadius,m=f.maxRadius,b=u.components&&u.components.markerObjs||{})S=(a=b[v].config).definition||{},null!==a.cleanValue?(p&&void 0===S.radius&&(a.radius=g+(m-g)*(a.cleanValue-s)/(c-s)),N=Number(a.radius),E=(Number(S.x)+t)*e,A=(Number(S.y)+o)*e,y=x(y,E-N),C=x(C,A-N),w=L(w,E+N),F=L(F,A+N)):d?a.__hideMarker=!0:null===a.radius&&(a.radius=h);return{x:y,y:C,x1:w,y1:F}},t.prototype._spaceManager=function(){var e,t,o=this.config,r=this.getChildren("legend")&&this.getChildren("legend")[0],a=r&&r.config.legendPos,n=this.getFromEnv("chart-attrib"),i=o.showBorder,l=o.origMarginLeft,c=o.origMarginTop,d=this.config.baseWidth,h=this.config.baseHeight,p=void 0,u=void 0,f=void 0,g=void 0,m={},b=0,v=0,k=void 0,y=void 0,C=void 0,w=o.markerOpts,F=o.borderWidth=i?(0,s.pluckNumber)(n.borderthickness,1):0;this._allocateSpace({top:F,bottom:F,left:F,right:F}),this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*o.availableHeight)||{}),C="right"===a?.3*o.canvasWidth:.3*o.canvasHeight,o.showLegend&&this._manageLegendSpace(C),e="bottom"===a?.225*o.canvasHeight:.225*o.canvasWidth,t=this._manageChartMenuBar(e),u=o.canvasWidth,f=o.canvasHeight,w.dataEnabled?(o.adjustViewPortForMarkers?((m=this.preliminaryScaling()).x1>d&&(d=m.x1),m.x<0&&(d+=-m.x,b=-m.x),m.y1>h&&(h=m.y1),m.y<0&&(h+=-m.y,v=-m.y),p=this.getScalingParameters(d,h,u,f),k=f,y=u,(m=this.calculateMarkerBounds(p.scaleFactor*this.config.baseScaleFactor,b,v)).x<0&&(l+=-m.x,u+=m.x),m.y<0&&(c+=-m.y,f+=m.y),m.x1>y&&(u-=m.x1-y),m.y1>k&&(f-=m.y1-k)):(p=this.getScalingParameters(d,h,u,f),this.calculateMarkerBounds(p.scaleFactor*this.config.baseScaleFactor,b,v)),l+=b*(p=this.getScalingParameters(d,h,u,f)).scaleFactor*this.config.baseScaleFactor,c+=v*p.scaleFactor*this.config.baseScaleFactor):p=this.getScalingParameters(d,h,u,f),this.config.scalingParams=p,g=p.scaleFactor,p.translateX=p.translateX+l,p.translateY=p.translateY+c+t.top||0,p.sFactor=g*this.config.baseScaleFactor*100/100,p.transformStr=["t",p.translateX,",",p.translateY,"s",g,",",g,",0,0"].join(""),this.config.annotationConfig={id:"Geo",showbelow:0,autoscale:0,grpxshift:p.translateX?p.translateX:0,grpyshift:p.translateY?p.translateY:0,xscale:100*(g?g*this.config.baseScaleFactor:1),yscale:100*(g?g*this.config.baseScaleFactor:1),scaletext:1,options:{useTracker:!0}},this.getChildren("mapAnnotations")[0].clear(),this.getChildren("mapAnnotations")[0].configureAttributes()},t.prototype.getDataLimits=function(){var e=this.getDatasets(),t=e.length,o=+Infinity,r=-Infinity,a=void 0,n=void 0;for(n=0;n<t;n++)a=e[n].getDataLimits(),o=x(o,a.min),r=L(r,a.max);return{dataMin:o,dataMax:r}},t.prototype.getEntityPaths=function(e){var t={},o=this.config.entities,r=void 0;if(e){for(r in o)t[r]=o[r];return t}return o},t.prototype.checkComplete=function(){this.config.entityFlag&&this.config.entitiesReady&&(this.config.entityFlag=!1,this.config.markersDrawn=!0,this.fireChartInstanceEvent("internal.mapdrawingcomplete",{renderer:this}))},t}(r["default"]);t["default"]=S},717:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o=e.getFromEnv("dataSource"),l=o.data||{},s=o.markers;(0,r.componentFactory)(e,i["default"],"mapGroup"),t=e.getChildren("mapGroup")[0],(0,r.datasetFactory)(t,a["default"],"entities",1,[l]),s?(0,r.datasetFactory)(t,n["default"],"markers",1,[s]):e.getDatasets()[1]&&e.getDatasets()[1].remove()};var r=o(118),a=l(o(718)),n=l(o(720)),i=l(o(721));function l(e){return e&&e.__esModule?e:{"default":e}}},718:function(e,t,o){"use strict";t.__esModule=!0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=p(o(131)),n=p(o(184)),i=o(125),l=p(o(719)),s=o(118),c=o(122),d=o(129),h=p(o(377));function p(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),r=0;r<o.length;r++){var a=o[r],n=Object.getOwnPropertyDescriptor(t,a);n&&n.configurable&&e[a]===undefined&&Object.defineProperty(e,a,n)}}(e,t))}var f=(0,i.getDep)("redraphael","plugin"),g=void 0,m=window.navigator.userAgent,b=/msie/i.test(m)&&!window.opera,v=window.Math,k=v.min,y=v.max,C=/stroke/gi,w=/AppleWebKit/.test(m),F=v.ceil,E=function(e,t){var o=t?(0,s.extend2)(e.FCcolor,t,!1,!0):{FCcolor:e};return o.toString=s.toRaphaelColor,o},A=function(e,t){var o=void 0,a={};if(t=t||1,!e||"object"!==(void 0===e?"undefined":r(e)))return a;for(o in e)C.test(o)||("stroke-width"===o?(a[o]=Number(e[o])/t,w&&(a[o]=a[o]&&F(a[o])||0)):a[o]=e[o]);return a},x={right:function(){return arguments[1]},left:function(e,t){return e-t},center:function(e,t){return 2*k(t,e-t)}},L={top:function(){return arguments[1]},middle:function(e,t){return 2*k(t,e-t)},bottom:function(e,t){return e-t}};(0,i.addDep)({name:"mapsAnimation",type:"animationRule",extension:l["default"]}),(0,h["default"])(f);var N=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.components={},o}return u(t,e),t.prototype.getName=function(){return"entities"},t.prototype.getType=function(){return"dataset"},t.prototype.configureAttributes=function(e){if(e){this.JSONData={data:e};var o,r=this,a=r.getFromEnv("chart").jsonData,n=r.config,i=a.map||a.chart,l=void 0,c=void 0,d=void 0,h=void 0,p=[],u=void 0,f=void 0,m=void 0,b=r.getFromEnv("colorManager"),v=a.entitydef||[];for(h in!n.attachEvent&&b&&(r.addExtEventListener("legendUpdate",function(){if("legend"===(m=arguments[1]).component)r.legendInteractivity(m.legendItem,m.colorObj);else for(p=m.maxMinArray,u=p.length,f=0;f<u;f++)r.updateEntityColors(p[f].min,p[f].max)},b),n.attachEvent=!0),l=a.data&&a.data[0]&&a.data[0].data?r.JSONData=a.data[0].data||[]:r.JSONData=a.data||[],n.useSNameAsId=(0,s.pluckNumber)(i.usesnameasid,0),this._redefineEntities(v),o=r.components.data,n.showTooltip=(0,s.pluckNumber)(i.showtooltip,1),n.showHoverEffect=(0,s.pluckNumber)(i.showhovereffect,0),l=function(e){for(var t=e&&e.length||0,o={},r=void 0;t--;)(r=e[t]).id!==g&&(o[r.id.toLowerCase()]=r);return o}(l),r.calculateDataLimits(),!a.colorrange&&r.detachChild(r.getChildren("colorRange")&&r.getChildren("colorRange")[0].getId()),o)c=l[h],d=o[h],c?this._configureEntity(h,d,(0,s.imprint)(t._sanitizeEntityOptions((0,s.extend2)({},c)),d.config)):this._configureEntity(h,d,d.config)}},t.prototype.updateEntityColors=function(e,o){var r=this.components.data,a=this.getFromEnv("chart"),n=void 0,i=void 0,l=void 0,s=void 0,c=void 0,d={"fill-opacity":0};for(s in r)l=(i=(n=r[s]).config).cleanValue,c={"fill-opacity":(i.alphaArr||[])[0]/100||1},l<e||l>o?(t.setCustomAttrs(n,d,a),n.hidden=!0):(n.hidden=!1,t.setCustomAttrs(n,c,a))},t.prototype.legendInteractivity=function(e,o){var r=this.getFromEnv("chart"),a=this.components.data,n=void 0,i=void 0,l=e.config,s=e.hasState("hidden"),c=void 0,d=this.getFromEnv("colorManager"),h=void 0,p={},u=void 0,f={"fill-opacity":0},g=void 0;for(n in r.getFromEnv("animationManager").setAnimationState("legendInteraction"),a)a.hasOwnProperty(n)&&(c=(l=(i=a[n]).config).cleanValue,g=d.getColorObj(c),h=l.visibleEntityAttr,p["fill-opacity"]=h["fill-opacity"],u=s?p:f,o.code===(!g.outOfRange&&g.code)&&(i.hidden=!s,t.setCustomAttrs(i,u,r),s?e&&e.removeLegendState("hidden"):e.setLegendState("hidden")))},t.setCustomAttrs=function(e,t){e&&e.graphics.outlines.attr(t)},t.prototype.calculateDataLimits=function(){var e,t=this.getFromEnv("chart"),o=this.config,r=t.jsonData.data||[],a=this.getFromEnv("number-formatter"),n=void 0,i=void 0,l=+Infinity,s=-Infinity,c=void 0;for(c=0,e=r.length;c<e;c++)i=r[c].value,n=a.getCleanValue(i),l=k(l,n),s=y(s,n);o.max=s,o.min=l},t.prototype._configureEntity=function(e,t,o){var a,n,i,l,d,h=this.getFromEnv("chart"),p=this.config,u=this.getFromEnv("number-formatter"),f=h.config.entityOpts,m=t.config,b=t.labelConfig,v=o.value,k=m.cleanValue=u.getCleanValue(v),y=m.formattedValue=k!==g?u.dataLabels(k):g,C=(0,s.pluckNumber)(o.showtooltip,f.showTooltip),w=this._getDefaultTooltip(t,o,this),F={formattedValue:y,sName:o.shortLabel,lName:o.label},A=f.dataLabels.style,x=m.toolText=C?(0,s.parseUnsafeString)((0,s.pluck)((0,s.parseTooltext)((0,s.pluck)(o.tooltext,f.tooltext,w),[1,2,7,38,39],F,o))):"",L=m.borderColor=(0,s.pluck)(o.bordercolor,f.borderColor),N=m.borderAlpha=(0,s.pluck)(o.borderalpha,f.borderAlpha),S=m.borderThickness=(0,s.pluckNumber)(o.borderthickness,f.borderThickness),O=f.hoverOnNull,_=m.useHoverColor=(0,s.pluckNumber)(o.showhovereffect,o.usehovercolor,O?f.showHoverEffect:isNaN(v)?0:f.showHoverEffect),T=m.labelAlignment,M=this.getFromEnv("colorManager"),I=void 0,j=void 0,D=void 0,P=void 0,B=void 0,R=void 0,V=void 0,H=void 0,G=void 0,W=void 0,z=void 0,X=void 0,Y=void 0,K=void 0,J=void 0,U=void 0,Z=void 0;if(t.hidden=!1,m.showLabel=(0,s.pluckNumber)(o.showlabel,f.showLabels),m.labelPadding=(0,s.pluckNumber)(o.labelpadding,f.labelPadding),m.fontFamily=(0,s.pluck)(o.font,A.fontFamily),m.fontSize=(0,s.pluckNumber)(parseInt(o.fontsize,10),parseInt(A.fontSize,10)),m.fontBold=(0,s.pluckNumber)(o.fontbold,0),m.fontColor=(0,s.pluck)(o.fontcolor,A.color),m.connectorColor=(0,s.pluck)(o.labelconnectorcolor,f.connectorColor),m.connectorAlpha=(0,s.pluck)(o.labelconnectoralpha,f.connectorAlpha),m.hoverBorderThickness=(0,s.pluckNumber)(o.borderhoverthickness,o.hoverborderthickness,f.hoverBorderThickness),m.hoverBorderColor=(0,s.pluck)(o.borderhovercolor,o.hoverbordercolor,f.hoverBorderColor,m.borderColor),m.hoverBorderAlpha=(0,s.pluck)(o.borderhoveralpha,o.hoverborderalpha,f.hoverBorderAlpha,m.borderAlpha),m.connectorThickness=(0,s.pluckNumber)(o.labelconnectorthickness,f.connectorThickness),m.origConnectorThickness=m.connectorThickness,m.borderThickness=S,m.link=o.link,m.isVisible=!0,m.id=e,m.originalId=o.origId,null!==k&&(I=M&&M.getColor(k))&&!I.outOfRange&&(X=I.code,I.oriAlpha!==g&&(Y=I.oriAlpha+"")),(0,s.pluck)(o.color,o.alpha,o.angle,o.ratio)!==g?(P=(0,s.pluck)(o.color,X,f.fillColor),B=(0,s.pluck)(o.alpha,Y,f.fillAlpha),R=(0,s.pluck)(o.angle,f.fillAngle),V=(0,s.pluck)(o.ratio,f.fillRatio),H=E({color:P,alpha:B,angle:R,ratio:V})):(W=E({color:(0,s.pluck)(X,f.fillColor),alpha:(0,s.pluck)(Y,f.fillAlpha),angle:(0,s.pluck)(f.fillAngle),ratio:(0,s.pluck)(f.fillRatio)}),G=E({color:(0,s.pluck)(f.nullEntityColor),alpha:(0,s.pluck)(f.nullEntityAlpha),angle:(0,s.pluck)(f.nullEntityAngle),ratio:(0,s.pluck)(f.nullEntityRatio)}),P=(H=null===k?G:W).FCcolor.color,B=H.FCcolor.alpha,R=H.FCcolor.angle,V=H.FCcolor.ratio),""===x&&(p.showTooltip=0),m.visibleEntityAttr={stroke:(0,c.convertColor)(L,N),fill:(m.fillColor=H).toString(),"fill-opacity":B/100},d=B.split(","),m.alphaArr=d,_&&((0,s.pluck)(o.fillhovercolor,o.fillhoveralpha,o.fillhoverangle,o.fillhoverratio,o.hoverfillcolor,o.hoverfillalpha,o.hoverfillratio,o.hoverfillangle)!==g?(P=(0,s.pluck)(o.fillhovercolor,o.hoverfillcolor,f.hoverFillColor),B=(0,s.pluck)(o.fillhoveralpha,o.hoverfillalpha,f.hoverFillAlpha),R=(0,s.pluck)(o.fillhoverangle,o.hoverfillangle,f.hoverFillAngle),V=(0,s.pluck)(o.fillhoverratio,o.hoverfillratio,f.hoverFillRatio),z=E({color:P,alpha:B,angle:R,ratio:V})):(f.hoverColorObject||(f.hoverColorObject=E({color:f.hoverFillColor,alpha:f.hoverFillAlpha,angle:f.hoverFillAngle,ratio:f.hoverFillRatio})),z=f.hoverColorObject),m.hoverColor=z),!b&&(b=t.labelConfig={}),n=m.fontColor,i=m.fontFamily,l=m.fontBold,x=m.toolText,a=m.link,T?(j=T[0],D=T[1]):(j="center",D="middle"),b.align=j,b.vAlign=D,b.bgColor="",b.borderColor="",b.fontColor=n,b.fontFamily=i,b.fontBold=l,b.toolText=x,b.link=a,"object"===r(m.options))for(K=m.entityLabels=m.entityLabels||[],Z=(U=m.labels||[]).length;Z--;)K[Z]||(K[Z]={config:{}}),b=K[Z].config,(T=U[Z].labelAlignment)?(j=T[0],D=T[1]):(j="center",D="middle"),b.align=j,b.vAlign=D,b.displayValue=this.getDisplayValue(t,U[Z],m.options.isDataEnabled,!Z,o),b.bgColor="",b.borderColor="",b.toolText=x,b.align=j,b.vAlign=D,b.bgColor="",b.borderColor="",b.fontColor=n,b.fontFamily=i,b.fontBold=l,b.toolText=x;else J={shortText:m.shortLabel,text:m.label},b.displayValue=this.getDisplayValue(t,J,!0,!0,o)},t.prototype.getDisplayValue=function(e,t,o,r,a){var n=this.getFromEnv("chart").config.entityOpts,i=e.config,l=i.cleanValue,c=i.formattedValue,d=n.labelSepChar,h=void 0;return o?r&&"undefined"!=typeof a.displayvalue?h=a.displayvalue:(h=(0,s.pluck)(n.includeNameInLabels?n.useShortName?t.shortText:t.text:""),n.includeValueInLabels&&null!==l&&(h=h===g?c:h+d+c)):h=i.label,h},t._sanitizeEntityOptions=function(e){return delete e.outlines,delete e.label,delete e.shortlabel,delete e.labelposition,delete e.labelalignment,delete e.labelconnectors,e},t.prototype._redefineEntities=function(e){var t=this.config,o={},r={},a=this.getFromEnv("chart").config.entities,n=t.useSNameAsId,i=void 0,l=void 0,c=void 0,d=void 0,h=void 0,p=void 0,u=void 0,f=void 0,g=0,m=void 0,b=void 0,v=void 0,k=void 0;for(i=e.length;i--;)if(c=(l=e[i]).internalid,d=l.newid?l.newid:c,h=l.sname,p=l.lname,k=a[c],c=(0,s.trimString)(c),d=(d=(0,s.trimString)(d))&&d.toLowerCase(),k){for(v in o[d]=f={origId:c},r[c]=!0,k)f[v]=k[v];f.shortLabel=h||k.shortLabel,f.label=p||k.label,f.showhovereffect=l.showhovereffect,f.fillhovercolor=l.fillhovercolor,f.fillhoveralpha=l.fillhoveralpha,f.fillhoverangle=l.fillhoverangle,f.fillhoverratio=l.fillhoverratio,f.borderhoverthickness=l.borderhoverthickness}for(u in(b=this.components.data)||(b=this.components.data={}),o)b[u=u.toLowerCase()]||(b[u]={config:{}}),b[u].config=o[u],g+=1;for(u in m=b,a)if(f=a[u],!r[u=(0,s.trimString)(u)]){for(v in n?((k=m[f.shortLabel.toLowerCase()])||(k=m[f.shortLabel.toLowerCase()]={}),k.config={},k.origId=f.shortLabel):((k=m[u.toLowerCase()])||(k=m[u.toLowerCase()]={}),k.config={},k.config.origId=u),f)k.config[v]=f[v];g+=1}t.entityCount=g},t.prototype.draw=function(){var e=this.config,t=this.getFromEnv("chart"),o=s.hasSVG?200:10;this.config.ready=!1,e.BATCH_SIZE=o,e.labelBatchSize=s.hasSVG?200:20,this._batchRender()(0),t.config.entityFlag=!0,t.checkComplete()},t.prototype._batchRender=function(){var e=this,t=e.config,o=e.getFromEnv("chart").config.entities.firstEntity,r=e.components.data,a=t.BATCH_SIZE,n=t.entityKeys=o?e._getKeys(o,r):Object.keys(r),i=t.entityLength=n.length,l=void 0,s=void 0,c=void 0,h=void 0,p=void 0;return function u(t){for(l=t,c=0;n[l]!==g;)if(s=r[n[l]],p=e.drawEntity(s,a),c+=p,s.config.drawn&&((h=l===i-1?s:r[n[l-1]])&&(h.config.drawn=!1,h.config.outlineStartIndex=g),l++),c>=a){e.addJob("entityDraw",u.bind(this,l),d.priorityList.entitydraw);break}l===i&&(e._addEventListenersToEntities(0),e.initComplete())}},t.prototype._addEventListenersToEntities=function(e){var t=this.components.data,o=this.config,r=o.BATCH_SIZE,a=o.entityKeys,n=void 0,i=o.entityLength,l=void 0,s=0,c=void 0;for(n=e;n<i;n++)if((c=(l=t[a[n]]).config.options)&&!1===c.isDataEnabled||this.addMouseGestures(l),++s===r){this.addJob("_addEventListenersToEntities",this._addEventListenersToEntities.bind(this,n),d.priorityList.entitydraw);break}},t._getKeys=function(e,t){for(var o=[e],r=e;t[r];)r=t[r].nextId,o.push(r);return o},t.prototype._getDefaultTooltip=function(e,t){var o=e.config.cleanValue,a=e.config.formattedValue,n=this.getFromEnv("chart").config.entityOpts,i=void 0,l=void 0;if("object"===r(e.config.options)){if(!(l=t.labels&&t.labels[0]))return g;i=(n.useSNameInTooltip?l.shortText:l.text)+(null===o?"":n.tooltipSepChar+a)}else i=(n.useSNameInTooltip?t.shortLabel:t.label)+(null===o?"":n.tooltipSepChar+a);return i},t.prototype.drawEntity=function(e,t){var o,a,n=this.getFromEnv("chart"),i=n.getFromEnv("animationManager"),l=e.config,c=s.hasSVG||!b?"litepath":"path",d=n.config.entityOpts,h=l.outlines,p=this.getFromEnv("toolTipController"),u=this.getLinkedParent().getChildContainer("plot"),f=this.getLinkedParent().getChildContainer("plotShadow"),m=l.toolText,v=d.shadow,k=void 0,y=[],C=void 0,w=void 0,F=void 0,E=void 0,x=void 0,L={};if(this._configureEntityDrawingParams(e),C=(l=e.config).visibleEntityAttr,a=l.shadowOptions,k=l.outlineStartIndex===g?h.length:l.outlineStartIndex,e.graphics||(e.graphics={}),x=0,y=l.outlinePath||(l.outlinePath=[]),o=l.customStrokeWidthModifier,"object"===r(l.options)){for(;k--;)if(y=h[k].outline,w=!0===l.options.isDataEnabled?C:(0,s.extend2)((0,s.extend2)({},C),A(h[k].style,o)),(F=e.graphics.outlines)||(F=e.graphics.outlines=[]),!F[k]&&(F[k]={}),E=F[k].outline,w[c]=y,(E=F[k].outline=i.setAnimation({el:c,container:u,attr:w,component:this,label:"path"})).shadow(!!v&&a,f),p.enableToolTip(E,m),x++,l.outlineStartIndex=k,x===t)return x;return l.drawn=!0,x}for(;k--;)if(y=h[k].concat(y),x++,l.outlineStartIndex=k,x===t)return l.outlinePath=y,x;return!e.graphics.outlines&&(C[c]=y),Object.assign(L,C,e.hidden&&{"fill-opacity":0}||{}),e.graphics.outlines=i.setAnimation({el:e.graphics.outlines||c,container:u,attr:L,component:this,label:"path"}),l.drawn=!0,l.outlineStartIndex=0,l.outlinePath=[],e.graphics.outlines.shadow(!!v&&a,f),p.enableToolTip(e.graphics.outlines,m),x},t.prototype._configureEntityDrawingParams=function(e){var t=this.getFromEnv("chart"),o=e.config,r=t.config.entityOpts,a=t.config.scalingParams,n=!b||s.hasSVG,i=a.scaleFactor,l=a.strokeWidth,c=(n?t.baseScaleFactor:1)*l,d=1===r.scaleBorder,h=o.borderThickness,p=o.alphaArr,u=o.origConnectorThickness,f=o.hoverBorderThickness,g=o.visibleEntityAttr,m=g["fill-opacity"],k=void 0;o.shadowOptions={scalefactor:[i,i*t.config.baseScaleFactor],opacity:y.apply(v,p)/100,useFilter:0},o.fillOpacity=e.hidden?0:m,n?(h=o.entityBorderThickness=d?h*c:h/i,u/=i,k=d?i:a.sFactor,f&&(f=o.hoverBorderThickness=d?f*c:f/i)):(h=d?h*l:h,k=d?a.scaleFactor:t.baseScaleFactor),o.entityBorderThickness=h,o.connectorThickness=u,o.customStrokeWidthModifier=k,g["stroke-width"]=h,g.transform=s.hasSVG||!b?"":a.transformStr},t.prototype.drawLabels=function(e){var t=e,o=this.getFromEnv("chart"),r=this.config,a=r.labelBatchSize,i=r.entityLength,l=[],s=void 0,c=void 0,d=o.getChildContainer("upperAnnotationGroup"),h=void 0,p=void 0,u=0,f=this.getChildren("mapLabelAnnotations")&&this.getChildren("mapLabelAnnotations")[u],g=0,m=0,b=o.getFromEnv("toolTipController"),v=o.config.annotationConfig;for(s in f||(p=new n["default"],this.attachChild(p,"mapLabelAnnotations"),(f=this.getChildren("mapLabelAnnotations")[u]).addCustomGroup(d)),f.clear(),f._renderer&&(f._renderer=null),v.showbelow=0,t){if(this.drawLabel(t[s],l),++g===a){for(f.annotation.injectDependency("paper",o.getFromEnv("paper")),f.annotation.injectDependency("toolTipController",b),c=0;c<l.length;c++)l[c].animationLabel="entityLabel";for(h=f.addGroup(Object.assign(v,{id:"entityLabels"+u,items:l,animationLabel:"entityLabelGroup"}),this),o.config.labelsOnTop&&h.store.element.toFront(),c=0;c<h.items.length;c++)h.items[c].addEventListener("fc-mouseover",l[c].onmouseover),h.items[c].addEventListener("fc-mouseout",l[c].onmouseout),h.items[c].addEventListener("fc-click",l[c].onclick);u++,(f=this.getChildren("mapLabelAnnotations")&&this.getChildren("mapLabelAnnotations")[u])||(p=new n["default"],this.attachChild(p,"mapLabelAnnotations"),(f=this.getChildren("mapLabelAnnotations")[u]).addCustomGroup(d)),f.clear(),f._renderer&&(f._renderer=null),g=0,l=[]}else if(m===i-1){for(f.annotation.injectDependency("paper",o.getFromEnv("paper")),f.annotation.injectDependency("toolTipController",b),c=0;c<l.length;c++)l[c].animationLabel="entityLabel";for(h=f.addGroup(Object.assign(v,{id:"entityLabels"+u,items:l,animationLabel:"entityLabelGroup"}),this),o.config.labelsOnTop&&h.store.element.toFront(),c=0;c<h.items.length;c++)h.items[c].addEventListener("fc-mouseover",l[c].onmouseover),h.items[c].addEventListener("fc-mouseout",l[c].onmouseout),h.items[c].addEventListener("fc-click",l[c].onclick)}m++}this.drawLabelConnFn(0)},t.prototype.drawLabelConnFn=function(e){var t=this.config,o=this.components.data,a=t.BATCH_SIZE,n=t.entityKeys,i=void 0,l=void 0,s=n.length,c=void 0,h=void 0,p=void 0,u=0;for(l=e;l<s;l++){if(h=(p=o[n[l]]).config,"object"===r(h.options))for(i=(c=h.labels)&&c.length||0;i--;)c[i].labelConnectors&&(this.drawLabelConnectors(p,c[i].labelConnectors,this),u++);else h.labelConnectors&&(this.drawLabelConnectors(p,h.labelConnectors,this),u++);if(u===a){this.addJob("drawLabelConnectors",this.drawLabelConnFn.bind(this,l),d.priorityList.entitydraw);break}}},t.prototype._getLabelObject=function(e,t,o){var r=this,a=r.getFromEnv("chart"),n=e.config,i=void 0,l=a.config.scalingParams,s=void 0,c=void 0,d=e.graphics&&e.graphics.outlines,h=void 0,p=n.fontSize,u=n.labelPadding,f=n.labels||[],m=n.entityLabels||[],b=void 0,v=void 0,k=void 0,y=void 0,C=void 0,w=void 0,F=void 0;return t!==g?(F=f[t],h=(i=m[t].config).style=F.style,s=F.labelPosition,c=F.labelAlignment):(i=e.labelConfig,s=n.labelPosition,c=n.labelAlignment),s?(b=s[0],v=s[1]):(b=(k=d.getBBox()).x+k.width/2,v=k.y+k.height/2),c?(y=c[0],C=c[1],"right"===y?b-=u:"left"===y&&(b+=u),"top"===C?v-=u:"bottom"===C&&(v+=u)):(y="center",C="middle"),w=parseFloat(p)/l.sFactor,!o&&h&&(h.color&&(i.fontColor=h.color),h["font-size"]&&(w=parseFloat(h["font-size"])/l.sFactor),h["font-family"]&&(i.fontFamily=h["font-family"]),h["font-weight"]!==g&&(i.fontBold="bold"===h["font-weight"])),i.x=b.toString(),i.y=v.toString(),i.wrap=1,i.type="text",i.fontSize=w,{x:b.toString(),y:v.toString(),wrapwidth:x[y](void 0,b+void 0)-u,wrapheight:L[C](void 0,v+void 0)-u,wrap:1,type:"text",align:i.align,valign:i.vAlign,text:i.displayValue,tooltext:i.toolText,css:i.link!==g&&{cursor:"pointer",_cursor:"hand"},bgcolor:i.bgColor,bordercolor:i.borderColor,fillcolor:i.fontColor,fontsize:i.fontSize,font:i.fontFamily,bold:i.fontBold,onclick:function(t){var o=e.graphics.outlines,a=void 0,n=void 0;if(o instanceof Array)for(a=0,n=o.length;a<n;a++)r.entityClick(o[a].outline,t);else r.entityClick(o,t)},onmouseover:function(t){var o=e.graphics.outlines,a=void 0,n=void 0;if(o instanceof Array)for(a=0,n=o.length;a<n;a++)r.entityRollOver(o[a].outline,t);else r.entityRollOver(o,t)},onmouseout:function(t){var o=e.graphics.outlines,a=void 0,n=void 0;if(o instanceof Array)for(a=0,n=o.length;a<n;a++)r.entityRollOut(o[a].outline,t);else r.entityRollOut(o,t)},ontouchstart:function(t){var o=e.graphics.outlines,a=void 0,n=void 0;if(o instanceof Array)for(a=0,n=o.length;a<n;a++)r.entityRollOver(o[a].outline,t);else r.entityRollOver(o,t);r.entityRollOver(o,t)}}},t.prototype.drawLabel=function(e,t){var o=e.config,a=void 0,n=void 0,i=void 0;if(o.showLabel)if("object"===r(o.options))for(n=(i=o.labels)&&i.length||0,a=o.options.isDataEnabled;n--;)t.push(this._getLabelObject(e,n,a,!n));else t.push(this._getLabelObject(e,g,!0,!0))},t.prototype.drawLabelConnectors=function(e,t,o){for(var r=e.config,a=this.getFromEnv("chart"),n=a.getFromEnv("animationManager"),i=a.config.scalingParams,l=o.getLinkedParent().getChildContainer("plot"),d=t&&t.length||0,h=void 0,p=void 0,u=r.showLabel;d--;)p=t[d],h=e.graphics.connectorElem,u?e.graphics.connectorElem=h=n.setAnimation({el:e.graphics.connectorElem||"path",attr:{path:p,opacity:1,transform:s.hasSVG||!b?"":i.transformStr,stroke:(0,c.convertColor)(r.connectorColor,r.connectorAlpha),"shape-rendering":"crisp","stroke-width":r.connectorThickness},container:l,component:this,label:"labelConnectors"}):h&&h.hide()},t.prototype.entityClick=function(e,t){var o=e.node.__entity,r=this.getFromEnv("chart"),a=r.config.scalingParams,n=o.graphics.outlines.getBBox(),i=r.getFromEnv("linkClickFN"),l=o.config,s=l.link;n.width=n.width*a.scaleFactor,n.height=n.height*a.scaleFactor,n.x=n.x*a.scaleFactor+a.translateX,n.y=n.y*a.scaleFactor+a.translateY,n.x2=n.x+n.width,n.y2=n.y+n.height,r.fireChartInstanceEvent("entityclick",l.eventArgs,t),s!==g&&i.call({link:s,entity:o,entityBox:n},!0)},t.prototype.entityRollOver=function(e,t){var o=e.node.__entity,r=o.config,a=this.getFromEnv("chart"),n=a.getFromEnv("animationManager"),i=r.hoverAttr;a.plotEventHandler(e,t,"entityRollOver"),e.data("hovered")?clearTimeout(o.config.timer):r.useHoverColor&&r.isVisible&&!o.hidden&&i&&(a.config.hoverEntity=e,n.setAnimation({el:e,attr:i,component:this,state:"updating",label:"path"}),e.data("hovered",!0))},t.prototype.entityRollOut=function(e,t){var o=e.node.__entity,r=this,a=r.getFromEnv("chart"),n=a.getFromEnv("animationManager"),i=o.config.revertAttr;a.plotEventHandler(e,t,"entityRollOut"),o.config.timer=setTimeout(function(){!0!==o.hidden&&i&&(n.setAnimation({el:e,attr:i,component:r,state:"updating",label:"path"}),e.data("hovered",!1))},100)},t.prototype.addMouseGestures=function(e){var t=e.config,o=t.originalId,r=this,a=e.graphics,n=t.useHoverColor,i=t.hoverBorderThickness,l=t.hoverBorderColor,d=t.hoverBorderAlpha,h=t.entityBorderThickness,p=t.borderColor,u=t.borderAlpha,f=t.link,m=t.visibleEntityAttr,b="groupId"+o,v=void 0,k=void 0,y=void 0,C=void 0,w=function(o){f!==g&&o.css({cursor:"pointer",_cursor:"hand"}),o.data("eventArgs",t.eventArgs),o.data("groupId",b),o.node.__entity=e,e._listenersBinded||o.on("fc-click",r.entityClick.bind(r,o)).hover(r.entityRollOver.bind(r,o),r.entityRollOut.bind(r,o))};for(v in t.eventArgs={value:t.cleanValue,label:t.label,shortLabel:t.shortLabel,originalId:t.origId,id:t.id||t.origId},t.legacyEventArgs={value:t.value,lName:t.label,sName:t.shortLabel,id:t.originalId||t.id},n&&(t.hoverAttr={fill:(0,s.toRaphaelColor)(t.hoverColor)},t.revertAttr={fill:(0,s.toRaphaelColor)(t.fillColor),stroke:(0,s.toRaphaelColor)(t.borderColor,t.borderAlpha)},t.revertAttr["fill-opacity"]=m["fill-opacity"],i!==h&&(t.hoverAttr["stroke-width"]=(0,s.pluckNumber)(i,h),t.revertAttr["stroke-width"]=h),l===p&&d===u||(t.hoverAttr.stroke=(0,c.convertColor)(l,d),t.revertAttr.stroke=(0,c.convertColor)(p,u))),a)if(a.hasOwnProperty(v))if(a[v]instanceof Array){for(k=0,y=(C=a[v]).length;k<y;k++)w(C[k].outline);e._listenersBinded=!0}else w(a[v]),e._listenersBinded=!0},t.prototype.getDataLimits=function(){var e=this.config;return{max:e.max,min:e.min}},t.prototype.initComplete=function(){var e=this.getFromEnv("chart"),t=this.components.data;this.drawLabels(t),e.config.entitiesReady=!0,e.checkComplete()},t}(a["default"]);t["default"]=N},719:function(e,t,o){"use strict";t.__esModule=!0;var r=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.entities":function(){return{"path.appearing":function(){return r[0].slot="plot",r},"path.updating":function(e){return[{finalAttr:function(){return e.finalAttr}}]},"labelConnectors.appearing":function(){return r[0].slot="final",r},"labelConnectors.updating":null,"entityLabel.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"*":null}},"initial.dataset.markers":function(){return{markers:null,"markerItem.appearing":function(){return r[0].slot="final",r},"markerItem.updating":function(e){return[{finalAttr:function(){return e.finalAttr}}]}}},"initial.group.mapGroup":function(){return{"group.appearing":function(e){return[{initialAttr:function(){return Object.assign({opacity:0},e.attr)},finalAttr:function(){return e.attr},slot:"plot"}]},"group.updating":function(e){return[{initialAttr:function(){return Object.assign({opacity:0},e.attr)},finalAttr:function(){return e.attr},slot:"plot"}]},"*":null}}}},720:function(e,t,o){"use strict";t.__esModule=!0;var r=h(o(718)),a=h(o(419)),n=o(125),i=h(o(719)),l=o(118),s=o(122),c=o(124),d=o(129);function h(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),r=0;r<o.length;r++){var a=o[r],n=Object.getOwnPropertyDescriptor(t,a);n&&n.configurable&&e[a]===undefined&&Object.defineProperty(e,a,n)}}(e,t))}var u=void 0,f="top",g="bottom",m="right",b="left",v="middle",k="center",y=window.Math,C=y.min,w=y.max,F=function(){var e=this.markerShape.getElement(),t=this.dataset.getFromEnv("chart"),o=this.markerShape,r=o.getElement(),a=r.data("unfilteredConfig"),n=a._markerEventArgs,i=r.getBBox(),s=void 0,d=void 0,h=this.config;h.link&&(e.node.style.cursor=l.POINTER),r&&a.hovereffect&&("circle"===o.config.type&&(d={color:a.hoverfillcolor,alpha:a.hoverfillalpha,angle:360-a.hoverfillangle,ratio:a.hoverfillratio,gradientUnits:"objectBoundingBox",radialGradient:"radial"===o.config.rawFillPattern},a._hoverattrs.fill=(0,l.toRaphaelColor)(d)),s=(0,l.extend2)({},a._hoverattrs),"image"===r.type&&(delete s.fill,delete s.stroke,delete s["stroke-width"]),r.attr(s)),n||(n=a._markerEventArgs={x:i.x,y:i.y,scaledX:i.x/o.groupConfig.scaleX,scaledY:i.y/o.groupConfig.scaleY,chartX:i.x+i.width/2,chartY:i.y+i.height/2,id:a.id,label:a.label}),(0,c.raiseEventGroup)(h.options.id,"markerRollOver",n,t.getFromEnv("chartInstance"),h,u,u,u)},E=function(){var e=this.markerShape.getElement(),t=this.dataset.getFromEnv("chart"),o=this.markerShape,r=o.getElement(),a=this.config,n=r.data("unfilteredConfig"),i=void 0;e.node.style.cursor="default",r&&n.hovereffect&&("circle"===o.config.type&&(n._defaultattrs.fill=(0,l.toRaphaelColor)({alpha:o.config.rawAlpha,color:o.config.rawColor,angle:360-o.config.rawAngle,ratio:o.config.rawRatio,radialGradient:"radial"===o.config.rawFillPattern})),i=(0,l.extend2)({},n._defaultattrs),"image"===r.type&&(delete i.fill,delete i.stroke,delete i["stroke-width"]),r.attr(i)),(0,c.raiseEventGroup)(a.id,"markerRollOut",n._markerEventArgs,t.getFromEnv("chartInstance"),u,u,u)},A=function(e){var t=this.markerShape.getElement(),o=this.config.options,r=this.dataset,a=r.getFromEnv("chart"),n=this.markerShape,i=n.config,l=t.getBBox(),s=r.getFromEnv("linkClickFN"),c=n.config.link,d=i._markerEventArgs;c&&s&&s.call({link:c},!0),d||(d=i._markerEventArgs={x:l.x,y:l.y,scaledX:l.x/n.groupConfig.scaleX,scaledY:l.y/n.groupConfig.scaleY,chartX:l.x+l.width/2,chartY:l.y+l.height/2,id:o.id,label:o.label}),a.fireChartInstanceEvent("markerClick",d,e)},x=function(e,t){var o=t?(0,l.extend2)(e.FCcolor,t,!1,!0):{FCcolor:e};return o.toString=l.toRaphaelColor,o},L=function(e,t){var o=e&&e.length||!1,r=t||"id",a={},n=void 0;if(!e)return e;for(;o--;)(n=e[o])[r]!==u&&(a[n[r].toLowerCase()]=n);return a};(0,n.addDep)({name:"mapsAnimation",type:"animationRule",extension:i["default"]});var N=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.components={},o.getLabelAlignment={top:function(e,t,o){return{x:e.toString(),y:(t-o).toString(),align:k,valign:f}},left:function(e,t,o){return{x:(e-o).toString(),y:t.toString(),align:m,valign:v}},right:function(e,t,o){return{x:(e+o).toString(),y:t.toString(),align:b,valign:v}},bottom:function(e,t,o){return{x:e.toString(),y:(t+o).toString(),align:k,valign:g}},center:function(e,t){return{x:e.toString(),y:t.toString(),align:k,valign:v}}},o.getWrapWidth={right:function(){return arguments[1]},left:function(e,t){return e-t},center:function(e,t){return 2*C(t,e-t)}},o.getWrapHeight={top:function(){return arguments[1]},middle:function(e,t){return 2*C(t,e-t)},bottom:function(e,t){return e-t}},o.hoverFn=F,o.hoverOutFn=E,o.clickFn=A,o}return p(t,e),t.prototype.getName=function(){return"markers"},t.prototype.getType=function(){return"dataset"},t.prototype.configureAttributes=function(e){if(e){this.JSONData=e;var t=this.getFromEnv("chart").config.markerOpts;this.calculateDataLimits(),t.dataEnabled?this._parseMarkers():this.defineMarkersNShapes(),this.configureConnectors()}},t.prototype.calculateMarkerRadiusLimits=function(){if(this.JSONData){var e=this.JSONData,o=this.config,r=this.getFromEnv("chart"),a=r.config.width,n=r.config.height,i=e.markermaxradius,l=e.markerminradius,s=t.getMarkerRadiusLimits(a,n,i,l);o.minRadius=s.min,o.maxRadius=s.max}},t.prototype.calculateDataLimits=function(){var e,t=this.getFromEnv("chart"),o=this.config,r=(t.jsonData.markers||{}).items||[],a=this.getFromEnv("number-formatter"),n=+Infinity,i=-Infinity,l=void 0,s=void 0,c=void 0;for(c=0,e=r.length;c<e;c++)s=r[c].value,null!==(l=a.getCleanValue(s))&&(n=C(l,n),i=w(l,i));o.min=n,o.max=i},t.prototype._parseMarkers=function(){var e=this.getFromEnv("chart"),o=e.jsonData.markers,r=o.items,a=o.shapes,n=e.config.markerOpts,i=this.getFromEnv("number-formatter"),s=this.components.shapeObjs={},c=this.components.markerObjs={},d=void 0,h=void 0,p=void 0,f=void 0,g=void 0,m=void 0,b=void 0,v=void 0;if(r&&r.length){if(a&&a.length)for(h=a.length;h;h-=1)(v=(f=a[h-1]).id.toLowerCase())&&(s[v]=f);for(h=r.length;h--;)(v=(f=r[h]).id&&f.id.toLowerCase())&&((d=f.value)!==u&&""!==d&&(d=parseFloat(d)),(g=(p=t._initializeMarkerItem(v,f,null,e)).config.options.shapeid)&&"string"==typeof g&&(g=g.toLowerCase()),b=(m=p.config).options,m.cleanValue=i.getCleanValue(d),null!==m.cleanValue?m.formattedValue=i.dataLabels(d):m.formattedValue=u,m.fillColor=(0,l.pluck)(b.fillcolor,b.color,n.fillColor),m.fillAlpha=(0,l.pluck)(b.fillalpha,b.alpha,n.fillAlpha),m.fillRatio=(0,l.pluck)(b.fillratio,n.fillRatio),m.fillAngle=(0,l.pluck)(b.fillangle,n.fillAngle),m.borderThickness=(0,l.pluckNumber)(b.borderthickness,n.borderThickness),m.borderColor=(0,l.pluck)(b.bordercolor,n.borderColor),m.borderAlpha=(0,l.pluck)(b.borderalpha,n.borderAlpha),m.labelPadding=b.labelpadding||n.labelPadding,p.dataset=this,f.__hideMarker&&(p._isHidden=!0),g&&(p.shapeObj=s[g]),c[v]=p)}},t.prototype.defineMarkersNShapes=function(){var e=this.getFromEnv("chart"),o=e.jsonData.markers,r=o.definition,a=this.getFromEnv("number-formatter"),n=e.config.markerOpts,i=L(r)||{},s=L(o.application)||{},c=o.shapes,d=this.components.shapeObjs=this.components.shapeObjs||(this.components.shapeObjs={}),h=this.components.markerObjs=this.components.markerObjs||(this.components.markerObjs={}),p=void 0,f=void 0,g=void 0,m=void 0,b=void 0,v=void 0,k=void 0,y=void 0;if(r&&r.length){if(c&&c.length)for(m=c.length;m;m-=1)(y=(v=c[m-1]).id.toLowerCase())&&(d[y]=v);for(y in i)v=i[y],(b=h[y]=t._initializeMarkerItem(y,v,s[y],e)).dataset=this,k=b.config.options.shapeid,f=b.config,g=v.value,f.cleanValue=a.getCleanValue(g),p=f.options,null!==f.cleanValue?f.formattedValue=a.dataLabels(g):f.formattedValue=u,f.fillColor=(0,l.pluck)(p.fillcolor,p.color,n.fillColor),f.fillAlpha=(0,l.pluck)(p.fillalpha,p.alpha,n.fillAlpha),f.fillRatio=(0,l.pluck)(p.fillratio,n.fillRatio),f.fillAngle=(0,l.pluck)(p.fillangle,n.fillAngle),f.borderThickness=(0,l.pluckNumber)(p.borderthickness,n.borderThickness),f.borderColor=(0,l.pluck)(p.bordercolor,n.borderColor),f.borderAlpha=(0,l.pluck)(p.borderalpha,n.borderAlpha),f.labelPadding=p.labelpadding||n.labelPadding,f.options.tooltext=(0,l.pluck)(p.tooltext,n.tooltext),f.link=p.link,k&&(b.shapeObj=d[k.toLowerCase()])}},t.getMarkerRadiusLimits=function(e,t,o,r){var a=C(e,t),n=.02*a,i=.07*a;return r=parseFloat(r),o=parseFloat(o),isNaN(r)||isNaN(o)?isNaN(r)?isNaN(o)?{min:n,max:i}:{min:parseInt(o/10,10),max:o}:{min:r,max:10*r}:r<o?{min:r,max:o}:{min:o,max:r}},t.prototype.getDataLimits=function(){var e=this.config;return{min:e.min,max:e.max}},t._initializeMarkerItem=function(e,t,o){var r,a={},n=a.config;return n||(n=a.config={}),n.id=e,n.definition=t,n.application=o,n.hasValue=null,n.value=null,n.options=null,n.label=null,n.markerShape=null,n.markerLabel=null,n.drawOptions={shape:null,label:null},n.drawComplete=!1,r=a.config.options=(0,l.extend2)({},n.definition),n.dataEnabled?isNaN(r.value)||""===r.value||(a.value=parseFloat(r.value),a.hasValue=!0):n.applyAll?n.options=(0,l.extend2)(r,n.application):o&&(n.options=(0,l.extend2)(r,n.application)),a},t.prototype.configureConnectors=function(){var e=this.getFromEnv("chart"),t=e.jsonData,o=this.components,r=t.markers||{},a=r.connector||r.connectors||[],n=o.markerObjs,i=a.length,s=this.components.connectors,c=function(t){return function(o){var r=this.getElement(),a=r.data("unfilteredConfig");r&&a.hoverEffect&&r.attr(a._hoverAttrs),e.fireChartInstanceEvent("connectorrollover",t,o)}},d=function(t){return function(o){var r=this.getElement(),a=r.data("unfilteredConfig");r&&a.hoverEffect&&r.attr(a._defaultAttrs),e.fireChartInstanceEvent("connectorrollout",t,o)}},h=function(t){return function(o){e.fireChartInstanceEvent("connectorClick",t,o)}},p=e.config.connectorOpts,u={},f=void 0,g=void 0,m=void 0,b=void 0,y=void 0,C=void 0,w=void 0,F=void 0,E=void 0,A=void 0,L=void 0,N=void 0,S=void 0,O=void 0;for(s=this.components.connectors=[],O=0;O<i;O++)((S=a[O]).from||S.to)&&(g=n[S.from.toLowerCase()],m=n[S.to.toLowerCase()],g&&m&&(b=a[O].label,!(u=s[O])&&(u=s[O]={}),!u.config&&(f=u.config={}),!u.graphics&&(u.graphics={}),(f=u.config=(0,l.extend2)({},S)).fromMarker=g,f.toMarker=m,f.link=S.link,f.showTooltip=(0,l.pluckNumber)(S.showtooltip,p.showTooltip),y=f.tooltext=f.showTooltip?(0,l.pluck)(S.tooltext,p.tooltext):"",C=f.thickness=(0,l.pluck)(S.thickness,p.thickness),w=f.color=(0,l.pluck)(S.color,p.color),F=f.alpha=(0,l.pluck)(S.alpha,p.alpha),f.hoverEffect=(0,l.pluckNumber)(S.showhovereffect,p.showHoverEffect),E=(0,l.pluck)(S.hovercolor,p.hoverColor,w),A=(0,l.pluck)(S.hoveralpha,p.hoverAlpha,F),L=(0,l.pluck)(S.hoverthickness,p.hoverThickness,C),f.dashed=(0,l.pluck)(S.dashed,p.dashed),f.dashLen=(0,l.pluckNumber)(S.dashlen,p.dashlen),f.dashGap=(0,l.pluckNumber)(S.dashgap,p.dashgap),y&&(f.tooltext=y=(0,l.parseUnsafeString)((0,l.parseTooltext)(y,[3,40,41,42,43],{label:b,fromId:g.config.definition.id,toId:m.config.definition.id,fromLabel:g.config.definition.label,toLabel:m.config.definition.label},void 0))),f.eventArgs={fromMarkerId:g.config.id,toMarkerId:m.config.id,label:b},f._hoverAttrs={stroke:x({color:E,alpha:A}).toString(),"stroke-width":L},f._defaultAttrs={stroke:x({color:w,alpha:F}).toString(),"stroke-width":C},f.type="line",f.onclick=h(f.eventArgs),f.onmouseover=c(f.eventArgs),f.onmouseout=d(f.eventArgs),b&&(!(N=u.labelConfig)&&(N=u.labelConfig={}),N.type="text",N.text=b,N.align=k,N.valign=v,N.font=p.font,N.fillcolor=p.fontColor,N.bgcolor=p.labelBgColor,N.bordercolor=p.labelBorderColor,N.tooltext=f.tooltext)))},t.prototype.draw=function(){var e=this.getFromEnv("chart"),t=this.config,o=e.getChildren("mapAnnotations")[0],r=this.components.markerObjs,a=e.config,n=a.markerOpts,i=a.scalingParams,l=e.config.annotationConfig,s=this.getFromEnv("toolTipController"),c=e.getDatasets()[0],h=[],p=[],u={},f=void 0,g=void 0,m=void 0,b=void 0,v=void 0,k=void 0,y=void 0,C=void 0,w=void 0;for(v in this._drawConnectors(),this.imageLoadCount=0,this.imageCount=0,w=o.addGroup(Object.assign(l,{id:"markers",fillalpha:"100",items:h,scaleimages:1}),this),C=o.addGroup(Object.assign(l,{id:"markerLabels",items:p,scaleimages:1}),this),a.labelsOnTop&&c.getChildren("mapLabelAnnotations")&&c.getChildren("mapLabelAnnotations")[0].annotation.groups[0].store.element.toFront(),this.components.markerGroup=w,this.components.markerLabelGroup=C,t.autoScale=n.autoScale?i.sFactor:1,r)f=null,(b=(g=r[v]).config).conIsHidden||(f=this._drawMarkerItem.call(g)),f&&(b._annotationIndex=h.length,u[v]=g,f.markerShape&&(m=Object.assign({align:"center",valign:"middle",animationLabel:"markerItem"},f.markerShape),g.markerShape=o.addItem(w.getId(),m,!0,this)),(k=g.markerShape&&g.markerShape.getElement())&&(s.enableToolTip(k,g.config.tooltext),k.data("unfilteredConfig",m)),h.push(g.markerShape),f.markerLabel&&(m=Object.assign({animationLabel:"markerItem"},f.markerLabel),g.markerLabel=o.addItem(C.getId(),m,!0,this),(y=g.markerLabel&&g.markerLabel.getElement())&&y.data("unfilteredConfig",m)),p.push(g.markerLabel));this.addJob("buildKdtree",this._buildKdTree.bind(this),d.priorityList.kdTree)},t.prototype._buildKdTree=function(){var e=this.components.kdArrayMap,t=this.components.markerGroup,o=[],r=void 0,n=void 0,i=t&&t.items,l=i&&i.length||0;for(n=0;n<l;n++)e[r=i[n].config.id]&&o.push(e[r]);this.components.kDTree||(this.components.kDTree=new a["default"](!0)),this.components.kDTree._setSearchLimit(Infinity,Infinity),this.components.kDTree.buildKdTree(o)},t.prototype._drawMarkerItem=function(){var e,t,o,r,a,n,i,c,d,h,p,g,m=this,b=m.dataset,v=b.getFromEnv("chart"),k=v.config,y=b.config,C=k.scalingParams,w=m.config,F=w.options,E=w.definition,A=k.markerOpts,x=A.dataLabels.style,L=F.shapeid,N=F.scale||1,S=F.label||"",O=v.config.scalingParams.scaleFactor*v.config.baseScaleFactor,_=(F.labelpos||f).toLowerCase(),T=w.formattedValue===u?u:w.formattedValue,M=F.tooltext||A.tooltext,I=(0,l.pluckNumber)(E.radius,w.radius,A.radius)*N*y.autoScale||1e-4,j=w.fillColor,D=w.fillAlpha,P=w.fillRatio,B=w.fillAngle,R=w.borderThickness,V=w.borderColor,H=w.borderAlpha,G=void 0,W=void 0,z=void 0,X=void 0,Y=void 0,K=void 0,J=void 0,U=void 0,Z=b.components.kdArrayMap||(b.components.kdArrayMap={}),$=m.config.id;if(w.autoScale=A.autoScale?O:1,L)return M=M?(0,l.parseUnsafeString)((0,l.parseTooltext)(M,[1,2,3],{formattedValue:T,label:S},F)):T?S+A.tooltipSepChar+T:S,T!==u&&null!==T?S=S+A.labelSepChar+T:isNaN(N)?N=1:N<0?N=0:N>5&&(N=5),(0,l.extend2)(F,{x:F.x&&F.x.toString(),y:F.y&&F.y.toString(),fillcolor:j,fillalpha:D,fillratio:P,fillangle:B,borderthickness:R,bordercolor:V,borderalpha:H,hovereffect:(0,l.pluck)(A.showHoverEffect),radius:I&&I.toString(),link:F.link,showshadow:(0,l.pluckNumber)(F.showshadow,w.shadow),_markerLabel:S,_markerId:F.id,id:(F.id+"").toLowerCase()}),delete F.tooltext,w.tooltext=!!A.showTooltip&&M,p=Number(F.x)*C.sFactor+C.translateX,g=Number(F.y)*C.sFactor+C.translateY,I=F.radius,"triangle"===L?((0,l.extend2)(F,{type:"polygon",sides:3,startangle:A.startAngle}),U="polygon",J=3):"diamond"===L?((0,l.extend2)(F,{type:"polygon",sides:4,startangle:A.startAngle}),U="polygon",J=4):"arc"===L?(K=.6*I,(0,l.extend2)(F,{type:"arc",startangle:0,endangle:360,innerradius:K}),U="arc"):"circle"===L?(F.type="circle",U="circle"):(z=b.getShapeArgs.call(m),A.dataEnabled&&A.valueToRadius&&F.radius!==u?delete z.radius:(!z.radius&&(z.radius=A.radius),z.radius*=N*w.autoScale),(0,l.extend2)(F,z),F.id=F._markerId&&F._markerId.toLowerCase(),K=z.innerradius,z.radius&&(I=z.radius),U=z.type&&z.type.toLowerCase(),J=z.sides,(I=Number(I))&&K&&I<K&&(X=I,F.radius=I=K,F.innerradius=K=X)),F.type=F.type&&F.type.toLowerCase(),(0,l.extend2)(F,{hoverfillcolor:(0,l.pluck)(F.fillhovercolor,A.hoverFillColor,F.fillcolor),hoverfillalpha:(0,l.pluck)(F.fillhoveralpha,A.hoverFillAlpha,F.fillalpha),hoverfillratio:(0,l.pluck)(F.fillhoverratio,A.hoverFillRatio,F.fillratio),hoverfillangle:(0,l.pluck)(F.fillhoverangle,A.hoverFillAngle,F.fillangle),hoverborderthickness:(0,l.pluckNumber)(F.borderhoverthickness,A.hoverBorderThickness,F.borderthickness),hoverbordercolor:(0,l.pluck)(F.borderhovercolor,A.hoverBorderColor,F.bordercolor),hoverborderalpha:(0,l.pluck)(F.borderhoveralpha,A.hoverBorderAlpha,F.borderalpha)}),d={alpha:F.fillalpha,color:F.fillcolor,angle:360-F.fillangle,ratio:F.fillratio},h={alpha:F.hoverfillalpha,color:F.hoverfillcolor,angle:360-F.hoverfillangle,ratio:F.hoverfillratio},F._defaultattrs={fill:(0,l.toRaphaelColor)(d),"stroke-width":"0"!==F.showborder?F.borderthickness:0,stroke:(0,s.convertColor)(F.bordercolor,F.borderalpha)},F._hoverattrs={fill:(0,l.toRaphaelColor)(h),"stroke-width":"0"!==F.showborder?F.hoverborderthickness:0,stroke:(0,s.convertColor)(F.hoverbordercolor,F.hoverborderalpha)},"image"===F.type?(F.borderthickness=F.borderthickness||0,F.onload=function(e){var t=this.config,o=e.width,r=e.height,a={},n=(Number(t.x)-o/(2*C.sFactor))*C.sFactor,i=(Number(t.y)-r/(2*C.sFactor))*C.sFactor;(a=Z[$]||(Z[$]={})).x=n+C.translateX,a.y=i+C.translateY,a.element=m,a.shapeInfo={type:"rect",width:o,height:r},o&&r&&this.getElement().attr({x:n,y:i,width:o,height:r}),b.imageLoadCount++,b.imageLoadCount===b.imageCount&&b._buildKdTree()},F.onerror=function(){b.imageLoadCount++,b.imageLoadCount===b.imageCount&&b._buildKdTree()},b.imageCount++):((Y=Z[$]||(Z[$]={})).x=p,Y.y=g,Y.element=m,Y.shapeInfo={type:U,sides:J,radius:Number(I)+F.borderthickness/2,innerradius:K}),w.drawOptions.shape=F,A.showLabels?(c=F.labelpadding||A.labelPadding,t=(e=b._getLabelOptions(_,c,F)).align,o=e.valign,r=w._labelBaseWidth,a=w._labelBaseHeight,n=w._labelXOffset,i=w._labelYOffset,G=A.labelWrapWidth?A.labelWrapWidth:b.getWrapWidth[t](r,Number(e.x)+n),W=A.labelWrapHeight?A.labelWrapHeight:b.getWrapHeight[o](a,Number(e.y)+i),G>c&&(G-=c),W>c&&(W-=c),w.drawOptions.label=(0,l.extend2)({type:"text"},{text:S,tooltext:F.tooltext,x:e.x,y:e.y,align:t,valign:e.valign,wrap:1,wrapwidth:G,wrapheight:W,fontsize:x.fontSize/C.sFactor,font:x.fontFamily,fillcolor:x.fontColor}),{markerShape:F,markerLabel:w.drawOptions.label}):{markerShape:F}},t.prototype.highlightPoint=function(e,t){var o=e.element,r=t.originalEvent,a=this.getFromEnv("chart"),n=this.getFromEnv("toolTipController"),i=this.config.currentToolTip,l=a.config.lastHoveredPoint;l&&l!==e&&(l&&this.hoverOutFn.call(l.element),a.config.lastHoveredPoint=null,n.hide(i)),!1!==e&&("click"===t.type||"touchstart"===t.type?(a.config.lastHoveredPoint!==e&&this.hoverFn.call(o),this.clickFn.call(o,t)):"mousemove"===t.type&&a.config.lastHoveredPoint!==e&&this.hoverFn.call(o),o.config.tooltext&&(i?n.draw(r,o.config.tooltext,i):i=this.config.currentToolTip=n.draw(r,o.config.tooltext)),a.config.lastHoveredPoint=e)},t.prototype._drawConnectors=function(){var e=this.getFromEnv("chart"),t=e.config.annotationConfig,o=this.components.connectors||(this.components.connectors=[]),r=void 0,a=void 0,n=o.length,i=e.config.scalingParams,l=e.config.connectorOpts,s=l.showLabels,c=e.getChildren("mapAnnotations")[0],d=void 0,h=[],p=[],u=void 0,f=void 0,g=void 0,m=void 0,b=void 0,v=void 0,k=void 0,y=void 0,C=void 0,w=[];for(w.push({id:"connectorLabels",fillalpha:"100",items:p}),w.push({id:"connectors",fillalpha:"100",items:h}),c.addGroup(Object.assign(t,w[1]),this),c.addGroup(Object.assign(t,w[0]),this),d=0;d<n;d++)o[d]&&(k=o[d].config.fromMarker.config,y=o[d].config.toMarker.config,g=k.options.x,m=k.options.y,b=y.options.x,v=y.options.y,o[d].config.x=g,o[d].config.y=m,o[d].config.tox=b,o[d].config.toy=v,h.push(o[d].config),C=Object.assign({animationLabel:"markerItem"},o[d].config),(u=(r=c.addItem("connectors",C,!0,this)).getElement())&&u.data("unfilteredConfig",C),r.addEventListener("fc-mouseover",o[d].config.onmouseover),r.addEventListener("fc-mouseout",o[d].config.onmouseout),r.addEventListener("fc-click",o[d].config.onclick),o[d].labelConfig&&s&&(o[d].labelConfig.x=((Number(g)+Number(b))/2).toString(),o[d].labelConfig.y=((Number(m)+Number(v))/2).toString(),o[d].labelConfig.fontsize=l.fontSize/(i.scaleFactor*e.config.baseScaleFactor),p.push(o[d].labelConfig),C=Object.assign({animationLabel:"markerItem"},o[d].labelConfig),(f=(a=c.addItem("connectorLabels",C,!0,this))&&a.getElement())&&f.data("unfilteredConfig")))},t.prototype.getShapeArgs=function(){var e=this.config,t=(0,l.extend2)({},this.shapeObj),o=void 0;return e.autoScale=1,t?("polygon"===t.type?t.sides<3?t.type="circle":t.startangle=e.startAngle:"arc"===t.type&&(o=(t.radius||e.markerRadius)*e.autoScale,t.radius=o,t.innerradius=t.innerradius&&t.innerradius*e.autoScale||.6*o),t):null},t.prototype._getLabelOptions=function(e,t,o,r,a){var n,i,l=void 0,s=e&&e.toLowerCase();return this.getLabelAlignment[s]||(s="center"),n=Number(o.x),i=Number(o.y),l=r===u||a===u?o.radius||0:/^(top|bottom)$/gi.test(s)&&.5*a||/^(left|right)$/gi.test(s)&&.5*r||0,l=Number(l)+Number(t),this.getLabelAlignment[s](n,i,l)},t.prototype.addMarkerItem=function(e){var o,r=this.getFromEnv("chart"),a=e,n=void 0,i=this.components.markerObjs,s=this.components.shapeObjs,c=this.components.markerGroup,d=this.components.markerLabelGroup,h=r.getChildren("mapAnnotations")[0],p=this.getFromEnv("number-formatter"),f=r.config.markerOpts,g=void 0,m=void 0,b=void 0,v=void 0,k=void 0,y=void 0,C=void 0;if(o=a.id.toLowerCase()){if(i[o])return;delete a.value,this.imageLoadCount=0,(n=t._initializeMarkerItem(o,a,null)).dataset=this,C=n.config.options.shapeid,v=n.config,y=a.value,v.cleanValue=p.getCleanValue(y),e=v.options,null!==v.cleanValue?v.formattedValue=p.dataLabels(y):v.formattedValue=u,v.fillColor=(0,l.pluck)(e.fillcolor,e.color,f.fillColor),v.fillAlpha=(0,l.pluck)(e.fillalpha,e.alpha,f.fillAlpha),v.fillRatio=(0,l.pluck)(e.fillratio,f.fillRatio),v.fillAngle=(0,l.pluck)(e.fillangle,f.fillAngle),v.borderThickness=(0,l.pluckNumber)(e.borderthickness,f.borderThickness),v.borderColor=(0,l.pluck)(e.bordercolor,f.borderColor),v.borderAlpha=(0,l.pluck)(e.borderalpha,f.borderAlpha),v.labelPadding=e.labelpadding||f.labelPadding,v.options.tooltext=(0,l.pluck)(e.tooltext,f.tooltext),v.link=e.link,C&&(n.shapeObj=s[C&&C.toLowerCase()]),i[o]=n,b=this._drawMarkerItem.call(n),c&&d&&(b.markerShape&&(k=Object.assign({align:"center",valign:"middle",animationLabel:"markerItem"},b.markerShape),n.markerShape=h.addItem(c.getId(),k,!0,this),(g=n.markerShape&&n.markerShape.getElement())&&g.data("unfilteredConfig",k)),b.markerLabel&&(k=Object.assign({animationLabel:"markerItem"},b.markerLabel),n.markerLabel=h.addItem(d.getId(),k,!0,this),(m=n.markerLabel&&n.markerLabel.getElement())&&m.data("unfilteredConfig",k))),this._buildKdTree()}},t.prototype.updateMarkerItem=function(e,t){var o=this.getFromEnv("chart"),r=o.getChildren("mapAnnotations")[0],a=this.components.markerObjs,n=o.config.markerOpts,i=void 0,s=void 0,c=void 0,d={},h=a[e],p=void 0;if(h){for(s in i=h.config.options,(0,l.extend2)(i,t),this.imageLoadCount=0,c=h.config,t)d[s.toLowerCase()]=t[s]&&t[s].toString();c.fillColor=(0,l.pluck)(d.fillcolor,d.color,n.fillColor),c.fillAlpha=(0,l.pluck)(d.fillalpha,d.alpha,n.fillAlpha),c.fillRatio=(0,l.pluck)(d.fillratio,n.fillRatio),c.fillAngle=(0,l.pluck)(d.fillangle,n.fillAngle),c.borderThickness=(0,l.pluckNumber)(d.borderthickness,n.borderThickness),c.borderColor=(0,l.pluck)(d.bordercolor,n.borderColor),c.borderAlpha=(0,l.pluck)(d.borderalpha,n.borderAlpha),c.labelPadding=d.labelpadding||n.labelPadding,c.options.tooltext=(0,l.pluck)(d.tooltext,n.tooltext),c.link=d.link,p=this._drawMarkerItem.call(h).markerShape,this._buildKdTree(),r.update(e,p)}},t.prototype._removeMarkerItem=function(e){var t=this.components,o=t.markerObjs,r=o[e],a=t.kdArrayMap,n=void 0,i=void 0;r&&(n=r.markerShape,i=r.markerLabel,n&&n.dispose(),i&&i.dispose(),delete a[e],this._buildKdTree()),delete o[e]},t.prototype.getElement=function(e){if(this.components.kDTree)return this.components.kDTree.getNeighbour(e)},t}(r["default"]);t["default"]=N},721:function(e,t,o){"use strict";t.__esModule=!0;var r=l(o(131)),a=o(118),n=o(125),i=l(o(719));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),r=0;r<o.length;r++){var a=o[r],n=Object.getOwnPropertyDescriptor(t,a);n&&n.configurable&&e[a]===undefined&&Object.defineProperty(e,a,n)}}(e,t))}(0,n.addDep)({name:"mapsAnimation",type:"animationRule",extension:i["default"]});var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"group"},t.prototype.getName=function(){return"mapGroup"},t.prototype.configure=function(){this._mapChildren(function(e){e.configure&&e.configure()})},t.prototype.createContainer=function(){var e,t=this.getLinkedParent(),o=this.getFromEnv("animationManager");e=t.getChildContainer().plotGroup,!this.getChildContainer("plotShadow")&&this.addChildContainer("plotShadow",o.setAnimation({el:"group",attr:{name:"manager-plot-shadow",opacity:1},container:e,component:this,label:"group"})),!this.getChildContainer("plot")&&this.addChildContainer("plot",o.setAnimation({el:"group",attr:{name:"manager-plot",opacity:1},container:e,component:this,label:"group"}))},t.prototype._transformGroup=function(){var e=this,t=this.getFromEnv("chart"),o=t.getFromEnv("chartInstance"),r=e.getFromEnv("animationManager"),n=t.jsonData,i=e.getChildContainer("plot"),l=e.getChildContainer("plotShadow"),s=t.config.scalingParams;i.hide(),l.hide(),t.config.entitiesReady=!1,o.addEventListener("internal.mapdrawingcomplete",function(t){t.detachHandler(),a.hasSVG&&(o.args.link&&o.args.clickedEntityBox&&n.chart.linkedcharttransition,i&&r.setAnimation({el:i,attr:{transform:s.transformStr},component:e,label:"group"}),l&&r.setAnimation({el:l,attr:{transform:s.transformStr},component:e,label:"group"})),i.show(),l.show()}),t.checkComplete()},t.prototype.draw=function(){this.createContainer(),this._transformGroup()},t.prototype.getDataLimits=function(e){var t=+Infinity,o=-Infinity,r=void 0,a=0,n=function(e){o=Math.max(o,e.max),t=Math.min(t,e.min)};return this._mapChildren(function(t){t.getState("removed")||!1===t.getState("visible")?e&&(r=t.getDataLimits(e),n(r)):(a++,r=t.getDataLimits(e),n(r))}),a?this.setState("visible",!0):this.setState("visible",!1),this.config.range||(this.config.range={},this.config.range.min=this.config.dataMin,this.config.range.max=this.config.dataMax),{max:o,min:t}},t}(r["default"]);t["default"]=c}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.maps.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.overlappedbar2d.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.overlappedbar2d.js new file mode 100755 index 0000000000000000000000000000000000000000..99a89e4ed7ffdc70f3710a29f392713e81b48b12 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.overlappedbar2d.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[10],{708:function(e,t,n){"use strict";t.__esModule=!0,t.OverlapperBar2D=undefined;var o=i(n(709)),r=i(n(248));function i(e){return e&&e.__esModule?e:{"default":e}}t.OverlapperBar2D=o["default"],t["default"]={name:"overlappedbar2d",type:"package",requiresFusionCharts:!0,extension:function(e){e.addDep(r["default"]),e.addDep(o["default"])}}},709:function(e,t,n){"use strict";t.__esModule=!0;var o=l(n(353)),r=l(n(710)),i=l(n(356)),a=l(n(711));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var r=n[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.isBar=!0,n.registerFactory("dataset",i["default"],["vCanvas"]),n}return s(t,e),t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Bar Chart",t.hasLegend=!0,t.defaultDatasetType="bar2d"},t.prototype.getName=function(){return"OverlappedBar2D"},t.getName=function(){return"OverlappedBar2D"},t.prototype.getDSdef=function(){return r["default"]},t.prototype.getDSGroupdef=function(){return a["default"]},t}(o["default"]);t["default"]=u},710:function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(118),i=n(362),a=(o=i)&&o.__esModule?o:{"default":o};function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var r=n[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=r.preDefStr.visibleStr,u=r.preDefStr.hiddenStr,f=r.preDefStr.POSITION_MIDDLE,c=r.preDefStr.POSITION_START,p=r.preDefStr.POSITION_END,d=Math.max;function h(e,t){var n,o=void 0,r=e.x,i=void 0,a=e.width,l=void 0;for(o=0,n=t.length;o<n;o++)if(l=t[o].width,i=t[o].x,t[o].labelShown&&r+a>=i&&i+l>=r)return!0;return!1}var b=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n._labeldimensionMap={},n}return l(t,e),t.prototype.drawLabel=function(){var e,t,n,o,i,a,l,b,g,y,v,w,m,O,S,D,_,x,P,C,M,j,k,N,T,E,I,B,F=this.getFromEnv("chart"),L=F.config,A=this.config.JSONData,R=this.getFromEnv("animationManager"),J=F.getChildren("canvas")[0].config,V=F.config.dataLabelStyle,G=A.data,q=F.config.categories,z=F.config.is3D,H=F.config.isstacked,K=q&&q.length,W=G&&G.length,Q=this.getData(),U=F.getFromEnv("smartLabel"),X=J.yDepth,Y=J.xDepth,Z=F.getFromEnv("number-formatter"),$="",ee=L.placevaluesinside,te=L.canvasWidth,ne=L.canvasLeft,oe=L.valuepadding+2,re=this.getContainer("labelGroup"),ie=this.getSkippingInfo&&this.getSkippingInfo(),ae=ie&&ie.skippingApplied,le=ie&&ie.labelDraw||[],se=le.length,ue=this.getJSONIndex(),fe=this.getState("visible"),ce=function(){this.hide()},pe=function(){this.show()};for(fe&&re.show(),U.setStyle(V),e=ae?se:K<W?K:W,i=0;i<e;i++)D=(C=(t=Q[o=ae?le[i]:i])&&t.config)&&C.setValue,void 0!==t&&void 0!==D&&null!==D&&!0!==C.labelSkip?(l=t.graphics)&&(a=G[o],m=t._yPos,O=t._xPos,D=Z.getCleanValue(a.value),w=(0,r.pluckNumber)(D)<0,b=t._height,S=t._width,_=H?f:w?ee?c:p:ee?p:c,$=C.displayValue,T=l.label,C.showValue&&(void 0!==(B=$)&&null!==B)&&$!==r.BLANKSTRING&&null!==D?(n={text:$,fill:V.color,"text-bound":[V.backgroundColor,V.borderColor,V.borderThickness,V.borderPadding,V.borderRadius,V.borderDash],"line-height":V.lineHeight,visibility:this.getState("visible")?s:u},x=(E=U.getOriSize($)).width,x+=oe,P=oe,g=m+.5*b,y=O+(w?0:S),v=w?O-ne:ne+te-(O+S),ee?S>=x?(y+=w?P:-P,z&&(g+=X,y-=Y)):x<v?(y+=w?-P:P,_=w?p:c,z&&w&&(y-=Y)):w?(y=O+S+d(x-O-S+ne,0)-P,_=p):(y=O-d(x-(ne+te-O),0)+P,_=c):v>=x?(y+=w?-P:P,z&&w&&(y-=Y,g+=Y)):y+=w?P+x:-(P+x),(y>ne+te||y<ne)&&(y=ne+4,_=c),n["text-anchor"]=_,n.x=y,n.y=g,n["text-bound"]=[V.backgroundColor,V.borderColor,V.borderThickness,V.borderPadding,V.borderRadius,V.borderDash],n.opacity=fe?1:0,j=F.getDatasets().map(function(e){return e.getJSONIndex()<ue&&e._labeldimensionMap[i]}).filter(Boolean),N=h(k={x:y,y:g,width:E.width,height:E.height},j),this._labeldimensionMap[i]=k,N?l.label&&(l.label=R.setAnimation({el:l.label,component:this}),this._labeldimensionMap[i].labelShown=!1):(M=R.setAnimation({el:T||"text",container:re,component:this,attr:n,callback:fe?pe:ce,label:"plotLabel"}),T||(l.label=M)),this._labeldimensionMap[i].labelShown=!(!fe||N)):l.label&&(l.label=R.setAnimation({el:l.label,component:this}),this._labeldimensionMap[i].labelShown=!1)):((I=t&&t.graphics)&&I.label&&I.label.hide(),C&&delete C.labelSkip)},t}(a["default"]);t["default"]=b}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.overlappedbar2d.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.overlappedcolumn2d.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.overlappedcolumn2d.js new file mode 100755 index 0000000000000000000000000000000000000000..65ffde1ab6a07b8cbd3e566e0c115607322a4ae4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.overlappedcolumn2d.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[11],{712:function(e,t,n){"use strict";t.__esModule=!0,t.OverlapperColumn2D=undefined;var o=l(n(713)),a=l(n(248));function l(e){return e&&e.__esModule?e:{"default":e}}t.OverlapperColumn2D=o["default"],t["default"]={name:"overlappedcolumn2d",type:"package",requiresFusionCharts:!0,extension:function(e){e.addDep(a["default"]),e.addDep(o["default"])}}},713:function(e,t,n){"use strict";t.__esModule=!0;var o=r(n(354)),a=r(n(714)),l=r(n(711)),i=r(n(356));function r(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],l=Object.getOwnPropertyDescriptor(t,a);l&&l.configurable&&e[a]===undefined&&Object.defineProperty(e,a,l)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.eiMethods={},n.registerFactory("dataset",i["default"],["vCanvas"]),n}return s(t,e),t.prototype.getName=function(){return"OverlappedColumn2D"},t.getName=function(){return"OverlappedColumn2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.friendlyName="Multi-series Overlapped Column Chart",this.config.defaultDatasetType="column",this.config.enablemousetracking=!0},t.prototype.getDSdef=function(){return a["default"]},t.prototype.getDSGroupdef=function(){return l["default"]},t}(o["default"]);t["default"]=u},714:function(e,t,n){"use strict";t.__esModule=!0;var o,a=n(118),l=n(331);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var n=Object.getOwnPropertyNames(t),o=0;o<n.length;o++){var a=n[o],l=Object.getOwnPropertyDescriptor(t,a);l&&l.configurable&&e[a]===undefined&&Object.defineProperty(e,a,l)}}(e,t))}function r(e,t){var n,o=void 0,a=e.y,l=void 0,i=e.height,r=void 0;for(o=0,n=t.length;o<n;o++)if(r=t[o].height,l=t[o].y,t[o].labelShown&&a+i>=l&&l+r>=a)return!0;return!1}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n._labeldimensionMap={},n}return i(t,e),t.prototype.drawLabel=function(e,t){var n,o,l,i,s,u,f,p,c,d,h,b,g,y=this.getFromEnv("chart"),m=this.getFromEnv("animationManager"),v=y.config,w=this.getFromEnv("xAxis"),O=this.getFromEnv("paper"),_=this.getState("visible"),S=y.getFromEnv("smartLabel"),D=y.config.dataLabelStyle,j=this.config,x=w.getTicksLen(),C=this.components,M=C.data,k=C.pool,E=v.rotatevalues?270:0,F={},N=this.getJSONIndex(),P=this.getSkippingInfo&&this.getSkippingInfo(),L=P&&P.skippingApplied,T=P&&P.labelDraw||[],A=T.length,I=(0,a.pluckNumber)(e,0),J=(0,a.pluckNumber)(t,L?A:x),R=A===Math.abs(J-(I+1)),W=function(){this.attr({"text-bound":[]}),this.hide()},G=function(){this.show()};for((g=this.getContainer("labelGroup")).css({fontFamily:D.fontFamily,fontSize:D.fontSize,fontWeight:D.fontWeight,fontStyle:D.fontStyle}),g.show(),S.useEllipsesOnOverflow(y.config.useEllipsesWhenOverflow),S.setStyle(D),s=I;s<J;s++)f=(p=(o=M[i=L&&R?T[s]:s])&&o.config)&&p.setValue,void 0!==o&&void 0!==f&&null!==f&&!0!==p.labelSkip?(u=o.graphics)&&(c=p.showValue,b=y.getDatasets().map(function(e){return e.getJSONIndex()<N&&e._labeldimensionMap[s]}).filter(Boolean),j.showValues&&(n=r(F={x:p.props.label.attr.x,y:p.props.label.attr.y,width:p._state.labelWidth,height:p._state.labelHeight},b)),this._labeldimensionMap[s]=F,c&&null!==f&&!n?((l=p.props.label.attr).transform=O.getSuggestiveRotation(E,l.x,l.y),(d=u.label)||k&&k.label[0]&&(d=u.label=k.label[0],k.label.splice(0,1)),d=m.setAnimation({el:u.label||"text",attr:l,component:this,label:"plotLabel",index:i,container:g,callback:_?G:W}),this._labeldimensionMap[s].labelShown=!!_,u.label||(u.label=this.addGraphicalElement("plotLabel",d,!0))):(u.label&&m.setAnimation({el:u.label,component:this,doNotRemove:!0,callback:W,label:"plotLabel"}),this._labeldimensionMap[s].labelShown=!1)):(p&&delete p.labelSkip,(h=o&&o.graphics)&&h.label&&h.label.hide());j.labelDrawn=!0},t}(((o=l)&&o.__esModule?o:{"default":o})["default"]);t["default"]=s}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.overlappedcolumn2d.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.powercharts.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.powercharts.js new file mode 100755 index 0000000000000000000000000000000000000000..936c1691513b2026b006ee375af18293161c5c42 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.powercharts.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[3],{460:function(e,t,o){"use strict";t.__esModule=!0,t.DragArea=t.Radar=t.HeatMap=t.BoxAndWhisker2D=t.CandleStick=t.DragNode=t.MSStepLine=t.MultiAxisLine=t.MultilevelPie=t.SelectScatter=t.WaterFall2D=t.Kagi=t.Dragline=t.Dragcolumn2d=t.Inversemsline=t.Inversemscolumn2d=t.Inversemsarea=t.Errorscatter=t.Errorline=t.Errorbar2d=t.Mssplinearea=t.Msspline=t.MSSplineDy=t.Splinearea=t.Logmsline=t.LogStackedColumn2d=t.Logmscolumn2d=t.Spline=undefined;var a=O(o(455)),r=O(o(461)),n=O(o(467)),i=O(o(468)),l=O(o(456)),s=O(o(457)),c=O(o(458)),u=O(o(459)),p=O(o(469)),h=O(o(472)),d=O(o(476)),f=O(o(480)),g=O(o(481)),m=O(o(482)),v=O(o(483)),b=O(o(494)),y=O(o(500)),x=O(o(501)),w=O(o(506)),k=O(o(509)),C=O(o(513)),N=O(o(543)),S=O(o(546)),E=O(o(555)),A=O(o(566)),T=O(o(574)),D=O(o(586)),L=O(o(499)),_=O(o(248)),P=O(o(252));function O(e){return e&&e.__esModule?e:{"default":e}}t.Spline=a["default"],t.Logmscolumn2d=r["default"],t.LogStackedColumn2d=i["default"],t.Logmsline=n["default"],t.Splinearea=l["default"],t.MSSplineDy=c["default"],t.Msspline=s["default"],t.Mssplinearea=u["default"],t.Errorbar2d=p["default"],t.Errorline=h["default"],t.Errorscatter=d["default"],t.Inversemsarea=f["default"],t.Inversemscolumn2d=g["default"],t.Inversemsline=m["default"],t.Dragcolumn2d=v["default"],t.Dragline=b["default"],t.Kagi=y["default"],t.WaterFall2D=x["default"],t.SelectScatter=w["default"],t.MultilevelPie=k["default"],t.MultiAxisLine=C["default"],t.MSStepLine=N["default"],t.DragNode=S["default"],t.CandleStick=E["default"],t.BoxAndWhisker2D=A["default"],t.HeatMap=T["default"],t.Radar=D["default"],t.DragArea=L["default"],t["default"]={name:"powercharts",type:"package",requiresFusionCharts:!0,extension:function(e){e.addDep(_["default"]),e.addDep(P["default"]),e.addDep(a["default"]),e.addDep(r["default"]),e.addDep(i["default"]),e.addDep(n["default"]),e.addDep(l["default"]),e.addDep(c["default"]),e.addDep(s["default"]),e.addDep(u["default"]),e.addDep(p["default"]),e.addDep(h["default"]),e.addDep(d["default"]),e.addDep(f["default"]),e.addDep(g["default"]),e.addDep(m["default"]),e.addDep(v["default"]),e.addDep(b["default"]),e.addDep(y["default"]),e.addDep(x["default"]),e.addDep(w["default"]),e.addDep(k["default"]),e.addDep(C["default"]),e.addDep(N["default"]),e.addDep(S["default"]),e.addDep(E["default"]),e.addDep(A["default"]),e.addDep(T["default"]),e.addDep(D["default"]),e.addDep(L["default"])}}},461:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(462)),r=i(o(402)),n=i(o(331));function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.getName=function(){return"LogMSColumn2d"},t.prototype.getName=function(){return"LogMSColumn2d"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Log Column Chart",t.defaultDatasetType="column",t.enablemousetracking=!0},t.prototype.getDSGroupdef=function(){return r["default"]},t.prototype.getDSdef=function(){return n["default"]},t}(a["default"]);t["default"]=s},462:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=i(o(463)),n=o(118);function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.registerFactory("axis",r["default"],["canvas"]),o}return l(t,e),t.getName=function(){return"MsLog"},t.prototype._feedAxesRawData=function(){var e,t,o=this.getFromEnv("dataSource"),a=this.getFromEnv("chart-attrib");return e=this.getSpecificxAxisConf(),"1"===(t=this.getSpecificyAxisConf()).base&&(t.base=10,t.logBase=10),t.minorDivlinecolor=(0,n.pluck)(a.minordivlinecolor,t.divLineColor),t.minorDivLineThickness=(0,n.pluck)(a.minordivlinethickness,1),t.minorDivLineAlpha=(0,n.pluck)(a.minordivlinealpha,t.divLineAlpha/2),e.vtrendlines=o.vtrendlines,t.trendlines=o.trendlines,{yAxisConf:[t],xAxisConf:[e]}},t.prototype.getSpecificxAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.getBasexAxisConf();return t.showZeroPlane=e.showvzeroplane,t.zeroPlaneThickness=e.vzeroplanethickness,t.zeroPlaneAlpha=e.vzeroplanealpha,t.showAxisLine=(0,n.pluckNumber)(e.showxaxisline,e.showaxislines,e.drawAxisLines,0),t.axisLineColor=(0,n.pluck)(e.xaxislinecolor,e.axislinecolor,"#000000"),t.isReverse=!1,t.showAlternateGridColor=(0,n.pluckNumber)(e.showalternatevgridcolor,0),t.numDivLines=e.numvdivlines,t.maxLabelHeight=e.maxlabelheight,t.axisName=e.xaxisname,t.setAdaptiveMin=e.setadaptivexmin,t.showLimits=e.showvlimits,t.showDivLineValues=(0,n.pluckNumber)(e.showvdivlinevalues,e.showvdivlinevalues),t},t.prototype.getSpecificyAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config.is3D?n.chartPaletteStr.chart3D:n.chartPaletteStr.chart2D,o=!!(0,n.pluckNumber)(e.invertyaxis,0),a=this.getFromEnv("color-manager");return{isVertical:!0,isReverse:!o,isOpposit:!1,outCanfontFamily:(0,n.pluck)(e.outcnvbasefont,e.basefont,"Verdana,sans"),outCanfontSize:(0,n.pluckFontSize)(e.outcnvbasefontsize,e.basefontsize,10),outCancolor:(0,n.pluck)(e.outcnvbasefontcolor,e.basefontcolor,a.getColor(t.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:e.yaxisnamepadding,axisValuePadding:e.yaxisvaluespadding,axisNameFont:e.yaxisnamefont,axisNameFontSize:e.yaxisnamefontsize,axisNameFontColor:e.yaxisnamefontcolor,axisNameFontBold:e.yaxisnamefontbold,axisNameFontItalic:e.yaxisnamefontitalic,axisNameBgColor:e.yaxisnamebgcolor,axisNameBorderColor:e.yaxisnamebordercolor,axisNameAlpha:e.yaxisnamealpha,axisNameFontAlpha:e.yaxisnamefontalpha,axisNameBgAlpha:e.yaxisnamebgalpha,axisNameBorderAlpha:e.yaxisnameborderalpha,axisNameBorderPadding:e.yaxisnameborderpadding,axisNameBorderRadius:e.yaxisnameborderradius,axisNameBorderThickness:e.yaxisnameborderthickness,axisNameBorderDashed:e.yaxisnameborderdashed,axisNameBorderDashLen:e.yaxisnameborderdashlen,axisNameBorderDashGap:e.yaxisnameborderdashgap,axisNameWidth:e.yaxisnamewidth,useEllipsesWhenOverflow:e.useellipseswhenoverflow,rotateAxisName:(0,n.pluckNumber)(e.rotateyaxisname,1),axisName:e.yaxisname,divLineColor:(0,n.pluck)(e.divlinecolor,a.getColor(t.divLineColor)),divLineAlpha:(0,n.pluck)(e.divlinealpha,a.getColor("divLineAlpha")),divLineThickness:(0,n.pluckNumber)(e.divlinethickness,2),divLineIsDashed:Boolean((0,n.pluckNumber)(e.divlinedashed,e.divlineisdashed,0)),divLineDashLen:(0,n.pluckNumber)(e.divlinedashlen,4),divLineDashGap:(0,n.pluckNumber)(e.divlinedashgap,2),showAlternateGridColor:(0,n.pluckNumber)(e.showalternatehgridcolor,1),alternateGridColor:(0,n.pluck)(e.alternatehgridcolor,a.getColor("altHGridColor")),alternateGridAlpha:(0,n.pluck)(e.alternatehgridalpha,a.getColor("altHGridAlpha")),numDivLines:e.numdivlines,axisMinValue:e.yaxisminvalue,axisMaxValue:e.yaxismaxvalue,setAdaptiveMin:e.setadaptiveymin,adjustDiv:e.adjustdiv,labelStep:e.yaxisvaluesstep,showAxisValues:(0,n.pluckNumber)(e.showyaxisvalues,e.showyaxisvalue),showLimits:(0,n.pluckNumber)(e.showyaxislimits,e.showlimits,this.showLimits),showDivLineValues:(0,n.pluckNumber)(e.showdivlinevalues,e.showdivlinevalue),showZeroPlane:e.showzeroplane,zeroPlaneColor:e.zeroplanecolor,zeroPlaneThickness:e.zeroplanethickness,zeroPlaneAlpha:e.zeroplanealpha,showZeroPlaneValue:e.showzeroplanevalue,trendlineColor:e.trendlinecolor,trendlineToolText:e.trendlinetooltext,trendlineThickness:e.trendlinethickness,trendlineAlpha:e.trendlinealpha,showTrendlinesOnTop:e.showtrendlinesontop,showAxisLine:(0,n.pluckNumber)(e.showyaxisline,e.showaxislines,e.drawAxisLines,0),axisLineThickness:(0,n.pluckNumber)(e.yaxislinethickness,e.axislinethickness,1),axisLineAlpha:(0,n.pluckNumber)(e.yaxislinealpha,e.axislinealpha,100),base:e.base,logBase:e.logbase,axisLineColor:(0,n.pluck)(e.yaxislinecolor,e.axislinecolor,"#000000"),showMinorDivLineValues:(0,n.pluckNumber)(e.showminordivlinevalues,0),numMinorDivLines:e.numminordivlines}},t}(a["default"]);t["default"]=s},463:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0],o=t.getChildren("axisRefVisualCartesian")[0],i={zoomable:!0,pannable:!0},l=e._feedAxesRawData(),s=void 0,c=void 0,u=function(){return o.asyncDraw()};(0,a.componentFactory)(e,r["default"],"yAxis",1,l.yAxisConf),(0,a.componentFactory)(e,n["default"],"xAxis",1,l.xAxisConf),s=e.getChildren("yAxis")[0],c=e.getChildren("xAxis")[0],s.setLinkedItem("canvas",t),c.setLinkedItem("canvas",t),o.setLinkedItem(s.getId(),s),o.setLinkedItem(c.getId(),c),o.addExtEventListener("visiblerangeset",u,c),o.addExtEventListener("visiblerangeset",u,s),t.attachAxis(c,!1,e.zoomX?i:{}),t.attachAxis(s,!0,e.zoomY?i:{}),e._setCategories()};var a=o(118),r=i(o(464)),n=i(o(321));function i(e){return e&&e.__esModule?e:{"default":e}}},464:function(e,t,o){"use strict";t.__esModule=!0;var a=u(o(294)),r=u(o(465)),n=u(o(298)),i=u(o(466)),l=o(118),s=o(122),c=o(301);function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=function(e){return null!==e&&e!==l.UNDEF&&""!==e&&!isNaN(e)},d={wrtVisible:!0},f=l.preDefStr.POSITION_START,g=l.preDefStr.POSITION_TOP,m=l.preDefStr.POSITION_BOTTOM,v=l.preDefStr.POSITION_END,b=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];if(0===e.length)return[];var o=e.length-1,a=t.length-1,r=[e[o]];for(o--;o>=0;)t[a]>e[o]?(r.push(t[a]),a--):(r.push(e[o]),o--);return r},y=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.config.scale=new r["default"],o.config.labelMap=[],o}return p(t,e),t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.base=10,t.showMinorDivLineValues=1,t.numMinorDivLines=l.UNDEF},t.prototype.getName=function(){return"log"},t.prototype.configureAttributes=function(t){var o,a=this.config,r=this.getFromEnv("number-formatter"),n=this.getFromEnv("color-manager");e.prototype.configureAttributes.call(this,t),o=a.rawAttr,a.minorDivlinecolor=(0,s.convertColor)((0,l.pluck)(o.minorDivlinecolor,n.getColor("divLineColor")),(0,l.pluckNumber)(o.minorDivLineAlpha,n.getColor("divLineAlpha")/2)),a.axisMinValue=r.getCleanValue(o.axisMinValue),a.axisMaxValue=r.getCleanValue(o.axisMaxValue),a.minorTicks=[],a.axisMinValue<=0&&(a.axisMinValue=l.UNDEF),a.axisMaxValue<=0&&(a.axisMaxValue=l.UNDEF),this.getScale().setBase(a.base),a.minorDivLineThickness=(0,l.pluckNumber)(o.minorDivLineThickness,1),a.band.isDraw=0},t.prototype.generateTicks=function(){var e=this.getScale().ticks();return this.config._allTicks=e.slice(),e},t.prototype.generateMinorTicks=function(){var e=this.config,t=e.base,o=(0,i["default"])(e.ticks),a=void 0,r=[],n=Math.log(t)/Math.log(10),l=Number(e.numMinorDivLines)||n%1?4:8,s=t>1?-1:1,c=void 0,u=void 0,p=void 0,h=void 0;return o.forEach(function(e){var o=e[0],n=e[1];for(t>1?c=Math.ceil(Math.log(n)/Math.log(t)):t>0&&t<1&&(c=Math.floor(Math.log(n)/Math.log(t))),p=Math.pow(t,c)-Math.pow(t,c+s),u=p/(l+1),a=1;a<=l;++a)o<=(h=Math.pow(t,c+s)+u*a)&&n>=h&&r.push(h)}),r},t.prototype._setAxisRange=function(e){var t=e.min,o=t===undefined?.1:t,a=e.max,r=a===undefined?1:a,n=this.getScale().setDomain([o,r]).nice(),i=this.config,l=i.axisRange;i.ticks=this.generateTicks(),i.minorTicks=this.generateMinorTicks();var s=n.getDomain();o=s[0],r=s[1],l.max=r,l.min=o,this.setVisibleConfig(o,r)},t.prototype.setDataLimit=function(e,t){var o,a,r=this.config,n=r.axisMaxValue,i=r.axisMinValue;h(i)&&Number(i)<=t&&(t=i),h(n)&&Number(n)>=e&&(e=n),0===t&&(t=1),0===e&&(e=r.base);var s=this.getTrendLineLimits();o=s[0],a=s[1];var c=(0,l.extent)([o,a,t,e],function(e){return Number(e)});t=c[0],e=c[1],this._setAxisRange({min:t,max:e})},t.prototype._parseLabel=function(){var e,t,o,a,r,n,i,s,c,u,p,h,y,x,w,k,C=this.config,N=this.getFromEnv("chart").config,S=C.axisRange,E=C.isOpposit,A=C.labels,T=A.style,D=C.isVertical,L=S.max,_=S.min,P=N.canvasBottom,O=N.canvasLeft,V=N.canvasRight,M=N.canvasTop,F=C.labelPadding,I=this.getFromEnv("number-formatter"),B=C.labelMaxH,R=C.labelMaxW,j=C.axisStartPosition,G=this.components,H=C.minorTicks;if(T.lineHeight&&-1!==(n=T.lineHeight).indexOf("px")&&(n=n.replace("px",""),n=parseFloat(n)),C.labels.isDraw)for(k=1!==this.getZoom(),w=G.labels,e=C.labels.step?S.tickInterval*C.labels.step:S.tickInterval,r=C.labels.rotation,a=this.getVisibleConfig(),G.labelIndexArr=[],C.allTicks=c=b(C.ticks,C.minorTicks),x=D?B:R,u=c.length,t=0;t<u;t++)if(p=c[t],h=this.getPixel(p,d),(!(H.indexOf(p)>=0)||C.showMinorDivLineValues)&&!(y&&h>y-x&&h<y+x)&&(!k||!(p<a.minValue||p>a.maxValue))&&(C.labels.drawNormalVal||C.labels.drawLimitVal&&(p===_||p===L))&&(C.labels.drawNormalVal||p===_||p===L)&&(C.labels.drawLimitVal||p!==_&&p!==L)&&(0!==C.showZeroPlaneValue||0!==C.showZeroPlane||0!==p)){if(1===C.showZeroPlane&&1===C.showZeroPlaneValue&&(p<0&&p+e>0||p>0&&p-e<0))if(D){if(h+B>=this.getPixel(0,d)&&this.getPixel(0,d)>=h-B)continue}else if(h+R>=this.getPixel(0,d)&&this.getPixel(0,d)>=h-R)continue;s={fill:T.color,"font-size":T.fontSize},D?(o=""+(C.numberFormatterFn?I[C.numberFormatterFn]:C.isPercent?I.percentValue:I.yAxis).call(I,p),i=C.hasCategory&&C.categories.category[t].labelPadding||0,s["text-anchor"]=E?f:v,s.text=o,s.x=E?(j||V)+F:(j||O)-F,s.y=i?h+i:h,y=s.y):(o=""+(C.numberFormatterFn?I[C.numberFormatterFn]:C.isPercent?I.percentValue:I.xAxis).call(I,p),i=C.hasCategory&&Number(C.categories.category[t].labelPadding)||0,s.text=o,s.x=h,s.y=E?(j||M)-F:(j||P)+F,i&&(s.y+=i),r?(s["text-anchor"]=E?f:v,s["vertical-align"]="middle"):s["vertical-align"]=E?m:g,y=s.x),A.shiftX&&(s.x+=A.shiftX),A.shiftY&&(s.y+=A.shiftY),s.transform=(0,l.getSuggestiveRotation)(r,s.x,s.y),G.labelIndexArr.push(t),w[t]=w[t]||{config:{props:{label:{}}}},w[t].config.props.label.attr=s,w[t].config.props.label.css=o.css,w[t].config.value=p}},t.prototype._drawLabel=function(){var e,t,o,a,r,i,l,s,c,u=this,p=u.config,h=u.getFromEnv("animationManager"),d=p.labels.style,f=p.axisContainer,g=[],m=u.components,v=m.labelIndexArr,b={fontFamily:d.fontFamily,fontSize:d.fontSize,fontWeight:d.fontWeight,fontStyle:d.fontStyle,lineHeight:d.lineHeight};if(p.labels.isDraw){for(c=m.labels,f.css(b),l=v.length,t=0;t<l;t++)o=(s=c[e=v[t]].config.value)+"_label",i=u.getGraphicalElement(o),g.push(o),i=this.addGraphicalElement(o,h.setAnimation({container:f,el:i||"text",attr:c[e].config.props.label.attr,data:{value:s},component:this,label:"text",css:c[e].config.props.label.css}));a=(0,n["default"])(p.labelMap,g)}else a=p.labelMap;p.labelMap=g,function(t){for(e=0;e<t.length;++e)(r=u.getGraphicalElement(t[e]))&&u.removeGraphicalElement(r)}(a)},t.prototype._getVMaxLabelDimention=function(){var e,t,o,a,r,n,i,l,s=this.config,c=this.getFromEnv("chart"),u=this.getFromEnv("smartLabel"),p=this.getFromEnv("number-formatter"),h=s.labels.style,d=0;for(u.useEllipsesOnOverflow(c.config.useEllipsesWhenOverflow),u.setStyle({fontSize:h.fontSize,fontFamily:h.fontFamily,lineHeight:h.lineHeight,fontWeight:h.fontWeight}),i=s.isPercent?p.percentValue:p.xAxis,s.allTicks=e=b(s.ticks,s.minorTicks),t=e.length,a=0;a<t;a++)l=e[a],r=""+i.call(p,l),n=u.getOriSize(r),this.components.labels[a]={config:{width:n.width,height:n.height,props:{label:{}}}},r.length>d&&(o=n,d=r.length);return o},t.prototype._getHMaxLabelDimention=function(){return this._getVMaxLabelDimention()},t.prototype.getCleanValue=function(e){var t=null;return(e=Math.abs(e))>0&&(t=this.getFromEnv("number-formatter").getCleanValue(e)),t},t}(a["default"]);y.prototype.getTrendLineLimits=c.getTrendLineLimits,t["default"]=y},465:function(e,t,o){"use strict";t.__esModule=!0;var a=n(o(317)),r=o(315);function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var l=function(e,t){return(t=Math.log(t/e))?function(o){return Math.log(o/e)/t}:(0,a["default"])(t)},s=function(e,t){return e<0?function(o){return-Math.pow(-t,o)*Math.pow(-e,1-o)}:function(o){return Math.pow(t,o)*Math.pow(e,1-o)}},c=function(e){return isFinite(e)?+("1e"+e):e<0?0:e},u=function(e){return 10===e?c:e===Math.E?Math.exp:function(t){return Math.pow(e,t)}},p=function(e){return e===Math.E?Math.log:10===e?Math.log10:2===e?Math.log2:function(t){return Math.log(t)/Math.log(e)}},h=function(e){return function(t){return-e(-t)}},d=function(e){function t(){var o;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,l,s)),o).setDomain([1,10]),o.base=10,o.logs=p(o.base),o.pows=u(o.base),o}return i(t,e),t.prototype._rescaleLog=function(){return this.logs=p(this.base),this.pows=u(this.base),this.getDomain()[0]<0&&(this.logs=h(this.logs),this.pows=h(this.pows)),this},t.prototype.setBase=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:10;return this.base=Number(e),this._rescaleLog()},t.prototype.getBase=function(){return this.base},t.prototype.setDomain=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[1,10];return e.prototype.setDomain.call(this,t),this._rescaleLog()},t.prototype.nice=function(){var e,t,o=this.getDomain(),a=o[0],r=o[1],n=this.base;return a===r&&(a-=a/100),e=Math.log(a)/Math.log(n),t=Math.log(r)/Math.log(n),(e%1||t%1)&&(a<=r?(a=this.pows(Math.floor(e)),r=this.pows(Math.ceil(t))):(a=this.pows(Math.ceil(e)),r=this.pows(Math.floor(t))),this.setDomain([a,r])),this},t.prototype.ticks=function(){var e,t,o,a,r,n,i=this.getDomain(),l=i[0],s=i[1],c=1,u=0,p=[],h=this.base;if(l<=0||s<=0)return p;if(l>s){var d=this.getDomain();s=d[0],l=d[1],c=0}for(h>1?(t=e=Math.ceil(Math.log(s)/Math.log(h)),o=Math.floor(Math.log(l)/Math.log(h))):h>0&&h<1&&(e=Math.floor(Math.log(s)/Math.log(h)),t=Math.ceil(Math.log(l)/Math.log(h)),o=e),r=e,n=t;n>=o;--n)l<=(a=this.pows(r))&&s>=a&&(p[u++]=a),h>1?r--:r++;return c?p.reverse():p},t.prototype.copy=function(){return(0,r.copyScale)(this,(new t).setBase(this.base))},t}(n(r)["default"]);t["default"]=d},466:function(e,t,o){"use strict";function a(e,t){return[e,t]}t.__esModule=!0,t["default"]=function(e,t){null!==t&&void 0!==t||(t=a);for(var o=0,r=e.length-1,n=e[0],i=new Array(r<0?0:r);o<r;)i[o]=t(n,n=e[++o]);return i}},467:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(462)),r=i(o(346)),n=o(428);function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.defaultPlotShadow=1,o}return l(t,e),t.getName=function(){return"LogMSLine"},t.prototype.getName=function(){return"LogMSLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Line Chart",t.defaultDatasetType="line",t.zeroplanethickness=1,t.enablemousetracking=!0,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,n._setDefaultConfig.call(this)},t.prototype.getDSGroupdef=function(){},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=s},468:function(e,t,o){"use strict";t.__esModule=!0;var a=n(o(461)),r=n(o(409));function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return i(t,e),t.getName=function(){return"LogStackedColumn2d"},t.prototype.getName=function(){return"LogStackedColumn2d"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Stacked Log Column Chart",t.isstacked=!0},t.prototype.getDSGroupdef=function(){return r["default"]},t}(a["default"]);t["default"]=l},469:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=i(o(402)),n=i(o(470));function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.showValues=0,o.isErrorChart=!0,o.eiMethods={},o}return l(t,e),t.getName=function(){return"ErrorBar2D"},t.prototype.getName=function(){return"ErrorBar2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Error Bar Chart",t.hasLegend=!0,t.defaultDatasetType="errorbar2d",t.enablemousetracking=!0},t.prototype.getDSGroupdef=function(){return r["default"]},t.prototype.getDSdef=function(){return n["default"]},t}(a["default"]);t["default"]=s},470:function(e,t,o){"use strict";t.__esModule=!0,t._checkPointerOverPlot=t._checkPointerOverErrorBar=t._firePlotEvent=t._rolloutResponseSetter=t._rolloverResponseSetter=t.removePlots=t._getHoveredPlot=undefined;var a=o(118),r=o(122),n=s(o(331)),i=o(125),l=s(o(471));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u,p,h,d,f,g=a.preDefStr.colors.AAAAAA,m=a.preDefStr.ROUND,v=a.preDefStr.PERCENTAGESTRING,b=a.preDefStr.pStr,y=a.preDefStr.sStr,x=function(e,t,o,a){var r=t.graphics,n=t.errorBarHovered,i=r&&r.element,l=e.getFromEnv("animationManager"),s=i&&i.getData();!n&&i&&0!==s.showHoverEffect&&(l.setAnimationState("mouseOver"),l.setAnimation({el:i,label:"rect",component:a,attr:i.getData().setRolloverAttr,doNotRemove:!0})),i&&e.plotEventHandler(i,o,"DataPlotRollOver")},w=function(e,t,o,a){var r=t.graphics,n=t.errorBarHovered,i=r&&r.element,l=e.getFromEnv("animationManager"),s=i&&i.getData();!n&&i&&0!==s.showHoverEffect&&(l.setAnimationState("mouseOut"),l.setAnimation({el:i,label:"rect",component:a,attr:i.getData().setRolloutAttr,doNotRemove:!0})),i&&e.plotEventHandler(i,o,"DataPlotRollOut")};(0,i.addDep)({name:"errorbar2DColumnAnimation",type:"animationRule",extension:l["default"].column}),(0,i.addDep)({name:"errorbar2DErrorAnimation",type:"animationRule",extension:l["default"].error});var k=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"errorBar2D"},t.prototype.ErrorValueConfigure=function(){var e,t,o,n,i,l,s,c,u,p,h,d,f,m,x,w,k,C,N,S,E,A,T,D,L,_,P,O,V=this.config,M=V.JSONData,F=M.data,I=F&&F.length,B=this.getFromEnv("chart-attrib"),R=this.components.data,j=(0,a.parseUnsafeString)(B.yaxisname),G=(0,a.parseUnsafeString)(B.xaxisname),H=(0,a.pluckNumber)(B.seriesnameintooltip,1),W=(0,a.parseUnsafeString)((0,a.pluck)(B.tooltipsepchar,", ")),z=this.getFromEnv("number-formatter"),U=-Infinity,J=Infinity,K=this.getFromEnv("xAxis").getTicksLen(),q=Math.min(K,I),Y=function(t){var r;return V.showTooltip?null===d?r=!1:void 0!==t?(s=[1,2,3,4,5,6,7,99,100,101,102,120,121],c={yaxisName:j,xaxisName:G,formattedValue:o.toolTipValue,errorValue:h,errorDataValue:o.errorToolTipValue,errorPercentValue:o.errorPercentValue,errorPercentDataValue:o.errorPercentValue,positiveErrorValue:o.positiveErrorToolTipValue,negativeErrorValue:o.negativeErrorToolTipValue,label:o.label},r=(0,a.parseTooltext)(t,s,c,e,B,M)):(H&&(i=(0,a.getFirstValue)(M&&M.seriesname)),r=i?i+W:"",r+=o.label?o.label+W:""):r=!1,r};for(V.showTooltip=(0,a.pluckNumber)(B.showtooltip,1),V.errorInPercent=l=(0,a.pluckNumber)(M.errorinpercent,B.errorinpercent),V.showValues=(0,a.pluckNumber)(M.showvalues,B.showvalues,0),V.errorBarShadow=m=(0,a.pluckNumber)(B.errorbarshadow,B.showshadow,1),V.ignoreEmptyDatasets=(0,a.pluckNumber)(M.ignoreemptydatasets,0),S=(0,a.pluckNumber)(B.halferrorbar,1),V.notHalfErrorBar=!(0,a.pluckNumber)(B.halferrorbar,1),p=(0,r.getFirstAlpha)((0,a.pluck)(M.errorbaralpha,B.errorbaralpha,V.plotfillalpha)),V.errorBarWidthPercent=(0,a.pluckNumber)(M.errorbarwidthpercent,B.errorbarwidthpercent,70),V.errorBarColor=(0,r.convertColor)((0,r.getFirstColor)((0,a.pluck)(M.errorbarcolor,B.errorbarcolor,g)),p),V.errorBarThickness=(0,a.pluckNumber)(M.errorbarthickness,B.errorbarthickness,1),V.shadowOpacity=m?p/250:0,V.parentYAxis=x=(0,a.pluck)(M.parentyaxis&&M.parentyaxis.toLowerCase(),b)===y?1:0,V.cumulativeValueOnErrorBar=(0,a.pluckNumber)(M.cumulativevalueonerrorbar,B.cumulativevalueonerrorbar,1),O=0;O<q;O++)(t=R[O])&&(e=F&&F[O],o=t&&t.config,_=void 0,P=void 0,void 0!==(0,a.pluckNumber)(e.value)&&(t||(t=R[O]={graphics:{}}),t.config||(o=R[O].config={}),w=o.setValue,o.setErrorValue=h=z.getCleanValue(e.errorvalue),o.errorInPercent=(0,a.pluckNumber)(e.errorinpercent,l,0),o.errorInPercent&&(o.setErrorValue=h=(0,a.pluckNumber)((h/100*w).toFixed(2))),o.cumulativeValueOnErrorBar=(0,a.pluckNumber)(e.cumulativevalueonerrorbar,V.cumulativeValueOnErrorBar,1),o.positiveErrorValue=z.getCleanValue((0,a.pluckNumber)(e.positiveerrorvalue,e.errorvalue)),o.errorInPercent&&o.positiveErrorValue&&(o.positiveErrorValue=(0,a.pluckNumber)((o.positiveErrorValue/100*w).toFixed(2))),o.positiveCumulativeErrorValue=w+(0,a.pluckNumber)(o.positiveErrorValue,o.setErrorValue),o.negativeErrorValue=z.getCleanValue((0,a.pluckNumber)(e.negativeerrorvalue,e.errorvalue)),o.errorInPercent&&o.negativeErrorValue&&(o.negativeErrorValue=(0,a.pluckNumber)((o.negativeErrorValue/100*w).toFixed(2))),o.negativeCumulativeErrorValue=w-(0,a.pluckNumber)(o.negativeErrorValue,o.setErrorValue),o.errorToolTipValue=z.dataLabels(h,x),o.negativeErrorToolTipValue=z.dataLabels(o.negativeErrorValue,x),o.negativeCumulativeErrorTooltipValue=z.dataLabels(o.negativeCumulativeErrorValue,x),o.positiveErrorToolTipValue=z.dataLabels(o.positiveErrorValue,x),o.positiveCumulativeErrorTooltipValue=z.dataLabels(o.positiveCumulativeErrorValue,x),o.errorPercentValue=Math.round(h/w*a.HUNDREDSTRING*a.HUNDREDSTRING)/a.HUNDREDSTRING+v,T=o.cumulativeValueOnErrorBar,o.notHalfErrorBar=V.notHalfErrorBar,o.halfErrorBar=S,o.showValue=(0,a.pluckNumber)(e.showvalue,V.showValues),o.hasErrorValue=void 0!==(0,a.pluckNumber)(e.errorvalue)?1:0,k=o.errorValue=h,u=o.errorToolTipValue,d=u,n=Y(f=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,M.errorplottooltext,B.errorplottooltext,d)))),_=P=void 0,(f=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,M.errorplottooltext,B.errorplottooltext,o.positiveErrorToolTipValue))))&&o.positiveErrorToolTipValue&&(_=Y(f)),(f=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,M.errorplottooltext,B.errorplottooltext,o.negativeErrorToolTipValue))))&&o.negativeErrorToolTipValue&&(P=Y(f)),T&&((f=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,M.errorplottooltext,B.errorplottooltext,o.positiveCumulativeErrorTooltipValue))))&&o.positiveCumulativeErrorTooltipValue&&(D=Y(f)),(f=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,M.errorplottooltext,B.errorplottooltext,o.negativeCumulativeErrorTooltipValue))))&&o.negativeCumulativeErrorTooltipValue&&(L=Y(f))),E=o.positiveErrorValue,A=o.negativeErrorValue,(e.positiveerrorvalue||e.negativeerrorvalue)&&(o.halfErrorBar=0,o.notHalfErrorBar=!0),C=w+(null!==E?E:h),N=w-(o.halfErrorBar?0:A<0&&w<0?0:null!==A?A:h),U=Math.max(U,C,N),J=Math.min(J,C,N),o.errorValueArr=[],null===o.positiveErrorValue&&(o.positiveErrorValue=void 0),k=-o.positiveErrorValue,o.errorValueArr.push({errorValue:k,tooltext:T?D:_||n,errorEdgeBar:!0}),o.errorValueArr.push({errorValue:k,tooltext:_||n}),o.notHalfErrorBar&&(k=o.negativeErrorValue,o.errorValueArr.push({errorValue:k,tooltext:T?L:P||n,errorEdgeBar:!0}),o.errorValueArr.push({errorValue:k,tooltext:P||n})),o.toolText=Y(o.setTooltext)));V.maxValue=U,V.minValue=J},t.prototype.drawErrorValue=function(){var e,t,o,r,n,i,l,s,c,u,p,h,d,f,g,v,b,y,x,w,k,C,N,S,E,A,T,D,L,_,P,O,V=this.getJSONIndex(),M=this.config,F=this.getState("visible"),I=this.getFromEnv("chart"),B=this.getFromEnv("yAxis"),R=this.components.data,j=M.errorBarThickness,G=M.errorBarWidthPercent,H=M.errorBarColor,W=M.shadowOpacity,z=this.getContainer("errorPlotGroup"),U=this.getContainer("errorShadowGroup"),J=M.scrollMinVal,K=M.scrollMaxVal,q=function(e){return function(){"disappearing"===e?this.hide():this.show()}},Y=this.getFromEnv("animationManager");for(t=J;t<K;t++)if((l=R[t])&&(_=l.trackerConfig,(O=l.errorTrackerConfig={}).errorTrackerArr=[],s=(c=l&&l.config)&&c.setValue,void 0!==l))if(l&&(void 0===s||null===s||""===c.errorValue||void 0===c.errorValue||null===c.errorValue&&null===c.positiveErrorValue&&null===c.negativeErrorValue))for(w=l.graphics.error&&l.graphics.error.length,o=0;o<w;o++)l.graphics.error&&l.graphics.error[o]&&(Y.setAnimation({el:l.graphics.error[o],label:"path",callback:q("disappearing")}),l.graphics.error[o].shadow({opacity:0}));else{for(l.errorBar&&delete l.errorBar,v=c.errorValueArr,O.errorLen=w=v.length,!l.graphics.error&&(l.graphics.error=[]),C=V+"_"+t,r=c.setLink,S=s<0,E=l._xPos,A=l._yPos,T=l._width,D=l._height,i=S?A+D:A,n=E+T/2,l.errorBar||(l.errorBar=[]);w--;)N=null,O.errorTrackerArr[w]={},b=v[w],O.errorTrackerArr[w].tooltext=b.tooltext,L=b.errorStartValue,x=isNaN(L)?i:B.getPixel(L),null===(y=b.errorValue)||isNaN(y)?l.graphics.error&&l.graphics.error[w]&&Y.setAnimation({el:l.graphics.error[w],label:"path",doNotRemove:!0,callback:q("disappearing")}).shadow({opacity:0}):(k=T*(G/100)/2,g=F?-1:0,f=B.getPixel(B.getValue(isNaN(L)?A:x)+y*g,{wrtVisible:!0}),S&&(f+=D),p=f,h=n,P=(j=(0,a.pluckNumber)(b.errorBarThickness,j))>5?j/2:2.5,p=Math.round(f)+j%2/2,h=Math.round(n)+j%2/2,l.errorBar[w]||(l.errorBar[w]=[]),b.errorEdgeBar?(d=["M",h-k,p,"H",h+k],l.errorBar[w][1]={_xPos:h-k-P,_yPos:p-P,_height:2*P,_width:2*(k+P),_toolText:b.tooltext}):(d=["M",h,x,"V",p],l.errorBar[w][0]={_xPos:h-P,_yPos:p<x?p:x,_height:Math.abs(x-p),_width:2*P,_toolText:b.tooltext}),e={path:d,stroke:H=(0,a.pluck)(b.errorBarColor,H),"stroke-width":j,cursor:r?"pointer":"","stroke-linecap":m},u=!l.graphics.error[w]&&F?"appearing":F?"updating":"disappearing",N=l.graphics.error[w]=Y.setAnimation({el:l.graphics.error[w]||"path",container:z,component:this,attr:e,label:"path",state:u,callback:q(u)}).shadow({opacity:W},U),I.config.enablemousetracking&&N.data("groupId",C).data("eventArgs",_.eventArgs));if(!c.notHalfErrorBar)for(o=2;o<4;o++)l.graphics.error&&l.graphics.error[o]&&Y.setAnimation({el:l.graphics.error[o],label:"path",doNotRemove:!0,callback:q("disappearing")}).shadow({opacity:0})}},t.prototype._firePlotEvent=function(e,t,o){var a=this.getFromEnv("chart"),r=this.components.data[t],n=this.getFromEnv("toolTipController"),i=r.graphics.element,l=r.errorBarHovered,s=r.config.setLink;if(i)switch(e){case"fc-mouseover":this._decideTooltipType(t,o),x(a,r,o,this),s&&(i.node.style.cursor="pointer");break;case"fc-mouseout":n.hide(this.config.currentToolTip),w(a,r,o,this),s&&(i.node.style.cursor="default");break;case"fc-click":a.plotEventHandler(i,o);break;case"fc-mousemove":this._decideTooltipType(t,o),l&&!r._isRollover?(0!==i.showHoverEffect&&i.attr(i.getData().setRolloutAttr),r._isRollover=!0,r._isRollout=!1):l||r._isRollout||(0!==i.showHoverEffect&&i.attr(i.getData().setRolloverAttr),r._isRollover=!1,r._isRollout=!0)}},t.prototype._checkPointerOverErrorBar=function(e,t,o){var a,r,n,i,l,s,c,u,p,h,d=this.components.data,f=d[e];if(f&&(r=f.errorBar))for(i=r&&r.length;i--;)for(l=(n=r[i])&&n.length;l--;)if(n[l]&&n[l]._xPos&&(c=n[l]._xPos,u=n[l]._yPos,p=n[l]._height,h=n[l]._width,s=n[l]._toolText,a=t>=c&&t<=c+h&&o>=u&&o<=u+p))return{pointIndex:e,hovered:a,pointObj:d[e],toolText:s}},t.prototype._checkPointerOverPlot=function(e,t,o){var a,r,n=this.components.data,i=this.getFromEnv("chart-attrib"),l=this.config.JSONData,s=n[e],c=s&&s.config;if(s)return a=l.plottooltext||i.plottooltext?"":c.toolTipValue,(r=this._checkPointerOverErrorBar(e,t,o))?(s.errorBarHovered=!0,c.finalTooltext=r.toolText):(r=this._checkPointerOverColumn(e,t,o),s.errorBarHovered=!1,r&&(c.finalTooltext=!1!==c.toolText&&c.toolText+a)),r},t.prototype._getHoveredPlot=function(e,t){var o,a;return o=this.getFromEnv("xAxis").getValue(e),(a=Math.round(o))-o>0?this._checkPointerOverPlot(a,e,t)||this._checkPointerOverPlot(a-1,e,t):this._checkPointerOverPlot(a+1,e,t)||this._checkPointerOverPlot(a,e,t)},t.prototype.removePlots=function(){var e,t,o,a,r=this.components,n=r.removeDataArr,i=r.pool||(r.pool={element:[],hotElement:[],label:[]}),l=n.length,s=this.getFromEnv("animationManager");for(o=0;o<l;o++)if(e=n[0],n.splice(0,1),e&&e.graphics){for((t=e.graphics).element&&t.element.hide()&&t.element.shadow({opacity:0}),a=0;a<4;a++)t.error&&t.error[a]&&s.setAnimation({el:t.error[a],label:"path"});e.graphics.element&&(i.element=i.element.concat(e.graphics.element)),e.graphics.hotElement&&(i.hotElement=i.hotElement.concat(e.graphics.hotElement)),e.graphics.label&&(i.label=i.label.concat(e.graphics.label))}r.pool=i},t}(n["default"]);t.removePlots=u=k.prototype.removePlots,t._getHoveredPlot=p=k.prototype._getHoveredPlot,t._firePlotEvent=h=k.prototype._firePlotEvent,t._checkPointerOverPlot=d=k.prototype._checkPointerOverPlot,t._checkPointerOverErrorBar=f=k.prototype._checkPointerOverErrorBar,t._getHoveredPlot=p,t.removePlots=u,t._rolloverResponseSetter=x,t._rolloutResponseSetter=w,t._firePlotEvent=h,t._checkPointerOverErrorBar=f,t._checkPointerOverPlot=d,t["default"]=k},471:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(332),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={column:{"initial.dataset.errorBar2D":n["default"]["initial.dataset.column"]},error:{"initial.dataset.errorBar2D":function(){return{"path.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]}}}}},472:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=o(428),n=i(o(473));function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.useErrorGroup=!0,o.isErrorChart=!0,o.hasAnchor=!0,o.defaultPlotShadow=1,o.axisPaddingLeft=0,o.axisPaddingRight=0,o.canvasPaddingModifiers=["anchor","errorbar"],o}return l(t,e),t.getName=function(){return"ErrorLine"},t.prototype.getName=function(){return"ErrorLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Error Line Chart",t.defaultDatasetType="errorline",r._setDefaultConfig.call(this),this.zeroplanethickness=1,this.zeroplanealpha=40,t.showzeroplaneontop=0,t.defaultcrosslinethickness=1,t.enablemousetracking=!0},t.prototype.getDSGroupdef=function(){},t.prototype.getDSdef=function(){return n["default"]},t}(a["default"]);t["default"]=s},473:function(e,t,o){"use strict";t.__esModule=!0;var a=o(118),r=o(122),n=o(470),i=u(o(346)),l=o(125),s=u(o(474)),c=u(o(475));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=a.preDefStr.colors.AAAAAA,d=a.preDefStr.ROUND,f=a.preDefStr.PERCENTAGESTRING,g="rgba(192,192,192,"+(a.isIE?.002:1e-6)+")",m=Math,v=m.round,b=m.min,y=m.max,x=m.abs,w=a.hasTouch?a.TOUCH_THRESHOLD_PIXELS:a.CLICK_THRESHOLD_PIXELS;(0,l.addDep)({name:"errorlineErrorAnimation",type:"animationRule",extension:s["default"]}),(0,l.addDep)({name:"errorlineLineAnimation",type:"animationRule",extension:c["default"]});var k=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return p(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"errorLine"},t.prototype.ErrorValueConfigure=function(){var e,t,o,n,i,l,s,c,u,p,d,g,m,x,w,k,C,N,S,E,A,T,D,L,_,P=this.getFromEnv("chart"),O=this.config,V=P.config,M=O.parentYAxis,F=O.JSONData,I=F.data,B=P.getFromEnv("dataSource").chart,R=this.getFromEnv("xAxis").getTicksLen(),j=this.components.data,G=this.getFromEnv("number-formatter"),H=O.linethickness,W=-Infinity,z=Infinity,U=(0,a.parseUnsafeString)(B.yaxisname),J=(0,a.parseUnsafeString)(B.xaxisname),K=(0,a.pluck)(B.tooltipsepchar,", "),q=(0,a.pluckNumber)(B.seriesnameintooltip,1),Y=function(t){var r;return V.showtooltip?null===c?r=!1:void 0!==t?(E=[1,2,3,4,5,6,7,99,100,101,102],A={yaxisName:U,xaxisName:J,formattedValue:o.toolTipValue,errorValue:s,errorDataValue:o.errorToolTipValue,errorPercentValue:o.errorPercentValue,errorPercentDataValue:o.errorPercentValue,label:o.label},r=(0,a.parseTooltext)(t,E,A,e,B,F)):(q&&(T=(0,a.getFirstValue)(F&&F.seriesname)),r=T?T+K:"",r+=o.label?o.label+K:""):r=!1,r};for(O.errorBarShadow=x=(0,a.pluckNumber)(B.errorbarshadow,B.showshadow,1),O.ignoreEmptyDatasets=(0,a.pluckNumber)(F.ignoreemptydatasets,0),O.notHalfErrorBar=!(0,a.pluckNumber)(B.halferrorbar,1),i=(0,r.getFirstAlpha)((0,a.pluck)(F.errorbaralpha,B.errorbaralpha,O.alpha)),O.errorBarWidth=(0,a.pluckNumber)(F.errorbarwidth,B.errorbarwidth,5),O.errorBarColor=(0,r.convertColor)((0,r.getFirstColor)((0,a.pluck)(F.errorbarcolor,B.errorbarcolor,h)),i),l=(0,a.pluckNumber)(F.errorbarthickness,B.errorbarthickness,1),O.errorBarThickness=l>H?H:l,O.shadowOpacity=x?i/250:0,O.errorInPercent=D=(0,a.pluckNumber)(F.errorinpercent,B.errorinpercent),O.cumulativeValueOnErrorBar=(0,a.pluckNumber)(F.cumulativevalueonerrorbar,B.cumulativevalueonerrorbar,1),_=0;_<R;_++)e=I&&I[_],I&&e&&(t=j[_],o=t&&t.config,t||(t=j[_]={graphics:{}}),t.config||(o=j[_].config={}),C=o.setValue,o.notHalfErrorBar=O.notHalfErrorBar,s=G.getCleanValue(e.errorvalue),o.errorToolTipValue=G.dataLabels(s,M),o.setErrorValue=o.errorValue=N=s,o.hasErrorValue=void 0!==(0,a.pluckNumber)(e.errorvalue)?1:0,n=o.errorToolTipValue,c=n,L=Y(u=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,F.errorplottooltext,B.errorplottooltext,c)))),o.errorInPercent=(0,a.pluckNumber)(e.errorinpercent,D,0),o.errorInPercent&&(o.setErrorValue=s=(0,a.pluckNumber)((s/100*C).toFixed(2))),o.cumulativeValueOnErrorBar=S=(0,a.pluckNumber)(e.cumulativevalueonerrorbar,O.cumulativeValueOnErrorBar,1),o.positiveErrorValue=G.getCleanValue((0,a.pluckNumber)(e.positiveerrorvalue,e.errorvalue)),o.errorInPercent&&o.positiveErrorValue&&(o.positiveErrorValue=(0,a.pluckNumber)((o.positiveErrorValue/100*C).toFixed(2))),o.positiveCumulativeErrorValue=C+(0,a.pluckNumber)(o.positiveErrorValue,o.setErrorValue),o.negativeErrorValue=G.getCleanValue((0,a.pluckNumber)(e.negativeerrorvalue,e.errorvalue)),o.errorInPercent&&o.negativeErrorValue&&(o.negativeErrorValue=(0,a.pluckNumber)((o.negativeErrorValue/100*C).toFixed(2))),o.negativeCumulativeErrorValue=C-(0,a.pluckNumber)(o.negativeErrorValue,o.setErrorValue),o.errorToolTipValue=G.dataLabels(s,M),o.negativeErrorToolTipValue=G.dataLabels(o.negativeErrorValue,M),o.negativeCumulativeErrorTooltipValue=G.dataLabels(o.negativeCumulativeErrorValue,M),o.positiveErrorToolTipValue=G.dataLabels(o.positiveErrorValue,M),o.positiveCumulativeErrorTooltipValue=G.dataLabels(o.positiveCumulativeErrorValue,M),o.errorPercentValue=v(s/C*a.HUNDREDSTRING*a.HUNDREDSTRING)/a.HUNDREDSTRING+f,g=m=void 0,(u=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,F.errorplottooltext,B.errorplottooltext,o.positiveErrorToolTipValue))))&&o.positiveErrorToolTipValue&&(g=Y(u)),(u=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,F.errorplottooltext,B.errorplottooltext,o.negativeErrorToolTipValue))))&&o.negativeErrorToolTipValue&&(m=Y(u)),(e.positiveerrorvalue||e.negativeerrorvalue)&&(o.halfErrorBar=0,o.notHalfErrorBar=!0),S&&((u=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,F.errorplottooltext,B.errorplottooltext,o.positiveCumulativeErrorTooltipValue))))&&o.positiveCumulativeErrorTooltipValue&&(p=Y(u)),(u=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(e.errorplottooltext,F.errorplottooltext,B.errorplottooltext,o.negativeCumulativeErrorTooltipValue))))&&o.negativeCumulativeErrorTooltipValue&&(d=Y(u))),w=C+(null!==o.positiveErrorValue?o.positiveErrorValue:s),k=C-(o.halfErrorBar?0:o.negativeErrorValue<0&&C<0?0:null!==o.negativeErrorValue?o.negativeErrorValue:s),W=y(W,w,k),z=b(z,w,k),null===s&&(s=void 0),o.errorValueArr=[],null===o.positiveErrorValue&&(o.positiveErrorValue=void 0),N=-o.positiveErrorValue,o.errorValueArr.push({errorValue:N,tooltext:S?p:g||L,errorEdgeBar:!0}),o.errorValueArr.push({errorValue:N,tooltext:g||L}),o.notHalfErrorBar&&(N=o.negativeErrorValue,o.errorValueArr.push({errorValue:N,tooltext:S?d:m||L,errorEdgeBar:!0}),o.errorValueArr.push({errorValue:N,tooltext:m||L})),o.toolText=Y(o.setTooltext));O.maxValue=W,O.minValue=z},t.prototype._show=function(){var e=this.chart,t=this.yAxis,o=this.graphics&&this.graphics.container,a=this.graphics&&this.graphics.dataLabelContainer,r=this.graphics&&this.graphics.errorGroupContainer,n=this.graphics&&this.graphics.errorShadowContainer;e._chartAnimation(),o.lineGroup.show(),o.anchorGroup.show(),o.anchorShadowGroup.show(),o.lineShadowGroup.show(),a.show(),this.setState("visible",!0),r&&r.show(),n&&n.show(),this._conatinerHidden=!1,e._setAxisLimits(),t.draw(),e._drawDataset()},t.prototype._hide=function(){var e=this.chart,t=this.yAxis;e._chartAnimation(),this.setState("visible",!1),e._setAxisLimits(),t.draw(),e._drawDataset()},t.prototype.draw=function(){e.prototype.draw.call(this),this.drawErrorValue()},t.prototype.drawErrorValue=function(){var e,t,o,a,r,n,i,l,s,c,u,p,h,f,m,b,y,k,C,N,S,E,A,T,D,L,_=this.config,P=this.getFromEnv("xAxis").getTicksLen(),O=this.getState("visible"),V=this.getFromEnv("yAxis"),M=this.components.data,F=_.errorBarThickness,I=_.errorBarWidth,B=_.errorBarColor,R=_.shadowOpacity,j=this.getContainer("errorPlotGroup"),G=this.getContainer("errorShadowGroup"),H=F>5?F/2:2.5,W=this.getFromEnv("animationManager"),z=function(e){return function(){"disappearing"===e&&this.hide()}};for(t=0;t<P;t++)if(c=(u=(s=M[t])&&s.config)&&u.setValue,void 0!==s&&void 0!==c&&null!==c)if((L=s.errorTrackerConfig={}).errorTrackerArr=[],y=u.errorValueArr,L.errorLen=S=y.length,!s.graphics.error&&(s.graphics.error=[]),!s.graphics.errorTracker&&(s.graphics.errorTracker=[]),""===u.errorValue||void 0===u.errorValue||null===u.errorValue&&null===u.positiveErrorValue&&null===u.negativeErrorValue)for(a=0;a<S;a++)s.graphics.error&&s.graphics.error[a]&&W.setAnimation({el:s.graphics.error[a]||"path",label:"path",component:this,callback:z("disappearing")}).shadow({opacity:0});else{for(n=u.setLink,T=s._xPos,l=D=s._yPos,i=T,s.errorBar&&delete s.errorBar,s.errorBar=[];S--;)A=null,L.errorTrackerArr[S]={},k=y[S],L.errorTrackerArr[S].tooltext=k.tooltext,N=l,null===(C=k.errorValue)||isNaN(C)?s.graphics.error&&s.graphics.error[S]&&(s.graphics.error[S].hide(),s.graphics.error[S].shadow({opacity:0})):(E=I/2,b=O?1:0,p=m=D+(V.getPixel(0)-V.getPixel(1))*C*b,h=i,p=v(m)+F%2/2,h=v(i)+F%2/2,s.errorBar[S]||(s.errorBar[S]=[]),k.errorEdgeBar?(f=["M",h-E,p,"H",h+E],s.errorBar[S][1]={_xPos:h-E-H,_yPos:p-H,_height:2*H,_width:2*(E+H),_toolText:k.tooltext}):(f=["M",h,N,"V",p],s.errorBar[S][0]={_xPos:h-H,_yPos:p<N?p:N,_height:x(N-p),_width:2*H,_toolText:k.tooltext}),e={path:f,stroke:B,"stroke-width":F,cursor:n?"pointer":"","stroke-linecap":d},r=!s.graphics.error[S]&&O?"appearing":O?"updating":"disappearing",A=s.graphics.error[S]=W.setAnimation({el:s.graphics.error[S]||"path",state:r,attr:e,label:"path",component:this,container:j,callback:z(r)}),"disappearing"!==r&&A.show(),A&&A.shadow({opacity:R},G),L.errorTrackerArr[S].attr={path:f,stroke:g,"stroke-width":F<w?w:F,cursor:n?"pointer":""});if(!u.notHalfErrorBar)for(a=2;a<4;a++)s.graphics.error&&s.graphics.error[a]&&W.setAnimation({el:s.graphics.error[a]||"path",label:"path",component:this,doNotRemove:!0,callback:z("disappearing")}).shadow({opacity:0})}else if(s&&s.graphics.error)for(o=0;o<s.graphics.error.length;o++)s.graphics.error&&s.graphics.error[o]&&W.setAnimation({el:s.graphics.error[o]||"path",label:"path",component:this,doNotRemove:!0,callback:z("disappearing")}).shadow({opacity:0})},t.prototype._firePlotEvent=function(e,t,o){n._firePlotEvent.call(this,e,t,o)},t.prototype._checkPointerOverErrorBar=function(e,t,o){return n._checkPointerOverErrorBar.call(this,e,t,o)},t.prototype._checkPointerOverPlot=function(e,t,o){var a,r=this.components.data[e],n=r&&r.config;if(r)return(a=this.isWithinShape(r,e,t,o))?(r.errorBarHovered=!1,n.finalTooltext=!1!==n.toolText&&n.toolText):(a=this._checkPointerOverErrorBar(e,t,o))&&(r.errorBarHovered=!0,n.finalTooltext=a.toolText),a},t.prototype._getHoveredPlot=function(e,t){return n._getHoveredPlot.call(this,e,t)},t.prototype.getCanvasPadding=function(){var e,t,o,r,n,i,l=.5*this.config.errorBarWidth,s=this.components||{},c=this.getFromEnv("chart"),u=c.config.dataLabelStyle,p=s.data||[],h=p[0],d=p[p.length-1],f={},g=c.getFromEnv("smartLabel"),m={paddingLeft:0,paddingRight:0};return h&&(i=(e=h.config).showValue,o=e&&e.anchorProps||{},i&&(t=e.displayValue,g.useEllipsesOnOverflow(c.config.useEllipsesWhenOverflow),g.setStyle(u),f=g.getOriSize(t)),e.setValue&&(r=y((0,a.pluckNumber)(o.radius,0),l)+(0,a.pluckNumber)(o.borderThickness,0),n=(f.width||0)/2),m.paddingLeft=y(r,n)),d&&(i=(e=d.config).showValue,o=e&&e.anchorProps||{},i&&(t=e.displayValue,g.setStyle(u),f=g.getOriSize(t)),e.setValue&&(r=y((0,a.pluckNumber)(o.radius,0),l)+(0,a.pluckNumber)(o.borderThickness,0),n=(f.width||0)/2),m.paddingRight=y(r,n)),m},t.prototype.removePlots=function(){n.removePlots.call(this)},t}(i["default"]);t["default"]=k},474:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.errorLine":function(){return{"path.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}]},"*":null}}}},475:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.errorLine":n["default"]["*.dataset.line"]}},476:function(e,t,o){"use strict";t.__esModule=!0;var a=n(o(414)),r=n(o(477));function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.isXY=!0,o.defaultZeroPlaneHighlighted=!1,o.useErrorGroup=!0,o.isErrorChart=!0,o.hasAnchor=!0,o.initAnimation=!0,o}return i(t,e),t.getName=function(){return"ErrorScatter"},t.prototype.getName=function(){return"ErrorScatter"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Error Scatter Chart",t.defaultDatasetType="errorscatter",t.enablemousetracking=!0},t.prototype.getDSGroupdef=function(){},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=l},477:function(e,t,o){"use strict";t.__esModule=!0;var a=u(o(418)),r=o(118),n=o(122),i=u(o(419)),l=o(125),s=u(o(478)),c=u(o(479));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=r.preDefStr.colors.AAAAAA,d=r.preDefStr.ROUND,f=r.preDefStr.PERCENTAGESTRING,g="M";(0,l.addDep)({name:"errorscatterAnimation",type:"animationRule",extension:s["default"]}),(0,l.addDep)({name:"errorscatterErrorAnimation",type:"animationRule",extension:c["default"]});var m=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return p(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"errorScatter"},t.prototype.ErrorValueConfigure=function(){var e,t,o,a,i,l,s,c,u,p,d,g,m,v,b,y,x,w,k,C,N,S,E,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H,W,z,U,J,K,q,Y,X,Q,Z,$,ee,te,oe,ae=this.getFromEnv("chart"),re=this.config,ne=re.JSONData,ie=this.getFromEnv("dataSource").categories&&this.getFromEnv("dataSource").categories[0].category,le=this.getFromEnv("chart-attrib"),se=ne.data,ce=se&&se.length||0,ue=this.components.data,pe=this.getFromEnv("number-formatter"),he=(0,r.pluck)(le.tooltipsepchar,", "),de=(0,r.parseUnsafeString)(le.yaxisname),fe=(0,r.parseUnsafeString)(le.xaxisname),ge=re.parentYAxis,me=-Infinity,ve=+Infinity,be=me,ye=ve,xe=ve,we=me,ke=function(t,a){var n;return re.showTooltip?null===N?n=!1:void 0!==t?(T=[1,2,3,4,5,6,7,8,9,10,11,99,100,101,102,103,104,105,106,107,109],D={yaxisName:de,xaxisName:fe,yDataValue:N,xDataValue:o.label,formattedValue:o.toolTipValue,horizontalErrorValue:y,horizontalErrorDataValue:w,verticalErrorValue:x,verticalErrorDataValue:k,horizontalErrorPercentValue:E,verticalErrorPercentValue:A,label:o.label,errorValue:a,errorDataValue:a,errorPercentValue:o.errorPercentValue,errorPercentDataValue:o.errorPercentValue},n=(0,r.parseTooltext)(t,T,D,e,le,ne)):null===N?n=!1:(re.seriesNameInTooltip&&(L=(0,r.getFirstValue)(ne&&ne.seriesname)),n=L?L+he:"",n+=C.x?pe.xAxis(C.x)+he:"",n+=o.toolTipValue):n=!1,n};for(re.errorBarShadow=i=(0,r.pluckNumber)(le.errorbarshadow,le.showshadow,0),re.ignoreEmptyDatasets=(0,r.pluckNumber)(ne.ignoreemptydatasets,0),re.notHalfErrorBar=!(0,r.pluckNumber)(le.halferrorbar,1),re.errorBarAlpha=(0,n.getFirstAlpha)((0,r.pluck)(ne.errorbaralpha,le.errorbaralpha)),re.errorBarWidth=l=(0,r.pluckNumber)(ne.errorbarwidth,le.errorbarwidth,5),re.errorBarColor=s=(0,n.convertColor)((0,n.getFirstColor)((0,r.pluck)(ne.errorbarcolor,le.errorbarcolor,h)),void 0),re.errorBarThickness=a=(0,r.pluckNumber)(ne.errorbarthickness,le.errorbarthickness,1),re.shadowOpacity=i?NaN:0,re.halfHorizontalErrorBar=c=(0,r.pluckNumber)(le.halfhorizontalerrorbar,1),re.halfVerticalErrorBar=u=(0,r.pluckNumber)(le.halfverticalerrorbar,1),void 0===re.initAnimation&&(re.initAnimation=ae.initAnimation),p=(0,r.pluck)(ne.horizontalerrorbaralpha,ne.errorbaralpha,le.horizontalerrorbaralpha,void 0),d=(0,r.pluckNumber)(ne.verticalerrorbaralpha,ne.errorbaralpha,le.verticalerrorbaralpha,void 0),g=(0,n.convertColor)((0,r.pluck)(ne.horizontalerrorbarcolor,ne.errorbarcolor,le.horizontalerrorbarcolor,s),p),m=(0,n.convertColor)((0,r.pluck)(ne.verticalerrorbarcolor,ne.errorbarcolor,le.verticalerrorbarcolor,s),d),v=(0,r.pluckNumber)(ne.horizontalerrorbarthickness,ne.errorbarthickness,le.horizontalerrorbarthickness,a),b=(0,r.pluckNumber)(ne.verticalerrorbarthickness,ne.errorbarthickness,le.verticalerrorbarthickness,a),re.horizontalErrorBarWidth=(0,r.pluckNumber)(ne.horizontalerrorbarwidth,le.horizontalerrorbarwidth,l),re.verticalErrorBarWidth=(0,r.pluckNumber)(ne.verticalerrorbarwidth,le.verticalerrorbarwidth,l),re.cumulativeValueOnErrorBar=(0,r.pluckNumber)(ne.cumulativevalueonerrorbar,le.cumulativevalueonerrorbar,1),oe=0;oe<ce;oe++)se&&(e=se&&se[oe],t=ue[oe],o=t&&t.config,t||(t=ue[oe]={graphics:{}}),t.config||(o=ue[oe].config={}),C=o.setValue,o.errorValue=e.errorvalue,o.cumulativeValueOnErrorBar=$=(0,r.pluckNumber)(e.cumulativevalueonerrorbar,re.cumulativeValueOnErrorBar,1),o.hErrorValue=y=pe.getCleanValue((0,r.pluck)(e.horizontalerrorvalue,e.errorvalue)),w=pe.xAxis(y),o.vErrorValue=x=pe.getCleanValue((0,r.pluck)(e.verticalerrorvalue,e.errorvalue)),k=pe.dataLabels(x),o.hPositiveErrorValue=I=pe.getCleanValue((0,r.pluck)(e.horizontalpositiveerrorvalue,e.positiveerrorvalue,y)),o.hNegativeErrorValue=F=pe.getCleanValue((0,r.pluck)(e.horizontalnegativeerrorvalue,e.negativeerrorvalue,y)),o.vPositiveErrorValue=M=pe.getCleanValue((0,r.pluck)(e.verticalpositiveerrorvalue,e.positiveerrorvalue,x)),o.vNegativeErrorValue=K=pe.getCleanValue((0,r.pluck)(e.verticalnegativeerrorvalue,e.negativeerrorvalue,x)),E=Math.round(y/C.x*r.HUNDREDSTRING*r.HUNDREDSTRING)/r.HUNDREDSTRING+f,A=Math.round(x/C.y*r.HUNDREDSTRING*r.HUNDREDSTRING)/r.HUNDREDSTRING+f,R=pe.dataLabels(I,ge),B=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,R))),H=pe.dataLabels(F,ge),U=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,H))),z=pe.dataLabels(M,ge),X=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,z))),te=pe.dataLabels(K,ge),ee=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,te))),j=Q=Z=q=void 0,$&&(G=pe.dataLabels(C.x+I,ge),j=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,G))),W=pe.dataLabels(C.x-F,ge),Q=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,W))),J=pe.dataLabels(C.y+M,ge),Z=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,J))),Y=pe.dataLabels(C.y-K,ge),q=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(e.errorplottooltext,ne.errorplottooltext,le.errorplottooltext,Y)))),ie&&ie[oe]&&(o.label=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(ie[oe].tooltext,ie[oe].label)))),e.horizontalpositiveerrorvalue||e.positiveerrorvalue||e.horizontalnegativeerrorvalue||e.negativeerrorvalue?o.halfHorizontalErrorBar=c=0:o.halfHorizontalErrorBar=c=re.halfHorizontalErrorBar,e.verticalpositiveerrorvalue||e.positiveerrorvalue||e.verticalnegativeerrorvalue||e.negativeerrorvalue?o.halfVerticalErrorBar=u=0:o.halfVerticalErrorBar=u=re.halfVerticalErrorBar,null!==C.x&&(_=C.x+Number(I),P=C.x-(c?0:Number(F)),we=Math.max(we,_,P),xe=Math.min(xe,_,P)),null!==C.y&&(_=C.y+Number(M),P=C.y-(u?0:Number(K)),be=Math.max(be,_,P),ye=Math.min(ye,_,P)),o.useHorizontalErrorBar=(0,r.pluckNumber)(e.usehorizontalerrorbar,ne.usehorizontalerrorbar,le.usehorizontalerrorbar,0),o.useVerticalErrorBar=(0,r.pluckNumber)(e.useverticalerrorbar,ne.useverticalerrorbar,le.useverticalerrorbar,1),o.errorValueConf={},(O=o.errorValueConf.horizontal={}).mandatory={},O.mandatory.marker={errorValue:-(null===I?void 0:I),tooltext:ke(B,R),errorBarColor:g,isHorizontal:!0,errorBarThickness:v,shadowOpacity:i?p/250:0},O.mandatory.limit={errorValue:-(null===I?void 0:I),tooltext:$?ke(j,G):ke(B,R),errorBarColor:g,isHorizontal:!0,errorBarThickness:v,shadowOpacity:i?p/250:0,errorEdgeBar:!0},O.optional={},O.optional.marker={errorValue:F,tooltext:ke(U,H),errorBarColor:g,isHorizontal:!0,errorBarThickness:v,shadowOpacity:i?p/250:0},O.optional.limit={errorValue:F,tooltext:$?ke(Q,W):ke(U,H),errorBarColor:g,isHorizontal:!0,errorBarThickness:v,shadowOpacity:i?p/250:0,errorEdgeBar:!0},(V=o.errorValueConf.vertical={}).mandatory={},V.mandatory.marker={errorValue:-(null===M?void 0:M),tooltext:ke(X,z),errorBarColor:m,errorBarThickness:b,shadowOpacity:i?d/250:0},V.mandatory.limit={errorValue:-(null===M?void 0:M),tooltext:$?ke(Z,J):ke(X,z),errorBarColor:m,errorBarThickness:b,shadowOpacity:i?d/250:0,errorEdgeBar:!0},V.optional={},V.optional.marker={errorValue:K,tooltext:ke(ee,te),errorBarColor:m,errorBarThickness:b,shadowOpacity:i?d/250:0},V.optional.limit={errorValue:K,tooltext:$?ke(q,Y):ke(ee,te),errorBarColor:m,errorBarThickness:b,shadowOpacity:i?d/250:0,errorEdgeBar:!0},C=o.setValue,N=o.formatedVal,re.showTooltip?void 0!==o.setTooltext?(T=[1,2,3,4,5,6,7,8,9,10,11,99,100,101,102,103,104,105,106,107,109],D={yaxisName:de,xaxisName:fe,yDataValue:N,xDataValue:o.label,formattedValue:o.toolTipValue,horizontalErrorValue:y,horizontalErrorDataValue:w,verticalErrorValue:x,verticalErrorDataValue:k,horizontalErrorPercentValue:E,verticalErrorPercentValue:A,label:o.label,errorValue:o.errorValue,errorDataValue:pe.dataLabels(o.errorValue,re.parentYAxis)},S=(0,r.parseTooltext)(o.setTooltext,T,D,e,le,ne)):null===N?S=!1:(re.seriesNameInTooltip&&(L=(0,r.getFirstValue)(ne&&ne.seriesname)),S=L?L+he:"",S+=C.x?pe.xAxis(C.x)+he:"",S+=o.toolTipValue):S=!1,o.toolText=S);re.xMax=we,re.xMin=xe,re.yMin=ye,re.yMax=be},t.prototype.drawErrorValue=function(){var e,t,o,a,r,n,l,s,c,u,p,h,f,m,v,b,y,x,w,k,C,N,S,E,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H,W,z,U,J=this.config.JSONData,K=this.config,q=J.data,Y=q&&q.length,X=this.getState("visible"),Q=this.getFromEnv("xAxis"),Z=this.getFromEnv("yAxis"),$=this.components.data,ee=K.shadowOpacity,te=this.getContainer("errorPlotGroup"),oe=this.getContainer("errorShadowGroup"),ae=this.getFromEnv("animationManager"),re=[],ne=function(e){return function(){"disappearing"===e&&this.hide()}};for(t=0;t<Y;t++)if((U=(h=$[t]).errorTrackerConfig={}).errorTrackerArr=[],f=(v=h&&h.config)&&v.setValue,G=v.errorValueConf,void 0!==h&&void 0!==f&&null!==f&&G){if(z=Object.keys(a=h.graphics),null===v.vErrorValue&&null===v.vPositiveErrorValue&&null===v.vNegativeErrorValue)for(j=0;j<z.length;j++)z[j].match(/error-horizontal-/)&&(ae.setAnimation({el:a[z[j]],state:"disappearing",callback:ne("disappearing")}),a[z[j]].shadow({opacity:0}));if(null===v.hErrorValue&&null===v.hPositiveErrorValue&&null===v.vPositiveErrorValue)for(j=0;j<z.length;j++)z[j].match(/error-vertical-/)&&(ae.setAnimation({el:a[z[j]],state:"disappearing",callback:ne("disappearing")}),a[z[j]].shadow({opacity:0}));if(!(null===v.hErrorValue&&null===v.vErrorValue&&v.hPositiveErrorValue&&v.hNegativeErrorValue&&v.vPositiveErrorValue&&v.vNegativeErrorValue))for(H in c=v.setLink,F=h._xPos,p=h._yPos,u=F,G)if(G.hasOwnProperty(H))for(A in T=G[H])if(T.hasOwnProperty(A))for(_ in D=T[A])if(D.hasOwnProperty(_)){if(m=void 0,L=D[_],e={},M=null,(U.errorTrackerArr[0]={}).tooltext=L.tooltext,O=p,P=L.errorValue,b=!v.useHorizontalErrorBar&&"horizontal"===H,y=!v.useVerticalErrorBar&&"vertical"===H,x=v.halfHorizontalErrorBar&&"horizontal"===H&&"optional"===A,w=v.halfVerticalErrorBar&&"vertical"===H&&"optional"===A,b||y||x||w)m="disappearing";else if(null===P||void 0===P||isNaN(P))m="disappearing";else{if(s=L.errorBarColor,r=L.isHorizontal,n=L.errorBarThickness,l=r?K.horizontalErrorBarWidth:K.verticalErrorBarWidth,V=X?l/2:0,E=X?-1:0,W=n>5?n/2+.5:2.75,r)if(k=S=Q.getPixel(h.config._x+P*E),C=u,k=Math.round(O)+n%2/2,C=Math.round(S)+n%2/2,L.errorEdgeBar)for(N=[g,C,k-V,"V",k+V],I=2*V,B=k-V,R=W;R<I;R+=2*W)re.push({x:C,y:B+R,r:W,index:t,data:h,toolText:L.tooltext,barType:"h"});else for(N=[g,u,k,"H",C],I=Math.abs(u-C),B=u>C?C:u,R=W;R<I;R+=2*W)re.push({x:B+R,y:k,r:W,index:t,data:h,toolText:L.tooltext,barType:"h"});else if(k=S=Z.getPixel(h.config._y+P*E),C=u,k=Math.round(S)+n%2/2,C=Math.round(u)+n%2/2,L.errorEdgeBar)for(N=[g,C-V,k,"H",C+V],I=2*V,B=C-V,R=W;R<=I;R+=2*W)re.push({x:B+R,y:k,r:W,index:t,data:h,toolText:L.tooltext,barType:"v"});else for(N=[g,C,O,"V",k],I=Math.abs(O-k),B=O>k?k:O,R=W;R<=I;R+=2*W)re.push({x:C,y:B+R,r:W,index:t,data:h,toolText:L.tooltext,barType:"v"});e={path:N,"stroke-width":X?n:0,stroke:s,cursor:c?"pointer":"","stroke-linecap":d}}o=["error",H,A,_].join("-"),m||(m=a[o]?"updating":"appearing"),(a[o]||"disappearing"!==m)&&(M=a[o]=ae.setAnimation({el:a[o]||"path",container:te,component:this,attr:e,state:m,label:"path",callback:ne(m)}),"disappearing"!==m&&M.show(),M.shadow({opacity:"disappearing"===m?0:ee},oe))}}re.length&&(this.config.dataTreeB=(new i["default"]).buildKdTree(re)),K.initAnimation=!1},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i,l;return(o=this.config.dataTree.getNeighbour({x:e,y:t},!0))?(r=o.data.config.toolText,o.data.config.finalTooltext=r,i=o.data.config.hoverEffects,(l=o.data.graphics.element).data("hoverEnabled",i.enabled),i.enabled&&l.attr(l.getData().setRolloverAttr),{pointIndex:o.index,hovered:!0,pointObj:o.data}):(a=this.config.dataTreeB&&this.config.dataTreeB.getNeighbour({x:e,y:t},!0))?("h"===a.barType?n=a.toolText:"v"===a.barType&&(n=a.toolText),a.data.config.finalTooltext=n,(l=a.data.graphics.element).data("hoverEnabled",!1),l.attr(l.getData().setRolloutAttr),{pointIndex:a.index,hovered:!0,pointObj:a.data}):void 0},t.prototype.removePlots=function(){var e,t,o,a,r=this.components,n=r.removeDataArr,i=r.pool||(r.pool={element:[],hotElement:[],label:[]}),l=this.getFromEnv("animationManager"),s=n.length,c=function(){this.hide(),this.shadow({opacity:0})};for(o=0;o<s;o++)if(e=n[0],n.splice(0,1),e&&e.graphics){for(a in t=e.graphics)t.hasOwnProperty(a)&&l.setAnimation({el:t[a],component:this,attr:{},state:"disappering",callback:c});e.graphics.element&&(i.element=i.element.concat(e.graphics.element)),e.graphics.label&&(i.label=i.label.concat(e.graphics.label))}r.pool=i},t}(a["default"]);t["default"]=m},478:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.dataset.errorScatter":n["default"]["initial.dataset.line"]}},479:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(474),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.dataset.errorScatter":n["default"]["initial.dataset.errorLine"]}},480:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=i(o(347)),n=o(428);function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.getName=function(){return"InverseMSArea"},t.prototype.getName=function(){return"InverseMSArea"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Inverted Y-Axis Multi-series Area Chart",t.defaultDatasetType="area",t.isInverse=!0,t.zeroplanethickness=2,t.zeroplanealpha=80,t.showzeroplaneontop=1,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,n._setDefaultConfig.call(this)},t.prototype.getDSdef=function(){return r["default"]},t.prototype.getDSGroupdef=function(){},t}(a["default"]);t["default"]=s},481:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=i(o(331)),n=i(o(402));function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.getName=function(){return"InverseMSColumn2d"},t.prototype.getName=function(){return"InverseMSColumn2d"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Inverted Y-Axis Multi-series Column Chart",t.defaultDatasetType="column",t.isInverse=!0,t.enablemousetracking=!0},t.prototype.getDSdef=function(){return r["default"]},t.prototype.getDSGroupdef=function(){return n["default"]},t}(a["default"]);t["default"]=s},482:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=i(o(346)),n=o(428);function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.defaultPlotShadow=1,o}return l(t,e),t.getName=function(){return"InverseMSLine"},t.prototype.getName=function(){return"InverseMSLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Inverted Y-Axis Multi-series Line Chart",t.defaultDatasetType="line",t.isInverse=!0,t.zeroplanethickness=1,t.zeroplanealpha=4,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,n._setDefaultConfig.call(this)},t.prototype.getDSdef=function(){return r["default"]},t.prototype.getDSGroupdef=function(){},t}(a["default"]);t["default"]=s},483:function(e,t,o){"use strict";t.__esModule=!0;var a=s(o(484)),r=s(o(487)),n=s(o(489)),i=s(o(490)),l=s(o(492));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.registerFactory("limitUpdater",i["default"],["axis"]),o.registerFactory("dragTracker",l["default"],["canvas"]),o}return c(t,e),t.prototype.getName=function(){return"DragColumn2D"},t.getName=function(){return"DragColumn2D"},t.prototype.getDSGroupdef=function(){return n["default"]},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.isDrag=!0},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=u},484:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(404),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118),l=o(125),s=o(485),c=o(129),u=o(486);function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=(0,l.getDepsByType)("transcoder"),d=i.preDefStr.UNDERSCORE,f=i.BLANKSTRING,g=0,m=function(e){var t=e.sender.apiInstance,o=t.getChildren("canvas")[0].getChildren("vCanvas")[0],a=t.config,r=void 0,n=e.data,i=n&&n.endValue,l=n&&n.startValue;(i>a.yMax||i<a.yMin||l===a.yMin||l===a.yMax)&&(r=o.getDataLimits(),a.yMax=r.max,a.yMin=r.min)},v=function(e){return e.toString().toLowerCase()},b=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.eiMethods.getDataWithId=function(){for(var e,t,o,a,r,n,i,l,s,c,u=this.apiInstance&&this.apiInstance.getJSONData(),p=[[f]],h=u.dataset,g=u.categories&&u.categories[0]&&u.categories[0].category,m=h&&h.length||0,v=0;m--;)if(r=h[m])for(p[0][m+1]=r.id||r.seriesname,i=r.id||m+1,c=(a=r.data)&&a.length||0,s=0;s<c;s+=1){if(!p[n=s+1]){for(o=g&&g[s+v]||{};o.vline;)o=g[s+(v+=1)]||{};t=o.label||o.name||f,p[n]=[t]}e=p[n],l=a[s].id||n+d+i,e[m+1]=[l,Number(a[s].value)]}return p},o.eiMethods.getData=function(e){var t,o,a=this.apiInstance&&this.apiInstance.getJSONData(),r=a.dataset,n=r&&r.length||0,i=0;if(e)o=v(e),t=/^json$/gi.test(o)?a:h[o]().fromJSON(a,this).data;else for((t=s._getData.call(this.apiInstance)).unshift([f]);i<n;)t[0][i+1]=r[i++].seriesname;return t},o.eiMethods.setUpperLimit=function(e,t){var o,a=this.apiInstance;if(!t)return a.changeUpperLimits(e);a.addJob("setUpperLimitId"+g++,function(){o=a.changeUpperLimits(e),"function"==typeof t&&t(o)},c.priorityList.postRender)},o.eiMethods.setLowerLimit=function(e,t){var o,a=this.apiInstance;if(!t)return a.changeLowerLimits(e);a.addJob("setLowerLimitId"+g++,function(){o=a.changeLowerLimits(e),"function"==typeof t&&t(o)},c.priorityList.postRender)},o.eiMethods.getLowerLimit=function(e){var t=this.apiInstance,o=t.getChildren("yAxis")[0];if(o){if(!e)return o.config.axisRange.min;t.addJob("getLowerLimitId"+g++,function(){"function"==typeof e&&e(o.config.axisRange.min)},c.priorityList.postRender)}},o.eiMethods.getUpperLimit=function(e){var t=this.apiInstance,o=t.getChildren("yAxis")[0];if(o){if(!e)return o.config.axisRange.max;t.addJob("getUpperLimitId"+g++,function(){"function"==typeof e&&e(o.config.axisRange.max)},c.priorityList.postRender)}},o}return p(t,e),t.prototype.getName=function(){return"DragBase"},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t),"DragNode"!==this.getName()&&this.getFromEnv("chartInstance").addEventListener("dataplotdragend",m)},t.prototype.mouseoutHandler=function(e,t,o){var a=this.config.datasetOrder||this.getDatasets(),r=this.getChildren("mouseTracker")[0];a[t]&&a[t].components.data[o]?a[t]._firePlotEvent(i.MOUSEOUT,o,e):this.getFromEnv("toolTipController").hideAll(),delete r._lastDatasetIndex,delete r._lastPointIndex},t.getName=function(){return"DragBase"},t.prototype._mouseEvtHandler=function(e,t){var o,a,r,n,l,s,c,u=this,p=t.mouseTracker,h=e.originalEvent,d=u.config.datasetOrder||u.getDatasets(),f=(0,i.getMouseCoordinate)(u.getFromEnv("chart-container"),h,u),g=f.chartX,m=f.chartY,v=!1,b=d.length,y=p._lastDatasetIndex,x=p._lastPointIndex;if(void 0!==x&&d[y]&&d[y].components.data[x]&&(s=d[y].components.data[x].config.dragStart),!s)for(;b--&&!v;)(o=d[b])&&o.getState("visible")&&(a=o._getHoveredPlot&&o._getHoveredPlot(g,m))&&a.hovered&&(v=!0,a.datasetIndex=b,l=p.getMouseEvents(e,a.datasetIndex,a.pointIndex));if(s&&void 0!==y&&(c=e.type===i.MOUSEOUT?i.MOUSEMOVE:e.type,d[y]&&d[y]._firePlotEvent&&d[y]._firePlotEvent(c,x,e)),!s&&(!v||l&&l.fireOut)&&void 0!==y&&d[y]&&d[y]._firePlotEvent&&(l&&!l.events.length?p.mouseoutTimer=setTimeout(function(){u.mouseoutHandler(e,y,x)},20):(u.mouseoutHandler(e,y,x),clearTimeout(p.mouseoutTimer))),v)for((n=l.events&&l.events.length)&&(p._lastDatasetIndex=a.datasetIndex,x=p._lastPointIndex=a.pointIndex),r=0;r<n;r+=1)o&&o._firePlotEvent&&o._firePlotEvent(l.events[r],x,e)},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t);var o,a=this.getFromEnv("dataSource").chart;(o=this.config).formAction=(0,i.getValidValue)(a.formaction),a.submitdataasxml!==i.ZEROSTRING||a.formdataformat||(a.formdataformat=h.csv().format),o.formDataFormat=(0,i.pluck)(a.formdataformat,h.xml().format),o.formTarget=(0,i.pluck)(a.formtarget,"_self"),o.formMethod=(0,i.pluck)(a.formmethod,"POST"),o.submitFormAsAjax=(0,i.pluckNumber)(a.submitformusingajax,1),o.restoreBtnTitle=(0,i.pluck)(a.restoretext,a.restorebtntitle,"Restore"),o.submitBtnTitle=(0,i.pluck)(a.submittext,a.formbtntitle,"Submit"),o.showFormBtn=(0,i.pluckNumber)(a.enablesubmit,a.showformbtn,1)&&o.formAction,o.showRestoreBtn=(0,i.pluckNumber)(a.enablerestore,a.showrestorebtn,1),o.formBtnTitle=(0,i.pluck)(a.formbtntitle,"Submit"),o.formBtnStyle={fontSize:o.style.outCanfontSize,fontFamily:o.style.outCanfontFamily,fontWeight:"bold"},o.restoreBtnWidth=(0,i.pluckNumber)(a.restorebtnwidth,0),o.allowAxisChange=(0,i.pluckNumber)(a.allowaxischange,1),a.toolbary||a.toolbarx?o.spaceHardCoded=!0:delete o.spaceHardCoded,o.drawTrendRegion=(0,i.pluckNumber)(a.drawcrossline,0)},t.prototype._storeIntialLimit=function(e,t){this.config.axisInitialLimit={min:e,max:t}},t.prototype._createToolBox=function(){e.prototype._createToolBox.call(this),this.addConfigureOptions()},t.prototype.addConfigureOptions=function(){var e,t,o=this,a=o.getFromEnv("chartMenuList"),r=o.config,n=r.allowAxisChange,i=r.submitBtnTitle,l=r.restoreBtnTitle,s=[{"Increase Upper Limit":{handler:function(){var e=o.getChildren("yAxis")[0].getLimit(),t=e.max,a=e.tickInterval;o.changeUpperLimits(t+a)},action:"click"}},{"Increase Lower Limit":{handler:function(){var e=o.getChildren("yAxis")[0].getLimit(),t=e.min,a=e.tickInterval;o.changeLowerLimits(t+a)},action:"click"}},{"Decrease Upper Limit":{handler:function(){var e=o.getChildren("yAxis")[0].getLimit(),t=e.max,a=e.tickInterval;o.changeUpperLimits(t-a)},action:"click"}},{"Decrease Lower Limit":{handler:function(){var e=o.getChildren("yAxis")[0].getLimit(),t=e.min,a=e.tickInterval;o.changeLowerLimits(t-a)},action:"click"}}];r.showFormBtn&&((t={})[i]={handler:function(){u.submitData.call(o)},action:"click"},s.push(t)),r.showRestoreBtn&&((e={})[l]={handler:function(){o.restoreData()},action:"click"},s.push(e)),n&&a.appendAsList(s)},t.prototype.restoreData=function(){var e=this.getChildren("yAxis")[0],t=this.getFromEnv("chart-attrib"),o=this.config.axisInitialLimit;this.iterateComponents(function(e){var t=void 0;(t=e.getChildren("dataset"))&&t.forEach(function(e){e.restore()})}),e.resetStoredLimits(),e.setAxisConfig({axisMaxValue:t.yaxismaxvalue,axisMinValue:t.yaxisminvalue}),e.setDataLimit(o.max,o.min),this.fireChartInstanceEvent("dataRestored",{}),this._manageInteractiveSpace()},t.prototype.changeLowerLimits=function(e){var t=this.getChildren("yAxis")[0],o=t.getLimit(),a=o.min,r=o.min,n=this.config,l=(0,i.safeMin)([n.yMin,t.getTrendLineLimits()[0]]),s=!1,c=n.allowAxisChange,u=o.max;return this.getFromEnv("animationManager").setAnimationState("update"),void 0!==e&&e<l&&e!==r&&c&&(a=e,s=!0),s&&(t.resetStoredLimits(),t.setAxisConfig({axisMaxValue:u,axisMinValue:a,showLowerLimit:!0}),t.setDataLimit(u,a),this._manageInteractiveSpace()),s},t.prototype.changeUpperLimits=function(e){var t,o=this.getChildren("yAxis")[0],a=o.getLimit(),r=a.min,n=a.max,l=this.config,s=(0,i.safeMax)([l.yMax,o.getTrendLineLimits()[1]]),c=!1,u=l.allowAxisChange;return this.getFromEnv("animationManager").setAnimationState("update"),void 0!==e&&e>s&&e!==n&&u&&(t=e,c=!0),c&&(o.resetStoredLimits(),o.setAxisConfig({axisMaxValue:t,axisMinValue:r,showUpperLimit:!0}),o.setDataLimit(t,r),this._manageInteractiveSpace()),c},t.prototype.getJSONData=function(){var e,t,o,a,r,n,l,s=this.getChildren("canvas")[0].getChildren("vCanvas")[0],c=this.getFromEnv("dataSource"),u=[];if(s.iterateComponents(function(t){"group"===t.getType()&&(e=t)}),e)u=e.getJSONData&&e.getJSONData();else for(n=(o=this.getDatasets()).length,r=0;r<n;r++)a={seriesname:(t=o[r]).config.seriesname,data:t.getJSONData().data},u.push(a);return(l=(0,i.extend2)({},c)).dataset=u,l},t}(n["default"]);b.prototype._manageInteractiveSpace=i._manageInteractiveSpace,t["default"]=b},486:function(e,t,o){"use strict";t.__esModule=!0,t.submitData=undefined;var a,r=o(166),n=(a=r)&&a.__esModule?a:{"default":a},i=o(125),l=o(118);var s=void 0,c=(0,i.getDepsByType)("transcoder");t.submitData=function(){var e,t,o,a,r,i=this,u=new n["default"],p=i.config,h=c.json(),d=c.csv&&c.csv()||"csv",f=c.xml(),g=p.formAction,m=i.getFromEnv("chartInstance"),v=p.submitFormAsAjax;p.formDataFormat===h.format?(e=h.format,i.getJSONData&&(t=JSON.stringify(i.getJSONData())),i.getCollatedData&&(t=JSON.stringify(i.getCollatedData()))):p.formDataFormat&&p.formDataFormat===d.format?(e=d.format,(t=i.getCSVString&&i.getCSVString())!==s&&""!==t||(i.getJSONData&&(t=d.fromJSON(i.getJSONData()).data),i.getCollatedData&&(t=d.fromJSON(i.getCollatedData()).data))):(e=f.format,i.getCollatedData&&(t=f.fromJSON(i.getCollatedData()).data),i.getJSONData&&(t=f.fromJSON(i.getJSONData()).data)),i.fireChartInstanceEvent("beforeDataSubmit",{data:t},s,function(){v?(u.onError=function(e,o,a,r){i.fireChartInstanceEvent("dataSubmitError",{xhrObject:o.xhr,url:r,statusText:e,httpStatus:o.xhr&&o.xhr.status?o.xhr.status:-1,data:t},[m.id,e,o.xhr&&o.xhr.status])},u.onSuccess=function(e,o,a,r){i.fireChartInstanceEvent("dataSubmitted",{xhrObject:u,response:e,url:r,data:t},[m.id,e])},(o={})["str"+e.toUpperCase()]=t,u.open&&u.abort(),u.post(g,o)):((a=window.document.createElement("span")).innerHTML='<form style="display:none" action="'+g+'" method="'+p.formMethod+'" target="'+p.formTarget+'"> <input type="hidden" name="strXML" value="'+(0,l.xssEncode)(t)+'"><input type="hidden" name="dataFormat" value="'+e.toUpperCase()+'" /></form>',r=a.removeChild(a.firstChild),window.document.body.appendChild(r),r.submit&&r.submit(),r.parentNode.removeChild(r),a=r=null)},function(){i.fireChartInstanceEvent("dataSubmitCancelled",{data:t})})}},487:function(e,t,o){"use strict";t.__esModule=!0,t.updateDataValue=t._restore=t._getJSONData=undefined;var a=l(o(331)),r=o(118),n=l(o(488)),i=o(125);function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c,u,p=r.preDefStr.setRolloverAttrStr,h=r.preDefStr.setRolloutAttrStr,d=r.preDefStr.DATAPLOTCLICK,f=r.hasSVG?"ns-resize":"n-resize",g=function(e,t){var o,a=t.getChildren("yAxis")[0],n=t.getFromEnv("chart-container"),i=this.data("eventArgs");o=(0,r.getMouseCoordinate)(n,e,t),i.value=a.getValue(o.chartY),this.data("eventArgs",i)};(0,i.addDep)({name:"dragColumnAnimation",type:"animationRule",extension:n["default"]});var m=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"dragColumn"},t.prototype.configureAttributes=function(t){var o=this.config,a=this.getFromEnv("chart-attrib"),n=o.JSONData;o.allowDrag=(0,r.pluckNumber)(n.allowdrag,1),o.allowNegDrag=(0,r.pluckNumber)(n.allownegativedrag,1),o.allowAxisChange=(0,r.pluckNumber)(a.allowaxischange,1),o.snapToDivOnly=(0,r.pluckNumber)(a.snaptodivonly,0),o.snapToDiv=o.snapToDivOnly?1:(0,r.pluckNumber)(a.snaptodiv,1),o.doNotSnap=(0,r.pluckNumber)(a.donotsnap,0),o.snapToDivRelaxation=(0,r.pluckNumber)(a.snaptodivrelaxation,10),o.doNotSnap&&(o.snapToDiv=o.snapToDivOnly=0),e.prototype.configureAttributes.call(this,t)},t.prototype._plotConfigure=function(t,o){var a=this.config,n=this.components.data,i=void 0;e.prototype._plotConfigure.call(this,t,o),(i=n[t].config).allowDrag=(0,r.pluckNumber)(o.allowdrag,a.allowDrag),i.allowNegDrag=(0,r.pluckNumber)(o.allownegativedrag,a.allowNegDrag)},t.prototype.drag=function(e,t,o,a){var n,i,l,s,c,u,d,m,v,b,y,x,w,k,C,N,S,E,A,T,D=this.config,L=this.getFromEnv("chart"),_=L.config,P=_.canvasTop,O=_.canvasBottom,V=this.getFromEnv("toolTipController"),M=this.getFromEnv("number-formatter"),F=this.components.data,I=this.getFromEnv("paper").canvas.style,B=this.getFromEnv("yAxis"),R=B.yBasePos,j=_.yaxisname,G={xaxisName:_.xaxisname,yaxisName:j},H=_.dragTolerance+1,W=D.JSONData,z=this.getFromEnv("chart-attrib"),U=_.useplotgradientcolor,J=_.useroundedges,K=this.getFromEnv("chart-container");switch(a=a||(0,r.getMouseCoordinate)(K,t),e){case"dragstart":i=(S=F[o]).config,n=S.graphics.element,u=S._yPos,m=S._height,l=i.setValue<0?u+m:u,T=i.allowDrag,y=a.chartY,T&&y>=l-H&&y<=l+H?(i.dragStart=!0,i._pointerDy=0,i._dragStartY=y,i._dragBuffer=l-y,S.startValue=i.setValue,S.name=D.seriesname,S.datasetIndex=D.index,S.dragged=!0):i.dragStart=!1;break;case"dragmove":(i=(S=F[o]).config).dragStart&&(n=S.graphics.element,k=i.plotIndex,b=i.allowNegDrag?O:R,y=a.chartY,i._rollOverResponseSetterFire=!1,I.cursor=f,i._pointerDy++,(y+=i._dragBuffer)<P?y=P:y>b&&(y=b),u=R<y?R:y,m=(0,r.mathAbs)(R-y),S._yPos=u,S._height=m,l=u>=R?u+m:u,i._y=s=i.setValue=B.getValue(l),c=M.dataLabels(s),i.toolTipValue=c,i.displayValue=(0,r.pluck)(i.setDisplayValue,c),U&&!J&&(i.colorArr[0].FCcolor.angle=d=u<R?90:270),n.attr({y:S._yPos,height:S._height,fill:(0,r.toRaphaelColor)(i.colorArr[0])}),this.parseLabelAttributes(S),this.drawLabel(k,k+1),S.graphics.element=n,V.hide(D.currentToolTip),1===i._pointerDy&&(C={dataIndex:o,datasetIndex:S.datasetIndex,startValue:S.startValue,datasetName:S.name},L.fireChartInstanceEvent("dataplotDragStart",C)));break;case"dragend":(i=(S=F[o]).config).dragStart&&(u=S._yPos,n=S.graphics.element,E=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(S.tooltext,W.plottooltext,z.plottooltext))),y=a.chartY,this.setMaxMin(S),C={dataIndex:o,datasetIndex:S.datasetIndex,startValue:S.startValue,endValue:i.setValue,datasetName:S.name},N=[L.getFromEnv("chartInstance").id,C.dataIndex,C.datasetIndex,C.datasetName,C.startValue,C.endValue],g.call(n,t,L),i._pointerDy&&(L.fireChartInstanceEvent("dataplotDragEnd",C),L.fireChartInstanceEvent("chartupdated",C,N)),U&&!J&&(d=u>=R?90:270,(v=n.data(p))&&v.fill&&((x=(x=v.fill).split("-"))[0]=d,v.fill=x.join("-")),(w=n.data(h))&&w.fill&&((x=(x=w.fill).split("-"))[0]=d,w.fill=x.join("-"))),i._dragBuffer=0,i._pointerDy=0,void 0!==E&&(G.formattedValue=i.toolTipValue,G.label=i.label,A=(0,r.parseTooltext)(E,[1,2,3,4,5,6,7],G,{value:i.toolTipValue},void 0,W),i.setTooltext=A,E=A,i.toolText=A),A=i.finalTooltext=!1!==i.toolText?i.toolText+(E?"":i.toolTipValue):"",y>=l-H&&y<=l+H||(I.cursor="default"),i.dragStart=!1)}},t.prototype._firePlotEvent=function(e,o,a){var n,i,l=this.getFromEnv("chart"),s=this.config,c=s.currentToolTip,u=this.getFromEnv("chartConfig"),p=u.drawTrendRegion,h=this.getFromEnv("paper").canvas.style,g=this.getFromEnv("toolTipController"),m=this.components.data[o],v=m.config,b=m.graphics.element,y=v.finalTooltext||v.toolText,x=a.originalEvent,w=(0,r.getMouseCoordinate)(this.getFromEnv("chart-container"),x).chartY,k=m._yPos,C=m._height,N=this.getFromEnv("yAxis").yBasePos,S=v.allowDrag,E=k,A=k+C;if(n=u.dragTolerance+1,i=k>=N?k+C:k,b)switch(e){case"fc-mouseover":w<=A-n&&w>=E+n&&!p&&y&&(c?g.draw(x,y,c):c=s.currentToolTip=g.draw(x,y)),!v._rollOverResponseSetterFire&&w<=A&&w>=E&&(t._rolloverResponseSetter(l,b,a,this),v._rollOverResponseSetterFire=!0);break;case"fc-mouseout":h.cursor="default",v._rollOverResponseSetterFire&&t._rolloutResponseSetter(l,b,a,this),v._rollOverResponseSetterFire=!1,g.hide(s.currentToolTip);break;case"fc-click":l.plotEventHandler(b,a,d);break;case"fc-mousemove":v.dragStart||(i=v.setValue<0?k+C:k,S&&w>=i-n&&w<=i+n?(h.cursor=f,g.hide(s.currentToolTip)):(h.cursor="default",v._rollOverResponseSetterFire&&!p&&y&&(c?g.draw(x,y,c):c=s.currentToolTip=g.draw(x,y))),!v._rollOverResponseSetterFire&&w<=A&&w>=E?(t._rolloverResponseSetter(l,b,a),v._rollOverResponseSetterFire=!0):!v._rollOverResponseSetterFire||w<=A&&w>=E||(g.hide(s.currentToolTip),v._rollOverResponseSetterFire=!1,t._rolloutResponseSetter(l,b,a,this)))}},t._rolloverResponseSetter=function(e,t,o,a){var r=t&&t.getData(),n=e.getFromEnv("animationManager");t&&0!==r.showHoverEffect&&!0!==r.draged&&t&&(n.setAnimationState("mouseOver"),n.setAnimation({el:t,label:"rect",component:a,attr:t.getData().setRolloverAttr}),e.plotEventHandler(t,o,"DataPlotRollOver"))},t._rolloutResponseSetter=function(e,t,o,a){var r=t&&t.getData(),n=e.getFromEnv("animationManager");t&&0!==r.showHoverEffect&&!0!==r.draged&&(n.setAnimationState("mouseOut"),n.setAnimation({el:t,label:"rect",component:a,attr:t.getData().setRolloutAttr}),e.plotEventHandler(t,o,"DataPlotRollOut"))},t.prototype.getJSONData=function(){var e,t,o,a,r,n=this.config.JSONData.data,i=this.components.data,l=[],s={};for(r=0,a=n.length;r<a;r++){for(o in t=n[r],e=i[r],s={},t)s[o]="value"===o?e.config.setValue:t[o];l.push(s)}return{data:l}},t.prototype.restore=function(){this.setData(this.config.JSONData,!0)},t}(a["default"]);t._getJSONData=c=m.prototype.getJSONData,t._restore=u=m.prototype.restore,t["default"]=m,t._getJSONData=c,t._restore=u,t.updateDataValue=g},488:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(332),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.dataset.dragColumn":n["default"]["initial.dataset.column"]}},489:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(402),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getJSONData=function(){var e,t,o,a,r=this.getFromEnv("dataSource").dataset,n=this.getChildren("dataset"),l=[],s=n.length;for(a=0;a<s;a++)e=n[a],delete(o=(0,i.extend2)({},r[a])).data,t=e.getJSONData(),l.push((0,i.extend2)(o,t));return l},t}(n["default"]);t["default"]=s},490:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o=e.config.allowAxisChange,a=e.getChildren("yAxis")[0],n=void 0;(0,r.componentFactory)(a,i["default"],"limitUpdater",o?1:0),(n=(t=a.getChildren("limitUpdater"))&&t[0])&&n.configure()};var a,r=o(118),n=o(491),i=(a=n)&&a.__esModule?a:{"default":a}},491:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(131)),r=i(o(120)),n=o(118);function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=13,c=27,u=void 0;function p(){this.justFocussed&&(this.justFocussed=!1,n.hasTouch||this.select())}function h(e,t,o){var a=u.getLinkedParent();if(e!==t+"")return o?a.changeUpperLimits&&a.changeUpperLimits(Number(e)):a.changeLowerLimits&&a.changeLowerLimits(Number(e))}function d(){var e,t={opacity:1,filter:"alpha(opacity=100)",color:(0,n.rgbaToHex)(this.axisLabel.attr("fill"))};for(e in t)this.style[e]=t[e];this.value=this.dataValue,this.justFocussed=!0,this.hasFocus=!0,this.axisLabel&&this.axisLabel.hide()}function f(){h(this.value,this.oldValue,this.isMaxLabel),this.style.opacity=0,this.style.filter="alpha(opacity=0)",this.axisLabel&&this.axisLabel.show(),n.isIE&&document.getElementsByTagName("body")[0].focus&&document.getElementsByTagName("body")[0].focus(),this.justFocussed=!1,this.hasFocus=!1}function g(e){var t=function(e){return"number"==typeof e.which?e.which:e.keyCode}(e.originalEvent),o=this.value,a=this.oldValue,n=this.isMaxLabel;t===s?!1===h(o,a,n)?this.style.color="#dd0000":r["default"].fire(this,"blur",e):t===c&&(this.value=a,r["default"].fire(this,"blur",e))}function m(e){return function(t){e.parentNode&&r["default"].fire(e,"blur",t)}}function v(e){return function(t){t.target!==e&&e.hasFocus&&r["default"].fire(e,"blur",t)}}function b(e,t){return function(){r["default"].unlisten(u.getLinkedParent(),"defaultprevented",t),e.parentNode.removeChild(e)}}function y(e,t){return function(){r["default"].unlisten(u.getLinkedParent().getLinkedItem("container"),"mousedown",t),e.parentNode.removeChild(e)}}var x=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.configureAttributes=function(){this.config.linkedAxis=this.getLinkedParent(),u=this.config.linkedAxis},t.prototype.getType=function(){return"helper"},t.prototype.getName=function(){return"limitUpdater"},t.prototype.draw=function(){var e=this.getFromEnv("chartConfig"),t=this.config.linkedAxis,o=t.getAxisConfig("extremeLabels"),a=t.getLimit(),i=this.getFromEnv("chart-container"),l=this.getFromEnv("style").inCanvasStyle,s=(0,n.extend2)({outline:"none","-webkit-appearance":"none",filter:"alpha(opacity=0)",position:"absolute",background:"transparent",border:"1px solid #cccccc",textAlign:"right",top:0,left:0,width:50,zIndex:20,opacity:0,borderRadius:0,display:"block"},l),c={max:{element:o.lastLabel.graphic,value:a.max},min:{element:o.firstLabel.graphic,value:a.min}},u=void 0,h=void 0,x=void 0,w=void 0,k=void 0,C=void 0,N=void 0,S=void 0,E=void 0,A=void 0,T=void 0,D=void 0;for(w in s.color=(0,n.hashify)(s.color),s.fontSize=s.fontSize+"px",c)if(c.hasOwnProperty(w)){if(C=(x=c[w].element)&&x.getBBox(),S=c[w].value,N="max"===w,h=w+"Input",u=this.getGraphicalElement(h),!C||!x){u&&(u.style.display="none");continue}for(k in u||(u=this.addGraphicalElement(h,(0,n.createElement)("input",{type:"text",value:S,id:"fc-updater-"+w},i))),r["default"].listen(u,["focus","mouseup","blur","keyup"],[d,p,f,g]),n.hasSVG?(r["default"].listen(i,"defaultprevented",E=m(u)),r["default"].listen(i,"destroy",b(u,E))):(r["default"].listen(i,"mousedown",D=v(u)),r["default"].listen(i,"destroy",y(u,D))),A=C.x+C.width-e.marginLeft,T=e.marginLeft,s.top=C.y+"px",s.left=T+"px",s.width=A+"px",s)s.hasOwnProperty(k)&&(u.style[k]=s[k]);u.dataValue=S,u.value=S,u.oldValue=S,u.name=S||"",u.axisLabel=x,u.isMaxLabel=N}},t.prototype.removingDraw=function(){var e=this.getGraphicalElement(),t=void 0,o=void 0;for(t in e)e.hasOwnProperty(t)&&((o=e[t])&&o.parentNode&&o.parentNode.removeChild(o),delete e[t])},t}(a["default"]);t["default"]=x},492:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){(0,i.componentFactory)(e,n["default"],"dragTracker"),e.getChildren("dragTracker")[0].addEvents()};var a,r=o(493),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118)},493:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(131),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){return function(t){for(var o=e.getFromEnv("chart"),a=o.config,r=e.config,n=a.datasetOrder||o.getDatasets(),l=(0,i.getMouseCoordinate)(o.getFromEnv("chart-container"),t,o),s=l.chartX,c=l.chartY,u=void 0,p=void 0,h=n.length,d=void 0;h--&&!u;)(d=n[h])&&d.getState("visible")&&(p=d._getHoveredPlot&&d._getHoveredPlot(s,c))&&p.hovered&&(u=!0,r.dragStart=!0,r.hoveredInfo=p,r.hoveredDS=d,d.drag("dragstart",t,p.pointIndex,l))}},c=function(e){return function(t){var o=e.config;o.dragStart&&o.hoveredDS.drag("dragmove",t,o.hoveredInfo.pointIndex)}},u=function(e){return function(t){var o=e.config;o.dragStart&&o.hoveredDS.drag("dragend",t,o.hoveredInfo.pointIndex),o.dragStart=!1}},p=["fc-dragstart","fc-dragmove","fc-dragend"],h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.config.eventCb={"fc-dragstart":s(o),"fc-dragmove":c(o),"fc-dragend":u(o)},o}return l(t,e),t.prototype.addEvents=function(){var e=this.getFromEnv("chart"),t=this.config.eventCb,o=e.getChildren("canvas");this.removeEvents(),o.forEach(function(e){p.forEach(function(o){e.addEventListener(o,t[o])})})},t.prototype.removeEvents=function(){var e=this.config.eventCb;this.getFromEnv("chart").getChildren("canvas").forEach(function(t){p.forEach(function(o){t.removeEventListener(o,e[o])})})},t.prototype._dispose=function(){this.removeEvents(),e.prototype._dispose.call(this)},t}(n["default"]);t["default"]=h},494:function(e,t,o){"use strict";t.__esModule=!0;var a=r(o(495));function r(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var i=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.defaultPlotShadow=1,o}return n(t,e),t.prototype.getName=function(){return"DragLine"},t.getName=function(){return"DragLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.isDrag=!0,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1},t.prototype.getDSdef=function(){return a["default"]},t}(r(o(499))["default"]);t["default"]=i},495:function(e,t,o){"use strict";t.__esModule=!0;var a=c(o(346)),r=o(496),n=o(118),i=o(487),l=o(125),s=c(o(498));function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}(0,l.addDep)({name:"dragLineAnimation",type:"animationRule",extension:s["default"]});var p=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return u(t,e),t.prototype._firePlotEvent=function(){r.__firePlotEvent.apply(this,arguments)},t.prototype.updateImage=function(e){r._updateImage.call(this,e)},t.prototype.drag=function(){r._drag.apply(this,arguments)},t.prototype.configureAttributes=function(){r.configurer.apply(this,arguments)},t.prototype._plotConfigure=function(t,o){var a=this.config,r=this.components.data,i=void 0;e.prototype._plotConfigure.call(this,t,o),(i=r[t].config).allowDrag=(0,n.pluckNumber)(o.allowdrag,a.allowDrag),i.allowNegDrag=(0,n.pluckNumber)(o.allownegativedrag,a.allowNegDrag)},t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"dragLine"},t.prototype.restore=function(){i._restore.call(this)},t.prototype.getJSONData=function(){return i._getJSONData.call(this)},t}(a["default"]);t["default"]=p},496:function(e,t,o){"use strict";t.__esModule=!0,t._drag=t._updateImage=t.configurer=t.__firePlotEvent=undefined;var a=s(o(347)),r=o(118),n=o(487),i=s(o(497)),l=o(125);function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u,p,h,d,f="DataPlotRollOut",g=r.hasSVG?"ns-resize":"n-resize",m=Math.min,v=Math.max;(0,l.addDep)({name:"dragAreaAnimation",type:"animationRule",extension:i["default"]});var b=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"dragArea"},t.prototype.configureAttributes=function(t){var o=this.config,a=this.getFromEnv("chart-attrib"),n=o.JSONData;o.allowDrag=(0,r.pluckNumber)(n.allowdrag,1),o.allowNegDrag=(0,r.pluckNumber)(n.allownegativedrag,1),o.allowAxisChange=(0,r.pluckNumber)(a.allowaxischange,1),o.snapToDivOnly=(0,r.pluckNumber)(a.snaptodivonly,0),o.doNotSnap=(0,r.pluckNumber)(a.donotsnap,0),o.snapToDiv=(0,r.pluckNumber)(a.snaptodiv,1),o.snapToDivRelaxation=(0,r.pluckNumber)(a.snaptodivrelaxation,10),o.doNotSnap&&(o.snapToDiv=o.snapToDivOnly=0),e.prototype.configureAttributes.call(this,t)},t.prototype._plotConfigure=function(t,o){var a=this.config,n=this.components.data,i=void 0;e.prototype._plotConfigure.call(this,t,o),(i=n[t].config).allowDrag=(0,r.pluckNumber)(o.allowdrag,a.allowDrag),i.allowNegDrag=(0,r.pluckNumber)(o.allownegativedrag,a.allowNegDrag)},t.updateImage=function(e){var t,o=e.graphics,a=o.image||o.element,n=e.config,i=n.anchorProps,l=n.hoverEffects,s=a&&a.data("imgRef"),c=i.imageScale,u=s.height*c*.01,p=s.width*c*.01,h=e._xPos,d=e._yPos,f=l.imageHoverScale,g=s.width*f*.01,v=s.height*f*.01,b=i.isAnchorRadius,y=i.radius=b?i.radius:m(p,u)/2,x=i.imagePadding,w=y-x-.5*i.borderThickness,k=l.radius-x-.5*l.anchorBorderThickness,C=i.symbol[1],N=(0,r.polyPathToPath)([C||2,h,d,k>0?k:0,l.startAngle,l.dip]),S=(0,r.polyPathToPath)([C||2,h,d,w>0?w:0,i.startAngle,0]),E={x:h-s.width*c*.005,y:d-s.height*c*.005,width:p,height:u,alpha:100};E["clip-path"]=S,(t={x:h-s.width*f*.005,y:d-s.height*f*.005,width:g,height:v,alpha:100})["clip-path"]=N,a.attr(E),a.data("setRolloverAttr",t),a.data("setRolloutAttr",E)},t.prototype.drag=function(e,o,a,i){var l=this.config,s=l.index,c=this.getFromEnv("chart"),u=c.config,p=u.canvasTop,h=u.canvasBottom,d=void 0,f=void 0,m=void 0,v=this.getFromEnv("toolTipController"),b=this.getFromEnv("number-formatter"),y=this.components.data,x=void 0,w=void 0,k=void 0,C=void 0,N=void 0,S=void 0,E=this.getFromEnv("paper").canvas.style,A=this.getFromEnv("yAxis"),T=void 0,D=u.yaxisname,L={xaxisName:u.xaxisname,yaxisName:D},_=void 0,P=this.getGraphicalElement().lineElement,O=void 0,V=u.dragTolerance+1,M=A.yBasePos,F=void 0,I=void 0,B=void 0,R=void 0,j=void 0,G=void 0,H=void 0,W=void 0,z=void 0,U=void 0,J=void 0,K=void 0,q=void 0,Y=void 0,X=this.getFromEnv("chart-attrib"),Q="dragLine"===this.getName(),Z=l.JSONData,$=this.getFromEnv("chart-container");switch(i=i||(0,r.getMouseCoordinate)($,o),e){case"dragstart":m=(d=y[a]).config,k=d._yPos,R=d._xPos,B=m.allowDrag,S=i.chartY,O=i.chartX,B&&S>=k-V&&S<=k+V&&O<=R+V&&O>=R-V?(m.dragStart=!0,m._pointerDy=0,m._dragStartY=S,m._dragBuffer=k-S,d.dragged=!0,d.startValue=m.setValue,d.name=l.seriesname,d.datasetIndex=l.index,T={dataIndex:NaN,datasetIndex:d.datasetIndex,startValue:d.startValue,datasetName:d.name},m.dragStart=!0):m.dragStart=!1;break;case"dragmove":(m=(d=y[a]).config).dragStart&&(S=i.chartY,m.allowDrag&&(E.cursor=g),f=d.graphics.element,m._pointerDy++,G=d.graphics.image,R=d._xPos,U=f,S+=m._dragBuffer,N=m.allowNegDrag?h:M,q=(_=m.anchorProps).startAngle||90,K=m.hoverEffects,J=m.hoverEffects&&m.hoverEffects.enabled,_.imageUrl,S<p?S=p:S>N&&(S=N),d._yPos=k=S,m._y=x=m.setValue=A.getValue(k),m._Py=A.getPixel(m._y),w=b.dataLabels(x),m.toolTipValue=w,m.displayValue=w,this.parseLabelAttributes(d,void 0),this.drawLabel(void 0,NaN),d.graphics.element=f,v.hide(l.currentToolTip),J&&(C=U.data("setRolloverAttr"))&&(C.path=(0,r.polyPathToPath)([K.anchorSides||2,R,k,K.anchorRadius,K.startAngle,K.dip])),J&&(j=U.data("setRolloutAttr"))&&(j.path=(0,r.polyPathToPath)([_.symbol[1]||2,R,k,_.radius,_.startAngle,m.dip||0])),U&&U.attr(j||{path:(0,r.polyPathToPath)([_.symbol[1]||2,R,k,_.radius,q,0])}),G&&t.updateImage(d),Q&&this.drawCommonElements(),P&&(l=this.config,H=m.pathStartIndex,W=m.pathEndIndex,z=m.lastPath,z=this.getLinePath(y,{begin:H,end:W}),P.attr({path:z.getPathArr()})),1===m._pointerDy&&(T={dataIndex:a,datasetIndex:s,startValue:d.startValue,datasetName:d.name},c.fireChartInstanceEvent("dataplotDragStart",T)));break;case"dragend":(m=(d=y[a]).config).dragStart&&(this.setMaxMin(d),T={dataIndex:a,datasetIndex:s,startValue:d.startValue,endValue:m.setValue,datasetName:d.name},Y=[c.getFromEnv("chartInstance").id,T.dataIndex,T.datasetIndex,T.datasetName,T.startValue,T.endValue],f&&n.updateDataValue.call(f,o,c),m._pointerDy&&(c.fireChartInstanceEvent("dataplotDragEnd",T),c.fireChartInstanceEvent("chartupdated",T,Y)),void 0!==(F=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(d.tooltext,Z.plottooltext,X.plottooltext))))&&(L.formattedValue=m.toolTipValue,L.label=m.label,I=(0,r.parseTooltext)(F,[1,2,3,4,5,6,7],L,{value:m.toolTipValue},void 0,Z),m.setTooltext=I,F=I,m.toolText=I),I=m.finalTooltext=!1!==m.toolText?F||m.toolText.substring(0,m.toolText.indexOf(m.formatedVal))+m.toolTipValue:"",S>=k-V&&S<=k+V&&O<=R+V&&O>=R-V||(E.cursor="default"),m._dragBuffer=0,m._pointerDy=0,m.dragStart=!1)}},t.prototype._firePlotEvent=function(e,t,o){var a,n,i,l,s,c,u,p,h,d,m,b,y,x=this.config,w=this.getFromEnv("chart"),k=this.getFromEnv("chartConfig").drawTrendRegion,C=this.getFromEnv("paper"),N=this.getFromEnv("toolTipController"),S=C.canvas.style,E=this.components.data[t],A=x.currentToolTip,T=o.originalEvent;if("touchend"===e&&(b=T.changedTouches[0],T.pageX=b&&b.pageX,T.pageY=b&&b.pageY),i=(n=(0,r.getMouseCoordinate)(w.getFromEnv("chart-container"),T)).chartY,l=n.chartX,E)switch(u=E.graphics.element,y=(m=E.config).anchorProps,h=m.finalTooltext,p=m.hoverEffects.enabled,d=m.eventArgs,s=E._yPos,c=E._xPos,m.dragTolerance=m.dragTolerance<y.markerRadius?y.markerRadius+.5:m.dragTolerance,a=v(m.dragTolerance,m.hoverEffects.anchorRadius||0)+1,e){case"fc-mouseover":m.allowDrag&&(S.cursor=g),m.dragStart||!h||m.dragStart||k||(A?N.draw(T,h,A):A=x.currentToolTip=N.draw(T,h)),m.dragStart||(p&&this._hoverPlotAnchor(E,"DataPlotRollOver"),u&&w.plotEventHandler(u,o,"DataPlotRollOver",d));break;case"fc-mouseout":S.cursor="default",p&&this._hoverPlotAnchor(E,f),u&&w.plotEventHandler(u,o,f,d),N.hide(x.currentToolTip);break;case"fc-mousemove":!m.dragStart&&h&&i>=s-a&&i<=s+a&&l<=c+a&&l>=c-a?(m.allowDrag&&(S.cursor=g),A?N.draw(T,h,A):A=x.currentToolTip=N.draw(T,h)):N.hide(x.currentToolTip);break;case"fc-click":u&&w.plotEventHandler(u,o,"dataplotclick",d)}},t.prototype.restore=function(){n._restore.call(this)},t.prototype.getJSONData=function(){return n._getJSONData.call(this)},t}(a["default"]);t._updateImage=u=b.prototype.updateImage,t.__firePlotEvent=h=b.prototype._firePlotEvent,t.configurer=p=b.prototype.configureAttributes,t._drag=d=b.prototype.drag,t.__firePlotEvent=h,t.configurer=p,t._updateImage=u,t._drag=d,t["default"]=b},497:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(348),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.dragArea":n["default"]["*.dataset.area"]}},498:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.dragLine":n["default"]["*.dataset.line"]}},499:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(483)),r=l(o(496)),n=o(118),i=o(428);function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getName=function(){return"DragArea"},t.getName=function(){return"DragArea"},t.prototype.getDSGroupdef=function(){},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;i._setDefaultConfig.call(this),t.isDrag=!0,t.anchoralpha=n.HUNDREDSTRING,t.enablemousetracking=!0,t.defaultcrosslinethickness=1},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=c},500:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(501)),r=i(o(504)),n=o(118);function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.getName=function(){return"Kagi"},t.prototype.getName=function(){return"Kagi"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Kagi Chart",t.singleseries=!0,t.hasLegend=!1,t.defaultDatasetType="kagi",t.setAdaptiveMin=!0,t.anchorborderthickness=1,t.anchorimageurl=void 0,t.anchorimagepadding=1,t.anchorsides=1,t.anchoralpha=void 0,t.anchorbgalpha="100",t.anchorimagealpha="100",t.anchorimagescale=100,t.anchorstartangle=90,t.anchorshadow=0,t.anchorbgcolor=void 0,t.anchorbordercolor=void 0,t.anchorradius=3,t.showvalues=1,t.plotfillalpha="70",t.linedashlen=5,t.linedashgap=4,t.linedashed=void 0,t.linealpha="100",t.linethickness=2,t.drawfullareaborder=1,t.connectnulldata=0,t.zeroplanethickness=1,t.enablemousetracking=!0,t.zeroplanealpha=40,t.showzeroplaneontop=0},t.prototype._getDataset=function(){var e=[];return this.iterateComponents(function(t){t.getType&&"dataset"===t.getType()&&e.push(t)}),e},t.prototype._postSpaceManagement=function(){var e,t=this.config,o=this.getChildren("xAxis")[0],a=this.getChildren("yAxis")[0],r=this.getChildren("canvas")[0],i=r.config,l=i.canvasBorderWidth,s=(0,n.pluckNumber)(i.canvasPadding,15),c=i.canvasPaddingTop,u=i.canvasPaddingBottom,p=i.canvasPaddingLeft,h=i.canvasPaddingRight,d=this.getFromEnv("dataSource").chart,f=this._getDataset()[0].config,g=f&&f.shiftCount,m=(0,n.pluckNumber)(o.getAxisConfig("axisMinValue"),0),v=(0,n.pluckNumber)(o.getAxisConfig("axisMaxValue"),g-1),b=this.config.canvasWidth,y=(0,n.pluckNumber)(d.maxhshiftpercent,10),x=b-2*s;a&&a.setAxisDimention({x:t.canvasLeft-l,y:t.canvasTop+c,opposite:t.canvasRight+l,axisLength:t.canvasHeight-c-u}),this._setPosition(),f&&(y=y<=0?10:y,e=f.xShiftLength=Math.min(x/g,y*x/100),v=Math.max(v,1)),r.setCanvasPadding(),o&&o.setAxisConfig({canvasPaddingLeft:Math.max(p,s)+e/2,canvasPaddingRight:Math.max(h,s)+e/2}),o&&o.setAxisDimention({x:this.config.canvasLeft+s+e/2,axisLength:e*(v-m),y:t.canvasBottom+(t.shift||0)+l,opposite:t.canvasTop-l})},t.prototype._setPosition=function(){var e,t,o,a,r,i,l,s,c=this.getFromEnv("dataSource"),u=this._getDataset()[0],p=c.data||u&&u[0]&&u[0].data,h=u.components.data,d=h&&h.length,f=this.getChildren("yAxis")[0],g=0,m=g,v=[];for(e=0;e<d;e++)o=(t=h[e].config).setValue,(c=h[e])||(c=h[e]={graphics:{}}),t.isDefined||(o=t.plotValue),o=(0,n.pluck)(t.plotValue,o),t.plotY=(0,n.toPrecision)(f.getPixel(t.setValue),2),t.graphY=o&&(0,n.toPrecision)(f.getPixel(o),2),t.plotX=m,t.isShift?(m=g+=1,p&&v.push(p[e])):e===d-1&&p&&v.push(p[e]),e&&(s=h[e-1].config,a=t&&t.objParams&&t.objParams.isRally,r=t&&t.objParams&&t.objParams.lastHigh,i=t&&t.objParams&&t.objParams.lastLow,l=t&&t.objParams&&t.objParams.isRallyInitialised,s&&l&&s.isRally!==t.isRally?(t.isChanged=!0,t.ty=(0,n.toPrecision)(f.getPixel(a?r:i),2)):t.isChanged=!1)},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=s},501:function(e,t,o){"use strict";t.__esModule=!0;var a=n(o(258)),r=n(o(502));function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return i(t,e),t.getName=function(){return"WaterFall2D"},t.prototype.getName=function(){return"WaterFall2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Waterfall Chart",t.singleseries=!0,t.hasLegend=!1,t.defaultDatasetType="Waterfall2D",t.enablemousetracking=!0},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=l},502:function(e,t,o){"use strict";t.__esModule=!0;var a=o(118),r=o(122),n=s(o(331)),i=o(125),l=s(o(503));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}(0,i.addDep)({name:"waterFall2DAnimation",type:"animationRule",extension:l["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"waterFall2D"},t.prototype.configure=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,n,i,l,s,c,u,p,h,d,f,g,m,v,b,y,x,w,k,C,N,S,E,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H,W,z,U,J,K,q,Y,X,Q,Z,$,ee,te,oe,ae,re,ne,ie,le,se=this.getFromEnv("chart"),ce=this.config,ue=this.config.JSONData,pe=ue.data,he=pe&&pe.length,de=this.getFromEnv("xAxis").getTicksLen(),fe=Math.min(de,he),ge=se.getFromEnv("dataSource").chart,me=this.getFromEnv("color-manager"),ve=this.index||this.positionIndex,be=me.getPlotColor(ve),ye=(0,a.pluckNumber)(ue.dashed,ge.plotborderdashed),xe=(0,a.pluckNumber)(ge.useplotgradientcolor,1),we=(0,a.pluckNumber)(ge.showtooltip,1),ke=(0,a.parseUnsafeString)(ge.yaxisname),Ce=(0,a.parseUnsafeString)(ge.xaxisname),Ne=(0,a.parseUnsafeString)((0,a.pluck)(ge.tooltipsepchar,", ")),Se=this.components.data,Ee=this.getFromEnv("number-formatter"),Ae={},Te=Ae.dataObj||(Ae.dataObj={}),De=Te.chart||(Te.chart={}),Le=(0,a.pluck)(ge.connectorthickness,1),_e=-Infinity,Pe=Infinity,Oe=0,Ve=0,Me=0;for(this.setState("visible",1===(0,a.pluckNumber)(ue.visible,!Number(ue.initiallyhidden),1)),n=ce.showplotborder=(0,a.pluckNumber)(ge.showplotborder,1),ce.plotBorderThickness=d=n?(0,a.pluckNumber)(ge.plotborderthickness,1):0,ce.isRoundEdges=f=(0,a.pluckNumber)(ge.useroundedges,0),ce.plotBorderAlpha=x=n?(0,a.pluck)(ge.plotborderalpha,v,"100"):0,ce.plotBorderColor=w=(0,a.pluck)(ge.plotbordercolor,me.getColor("plotBorderColor").split(",")[0]),ce.plotgradientcolor=y=xe?(0,a.getDefinedColor)(ge.plotgradientcolor,me.getColor("plotGradientColor")):"",ce.plotDashLen=p=(0,a.pluckNumber)(ge.plotborderdashlen,6),ce.plotDashGap=h=(0,a.pluckNumber)(ge.plotborderdashgap,3),ce.use3DLighting=(0,a.pluckNumber)(ge.use3dlighting,1),ce.showSum=X=(0,a.pluckNumber)(ge.showsumatend,1),ce.plotColor=be=(0,a.pluck)(ue.color,be),ce.plotfillAngle=m=(0,a.pluckNumber)(360-ge.plotfillangle,90),ce.showShadow=f?(0,a.pluckNumber)(ge.showshadow,1):(0,a.pluckNumber)(ge.showshadow,me.getColor("showShadow")),ce.showHoverEffect=g=(0,a.pluckNumber)(ge.plothovereffect,ge.showhovereffect,void 0),ce.plotFillAlpha=v=(0,a.pluck)(ue.alpha,ge.plotfillalpha,"100"),ce.plotRadius=(0,a.pluckNumber)(ge.useRoundEdges,ce.isRoundEdges?1:0),ce.plotFillRatio=b=(0,a.pluck)(ue.ratio,ge.plotfillratio),ce.plotBorderDashStyle=C=ye?(0,a.getDashStyle)(p,h):"none",ce.showValues=(0,a.pluckNumber)(ue.showvalues,ge.showvalues,1),ce.valuePadding=(0,a.pluckNumber)(ge.valuepadding,2),ce.enableAnimation=z=(0,a.pluckNumber)(ge.animation,ge.defaultanimation,1),ce.animation=!!z&&{duration:1e3*(0,a.pluckNumber)(ge.animationduration,1)},De.transposeAnimation=ce.transposeAnimation=(0,a.pluckNumber)(ge.transposeanimation,De.transposeAnimation,z),ce.transposeAnimDuration=1e3*(0,a.pluckNumber)(ge.transposeanimduration,.2),ce.showTooltip=(0,a.pluckNumber)(ge.showtooltip,1),ce.stack100Percent=(0,a.pluckNumber)(se.stack100percent,ge.stack100percent,0),ce.definedGroupPadding=Math.max((0,a.pluckNumber)(ge.plotspacepercent),0),ce.plotSpacePercent=Math.max((0,a.pluckNumber)(ge.plotspacepercent,20)%100,0),ce.maxColWidth=(0,a.pluckNumber)(ge.maxcolwidth,50),ce.showPercentValues=(0,a.pluckNumber)(ge.showpercentvalues,0),ce.showPercentInToolTip=(0,a.pluckNumber)(ge.showpercentintooltip,0),ce.plotPaddingPercent=(0,a.pluckNumber)(ge.plotpaddingpercent),ce.rotateValues=(0,a.pluckNumber)(ge.rotatevalues)?270:0,ce.placeValuesInside=(0,a.pluckNumber)(ge.placevaluesinside,0),ce.parentYAxis=U="s"===(0,a.pluck)(ue.parentyaxis&&ue.parentyaxis.toLowerCase(),"p")?1:0,ce.defaultPadding={left:.5,right:.5},this.setState("dirty",!0),Se||(Se=this.components.data=[]),ce.zLine=oe={step:!0,data:[],dashStyle:"1"===ge.connectordashed?(0,a.getDashStyle)((0,a.pluckNumber)(ge.connectordashlen,2),(0,a.pluckNumber)(ge.connectordashgap,2)):"none",useForwardSteps:!0,color:(0,r.convertColor)((0,a.pluck)(ge.connectorcolor,"000000"),(0,a.pluck)(ge.connectoralpha,100)),lineWidth:Le},Y=0;Y<fe;Y+=1)N=pe[Y],$=Ee.getCleanValue(N.value),te=(0,a.pluckNumber)(N.issum,0),N.vline||te?delete N._value:(Oe+=$,N._value=$);for(ee=Ee.dataLabels(Oe),X&&(X=!0,fe+=1,ne={label:(0,a.getFirstValue)(ge.sumlabel,"Total"),_value:Oe,value:Oe,issum:1,cumulative:1}),Y=0,ie=0;Y<fe;Y+=1)N=pe[Y],A=(E=Se[Y])&&E.config,E||(E=Se[Y]={graphics:{}}),E.config||(A=Se[Y].config={}),!N&&X&&(N=pe[Y]=ne),be=(0,a.pluck)(N.color,me.getPlotColor(Y)),E.vline||($=N._value,delete N._value,A.issum=te=(0,a.pluckNumber)(N.issum,0),re=A.isCumulative=(0,a.pluckNumber)(N.cumulative,1),te?($=re?Ve:Ve===Me?Ve:Ve-Me,A.lastComTotal=Me,Me=Ve,oe.data.push({y:null,x:ie-.5})):Ve+=$,_e=Math.max(_e,Ve),Pe=Math.min(Pe,Ve),A.total=Ve,Z=A.showLabel=(0,a.pluckNumber)(N.showlabel,ge.showlabels,1),Q=A.dataLabel=(0,a.parseUnsafeString)(Z?(0,a.getFirstValue)(N.label,N.name):""),$>0?(ae=(0,a.pluck)(N.color,ge.positivecolor,be),0!==g&&(D=(0,a.pluck)(N.positivehovercolor,ge.positivehovercolor,ge.plotfillhovercolor,ge.columnhovercolor,ae))):(ae=(0,a.pluck)(N.color,ge.negativecolor,be),0!==g&&(D=(0,a.pluck)(N.negativehovercolor,ge.negativehovercolor,ge.plotfillhovercolor,ge.columnhovercolor,ae))),le=$<0?360-m:m,v=(0,a.pluck)(N.alpha,ce.plotFillAlpha),J=(0,a.pluckNumber)(N.dashed,ye),K=(0,a.pluckNumber)(N.dashlen,p),q=h=(0,a.pluckNumber)(N.dashgap,h),A.showValue=(0,a.pluckNumber)(N.showvalue,ce.showValues),A.setValue=S=$,A.setLink=(0,a.pluck)(N.link),A.toolTipValue=H=Ee.dataLabels(S,U),A.setDisplayValue=W=(0,a.getValidValue)((0,a.parseUnsafeString)(N.displayvalue)),A.displayValue=(0,a.pluck)(W,H),A.plotBorderDashStyle=k=1===J?(0,a.getDashStyle)(K,q):0===J?"none":C,A.shadow={opacity:ce.showShadow?v/100:0},A.colorArr=T=(0,r.getColumnColor)(ae+","+y.replace(/,+?$/,""),v,b,le,f,w,x.toString(),0,!1),0!==g&&(L=(0,a.pluck)(N.alpha,N.hoveralpha,ue.hoveralpha,ge.plotfillhoveralpha,ge.columnhoveralpha,v),!(_=(0,a.pluck)(N.hovergradientcolor,ue.hovergradientcolor,ge.plothovergradientcolor,y))&&(_=""),P=(0,a.pluck)(N.hoverratio,ue.hoverratio,N.ratio,ge.plothoverratio,b),O=(0,a.pluckNumber)(360-N.hoverangle,360-ue.hoverangle,360-ge.plothoverangle,le),V=(0,a.pluck)(N.borderhovercolor,ue.borderhovercolor,ge.plotborderhovercolor,w),M=(0,a.pluck)(N.borderhoveralpha,ue.borderhoveralpha,ge.plotborderhoveralpha,x,v),F=(0,a.pluckNumber)(N.borderhoverthickness,ue.borderhoverthickness,ge.plotborderhoverthickness,d),I=(0,a.pluckNumber)(N.borderhoverdashed,ue.borderhoverdashed,ge.plotborderhoverdashed),B=(0,a.pluckNumber)(N.borderhoverdashgap,ue.borderhoverdashgap,ge.plotborderhoverdashgap,p),R=(0,a.pluckNumber)(N.borderhoverdashlen,ue.borderhoverdashlen,ge.plotborderhoverdashlen,h),j=I?(0,a.getDashStyle)(R,B):k,1===g&&D===be&&(D=(0,r.getLightColor)(D,70)),G=(0,r.getColumnColor)(D+","+_,L,P,O,f,V,M.toString(),0,!1),A.setRolloutAttr={fill:(0,a.toRaphaelColor)(T[0]),stroke:n&&(0,a.toRaphaelColor)(T[1]),"stroke-width":d,"stroke-dasharray":k},A.setRolloverAttr={fill:(0,a.toRaphaelColor)(G[0]),stroke:n&&(0,a.toRaphaelColor)(G[1]),"stroke-width":F,"stroke-dasharray":j}),i=A.toolTipValue,A.origToolText=s=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(N.tooltext,ue.plottooltext,ge.plottooltext))),we?void 0!==s?(c=[1,2,3,5,6,7,20,21,24,25],l={formattedValue:i,label:Q,yaxisName:ke,xaxisName:Ce,cumulativeValue:Ve,cumulativeDataValue:Ee.dataLabels(Ve),sum:ee,unformattedSum:Oe},u=(0,a.parseTooltext)(s,c,l,N,ge,ue)):u=null!==i&&(""!==Q?Q+Ne:""):u=!1,oe.data.push({y:null===$?null:Ve,x:ie}),ie+=1,A.originalPlotColor=be,A.toolText=u,A.setTooltext=u,A._x=Y,A._y=S);for(ce.maxValue=_e,ce.minValue=Pe,ce.connectNullData=(0,a.pluckNumber)(ge.connectnulldata,0),ce.showConnectors=(0,a.pluckNumber)(ge.showconnectors,1),t=ue.catData,Y=0;Y<t.length;Y+=1)o=t[Y],pe.splice(o.index,0,o.data);this.getFromEnv("xAxis").setTickValues(pe),this.config.maxminFlag=!1},t.prototype.createCoordinates=function(){var e,t,o,a,r,n,i,l,s=this.components.data,c=this.getFromEnv("chart").isBar,u=this.getFromEnv("yAxis"),p=this.getFromEnv("xAxis"),h=u.getAxisBase(),d=u.getPixel(h),f=p.config.isVertical,g=this.getFromEnv("chartConfig"),m=g.xDepth||0,v=g.yDepth||0,b=s.length,y=this.components,x=this.groupManager,w=x&&x.stackConf,k=y.data;for(!c&&(m=-m),c&&(v=-v),a=0;a<b;a++)t=(e=k[a])&&e.config,void 0!==e&&(l=t._y,t.issum?t.isCumulative?o=null:(o=t.lastComTotal,l+=t.lastComTotal):(o=k[a-1]&&k[a-1].config.total)&&(l+=o),r=p.getPixel(w&&w[a].x||t._x)+m,n=u.getPixel(l)+v,i=(o?u.getPixel(o):d)+v,f?(t._Px=n,t._Py=r,t._Pby=r,t._Pbx=i):(t._Px=r,t._Py=n,t._Pby=i,t._Pbx=r))},t.prototype.getDataLimits=function(){var e,t,o=this.components.data,a=this.config,r=o.length,n=-Infinity,i=+Infinity;for(e=0;e<r;e++)o[e]&&void 0!==(t=o[e].config.total)&&(n=Math.max(n,t),i=Math.min(i,t));return a.maxValue=n,a.minValue=i,{max:a.maxValue,min:a.minValue}},t.prototype.drawPlots=function(t){e.prototype.drawPlots.call(this,t),this.config.showConnectors?this.drawLine():this.getContainer("commonElemsGroup").hide()},t.prototype.drawLine=function(){var e,t,o,r,n,i,l,s,c=this.config,u=this.getFromEnv("xAxis"),p=this.getFromEnv("yAxis"),h=p.getAxisBase(),d=p.getPixel(h),f=this.getContainer("commonElemsGroup"),g=this.getFromEnv("columnWidth")/2,m=this.getFromEnv("animationManager"),v=c.zLine,b=c.connectNullData,y=v.data,x=y.length,w=this._graphics,k=v.dashStyle,C=v.color,N=v.lineWidth,S=w.zLine,E=null,A=[],T=[];for(p.yBasePos=d,f.toFront().show(),e=0;e<x;e+=1)null===(n=(r=y[e]).y)?(T.length=0,0===b&&(E=null)):(i=(0,a.pluckNumber)(r.x,e),t=p.getPixel(n),o=u.getPixel(i),o=(0,a.getCrispValue)(o,N,N).position,t=(0,a.getCrispValue)(t,N,N).position,null!==E?(T.length&&(A=A.concat(T),T.length=0),A.push("M",l,E,"m",-g,0,"H",o,"h",g,"m",0,t-E)):T.push("M",o,t),l=o,E=t);s=m.setAnimation({el:S||"path",attr:{path:A,"stroke-linecap":"round","stroke-opacity":1,"stroke-dasharray":k,stroke:C,"stroke-linejoin":N>=2?"round":"miter","stroke-width":N},container:f,component:this,label:"path"}),S||this.addGraphicalElement("zLine",s)},t}(n["default"]);t["default"]=u},503:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(332),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.dataset.waterFall2D":n["default"]["initial.dataset.column"]}},504:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(346)),r=o(118),n=o(125),i=l(o(505));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c=function(e){return void 0!==e&&null!==e},u="M",p=r.hasTouch?r.TOUCH_THRESHOLD_PIXELS:r.CLICK_THRESHOLD_PIXELS;(0,n.addDep)({name:"kagiAnimation",type:"animationRule",extension:i["default"]});var h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.manageSpace=function(){},o.drawCommonElements=function(){},o}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"kagi"},t.prototype._parseShadowOptions=function(){var e=this.getFromEnv("chart"),t=this.config,o=e.getFromEnv("dataSource").chart;return{opacity:(0,r.pluckNumber)(o.showshadow,1)?t.alpha/100:0}},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t);var o,a,n,i,l,s,u,p,h,d,f,g,m,v,b,y,x,w,k,C,N,S,E,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H=this.getFromEnv("chart"),W=this.getFromEnv("xAxis"),z=0,U=[],J=0;for(o=this.components,n=o.data,i=this.config,l=this.config.JSONData.data,s=H.getFromEnv("dataSource").chart,u=i.maxValue,p=i.minValue,a=o.removeDataArr||(o.removeDataArr=[]),h=!1,d=0,f=(0,r.pluckNumber)(s.reversalvalue,-1),g=(0,r.pluckNumber)(s.reversalpercentage,5),C=0;C<n.length;C+=1)n[C].config.__nullCount=J,null===n[C].config.setValue&&(a.push(n.splice(C,1)[0]),J++,C-=1);if(n.length){for(i.rallyColor=(0,r.pluck)(s.rallycolor,"FF0000"),i.rallyAlpha=(0,r.pluckNumber)(s.rallyalpha,s.linealpha,100),i.declineColor=(0,r.pluck)(s.declinecolor,"0000FF"),i.declineAlpha=(0,r.pluckNumber)(s.declinealpha,s.linealpha,100),i.canvasPadding=(0,r.pluckNumber)(s.canvaspadding,15),i.maxHShiftPercent=(0,r.pluckNumber)(s.maxhshiftpercent,10),i.rallyThickness=(0,r.pluckNumber)(s.rallythickness,s.linethickness,2),m=(0,r.pluckNumber)(s.rallydashlen,s.linedashlen,5),v=(0,r.pluckNumber)(s.rallydashgap,s.linedashgap,4),i.declineThickness=(0,r.pluckNumber)(s.declinethickness,s.linethickness,2),b=(0,r.pluckNumber)(s.declinedashlen,s.linedashlen,5),y=(0,r.pluckNumber)(s.declinedashgap,s.linedashgap,4),i.lineDashed={"true":(0,r.pluckNumber)(s.rallydashed,s.linedashed,0),"false":(0,r.pluckNumber)(s.declinedashed,s.linedashed,0)},i.rallyDashed=(0,r.pluckNumber)(s.rallydashed,s.linedashed,0)?(0,r.getDashStyle)(m,v):"none",i.declineDashed=(0,r.pluckNumber)(s.declinedashed,s.linedashed,0)?(0,r.getDashStyle)(b,y):"none",i.canvasPadding=(0,r.pluckNumber)(s.canvaspadding,this.canvasPadding,15),f=f>0?f:g*(u-p)/100,x=n[0].config.setValue,w=function(e,t){for(var o,a=1,r=n[0].config.setValue;a<e;)o=n[a].config.setValue,t?o<=r&&(n[a].config.isDefined=!1):o>=r&&(n[a].config.isDefined=!1),a+=1;n[0].config.vAlign=t?"bottom":"top",n[0].config.align="center"},k=l.length,C=0,N=0;N<k;N+=1,C+=1)if((!(S=l[N])||!S.vline)&&(D=n[C]&&n[C].config,E&&(E=!1),D&&(D.isDefined=!0),C&&D)){if(D.isShift=void 0,A=n[C-1].config,D.vAlign="middle",D.align="right",D.showLabel=!1,T=null,P=D.setValue,L=n[C+1]&&n[C+1].config.setValue,_=Math.abs(x-P),h?P<V&&O?O=!1:P>M&&!O&&(O=!0):(P>x&&_>f?(V=x,M=null,F=!0,h=!0,w(C,O=!0)):P<x&&_>f?(V=null,M=x,F=!1,h=!0,w(C,O=!1)):(O=null,F=null,h=!1),c(A)&&(A.isRally=O),null!==O&&(n[0].config.isRally=O)),D.isRally=O,(F&&P<x||!F&&P>x)&&(T=x),B=T||P,_=Math.abs(B-L),I=null===F?null:F?B>L&&_>=f:B<L&&_>=f,A&&A.isShift)for(F?(V=x,j="bottom"):F||(M=x,j="top"),G="center",R=C;R>1;R-=1)if(n[R].y==x){n[R].vAlign=j,n[R].align=G,n[R].showLabel=!0;break}I?(d+=1,E=!0,F=!F,D.isShift=!0,x=B,U.push(l[C+D.__nullCount]),z=this._appendCategory(z,C,U,0)):F&&P>x||!F&&P<x?x=P:T=x,D.plotValue=T,D.objParams={isRally:O,lastHigh:M,lastLow:V,isRallyInitialised:h}}this._appendCategory(z,C,U,1),U.push(S),W.setTickValues(U),i.shiftCount=d+1}},t.prototype._appendCategory=function(e,t,o,a){var n,i,l,s,c=this.config.JSONData.catData;if(e<c.length)for(n=e;n<c.length;e=n+=1){if(l=(i=c[n]).data,(s=i.index-(n+1))<t)l.lineposition=(0,r.pluckNumber)(l.lineposition,a);else if(s>t)break;o.push(l)}return e},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i,l,s=this.getFromEnv("xAxis"),c=this.config,u=c.trackIndex,p=this.components.data,h=p.length;for(e+=s.getTranslation(),i=Math.floor(Math.max(s.getValue(e-c.maxRadius),0)),a=Math.ceil(Math.min(s.getValue(e+c.maxRadius),h-1));a>=i;a--)for(o=h=(l=u[a])&&l.length;o>=0;o--)if(r=l[o],n=this.isWithinShape(p[r],r,e,t))return n},t.prototype.getClip=function(e){var t=this.getFromEnv("chart").getChildren("canvas")[0].config,o=[t.canvasLeft,t.canvasTop,0,t.canvasTop+t.canvasHeight];return o[2]+="init"===e?0:t.canvasLeft+t.canvasWidth,o},t.prototype.parsePlotAttributes=function(e,t){var o,a,n,i,l,s,c,u=t,h=void 0,d=this.config.JSONData,f=this.config,g=this.getFromEnv("xAxis"),m=void 0,v=this.components.data,b=void 0,y=void 0,x=void 0,w=void 0,k=void 0,C={},N=void 0,S=this.getState("visible"),E=void 0;e=e.config,N=(b=v[u]).config,h=e.trackerConfig={},k=N.hoverEffects,l=N.setValue,s=N.displayValue,o=b._xPos=g.getPixel(e.plotX),a=b._yPos=e.plotY,b._index=e.plotX,c=(C=N.anchorProps).symbol,n=e.finalTooltext=e.toolText,i=N.setLink,void 0!==a&&!isNaN(a)&&e.isDefined&&((m=e.eventArgs=e.eventArgs||{}).index=u,m.link=i,m.value=l,m.displayValue=s,m.categoryLabel=N.label,m.toolText=n,m.id=f.userID,m.datasetIndex=0,m.datasetName=d.seriesname,m.visible=S,y=x={},C.imageUrl&&(N.anchorImageLoaded=!1),E={path:(0,r.polyPathToPath)([c[1]||2,o,a,C.radius,C.startAngle,0]),fill:(0,r.toRaphaelColor)({color:C.bgColor,alpha:C.bgAlpha}),stroke:(0,r.toRaphaelColor)({color:C.borderColor,alpha:C.borderAlpha}),"stroke-width":C.borderThickness,visibility:C.radius?S:"hidden"},w=Math.max(C.radius,k&&k.anchorRadius||0,p)+C.borderThickness/2,h.trackerRadius=w,k.enabled&&(x={path:(0,r.polyPathToPath)([k.anchorSides||2,o,a,k.anchorRadius,k.startAngle,k.dip]),fill:(0,r.toRaphaelColor)({color:k.anchorColor,alpha:k.anchorBgAlpha}),stroke:(0,r.toRaphaelColor)({color:k.anchorBorderColor,alpha:k.anchorBorderAlpha}),"stroke-width":k.anchorBorderThickness},y={path:(0,r.polyPathToPath)([C.sides,o,a,C.radius,C.startAngle,0]),fill:(0,r.toRaphaelColor)({color:C.bgColor,alpha:C.bgAlpha}),stroke:(0,r.toRaphaelColor)({color:C.borderColor,alpha:C.borderAlpha}),"stroke-width":C.borderThickness},k.attrs={hoverEnabled:k.enabled,anchorRadius:C.radius,anchorHoverRadius:k.anchorRadius},k.attrs.setRolloverAttr=x,k.attrs.setRolloutAttr=y,C.isAnchorHoverRadius=k.attrs.anchorRadius)),e.props={element:{attr:E}}},t.prototype.parseLabelAttributes=function(e,t){var o,a,r,n,i,l,s,u,p,h,d,f,g,m,v,b,y,x,w=this.getFromEnv("chart"),k=w.config,C=this.getFromEnv("smartLabel"),N=w.config.dataLabelStyle,S=k.rotatevalues?270:0,E=k.canvasTop,A=E+k.canvasHeight,T={},D={},L=t,_=this.components.data.length;y=(d=e&&e.config)&&d.setValue,void 0!==e&&void 0!==y&&null!==y&&!0!==d.labelSkip?(t>0&&(D={x:this.components.data[L-1]._xPos,y:this.components.data[L-1]._yPos}),t<_-1&&(T={x:this.components.data[L+1]._xPos,y:this.components.data[L+1]._yPos}),h=d.anchorProps,n=e.graphics,m=e._yPos||e.config._Py,g=e._xPos||e.config._Px,b=n.element?n.image&&.5*n.element.attr("height")||h.radius-3:0,a=k.valuepadding+2+b,o=d.displayValue,v=d.showValue,c(o)&&""!==o&&v&&(x={text:o,fill:N.color,"text-bound":[N.backgroundColor,N.borderColor,N.borderThickness,N.borderPadding,N.borderRadius,N.borderDash]},r=C.getOriSize(o),S?(d._state={labelWidth:r.height,labelHeight:r.width},d._rotated=!0):(d._state={labelWidth:r.width,labelHeight:r.height},d._rotated=!1),i=l=S?r.width:r.height,i+=a,p=.5*l+a,s=m,u=g,i+=4,f=Number(S)>=1?r.height:r.width,d._valueBelowPoint=0,T.y>s?D.y<s?u-=a+3+.5*f:m-i<E?(u-=a+3+.5*f,s=E+i/2):s-=p:D.y>s?u-=a+3+.5*f:m+i>A?(u-=a+3+.5*f,s=A-i/2):(s+=p+2,d._valueBelowPoint=1),x.x=u,x.y=s),d.props=d.props||{},d.props.label={attr:x}):d&&delete d.labelSkip},t.prototype.allocatePosition=function(){var e,t=void 0,o=this,a=o.config,n=o.components.data,i=n&&n.length,l=o.getFromEnv("xAxis"),s=o.components.data,c=void 0,p=void 0,h=l.getPixel(0),d=l.getPixel(1)-h,f={"true":a.rallyThickness,"false":a.declineThickness},g=void 0,m=void 0,v=l.getPixel(0),b=n[0]&&!!n[0].isRally,y=void 0,x=h-d/2,w=void 0,k=void 0,C=void 0;if(a.imagesLoaded=0,n.length){if(g=a.rallyPath=[],m=a.declinePath=[],s=o.components.data=s||[],n[0].config.setValue)w=n[0].config.plotY;else for(t=1;t<i;t+=1)if(n[t].config.setValue){w=n[t].config.plotY;break}for(b=!!n[0].config.isRally,e=Math.round(w)+f[b]%2/2,b?g.push(u,x,e,"H",v):m.push(u,x,e,"H",v),(0,r.fcEach)(n,function(e,t){e=e.config,c=s[t],p=c.config,p.setValue,(k=n[t+1]&&n[t+1].config||{})&&(C=[u,v,w],b=e.isRally,e.isShift&&(v+=d,w=e.graphY,C.push("H",v),C[2]=Math.round(C[2])+f[b]%2/2,C=C.toString(),b?g.push(C):m.push(C),C=[u,v,w]),k.isChanged&&(w=k.ty,C.push("V",w),C[1]=Math.round(C[1])+f[!!b]%2/2,C=C.toString(),b?g.push(C):m.push(C),C=[u,v,w]),y=k.isRally,k.graphY!==C[2]&&void 0!==k.graphY&&(C.push("V",k.graphY),C[1]=Math.round(C[1])+f[!!y]%2/2,C=C.toString(),y?g.push(C):m.push(C)),k.graphY&&(w=k.graphY)),o.parsePlotAttributes(c,t)}),t=0;t<n.length;t++)o.parseLabelAttributes(s[t],t)}},t.prototype.drawPlots=function(){var e=void 0,t=this,o=t.getGraphicalElement(),a=t.getFromEnv("animationManager"),n=t.config,i=n.trackIndex={},l=t.components.data,s=void 0,c=void 0,u=t.components.data,p=void 0,h=void 0,d=n.shadow,f=void 0,g={},m=void 0,v=n.rallyThickness,b=n.declineThickness,y={stroke:(0,r.toRaphaelColor)({color:n.rallyColor,alpha:n.rallyAlpha}),"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":v,"stroke-dasharray":n.rallyDashed},x={stroke:(0,r.toRaphaelColor)({color:n.declineColor,alpha:n.declineAlpha}),"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":b,"stroke-dasharray":n.declineDashed},w=o.rallyElem,k=void 0,C=o.declineElem,N=void 0,S=void 0,E=t.getContainer("commonElemsGroup"),A=t.getContainer("plotGroup"),T=t.getContainer("shadowGroup"),D=void 0;if(!l.length)return k&&k.hide(),void(N&&N.hide());k&&k.show(),N&&N.show(),(0,r.fcEach)(l,function(o,r){o=o.config,p=u[r],m=p.config,e=p.graphics,D=e.image,h=m.hoverEffects,s=p._yPos,i[o.plotX]||(i[o.plotX]=[]),i[o.plotX].push(r),p._index=o.plotX,g=m.anchorProps,f=g.shadow,void 0!==s&&!isNaN(s)&&o.isDefined?(g.imageUrl?t.drawAnchorImage(p):(D&&D.hide(),c=e.element,S=o.props.element.attr,(c=e.element=a.setAnimation({el:c||"path",attr:S,container:A,component:t,label:"anchor"})).show().shadow(f,T).data("anchorRadius",g.radius).data("anchorHoverRadius",h.anchorRadius).data("hoverEnabled",h.enabled).data("eventArgs",o.eventArgs)),h.enabled&&c&&c.data("anchorRadius",g.radius).data("anchorHoverRadius",h.anchorRadius).data("hoverEnabled",h.enabled).data("setRolloverAttr",h.attrs.setRolloverAttr).data("setRolloutAttr",h.attrs.setRolloutAttr).data("eventArgs",o.eventArgs)):(e.element&&e.element.hide(),D&&D.hide())}),y.path=n.rallyPath,(k=a.setAnimation({el:w||"path",attr:y,container:E,component:t,label:"line"})).shadow(v&&d,T),w||t.addGraphicalElement("rallyElem",k),x.path=n.declinePath,(N=a.setAnimation({el:C||"path",attr:x,container:E,component:t,label:"line"})).shadow(b&&d,T),C||t.addGraphicalElement("declineElem",N)},t}(a["default"]);t["default"]=h},505:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.kagi":n["default"]["*.dataset.line"]}},506:function(e,t,o){"use strict";(function(e){t.__esModule=!0;var a=o(118),r=c(o(414)),n=c(o(507)),i=o(125),l=o(486),s=c(o(231));function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var p=(0,i.getDep)("redraphael","plugin"),h=",",d="config",f="rgba(192,192,192,"+(a.isIE?.002:1e-6)+")",g="visible",m="hidden",v="round",b="pointer",y=Math.PI/180,x="M",w="L",k="t";(0,s["default"])(p),p.addSymbol({resizeIcon:function(e,t,o){var r,n=(0,a.pluckNumber)(o,15)/3,i=[];for(n<0&&(e+=(o=-o)-(n=-n)/2,t+=o-n/2),r=3;r>0;r-=1)i.push(x,e-n*r,t-3,w,e-3,t-n*r);return i},closeIcon:function(e,t,o){var a=e,r=t,n=1.3*o,i=43*y,l=48*y,s=a+n*Math.cos(i),c=r+n*Math.sin(i),u=.71*(o-2),p=.71*(o-2),h=function(e,t,o,a,r,n){return["A",o,a,0,n,r,e,t]}(a+n*Math.cos(l),r+n*Math.sin(l),n,n,0,1);return[x,s,c].concat(h).concat([x,e+u,t-p,w,e-u,t+p,x,e-u,t-p,w,e+u,t+p])},configureIcon:function(e,t,o){var a=.25,r=.71*(o-=1),n=.71*(o+2),i=e-o,l=t-o,s=e+o,c=t+o,u=e+.5,p=t+.5,h=e-.5,d=t-.5,f=i-2,g=l-2,m=s+2,v=c+2,b=e+r,y=t+r,k=e-r,C=t-r,N=e+n,S=t+n,E=e-n,A=t-n;return[x,i,p,w,f,p,f,d,i,d,k-a,C+a,E-a,A+a,E+a,A-a,k+a,C-a,h,l,h,g,u,g,u,l,b-a,C-a,N-a,A-a,N+a,A+a,b+a,C+a,s,d,m,d,m,p,s,p,b+a,y-a,N+a,S-a,N-a,S+a,b-a,y+a,u,c,u,v,h,v,h,c,k+a,y+a,E+a,S+a,E-a,S-a,k-a,y-a,"Z"]},axisIcon:function(e,t,o){var a=.33*(o-=1),r=o/2,n=e-o,i=t-o,l=e+r,s=t+o,c=e-r,u=t+a,p=t-a;return[x,n,i,w,l,i,l,s,n,s,x,c,u,w,l,u,x,c,p,w,l,p]},loggerIcon:function(e,t,o){var a=(e-=o-=1)+2*o,r=e+2,n=a-2,i=(t-=o)+2,l=i+o,s=l+2;return[x,e,t,w,a,t,a,i,n,i,n,l,a,l,a,s,e,s,e,l,r,l,r,i,e,i,e,t]}});var C=function(t){function o(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);var e=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,t.call(this));return e.isXY=!0,e.defaultZeroPlaneHighlighted=!1,e.eiMethods={getData:function(e){var t=this.apiInstance;return t&&t.getData(e)},restoreData:function(){var e=this.apiInstance;return e&&e.restoreData()},submitData:function(){var e=this.apiInstance;return e&&e.submitData()}},e}return u(o,t),o.getName=function(){return"SelectScatter"},o.prototype.parseChartAttr=function(e){t.prototype.parseChartAttr.call(this,e),this.config.formBtnTitle=(0,a.pluck)(e.chart.submittext,e.chart.formbtntitle,"Submit"),this.config.restoreBtnTitle=(0,a.pluck)(e.chart.restoretext,e.chart.restorebtntitle,"Restore")},o.prototype.getName=function(){return"SelectScatter"},o.prototype.configureAttributes=function(e){var o=this.getFromEnv("chart").config,r=this.getFromEnv("dataSource").chart||{};o.formAction=(0,a.getValidValue)(r.formaction),o.enableSubmit=(0,a.pluckNumber)(r.enablesubmit,r.showformbtn,1)&&o.formAction,o.enableRestore=(0,a.pluckNumber)(r.enablerestore,r.showrestorebtn,1),t.prototype.configureAttributes.call(this,e)},o.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="Dragable Scatter Chart",e.hasLegend=!0,e.defaultDatasetType="selectScatter",e.allowreversexaxis=!0,e.enablemousetracking=!0},o.prototype._createToolBox=function(){var e;t.prototype._createToolBox.call(this);var o=this,a=o.getFromEnv("chartConfig"),r=o.getFromEnv("chartMenuList"),n=[];if(a.enableRestore&&n.push(((e={})[a.restoreBtnTitle]={handler:function(){o.restoreData()},action:"click"},e)),a.enableSubmit){var i={};i[a.formBtnTitle]={handler:function(){l.submitData.call(o)},action:"click"},n.push(i)}r.appendAsList(n)},o.prototype.getData=function(t){var o,r,n,i=this.getCollatedData(),l=[],s=i.dataset,c=s&&s.length||0,u=0,p=0;if(t)l=/^json$/gi.test(t)?i:/^csv$/gi.test(t)?this.getCSVString():e.core.transcodeData(i,"json",t);else for(;u<c;u+=1)if(r=s[u]){for((n=o=(r=s[u]&&s[u].data)&&r.length||0)&&(l[p]||(l[p]=[(0,a.getValidValue)(s[u].id,"null")]));n--;)l[p][n+1]=(0,a.getValidValue)(r[n].id,"null");o&&(p+=1)}return l},o.prototype.getCSVString=function(){for(var e=this.getData(),t=e.length;t--;)e[t]=e[t].join(h);return e.join("|")},o.prototype.getCollatedData=function(e){var t,o,r,n,i,l,s,c,u,p,h,d=this.getDatasets(),f=this.config._selectEleArr,g=f&&f.length||0,m=e||this.getFromEnv("dataSource"),v=(0,a.extend2)({},m),b=v.dataset,y=b&&b.length,x=!1,w=[];if(!g||!y)return m;for(;g--;)if(n=f[g])for(c=n.startX,u=n.endX,p=n.startY,h=n.endY,i=y;i--;)if(d[i].getState("visible"))for(w[i]||(w[i]={data:[]}),s=(r=b[i].data)&&r.length;s--;)t=(l=r[s]).x,o=l.y,t>c&&t<u&&o<p&&o>h&&(w[i].data[s]=x=!0);for(;y--;)for(s=(r=b[y].data)&&r.length;s--;)w[y]&&w[y].data[s]||r.splice(s,1);return x?v:m},o.prototype.createSelectionBox=function(e){(function(e){var t,o=e.chart,r=o.getFromEnv("paper"),n=o.config,i=o.getChildren("yAxis")[0],l=o.getChildren("xAxis")[0],s=e.selectionLeft,c=e.selectionTop,u=e.selectionWidth,p=e.selectionHeight,y=s+u,x=c+p,w=u>15&&p>15,C={resizeEleRadius:15,canvasTop:n.canvasTop,canvasRight:n.canvasLeft+n.canvasWidth,canvasLeft:n.canvasLeft,canvasBottom:n.canvasTop+n.canvasHeight},N=o.getChildContainer("trackerGroup"),S=n._selectEleArr||(n._selectEleArr=[]);C.index=S.length,C.id="SELECT_"+C.index,C.selectBoxG=t=r.group("selection-box",N).toFront(),C.selectBoxTracker=r.rect(s,c,u,p,t).attr({"stroke-width":1,stroke:(0,a.toRaphaelColor)(n.selectBorderColor),fill:n.selectFillColor}).css({cursor:"move"}),C.selectBoxTracker.node._isTrackerElem=!0,C.selectBoxTracker.data(d,{position:6,selectEleObj:C,chart:o,xChange:!0,yChange:!0}),C.topTracker=r.rect(s,c-6,u,12,t).attr({"stroke-width":0,fill:f}).css("cursor",a.hasSVG?"ns-resize":"n-resize"),C.topTracker.node._isTrackerElem=!0,C.topTracker.data(d,{position:1,selectEleObj:C,yChange:!0,chart:o}),C.rightTracker=r.rect(s+u-6,c,12,p,t).attr({"stroke-width":0,fill:f}).css("cursor",a.hasSVG?"ew-resize":"w-resize"),C.rightTracker.node._isTrackerElem=!0,C.rightTracker.data(d,{position:2,chart:o,selectEleObj:C,xChange:!0}),C.bottomTracker=r.rect(s,c+p-6,u,12,t).attr({"stroke-width":0,fill:f}).css("cursor",a.hasSVG?"ns-resize":"n-resize"),C.bottomTracker.node._isTrackerElem=!0,C.bottomTracker.data(d,{position:3,chart:o,selectEleObj:C,yChange:!0}),C.leftTracker=r.rect(s-6,c,12,p,t).attr({"stroke-width":0,fill:f}).css("cursor",a.hasSVG?"ew-resize":"e-resize"),C.leftTracker.node._isTrackerElem=!0,C.leftTracker.data(d,{position:4,chart:o,selectEleObj:C,xChange:!0}),C.cornerInnerSymbol=r.symbol("resizeIcon",0,0,15,t).attr({transform:k+y+h+x,"stroke-width":1,visibility:w?g:m,stroke:"#999999"}),C.cornerInnerSymbol.node._isTrackerElem=!0,C.cornerOuterSymbol=r.symbol("resizeIcon",0,0,-12,t).attr({transform:k+y+h+x,strokeWidth:1,visibility:w?m:g,stroke:"#777777"}),C.cornerOuterSymbol.node._isTrackerElem=!0,C.resizeTracker=r.circle(y,x,12,t).attr({"stroke-width":1,stroke:f,fill:f}).css("cursor",a.hasSVG?"nwse-resize":"nw-resize"),C.resizeTracker.node._isTrackerElem=!0,C.resizeTracker.data(d,{position:5,chart:o,selectEleObj:C,yChange:!0,xChange:!0}),C.closeButton=r.symbol("closeIcon",0,0,6,t).attr({transform:"t"+y+h+c,"stroke-width":2,stroke:n.selectionCancelButtonBorderColor,fill:n.selectionCancelButtonFillColor,"stroke-linecap":v,"stroke-linejoin":v}).css({cursor:b,_cursor:"hand"}).on("fc-click",function(){o.deleteSelection(this,o)}),C.closeButton.node._isTrackerElem=!0,C.closeButton.data(d,{chart:o,index:C.index}),C.startX=l.getValue(s),C.startY=i.getValue(c),C.endX=l.getValue(y),C.endY=i.getValue(x),C.isVisible=!0,S.push(C),o.bindDragEvent(C)}).call(this,e)},o.prototype._deleteAllSelection=function(){var e,t,o,a,r,n=this.config._selectEleArr;if(n){for(t=0,o=n.length;t<o;t++)for(r in e=n[t])e.hasOwnProperty(r)&&((a=e[r]).remove&&a.remove(),delete e[r]);delete this.config._selectEleArr}},o.prototype.deleteSelection=function(e,t){(function(e,t){var o,a,r,n,i,l=e.data(d).index,s=t.config._selectEleArr,c=t.getChildren("xAxis")[0],u=t.getChildren("yAxis")[0];for(r in i={selectionLeft:(n=(o=s.find(function(e){return e.index===l})).selectBoxTracker.getBBox()).x,selectionTop:n.y,selectionWidth:n.width,selectionHeight:n.height,startXValue:c.getValue(n.x,1),startYValue:u.getValue(n.y,1),endXValue:c.getValue(n.x+n.width,1),endYValue:u.getValue(n.y+n.height,1),data:t.getCollatedData(),id:o.id},o)o.hasOwnProperty(r)&&((a=o[r]).remove&&a.remove(),delete o[r]);s=s.filter(function(e){return Object.keys(e).length}),t.fireChartInstanceEvent("selectionRemoved",i)}).call(this,e,t)},o.prototype.bindDragEvent=function(e){var t;for(t in e)/Tracker/.test(t)&&e[t].drag(this.move,this.start,this.up)},o.prototype.start=function(){var e=this.data(d).selectEleObj,t=e.topTracker,o=e.rightTracker,a=e.bottomTracker,r=e.leftTracker,n=e.resizeTracker,i=t.data(d),l=o.data(d),s=a.data(d),c=r.data(d),u=n.data(d),p=e.selectBoxTracker.data(d),h=e.selectBoxTracker.getBBox();i.ox=h.x,i.oy=h.y,l.ox=h.x2,l.oy=h.y,s.ox=h.x,s.oy=h.y2,c.ox=h.x,c.oy=h.y,i.ox=h.x,i.oy=h.y,u.ox=h.x2,u.oy=h.y2,p.ox=h.x,p.oy=h.y,p.ow=h.width,p.oh=h.height,p.ox2=h.x2,p.oy2=h.y2,e.selectBoxG.toFront(),t.hide(),o.hide(),a.hide(),r.hide(),n.hide(),this.show()},o.prototype.move=function(e){var t,o,a,r,n=this.data(d),i=n.selectEleObj,l=n.chart,s=i.topTracker,c=i.rightTracker,u=i.bottomTracker,p=i.leftTracker,h=i.resizeTracker,f=i.selectBoxTracker,g=i.canvasLeft,m=i.canvasRight,v=i.canvasTop,b=i.canvasBottom,y=l.getChildren("xAxis")[0],x=l.getChildren("yAxis")[0],w=f.data(d),k={},C=e.data[0],N=e.data[1];switch(C=n.xChange?C:0,N=n.yChange?N:0,a=C+n.ox,r=N+n.oy,a=Math.min(m-(n.ow||0),Math.max(a,g)),r=Math.min(b-(n.oh||0),Math.max(r,v)),n.position){case 1:k.y=Math.min(w.oy2,r),k.height=Math.abs(w.oy2-r)||1,s.attr({y:r+-6});break;case 2:k.x=Math.min(w.ox,a),k.width=Math.abs(w.ox-a)||1,c.attr({x:a+-6});break;case 3:k.y=Math.min(w.oy,r),k.height=Math.abs(w.oy-r)||1,u.attr({y:r+-6});break;case 4:k.x=Math.min(w.ox2,a),k.width=Math.abs(w.ox2-a)||1,p.attr({x:a+-6});break;case 5:k.x=Math.min(w.ox,a),k.width=Math.abs(w.ox-a)||1,k.y=Math.min(w.oy,r),k.height=Math.abs(w.oy-r)||1,h.attr({cx:a,cy:r});break;default:k.x=a,k.y=r}this.data("dragStarted")||(o={selectionLeft:(t=f.getBBox()).x,selectionTop:t.y,selectionWidth:t.width,selectionHeight:t.height,startXValue:y.getValue(t.x),startYValue:x.getValue(t.y),endXValue:y.getValue(t.x+t.width),endYValue:x.getValue(t.y+t.height),id:i.id},l.fireChartInstanceEvent("BeforeSelectionUpdate",o),this.data("dragStarted",1)),f.animate(k),i.isVisible&&(i.closeButton.hide(),i.cornerInnerSymbol.hide(),i.cornerOuterSymbol.hide(),i.isVisible=!1)},o.prototype.up=function(){var e,t,o=this,a=o.data(d),r=a.selectEleObj,n=a.chart,i=n.getChildren("xAxis")[0],l=n.getChildren("yAxis")[0],s=r.topTracker,c=r.rightTracker,u=r.bottomTracker,p=r.leftTracker,f=r.resizeTracker,g=r.selectBoxTracker;setTimeout(function(){e=g.getBBox(),r.startX=i.getValue(e.x),r.startY=l.getValue(e.y),r.endX=i.getValue(e.x2),r.endY=l.getValue(e.y2),s.attr({x:e.x,y:e.y+-6,width:e.width}),c.attr({x:e.x2+-6,y:e.y,height:e.height}),u.attr({x:e.x,y:e.y2+-6,width:e.width}),p.attr({x:e.x+-6,y:e.y,height:e.height}),f.attr({cx:e.x2,cy:e.y2}),r.closeButton.transform(k+e.x2+h+e.y),r.cornerInnerSymbol.transform(k+e.x2+h+e.y2),r.cornerOuterSymbol.transform(k+e.x2+h+e.y2),r.closeButton.show(),e.width<15||e.height<15?(r.cornerInnerSymbol.hide(),r.cornerOuterSymbol.show()):(r.cornerInnerSymbol.show(),r.cornerOuterSymbol.hide()),r.isVisible=!0,s.show(),c.show(),u.show(),p.show(),f.show(),o.data("dragStarted")&&(t={selectionLeft:e.x,selectionTop:e.y,selectionWidth:e.width,selectionHeight:e.height,startXValue:i.getValue(e.x),startYValue:l.getValue(e.y),endXValue:i.getValue(e.x+e.width),endYValue:l.getValue(e.y+e.height),data:n.getCollatedData(),id:r.id},n.fireChartInstanceEvent("SelectionUpdated",t),o.data("dragStarted",0))},100)},o.prototype.restoreData=function(){var e,t=[];for(this.iterateComponents(function(e){e.getType&&"dataset"===e.getType()&&t.push(e)}),this._deleteAllSelection(),e=0;e<t.length;e++)t[e].asyncDraw();return this.fireChartInstanceEvent("dataRestored",{}),!0},o.prototype._postSpaceManagement=function(){t.prototype._postSpaceManagement.call(this),this._deleteAllSelection()},o.prototype.getDSdef=function(){return n["default"]},o.prototype.getDSGroupdef=function(){},o}(r["default"]);t["default"]=C}).call(this,o(111))},507:function(e,t,o){"use strict";t.__esModule=!0;var a=c(o(418)),r=o(118),n=o(122),i=o(125),l=c(o(508)),s=o(125);function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var p=r.preDefStr.altHGridColorStr,h=r.preDefStr.altHGridAlphaStr;(0,s.addDep)({name:"selectScatterAnimation",type:"animationRule",extension:l["default"]});var d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return u(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"selectScatter"},t.prototype.configure=function(t){e.prototype.configure.call(this,t);var o=this.getFromEnv("chart"),a=o.config,l=o.getFromEnv("dataSource").chart,s=this.getFromEnv("color-manager"),c=(0,r.pluck)(l.selectbordercolor,s.getColor("canvasBorderColor")),u=(0,r.pluckNumber)(l.selectborderalpha,s.getColor("canvasBorderAlpha"));a.selectBorderColor={FCcolor:{color:c,alpha:u}},a.selectFillColor=(0,n.convertColor)((0,r.pluck)(l.selectfillcolor,s.getColor(p)),(0,r.pluckNumber)(l.selectfillalpha,s.getColor(h))),a.selectionCancelButtonBorderColor=(0,n.convertColor)((0,r.pluck)(l.selectioncancelbuttonbordercolor,c),(0,r.pluckNumber)(l.selectioncancelbuttonborderalpha,u)),a.selectionCancelButtonFillColor=(0,n.convertColor)((0,r.pluck)(l.selectioncancelbuttonfillcolor,"FFFFFF"),(0,r.pluckNumber)(l.selectioncancelbuttonfillalpha,100)),a.connativeZoom=!1,a.zoomType="xy",l.submitdataasxml!==r.ZEROSTRING||l.formdataformat||(l.formdataformat=(0,i.getDepsByType)("transcoder").csv&&"csv"),a.formDataFormat=(0,r.pluck)(l.formdataformat),a.formTarget=(0,r.pluck)(l.formtarget,"_self"),a.formMethod=(0,r.pluck)(l.formmethod,"POST"),a.submitFormAsAjax=(0,r.pluckNumber)(l.submitformusingajax,1)},t.prototype.draw=function(){e.prototype.draw.call(this);var t=this.getFromEnv("chart"),o=t.getFromEnv("chart-container"),a=this.getFromEnv("xAxis"),n=this.getFromEnv("yAxis");(0,r.bindSelectionEvent)(t,{selectionStart:function(e){var t=(0,r.getMouseCoordinate)(o,e.originalEvent),i=(0,r.extend2)({selectionLeft:e.selectionLeft,selectionTop:e.selectionTop,selectionWidth:e.selectionWidth,selectionHeight:e.selectionHeight,startXValue:a.getValue(e.selectionLeft,1),startYValue:n.getValue(e.selectionTop,1)},t);e.chart.fireChartInstanceEvent("selectionStart",i)},selectionEnd:function(e){var t=(0,r.getMouseCoordinate)(o,e.originalEvent),i=(0,r.extend2)({selectionLeft:e.selectionLeft,selectionTop:e.selectionTop,selectionWidth:e.selectionWidth,selectionHeight:e.selectionHeight,startXValue:a.getValue(e.selectionLeft,1),startYValue:n.getValue(e.selectionTop,1),endXValue:a.getValue(e.selectionLeft+e.selectionWidth,1),endYValue:n.getValue(e.selectionTop+e.selectionHeight,1)},t);e.chart.fireChartInstanceEvent("selectionEnd",i),e.chart.createSelectionBox(e)}})},t}(a["default"]);t["default"]=d},508:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.selectScatter":n["default"]["*.dataset.line"]}},509:function(e,t,o){"use strict";t.__esModule=!0;var a=n(o(261)),r=n(o(510));function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.defaultPaletteOptions=null,o.registerFactory("dataset",r["default"],["canvas"]),o}return i(t,e),t.getName=function(){return"MultilevelPie"},t.prototype.getName=function(){return"MultilevelPie"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.is3D=!1,t.friendlyName="Multi-level Pie Chart",t.hasLegend=!1,t.defaultDatasetType="multiLevelPie",t.valuefontbold=0,t.skipCanvasDrawing=!0},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource").category,t=e&&e[0]&&e[0].category;if(!e||!t||!Array.isArray(t))return!0},t.prototype._spaceManager=function(){var e,t=this.config;this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*t.availableHeight)||{}),e=.7*t.canvasHeight,this._manageChartMenuBar(e)},t}(a["default"]);t["default"]=l},510:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o,a=e.getFromEnv("dataSource"),n=void 0,l={};o=(t=e.config.categories=a.category||[]).length,!n&&o&&(l=t,n=o),o?(0,r.datasetFactory)(e,i["default"],"dataset",n,[l]):e.setChartMessage()};var a,r=o(118),n=o(511),i=(a=n)&&a.__esModule?a:{"default":a}},511:function(e,t,o){"use strict";t.__esModule=!0;var a=u(o(369)),r=o(118),n=o(122),i=o(125),l=u(o(512)),s=o(129),c=u(o(211));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=(0,i.getDep)("redraphael","plugin"),d=/^[0-9]+\%?$|^([0-9]+[.][0-9]+)\%?$/;(0,i.addDep)({name:"multilevelpieAnimation",type:"animationRule",extension:l["default"]}),(0,c["default"])(h);var f=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.components={data:[]},o.graphics={},o}return p(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"multiLevelPie"},t.prototype.configureAttributes=function(e){if(!e)return!1;this.config.JSONData=e;var t,o,a,i=this.getFromEnv("chart"),l=i.config,s=this.config||(this.config={}),c=s.dataLabelOptions||(s.dataLabelOptions={}),u=s.piePlotOptions,p=i.config.style,h=this.config.JSONData,f=i.getFromEnv("dataSource").chart,g=s.enableAnimation=(0,r.pluckNumber)(f.animation,f.defaultanimation,1),m=(0,r.pluckNumber)(-f.centerangle,180),v=(0,r.pluckNumber)(f.totalangle,360),b=function(e,t){for(var o=this.data("plotItem");e.graphics.element;)e.graphics.element.attr({fill:"mouseover"===t?s.hoverFillColor:(e.config||o).color}),e=e.config.parent},y=function w(e,t){var o,a=this.data("plotItem");for(e.graphics.element.attr({fill:"mouseover"===t?s.hoverFillColor:(e.config||a).color}),o=0;o<(e.components.data&&e.components.data.length);o++)w.call(this,e.components.data[o],t)},x=function(e){if(s.useHoverColor){var t=this.data("plotItem"),o=t.selfRef;s.highlightParentPieSlices||s.highlightChildPieSlices?!s.highlightParentPieSlices&&s.highlightChildPieSlices?y.call(this,o,e):s.highlightParentPieSlices&&!s.highlightChildPieSlices?b.call(this,o,e):s.highlightParentPieSlices&&s.highlightChildPieSlices&&(b.call(this,o,e),y.call(this,o,e)):o.graphics.element.attr({fill:"mouseover"===e?s.hoverFillColor:(o.config||t).color})}};s.animation=!!g&&{duration:1e3*(0,r.pluckNumber)(f.animationduration,f.moveduration,1)},s.showShadow=(0,r.pluckNumber)(f.showshadow,0),s.useHoverColor=Boolean((0,r.pluckNumber)(f.usehovercolor,1)),s.hoverFillColor=(0,n.convertColor)((0,r.pluck)(f.hoverfillcolor,"FF5904"),(0,r.pluckNumber)(f.hoverfillalpha,100)),t=(t=(0,r.getFirstValue)(f.valuebordercolor,""))?(0,n.convertColor)(t,(0,r.pluckNumber)(f.valueborderalpha,f.valuebgalpha,f.valuealpha,100)):"",!c.style&&(c.style={fontFamily:(0,r.pluck)(f.valuefont,p.fontFamily),fontSize:(0,r.pluckNumber)(f.valuefontsize,(o=p.fontSize,a=10,parseInt(o,a||10)))+"px",color:(0,n.convertColor)((0,r.pluck)(f.valuefontcolor,p.color),(0,r.pluckNumber)(f.valuefontalpha,f.valuealpha,100)),fontWeight:(0,r.pluckNumber)(f.valuefontbold)?"bold":"normal",fontStyle:(0,r.pluckNumber)(f.valuefontitalic)?"italic":"normal",backgroundColor:f.valuebgcolor?(0,n.convertColor)(f.valuebgcolor,(0,r.pluckNumber)(f.valuebgalpha,f.valuealpha,100)):"",border:t||f.valuebgcolor?(0,r.pluckNumber)(f.valueborderthickness,1)+"px solid":"",borderPadding:(0,r.pluckNumber)(f.valueborderpadding,2),borderThickness:(0,r.pluckNumber)(f.valueborderthickness,p.borderThickness,1),borderRadius:(0,r.pluckNumber)(f.valueborderradius,p.borderRadius,0),borderColor:t,borderDash:(0,r.pluckNumber)(f.valueborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(f.valueborderdashlen,4),(0,r.pluckNumber)(f.valueborderdashgap,2)):"none"}),!u&&(u=s.piePlotOptions={}),u.allowPointSelect=!1,s.borderColor=(0,n.convertColor)((0,r.pluck)(f.plotbordercolor,f.piebordercolor,"FFFFFF"),f.showplotborder!=r.ZEROSTRING?(0,r.pluck)(f.plotborderalpha,f.pieborderalpha,100):0),s.showTooltip=(0,r.pluckNumber)(f.showtooltip,1),s.borderWidth=(0,r.pluckNumber)(f.pieborderthickness,f.plotborderthickness,1),u.startingAngle=0,u.size="100%",s.highlightParentPieSlices=(0,r.pluckNumber)(f.highlightparentpieslices,f.highlightparentpienodes,1),s.highlightChildPieSlices=(0,r.pluckNumber)(f.highlightchildpieslices,f.highlightchildpienodes,0),s.showLabels=(0,r.pluckNumber)(f.showlabels,1),s.showValues=(0,r.pluckNumber)(f.showvalues,0),s.showValuesInTooltip=(0,r.pluckNumber)(f.showvaluesintooltip,f.showvalues,0),s.showPercentValues=(0,r.pluckNumber)(f.showpercentvalues,f.showpercentagevalues,0),s.showPercentInTooltip=(0,r.pluckNumber)(f.showpercentintooltip,0),s.toolTipSepChar=(0,r.pluck)(f.tooltipsepchar,f.hovercapsepchar,r.COMMASPACE),s.labelSepChar=(0,r.pluck)(f.labelsepchar,s.toolTipSepChar),s.tooltext=f.plottooltext,s.alpha=(0,r.pluck)(f.plotfillalpha,f.piefillalpha,100),s.startAngle=(m-v/2)*(Math.PI/180),s.endtAngle=(m+v/2)*(Math.PI/180),s.initialAngle=s.endtAngle,s.originX=(0,r.pluckNumber)(f.originx),s.originY=(0,r.pluckNumber)(f.originy),s.events={mouseOver:function(){x.call(this,"mouseover")},mouseOut:function(){x.call(this,"mouseout")}},l.plotBorderWidth=0,l.plotBorderWidth=0,s.maxLevel=this.addMSPieCat(h,1,this,s.startAngle,s.endtAngle),s.pieRadius=parseInt(f.pieradius,10),s.innerRadius="0",d.test(f.innerradius)&&(s.innerRadius=(0,r.pluck)(f.innerradius)),c.distance=0,c.placeLabelsInside=!0},t.prototype.removalFn=function(e,t){this.getFromEnv("animationManager").setAnimation({el:e,label:"element"===t?"ringpath":"label",component:this,callback:function(){this.remove()}})},t.prototype.removeGraphics=function(e){var t,o,a,r=e.components&&e.components.data,n=e.graphics;if(r)for(a=r.length,t=0;t<a;t+=1)this.removeGraphics(r[t]);if(e.graphics)for(o in n)n.hasOwnProperty(o)&&this.removalFn(e.graphics[o],o)},t.prototype.removeChild=function(e,t,o){var a,r;if(e.length)for(a=0;a<e.length;a+=1)r=e[a],o?this.removalFn(r,t,o):this.removeGraphics(r,t);else for(a in e)this.removeChild(e[a],t,a)},t.prototype.addMSPieCat=function(e,t,o,a,i){var l,s,c,u,p,h,d,f,g,m,v,b,y,x,w,k=(0,r.extend2)([],e),C=k.length,N=this,S=o.components.data,E=N.config,A=E.borderWidth,T=E.borderColor,D=N.getFromEnv("number-formatter"),L=N.getFromEnv("color-manager"),_=0,P=E.labelSepChar,O=t,V=S.length,M=function(){N.removeChild.apply(N,arguments)},F=k.length,I=i-a,B=0;for(d=0;d<C;d+=1)(p=k[d])._userValue=D.getCleanValue(p.value,!0),p._value=(0,r.pluckNumber)(p._userValue,1),_+=p._value;for(u=I/(_=_||1),d=C-1;d>=0;d-=1)h=u*(p=k[d])._value,f=(0,r.parseUnsafeString)((0,r.pluck)(p.label,p.name)),m=null!==p._userValue?D.dataLabels(p._userValue):"",v=D.percentValue(p._value/_*100),g=(0,r.pluckNumber)(p.alpha,E.alpha),y=E.showLabels?f:"",E.showValues&&(E.showPercentValues?y+=""!==y?P+v:v:void 0!==m&&""!==m&&(y+=""!==y?P+m:m)),""===(b=E.showTooltip?(0,r.parseUnsafeString)((0,r.pluck)(p.tooltext,p.hovertext,E.tooltext)):void 0)?(b=f,E.showValuesInTooltip&&(E.showPercentInTooltip?b+=""!==b?P+v:v:void 0!==m&&""!==m&&(b+=""!==b?P+m:m))):b=(0,r.parseTooltext)(b,[1,2,3,14],{percentValue:v,label:f,formattedValue:m},p),x=a+B,B+=h,(l=S[d])||(l=S[d]={components:{data:[]},config:{},graphics:{}}),l.graphics.element&&(w=l.config.startAngle+l.config.angleStrech),l.config={initialAngle:w||(o.config||o.config).initialAngle,startAngle:x,angleStrech:h,level:t,displayValue:y,toolText:b,link:(0,r.getValidValue)(p.link),doNotSlice:!0,color:(0,n.convertColor)(p.color||L.getPlotColor(),g),borderWidth:(0,r.pluckNumber)(p.borderwidth,A),borderColor:(0,r.pluck)(p.bordercolor,T),dashStyle:(0,r.pluckNumber)(p.valueborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(p.borderdashlen,4),(0,r.pluckNumber)(p.borderdashgap,2)):"none",shadow:{opacity:.01*Math.round(g>50?g*g*g*1e-4:g*g*.01)},isSingleTon:!(C>1)},l.config.parent=o,p.category?(O=Math.max(O,N.addMSPieCat(p.category,t+1,l,x,h+x)),(s=l.components.data.length)>(c=p.category.length)&&M(l.components.data.splice(s-1,c))):(s=l.components.data.length)&&M(l.components.data.splice(0,s));return V>F&&M(S.splice(F)),O},t.prototype.parsePlotAttributes=function(e){var t,o,a,n,i,l,s,c,u,p,h,d,f,g,m,v,b=this.config||{},y=this.getFromEnv("chart"),x=y.config,w=this.components.data.length,k=x.dataLabelStyle,C=x.textDirection,N=x.canvasWidth,S=x.canvasHeight,E=(0,r.pluckNumber)(b.originX,x.canvasLeft+.5*N),A=(0,r.pluckNumber)(b.originY,x.canvasTop+.5*S),T=(0,r.pluckNumber)(2*b.pieRadius,Math.min(N,S)),D=function(e,t){var o=e&&e.length,a=void 0;return e&&(a="%"===e.charAt(o-1)?(0,r.pluckNumber)(t)*((0,r.pluckNumber)(e.split("%")[0])/100):(0,r.pluckNumber)(e))<t?a:0}(b.innerRadius,T/2),L=this.config.pool||(this.config.pool={}),_=(T-2*D)/(2*b.maxLevel);for(b.innerSize=2*D,e||(e=this),w=e.components.data.length,f=0;f<w;f+=1)this.parsePlotAttributes(e.components.data[f]);(n=(m=e.config).level)&&(i=n*_+D,l=(n-1)*_+D,g=e.graphics,c=m.angleStrech,u=m.displayValue,p=!!m.link,s=m.color,d=(h=m.startAngle)+m.angleStrech,v=g.element,L.element&&L.element.length&&(v=g.element=v||L.element.shift()),m.plotItem={chart:y,link:m.link,value:c,color:s,labelText:u,graphics:{element:v},selfRef:e},m.eventArgs={link:m.link,label:m.displayValue,toolText:m.toolText},m.props={element:{attr:{ringpath:[E,A,i,l,h,d],"stroke-width":m.borderWidth,stroke:m.borderColor,fill:(0,r.toRaphaelColor)(m.color),"stroke-dasharray":m.dashStyle,cursor:p?"pointer":r.BLANKSTRING}}},void 0!==u&&u!==r.BLANKSTRING&&(t=(h+d)/2,a=0===l&&m.isSingleTon?0:l+(i-l)/2,(o=m._textAttrs)||(o=m._textAttrs={}),o.text=u,o.fill=k.color||"000000",o.direction=C,o.cursor=p?"pointer":r.BLANKSTRING,o.x=E+a*Math.cos(t),o.y=A+a*Math.sin(t),o["text-bound"]=[k.backgroundColor,k.borderColor,k.borderThickness,k.borderPadding,k.borderRadius,k.borderDash]))},t.prototype.parseLabelAttributes=function(e){var t,o,a,n,i=this.components.data.length;for(!e&&(e=this),i=e.components.data.length,a=0;a<i;a+=1)this.parseLabelAttributes(e.components.data[a]);o=(n=e.config).displayValue,t=n._textAttrs,n.level&&void 0!==o&&o!==r.BLANKSTRING&&(n.props.label={attr:t})},t.prototype.draw=function(e){var t,o,a,r,n=this.config||{},i=this.getFromEnv("chart"),l=this.getFromEnv("animationManager"),c=this.getFromEnv("toolTipController"),u=i.config,p=this.components,h=p.data.length,d=u.dataLabelStyle,f=n.showShadow,g=i.getChildContainer("plotGroup"),m=i.getChildContainer("datalabelsGroup"),v=n.events||{},b=this.config.pool||(this.config.pool={}),y=p.removeDataArr;for(y&&y.length&&this.removeElement(),e||(e=this,m.css(d)),h=e.components.data.length,t=0;t<h;t+=1)this.draw(e.components.data[t]);(a=e.config).level?(r=(o=e.graphics).element,b.element&&b.element.length&&(r=o.element=r||b.element.shift()),(r=o.element=l.setAnimation({el:o.element||"ringpath",attr:a.props.element.attr,container:g,component:this,state:"appearing",label:"ringpath"})).shadow(f&&!!a.shadow).data("plotItem",a.plotItem).data("eventArgs",a.eventArgs).on("fc-mouseover",function(e){var t=this,o=v.mouseOver,r=t.plotItem||t.data("plotItem"),n=r.chart,i=n.getDatasets()[0];n.plotEventHandler(t,e,"DataPlotRollOver"),o&&o.call(t),i.fireEvent("datasetrollover",{pValue:r.pValue,value:r.value,displayValue:a.displayValue})}).on("fc-mouseout",function(e){var t=this,o=v.mouseOut,r=t.plotItem||t.data("plotItem"),n=r.chart,i=n.getDatasets()[0];n.plotEventHandler(t,e,"DataPlotRollOut"),o&&o.call(t),i.fireEvent("datasetrollout",{pValue:r.pValue,value:r.value,displayValue:a.displayValue})}).on("fc-click",function(e){i.plotEventHandler(this,e)}),c.enableToolTip(r,a.toolText),t||n._drawn||(n._drawn=!0,m.show(),this.addJob("labelJob",this.drawLabel.bind(this),s.priorityList.label))):(n._drawn&&this.drawLabel(),this.removeChild(this.config.pool,!0))},t.prototype.drawLabel=function(e){var t,o,a,n,i,l,s=this.config||{},c=this.getFromEnv("chart"),u=this.getFromEnv("animationManager"),p=c.config,h=this.components.data.length,d=p.dataLabelStyle,f=this.getFromEnv("toolTipController"),g=p.tooltip||{},m=g&&!1!==g.enabled,v=s.events||{},b=this.config.pool||(this.config.pool={}),y=c.getChildContainer("datalabelsGroup");for(y.show(),!e&&(e=this),h=e.components.data.length,a=0;a<h;a+=1)this.drawLabel(e.components.data[a]);t=(i=e.config).plotItem,o=i.displayValue,i.level?(l=(n=e.graphics).label,void 0!==o&&o!==r.BLANKSTRING?(l=n.label,b.label&&b.label.length&&(l=n.label=l||b.label.shift()),(l=n.label=u.setAnimation({el:l||"text",attr:i.props.label.attr,container:y,component:this,state:"appearing",label:"text"})).on("fc-click",function(e){c.plotEventHandler(this,e)}).on("fc-mouseout",function(e){var t=v.mouseOut;c.plotEventHandler(this,e,"DataPlotRollOut"),t&&t.call(this)}).on("fc-mouseover",function(e){var t=v.mouseOver;c.plotEventHandler(this,e,"DataPlotRollOver"),t&&t.call(this)}).css(d).show().data("plotItem",t).data("eventArgs",i.eventArgs),m&&f.enableToolTip(l,void 0)):l&&u.setAnimation({el:l,component:this,callback:function(){this.hide()},label:"text"})):this.removeChild(this.config.pool,!0)},t}(a["default"]);t["default"]=f},512:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.multiLevelPie":function(){var e=this.config,t=void 0;return{"ringpath.appearing":function(o){return[{initialAttr:{ringpath:[(t=o.attr.ringpath)[0],t[1],t[2],t[3],e.initialAngle,e.initialAngle]},slot:"plot"}]},"text.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]}}}}},513:function(e,t,o){"use strict";t.__esModule=!0;var a=u(o(428)),r=u(o(514)),n=u(o(539)),i=u(o(540)),l=o(125),s=u(o(231)),c=o(118);function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=c.preDefStr.defaultFontStr,d=c.preDefStr.divLineAlphaStr,f=c.preDefStr.altVGridColorStr,g=c.preDefStr.altVGridAlphaStr,m=c.preDefStr.colors.c000000,v=c.preDefStr.POSITION_BOTTOM,b=c.preDefStr.divLineAlpha3DStr,y=(0,l.getDep)("redraphael","plugin");(0,s["default"])(y);var x=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),a=o;return a.friendlyName="Multi-axis Line Chart",a.defaultPlotShadow=1,a.axisPaddingLeft=0,a.axisPaddingRight=0,o.registerFactory("axis",r["default"],["canvas"]),o.registerFactory("vCanvas",n["default"],["axis"]),o.registerFactory("dataset",i["default"],["vCanvas"]),o}return p(t,e),t.getName=function(){return"MultiAxisLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.defaultDatasetType="multiaxisline",t.defaultcrosslinethickness=1},t.prototype.getName=function(){return"MultiAxisLine"},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource"),t=e.axis,o=e.categories;if(!t||!o)return!0},t.prototype._feedAxesRawData=function(){var e,t,o,a,r,n,i,l,s,u,p,v,y,x,w,k,C=this.config,N=this.getFromEnv("color-manager"),S=this.getFromEnv("number-formatter"),E=this.getFromEnv("dataSource"),A=E.chart,T=this.config.is3D,D=T?c.chartPaletteStr.chart3D:c.chartPaletteStr.chart2D,L=[],_={},P=[];for(e={isVertical:!1,isReverse:!1,isOpposit:!1,outCanfontFamily:(0,c.pluck)(A.outcnvbasefont,A.basefont,h),outCanfontSize:(0,c.pluckFontSize)(A.outcnvbasefontsize,A.basefontsize,10),outCancolor:(0,c.pluck)(A.outcnvbasefontcolor,A.basefontcolor,N.getColor(D.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:A.xaxisnamepadding,axisValuePadding:A.labelpadding,axisNameFont:A.xaxisnamefont,axisNameFontSize:A.xaxisnamefontsize,axisNameFontColor:A.xaxisnamefontcolor,axisNameFontBold:A.xaxisnamefontbold,axisNameFontItalic:A.xaxisnamefontitalic,axisNameBgColor:A.xaxisnamebgcolor,axisNameBorderColor:A.xaxisnamebordercolor,axisNameAlpha:A.xaxisnamealpha,axisNameFontAlpha:A.xaxisnamefontalpha,axisNameBgAlpha:A.xaxisnamebgalpha,axisNameBorderAlpha:A.xaxisnameborderalpha,axisNameBorderPadding:A.xaxisnameborderpadding,axisNameBorderRadius:A.xaxisnameborderradius,axisNameBorderThickness:A.xaxisnameborderthickness,axisNameBorderDashed:A.xaxisnameborderdashed,axisNameBorderDashLen:A.xaxisnameborderdashlen,axisNameBorderDashGap:A.xaxisnameborderdashgap,useEllipsesWhenOverflow:A.useellipseswhenoverflow,divLineColor:(0,c.pluck)(A.vdivlinecolor,A.divlinecolor,N.getColor(D.divLineColor)),divLineAlpha:(0,c.pluck)(A.vdivlinealpha,A.divlinealpha,T?N.getColor(b):N.getColor(d)),divLineThickness:(0,c.pluckNumber)(A.vdivlinethickness,A.divlinethickness,1),divLineIsDashed:Boolean((0,c.pluckNumber)(A.vdivlinedashed,A.vdivlineisdashed,A.divlinedashed,A.divlineisdashed,0)),divLineDashLen:(0,c.pluckNumber)(A.vdivlinedashlen,A.divlinedashlen,4),divLineDashGap:(0,c.pluckNumber)(A.vdivlinedashgap,A.divlinedashgap,2),showAlternateGridColor:(0,c.pluckNumber)(A.showalternatevgridcolor,0),alternateGridColor:(0,c.pluck)(A.alternatevgridcolor,N.getColor(f)),alternateGridAlpha:(0,c.pluck)(A.alternatevgridalpha,N.getColor(g)),numDivLines:A.numvdivlines,labelFont:A.labelfont,labelFontSize:A.labelfontsize,labelFontColor:A.labelfontcolor,labelFontBold:A.labelfontbold,labelFontItalic:A.labelfontitalic,labelFontAlpha:A.labelalpha,maxLabelHeight:A.maxlabelheight,axisName:A.xaxisname,axisMinValue:A.xaxisminvalue,axisMaxValue:A.xaxismaxvalue,setAdaptiveMin:A.setadaptivexmin,adjustDiv:A.adjustvdiv,labelDisplay:A.labeldisplay,showLabels:A.showlabels,rotateLabels:A.rotatelabels,slantLabel:(0,c.pluckNumber)(A.slantlabels,A.slantlabel),labelStep:(0,c.pluckNumber)(A.labelstep,A.xaxisvaluesstep),showAxisValues:(0,c.pluckNumber)(A.showxaxisvalues,A.showxaxisvalue),showLimits:A.showvlimits,showDivLineValues:(0,c.pluckNumber)(A.showvdivlinevalues,A.showvdivlinevalues),showZeroPlane:A.showvzeroplane,zeroPlaneColor:A.vzeroplanecolor,zeroPlaneThickness:A.vzeroplanethickness,zeroPlaneAlpha:A.vzeroplanealpha,showZeroPlaneValue:A.showvzeroplanevalue,trendlineColor:A.trendlinecolor,trendlineToolText:A.trendlinetooltext,trendlineThickness:A.trendlinethickness,trendlineAlpha:A.trendlinealpha,showTrendlinesOnTop:A.showtrendlinesontop,showAxisLine:(0,c.pluckNumber)(A.showxaxisline,A.showaxislines,A.drawAxisLines,0),axisLineThickness:(0,c.pluckNumber)(A.xaxislinethickness,A.axislinethickness,1),axisLineAlpha:(0,c.pluckNumber)(A.xaxislinealpha,A.axislinealpha,100),axisLineColor:(0,c.pluck)(A.xaxislinecolor,A.axislinecolor,m)},P.push(e),t={outCanfontFamily:(0,c.pluck)(A.outcnvbasefont,A.basefont,h),outCanfontSize:(0,c.pluckFontSize)(A.outcnvbasefontsize,A.basefontsize,10),outCancolor:(0,c.pluck)(A.outcnvbasefontcolor,A.basefontcolor,N.getColor(D.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),useEllipsesWhenOverflow:A.useellipseswhenoverflow,showAlternateGridColor:0,axisNameFont:A.yaxisnamefont,axisNameFontSize:A.yaxisnamefontsize,axisNameFontColor:A.yaxisnamefontcolor,axisNameFontBold:A.yaxisnamefontbold,axisNameFontItalic:A.yaxisnamefontitalic,axisNameBgColor:A.yaxisnamebgcolor,axisNameBorderColor:A.yaxisnamebordercolor,axisNameAlpha:A.yaxisnamealpha,axisNameFontAlpha:A.yaxisnamefontalpha,axisNameBgAlpha:A.yaxisnamebgalpha,axisNameBorderAlpha:A.yaxisnameborderalpha,axisNameBorderPadding:A.yaxisnameborderpadding,axisNameBorderRadius:A.yaxisnameborderradius,axisNameBorderThickness:A.yaxisnameborderthickness,axisNameBorderDashed:A.yaxisnameborderdashed,axisNameBorderDashLen:A.yaxisnameborderdashlen,axisNameBorderDashGap:A.yaxisnameborderdashgap},s={side:"l",axesConf:[]},u={side:"r",axesConf:[]},a=0,r=(o=E.axis||[]).length;a<r;a++){for(_={},i=o[a],_.checkBoxChecked=!1,w=0,k=i.dataset?i.dataset.length:0;w<k;w+=1)0!==Number(i.dataset[w].visible)&&(_.checkBoxChecked=!0);l=N.getPlotColor(a),p=(0,c.pluck)(i.color,A.axiscolor,l),v=(0,c.pluckNumber)(i.divlinethickness,A.divlinethickness,1),y=(0,c.pluckNumber)(i.tickwidth,A.axistickwidth,2),x=(0,c.pluckNumber)(i.axislinethickness,A.axislinethickness,2),n=!(0,c.pluckNumber)(i.axisonleft,1),t.isVertical=!0,t.isReverse=!0,t.isOpposit=n,t.labelStep=(0,c.pluckNumber)(i.yaxisvaluesstep,i.yaxisvaluestep,A.yaxisvaluesstep,A.yaxisvaluestep),t.axisMaxValue=i.maxvalue,t.axisMinValue=i.minvalue,t.setAdaptiveMin=(0,c.pluckNumber)(i.setadaptiveymin,A.setadaptiveymin),t.numDivLines=(0,c.pluckNumber)(i.numdivlines,A.numdivlines,4),t.adjustDiv=(0,c.pluckNumber)(i.adjustdiv,A.adjustdiv),t.showAxisValues=(0,c.pluckNumber)(i.showyaxisvalues,i.showyaxisvalue,A.showyaxisvalues,A.showyaxisvalue,1),t.showLimits=(0,c.pluckNumber)(i.showlimits,A.showyaxislimits,A.showlimits,t.showAxisValues),t.showDivLineValues=(0,c.pluckNumber)(i.showdivlinevalue,A.showdivlinevalues,i.showdivlinevalues,t.showAxisValues),t.showZeroPlane=(0,c.pluckNumber)(i.showzeroplane,A.showzeroplane),t.showZeroPlaneValue=(0,c.pluckNumber)(i.showzeroplanevalue,A.showzeroplanevalue),t.zeroPlaneColor=i.zeroplanecolor,t.zeroPlaneThickness=(0,c.pluckNumber)(i.zeroplanethickness,i.divlinethickness,C.zeroplanethickness,2),t.zeroPlaneAlpha=(0,c.pluckNumber)(i.zeroplanealpha,i.divlinealpha,C.zeroplanealpha),t.showZeroPlaneOnTop=C.showzeroplaneontop,t.divLineColor=(0,c.pluck)(i.divlinecolor,p),t.divLineAlpha=(0,c.pluckNumber)(i.divlinealpha,A.divlinealpha,N.getColor(d),100),t.divLineThickness=v,t.divLineIsDashed=Boolean((0,c.pluckNumber)(i.divlinedashed,i.divlineisdashed,A.divlinedashed,A.divlineisdashed,0)),t.divLineDashLen=(0,c.pluckNumber)(i.divlinedashlen,A.divlinedashlen,4),t.divLineDashGap=(0,c.pluckNumber)(i.divlinedashgap,A.divlinedashgap,2),t.showAxisLine=1,t.axisLineThickness=x,t.axisLineAlpha=100,t.axisLineColor=p,t.tickLength=y,t.tickColor=p,t.tickAlpha=100,t.tickWidth=x,t.axisName=i.title,t.rotateAxisName=1,t.axisNameAlignCanvas=!0,t.drawAxisNameFromBottom=!0,(0,c.extend2)(_,t),S.parseMLAxisConf(i,a),0===(0,c.pluckNumber)(i.showaxis)?(0,c.extend2)(_,{axisIndex:a,drawAxisLineWRTCanvas:!1,drawLabels:!1,drawPlotlines:!1,drawAxisLine:!1,drawPlotBands:!1,drawAxisName:!1,drawTrendLines:!1,drawTrendLabels:!1,drawTick:!1,drawTickMinor:!1,showAxis:0}):(0,c.extend2)(_,{axisIndex:a,drawAxisLineWRTCanvas:!1,drawLabels:!0,drawPlotlines:!0,drawAxisLine:!0,drawPlotBands:!0,drawAxisName:!0,drawTrendLines:!0,drawTrendLabels:!0,drawTick:!0,drawTickMinor:!0,showAxis:1}),n?u.axesConf.push(_):s.axesConf.push(_)}return s.axesConf.length&&L.push(s),u.axesConf.length&&L.push(u),{xAxisConfigure:P,yAxisConfigure:L}},t.prototype._postSpaceManagement=function(){var e=this.getFromEnv("legend"),t=this.config.showLegend,o=this.getChildren("yAxisSelectorUI"),a=this.getChildren("canvas")[0];this.setAxisDimention(),o.forEach(function(e){e.setAxisDimention()}),a.setCanvasPadding(),this.setAxisDimention(),t&&e.postSpaceManager()},t.prototype.setAxisDimention=function(){var e=this.config,t=this.getChildren("xAxis")[0],o=e.xDepth,a=this.getChildren("canvas")[0].config,r=a.canvasBorderWidth,n=a.canvasPadding,i=a.canvasPaddingLeft,l=a.canvasPaddingRight;t&&t.setAxisDimention({x:e.canvasLeft+(o||0)+Math.max(i,n),y:e.canvasBottom+(e.shift||0)+r,opposite:e.canvasTop-r,axisLength:e.canvasWidth-(o||0)-Math.max(i,n)-Math.max(l,n)})},t.prototype._spaceManager=function(){var e,t,o,a,r,n,i,l,s,u,p=this.getChildren("canvas")[0],h=this.config,d=h.showLegend,f=h.legendPosition,g=this.getChildren("xAxis"),m=this.getChildren("yAxisSelectorUI"),b=h.hasLegend,y=h.yDepth,x=this.getFromEnv("legend"),w=0,k=0,C=m.length||0,N=this.config.is3D,S=this.getFromEnv("dataSource").chart,E=(0,c.pluckNumber)(S.showborder,N?0:1),A=this.getChildren("canvas")[0].config.canvasBorderWidth,T=h.borderWidth=E?(0,c.pluckNumber)(S.borderthickness,1):0,D=h.canvasMarginTop,L=h.canvasMarginBottom,_=h.canvasMarginLeft,P=h.canvasMarginRight,O=(h.minCanvasHeight,h.minCanvasWidth,h.height),V=h.width;h.origCanvasTopMargin,h.origCanvasBottomMargin,h.origCanvasLeftMargin,h.origCanvasRightMargin;for(this._allocateSpace({top:T,bottom:T,left:T,right:T}),this._allocateSpace({left:h.canvasMarginLeft,right:h.canvasMarginRight}),n="right"===f?.3*h.canvasWidth:.3*h.canvasHeight,!1!==b&&g&&d&&this._allocateSpace(x._manageLegendPosition(n)),a=0;a<C;a++)w+=(r=m[a].placeAxis(h.canvasWidth)).rightPadding,k+=r.leftPadding,this._allocateSpace(r.dimension);e=.225*h.availableHeight,t=this._manageActionBarSpace&&this._manageActionBarSpace(e)||{},this._allocateSpace(t),o=f===v?.6*h.canvasHeight:.6*h.canvasWidth,this._manageChartMenuBar(o),.7*h.canvasWidth>w+k&&this._allocateSpace({left:k,right:w}),o=.6*h.canvasHeight,g[0]&&this._allocateSpace(g[0].placeAxis(o)),o=.325*h.canvasHeight,this._getDSspace&&this._allocateSpace(this._getDSspace(o)),y&&this._allocateSpace({bottom:y}),this._allocateSpace({top:A,bottom:A,left:A,right:A}),i=D>h.canvasTop?D-h.canvasTop:0,l=L>O-h.canvasBottom?L+h.canvasBottom-O:0,s=_>h.canvasLeft?_-h.canvasLeft:0,u=P>V-h.canvasRight?P+h.canvasRight-V:0,this._allocateSpace({top:i,bottom:l,left:s,right:u}),h.actualCanvasMarginTop=i,h.actualCanvasMarginLeft=s,h.actualCanvasMarginRight=u,h.actualCanvasMarginBottom=l,p.setDimension({top:h.canvasTop,left:h.canvasLeft,width:h.canvasWidth,height:h.canvasHeight})},t.prototype.configure=function(t){e.prototype.configure.call(this,t);var o=this.config,a=this.getFromEnv("dataSource").chart;o.axesPadding=5,o.allowAxisShift=(0,c.pluckNumber)(a.allowaxisshift,1),o.allowSelection=(0,c.pluckNumber)(a.allowselection,1),o.checkBoxColor=(0,c.pluck)(a.checkboxcolor,"#2196f3"),o.axisConfigured=!0},t}(a["default"]);t["default"]=x},514:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o=e.getChildren("canvas")[0],i=o.getChildren("axisRefVisualCartesian")[0],l=void 0;t=e._feedAxesRawData(),n["default"].resetAxisCount(),(0,a.componentFactory)(e,n["default"],"yAxisSelectorUI",t.yAxisConfigure&&t.yAxisConfigure.length,t.yAxisConfigure),(0,a.componentFactory)(e,r["default"],"xAxis",1,t.xAxisConfigure),(l=e.getChildren("xAxis")[0]).setLinkedItem("canvas",o),i.setLinkedItem(l.getId(),l),i.addExtEventListener("visiblerangeset",function(){return i.asyncDraw()},l),o.attachAxis(l,!1),o.setPrimaryAxis("xAxis",l),e._setCategories()};var a=o(118),r=i(o(321)),n=i(o(515));function i(e){return e&&e.__esModule?e:{"default":e}}},515:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(131)),r=o(118),n=l(o(292)),i=l(o(516));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c=function(e){var t=e.config.axesConf,o=void 0,a=void 0,l=void 0,s=e.config.axisMapById,c=s&&Array.from(s.keys())||[],p=void 0,h=!0,d=e.getFromEnv("chart").getChildren("canvas")[0],f=d.getChildren("axisRefVisualCartesian")[0],g=function(){return f.asyncDraw()};(0,r.componentFactory)(e,n["default"],"yAxis",t.length,t),o=(e.getChildren("yAxis")||[]).slice(0),a=e.config.axisMapById=new i["default"],("l"===e.config.side?o.reverse():o).forEach(function(t){if(!t.getState("removed")&&0!==t.config.showaxis){var o,r,n=t.getId();(p={}).axis=t,a.set(n,p),0===t.config.showaxis?t.hide():t.show(),d.attachAxis(t,!0),h&&(e.config.besideCanvas=n),h=!1,u||(l=t),t.setLinkedItem("canvas",d),f.setLinkedItem(t.getId(),t),f.addExtEventListener("visiblerangeset",g,t),u++,o=n,-1!==(r=c.indexOf(o))&&c.splice(r,1)}}),l&&d.setPrimaryAxis("yAxis",l),function(e,t){var o=void 0,a=void 0,r=void 0;for(r=e.length-1;r>-1;r--)o=e[r],(a=t.get(o)).checkbox&&a.checkbox.hide(),a.axis&&a.axis.hide(),t["delete"](o)}(c,s)},u=0,p=0,h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.registerFactory("axis",c),o}return s(t,e),t.resetAxisCount=function(){u=0},t.prototype.configureAttributes=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=this.config;t.axesConf=e.axesConf||[],t.checkboxesConf=e.checkboxesConf||[],t.side=e.side},t.prototype.placeAxis=function(e){var t=this.config.side,o=this.getAxesDetails(),a=this.getFromEnv("chartConfig").axesPadding,r=0,n=0,i=void 0,l={right:0,left:0};return o.forEach(function(o){var s=o.value||(o.value={}),c=o.axis;c.getState("removed")||0===c.config.showaxis||(i=c.placeAxis(.7*e),"r"===t?(e-=s.width=i.right,l.right+=i.right,r+=a):(e-=s.width=i.left,l.left+=i.left,n+=a))}),{dimension:l,rightPadding:r,leftPadding:n}},t.prototype.setAxisDimention=function(){var e=this.config,t=this.getAxesDetails(),o=this.getFromEnv("chart"),a=this.getFromEnv("chartConfig").axesPadding,r=o.getChildren("canvas")[0].config,n=r.canvasBorderWidth,i=r.canvasPaddingTop,l=r.canvasPaddingBottom,s=r.canvasLeft,c=r.canvasTop,u=r.canvasHeight,p=s+r.canvasWidth,h="r"===e.side,d="r"===e.side?s-n:p+n,f=0;t.forEach(function(e){var t=e.value||(e.value={}),o=e.axis;0===o.config.showaxis||o.getState("removed")||(t.x=h?p+n+f+a:s-n-f-a,t.y=c+i,t.height=u-i-l,t.opposite=d,f+=t.width+a,o.setAxisDimention({x:t.x,y:t.y,opposite:t.opposite,axisLength:t.height}))})},t.prototype.drawHotElements=function(){var e,t=this,o=t.config,a="r"===o.side,n=t.getFromEnv("chartConfig").allowAxisShift,i=t.getFromEnv("chart"),l=t.getFromEnv("paper"),s=i.getChildContainer("trackerGroup"),c=o.axisMapById,u=t.getGraphicalElement("axisHotElement")||[],p=i.getChildren("canvas")[0],h=void 0,d=-1,f={cursor:"col-resize",stroke:r.TRACKER_FILL,fill:r.TRACKER_FILL,visibility:!0};for(n&&c.forEach(function(e,o){var r=void 0,n=e.value;f.x=n.x+(a?0:-n.width),f.y=n.y,f.width=n.width,f.height=n.height,(r=u[++d])||(r=t.addGraphicalElement("axisHotElement",l.rect(s),!0)).on("fc-click",t._resuffelAxis),r.attr(f).data("axisDetails",{axisSelectorUI:t,canvas:p,axisId:o})}),h=d+1,e=u.length;h<e;h++)t.removeGraphicalElement(u[h])},t.prototype.drawCheckBoxes=function(){var e=this,t=e.config,o=e.getFromEnv("chartInstance").id,a=e.getFromEnv("chartConfig"),n=a.allowSelection,i=e.getFromEnv("chart"),l=i.getChildContainer("buttonGroup"),s=e.getFromEnv("toolBoxAPI"),c=e.getFromEnv("toolbox"),u=s.CheckboxSymbol,h="r"===t.side,d=t.axisMapById;n&&d.forEach(function(t,n){var s=t.value,d=t.checkbox,f=t.axis.config,g="updating",m=h?t.axis.getAxisConfig("axisNamePadding"):-s.width;d||((d=t.checkbox=new u).configure("",!0,p++,c.pId,o),d.config.conf=c.getDefaultConfiguration(),d.attachEventHandlers({click:{fn:function(t,o){e._dolegendInteraction.call(this,t,o),f.checkBoxChecked=!f.checkBoxChecked},args:[n,i]}}),g="appearing"),d.draw(s.x+m,s.y+s.height+4,{parentLayer:l}),e.getFromEnv("animationManager").setAnimation({el:d.config.node,attr:{stroke:(0,r.toRaphaelColor)({color:a.checkBoxColor,alpha:100,"stroke-width":[1,2]})},state:g,component:e}),f.checkBoxChecked?d.check():d.uncheck()})},t.prototype._createLayers=function(){var e=this.getFromEnv("chart").getContainer("parentgroup");this.createContainer("axisBottomGroup",{name:"axis-bottom-group"},e),this.createContainer("axisTopGroup",{name:"axis-top-group"},e)},t.prototype.createContainer=function(e,t,o){var a=this.getFromEnv("animationManager");return this.addChildContainer(e,a.setAnimation({container:o,attr:t,el:this.getChildContainer(e)||"group",component:this,label:"group"}))},t.prototype.draw=function(){this._createLayers(),this.drawHotElements(),this.drawCheckBoxes()},t.prototype._resuffelAxis=function(){var e,t,o,a,r,n,l=this.data("axisDetails"),s=l.axisSelectorUI,c=s.config,u=l.canvas,p=l.axisId,h=s.getAxesDetails();c.besideCanvas!==p&&(h=s.config.axisMapById=(e=c.besideCanvas,t=p,a=[e,(o=h).get(e)],r=[t,o.get(t)],n=Array.from(o.entries()).map(function(o){var n=o[0],i=o[1];return n===e?r:n===t?a:[n,i]}),new i["default"](n))),c.besideCanvas=p,u.setPrimaryAxis("yAxis",h.get(p).axis),s.setAxisDimention(),s.asyncDraw(),u.getChildren("axisRefVisualCartesian")[0].asyncDraw()},t.prototype._dolegendInteraction=function(e,t){var o,a,r=[];for(o in t.iterateComponents(function(e){"dataset"===e.getType()&&r.push(e)}),r)r.hasOwnProperty(o)&&(a=r[o]).getFromEnv("yAxis").getId()===e&&(!a.getState("visible")&&this.config.checked?(a.config.legendInteractivity=!0,a.show()):a.getState("visible")&&!this.config.checked&&(a.config.legendInteractivity=!0,a.hide()))},t.prototype.manipulateCheckBox=function(e){var t,o,a,r=e.data,n=r.dataset,i=n.getFromEnv("yAxis").getId(),l=n.getLinkedParent().getChildren().dataset,s=r.state,c=!0;if(a=this.getAxesDetails().get(i))if("hide"===s){for(t=0,o=l.length;t<o;t++)l[t].getState("visible")&&(c=!1);c&&a.checkbox&&a.checkbox.uncheck()}else a.checkbox&&a.checkbox.check()},t.prototype.getAxesDetails=function(){return this.config.axisMapById},t.prototype.getType=function(){return"customAxisUI"},t.prototype.getName=function(){return"multiAxisSelectorUI"},t.prototype.getAxes=function(){return Array.from(this.config.axisMapById.values()).map(function(e){return e.axis})},t}(a["default"]);t["default"]=h},539:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o=e.getChildren("canvas")[0],a=e.getFromEnv("dataSource"),r=e.getChildren("yAxisSelectorUI"),l=a.axis,s=void 0,c=[],u=[],p=void 0,h=void 0,d=void 0,f=void 0;for(s=e.getChildren("xAxis"),d=0;d<(s&&s.length);d++)s[d].getState("removed")||c.push(s[d]);for(r.forEach(function(e){for(s=e.getChildren("yAxis"),d=0;d<(s&&s.length);d++)s[d].getState("removed")||u.push(s[d])}),(0,i.componentFactory)(o,n["default"],"vCanvas",c.length*u.length),t=o.getChildren("vCanvas"),h=0,d=0;h<(c&&c.length);h++)for(f=0;f<(u&&u.length);f++,d++)(p=t[d]).configure(),p.xAxis(c[h]).yAxis(u[f]).canvas(o),p.addToEnv("axisData",l[d]),p.addToEnv("vCanvas",t[d])};var a,r=o(327),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118)},540:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=void 0,o=void 0,a=void 0,n=void 0,l=e.getChildren(),s=l.yAxisSelectorUI,c=l.canvas[0].getChildren("vCanvas"),u=0,p=c.length;u<p;u++)(n=c[u]).getState("removed")||(t=n.getFromEnv("axisData").dataset)&&(o=t.length,a=Array(o).fill(n.getFromEnv("yAxis").config.axisIndex).map(function(e,t){return e+Number("."+(t+1))}),(0,r.datasetFactory)(n,i["default"],"dataset",o,t,a),(l=n.getChildren("dataset")).forEach(function(e){e.addEventListener("datasetVisibilityChanged",function(e){s.forEach(function(t){t.manipulateCheckBox(e)})})}))};var a,r=o(118),n=o(541),i=(a=n)&&a.__esModule?a:{"default":a}},541:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(346)),r=o(118),n=o(125),i=l(o(542));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}(0,n.addDep)({name:"multiAxislineAnimation",type:"animationRule",extension:i["default"]});var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"multiaxisline"},t.prototype.configure=function(t){if(!t)return!1;this.trimData(t),this.config.JSONData=t,e.prototype.configure.call(this,t)},t.prototype.parseAttributes=function(){var t,o,a=this.config.JSONData,n=this.config,i=this.getFromEnv("chart-attrib"),l=this.getFromEnv("axisData");e.prototype.parseAttributes.call(this),n.linethickness=(0,r.pluckNumber)(a.linethickness,l.linethickness,i.linethickness,2),n.lineDashLen=(0,r.pluckNumber)(a.linedashlen,l.linedashlen,i.linedashlen,5),n.lineDashGap=(0,r.pluckNumber)(a.linedashgap,l.linedashgap,i.linedashgap,4),n.alpha=(0,r.pluckNumber)(a.alpha,l.linealpha,i.linealpha,r.HUNDREDSTRING),n.linecolor=(0,r.pluck)(a.color,l.linecolor,l.color,i.linecolor,n.plotColor),n.legendSymbolColor="line"===this.getName()?n.lineColor:n.plotFillColor,o=(0,r.pluckNumber)(a.dashed,l.linedashed,i.linedashed),t=(0,r.getDashStyle)(n.lineDashLen,n.lineDashGap),n.anchorbordercolor=(0,r.pluck)(a.anchorbordercolor,a.color,l.color,i.anchorbordercolor,n.lineColor,n.plotColor),n.lineDashStyle=o?t:"none"},t}(a["default"]);t["default"]=c},542:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.multiaxisline":n["default"]["*.dataset.line"]}},543:function(e,t,o){"use strict";t.__esModule=!0;var a=i(o(354)),r=o(428),n=i(o(544));function i(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.defaultPlotShadow=1,o}return l(t,e),t.getName=function(){return"MSStepLine"},t.prototype.getName=function(){return"MSStepLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Multi-series Step Line Chart",t.defaultDatasetType="msstepline",t.drawverticaljoins=1,t.useforwardsteps=1,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.defaultcrosslinethickness=1,r._setDefaultConfig.call(this)},t.prototype.getDSGroupdef=function(){},t.prototype.getDSdef=function(){return n["default"]},t}(a["default"]);t["default"]=s},544:function(e,t,o){"use strict";t.__esModule=!0;var a=o(118),r=l(o(346)),n=o(125),i=l(o(545));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}(0,n.addDep)({name:"stepLineAnimation",type:"animationRule",extension:i["default"]});var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"stepLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.drawverticaljoins=void 0,t.useforwardsteps=void 0},t.prototype._addLegend=function(){var e,t=this.config,o=this.getFromEnv("legend"),r=(0,a.pluckNumber)(t.drawanchors,1),n={enabled:t.includeinlegend,type:"line",drawLine:(0,a.pluck)(t.drawLine,!0),anchorSide:r?t.anchorsides:0,label:(0,a.getFirstValue)(this.config.JSONData.seriesname)};t.includeinlegend?((e=o.getItem(this.config.legendItemId))||(this.config.legendItemId=o.createItem(this),e=o.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){e.itemClickFn()},e)),e.configure(n),e.setStateCosmetics("default",{symbol:{fill:(0,a.toRaphaelColor)({color:t.anchorbgcolor,alpha:t.anchorbgalpha}),rawFillColor:t.anchorbgcolor,rawStrokeColor:t.anchorbordercolor,stroke:(0,a.toRaphaelColor)({color:t.anchorbordercolor,alpha:"100"}),"stroke-width":t.anchorborderthickness}}),this.getState("visible")?e.removeLegendState("hidden"):e.setLegendState("hidden")):this.config.legendItemId&&o.disposeItem(this.config.legendItemId)},t.prototype.getLinePath=function(e,t){var o,r,n,i,l,s,c,u=this.config,p=this.getFromEnv("chartConfig"),h=(0,a.pluckNumber)(p.connectnulldata),d={},f=this.getFromEnv("xAxis"),g=(0,a.pluckNumber)(u.drawverticaljoins),m=(0,a.pluckNumber)(u.useforwardsteps),v=(0,a.pluckNumber)(p.stepatmiddle)?.5*f.getPVR():0,b=d.lastValidValue||!1,y=d.temp||[],x=d.temp2||[],w=d.pathArr||[],k=d.path2Arr||[],C=e.length,N=d.pointsJoined||0,S=t&&t.begin||0,E=t&&t.end||C,A=p.viewPortConfig.step||1,T=[];for(T=T.concat(e),r=S;r<E;r+=A)(s=T[r])&&(void 0===(c=(n=s.config).setValue)||n&&!0===n.isSkipped?n&&delete n.isSkipped:(i=n._Px,l=n._Py,null===c||c.isNull?h||(y=[],x=[],b=!1):b?(y.length&&(w=w.concat(y),y=[],N++),m?(w.push(["H",i-v]),g?w.push(["V",l]):w.push(["M",i-v,l]),v&&w.push(["H",i])):(g?w.push(["V",l]):w.push(["M",o,l]),w.push(["H",i]),o=i)):(y.push(["M",i,l]),o=i,N=0,b=!0)));return{pathArr:w,path2Arr:k,lastValidValue:b,pointsJoined:N,temp:y,temp2:x,getPathArr:function(){var e=this.pathArr,t=this.path2Arr;return e.length||t.length?e.concat(t):[]}}},t}(r["default"]);t["default"]=c},545:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"*.dataset.stepLine":n["default"]["*.dataset.line"]}},546:function(e,t,o){"use strict";t.__esModule=!0,t.configurer=undefined;var a=f(o(484)),r=f(o(547)),n=f(o(549)),i=f(o(551)),l=f(o(553)),s=o(118),c=o(125),u=f(o(554)),p=o(486),h=f(o(417)),d=o(151);function f(e){return e&&e.__esModule?e:{"default":e}}function g(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var m,v=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),a=o;return a.fireGroupEvent=!0,a.usesXYinCategory=!0,a.dontShowLegendByDefault=!0,o.registerFactory("dataset",u["default"],["vCanvas"]),o.registerFactory("axis",h["default"],["canvas"]),o}return g(t,e),t.getName=function(){return"DragNode"},t.prototype.getName=function(){return"DragNode"},t.prototype._checkInvalidSpecificData=function(){if(!this.getFromEnv("dataSource").dataset)return!0},t.prototype._mouseEvtHandler=function(e,t){(0,d._mouseEvtHandler)(this,e,t)},t.prototype.parseChartAttr=function(t){var o,a=this.getFromEnv("dataSource").chart,r=(0,c.getDepsByType)("transcoder");e.prototype.parseChartAttr.call(this,t),(o=this.config).formAction=(0,s.getValidValue)(a.formaction),o.showLegend=(0,s.pluckNumber)(a.showlegend,0),a.submitdataasxml!==s.ZEROSTRING||a.formdataformat||(a.formdataformat=r.csv().format),o.formDataFormat=(0,s.pluck)(a.formdataformat,r.xml().format),o.formTarget=(0,s.pluck)(a.formtarget,"_self"),o.formMethod=(0,s.pluck)(a.formmethod,"POST"),o.submitFormAsAjax=(0,s.pluckNumber)(a.submitformusingajax,1),o.viewMode=(0,s.pluckNumber)(a.viewmode,0),o.drawTrendRegion=0},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.hasLegend=!0,t.friendlyName="Dragable Node Chart",t.defaultDatasetType="dragnode",t.limitUpdaterEnabled=!1,t.skipClipping=!0,t.numVDivLines=0,t.numDivLines=0,t.setadaptivexmin=1,t.showLimits=0,t.showdivlinevalues=0,t.showzeroplane=0,t.showyaxisvalues=0,t.enablemousetracking=!0,t.showzeroplaneontop=0},t.prototype.addConfigureOptions=function(){var e,t,o=this,a=o.config,r=a.restoreBtnTitle,n=a.submitBtnTitle,i=o.getFromEnv("chartMenuList"),l=o.config.viewMode,s=[{"Add Node":{handler:function(){o.getChildren("canvas")[0].getChildren("vCanvas")[0].getChildren("datasetGroup_dragNode")[0].showNodeAddUI()},action:"click"}},{"Add Connector":{handler:function(){o.getChildren("canvas")[0].getChildren("vCanvas")[0].getChildren("datasetGroup_dragNode")[0].showConnectorAddUI()},action:"click"}},{"Add Label":{handler:function(){o.getChildren("canvas")[0].getChildren("vCanvas")[0].getChildren("datasetGroup_dragNode")[0].showLabelUpdateUI()},action:"click"}}];a.showRestoreBtn&&((e={})[r]={handler:function(){o.getChildren("canvas")[0].getChildren("vCanvas")[0].getChildren("datasetGroup_dragNode")[0].restoreData()},action:"click"},s.push(e)),a.showFormBtn&&((t={})[n]={handler:function(){p.submitData.call(o)},action:"click"},s.push(t)),!l&&i.appendAsList(s)},t.prototype.getDSdef=function(e){switch(e){case"connector":return n["default"];case"dragnode":return r["default"];case"dragableLabels":return i["default"]}},t.prototype.getDSGroupdef=function(){return l["default"]},t.prototype._setCategories=function(){var e,t,o=this.getFromEnv("dataSource"),a=this.getChildren("xAxis"),r=o.categories&&o.categories[0].category||[],n=r.length,i=[];for(e=0;e<n;e++)(t=r[e]||{}).x!==undefined&&i.push(t);a&&a[0].setTickValues(i)},t.prototype.getJSONData=function(){var e,t=this.getChildren("canvas")[0].getChildren("vCanvas")[0].getChildren("datasetGroup_dragNode")[0],o=this.getFromEnv("dataSource"),a={};return t&&(a=t.getJSONData()),(e=(0,s.extend2)({},o)).dataset=a.dataset,e.connectors=a.connectors,e.labels=a.labels,e},t}(a["default"]);t.configurer=m=v.prototype.configure,t["default"]=v,t.configurer=m},547:function(e,t,o){"use strict";t.__esModule=!0;var a=u(o(347)),r=o(118),n=o(122),i=o(125),l=u(o(548)),s=u(o(211)),c=u(o(419));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=(0,i.getDep)("redraphael","plugin"),d=Math.max,f=Math.min,g=r.preDefStr.CIRCLE,m=r.preDefStr.POLYGON,v=r.preDefStr.RECTANGLE,b=r.preDefStr.UNDERSCORE,y=r.preDefStr.GROUPID,x=r.preDefStr.EVENTARGS,w=r.preDefStr.OBJECTBOUNDINGBOX,k=r.preDefStr.DEFAULT,C=r.preDefStr.COMMA,N=r.preDefStr.POSITION_TOP,S=!!r.hasSVG,E=function(){this.hide()},A=function(e){return e!==undefined&&null!==e},T=function(e,t,o,a){return t.setAnimation({el:"group",attr:{name:e},container:o,component:a})},D=function(e,t,o){var a,i,l;return e=(0,n.getFirstColor)(e),t=(0,n.getFirstAlpha)(t),i=(0,n.getLightColor)(e,80),l=(0,n.getDarkColor)(e,65),a={FCcolor:{gradientUnits:w,color:i+C+l,alpha:t+C+t,ratio:r.BGRATIOSTRING}},o?a.FCcolor.angle=1===o?0:180:(a.FCcolor.cx=.4,a.FCcolor.cy=.4,a.FCcolor.r="50%",a.FCcolor.radialGradient=!0),a},L=function(e,t,o){var a,n=e.setTooltext,i=e.formatedVal,l=t.seriesname,s=e.label,c=e.xValue,u=e.pointLabel,p=t.tooltipSepChar;return n!==undefined?a=(0,r.parseTooltext)(n,[3,4,5,6,8,9,10,11],{yaxisName:(0,r.parseUnsafeString)(o.yaxisname),xaxisName:(0,r.parseUnsafeString)(o.xaxisname),yDataValue:i,xDataValue:c,label:s},e,o,t):u!==undefined?a=s:null===i?a=!1:(t.seriesNameInToolTip&&(l=(0,r.getFirstValue)(t.seriesname)),a=l?l+p:r.BLANK,a+=c?c+p:r.BLANK,a+=i),a};(0,i.addDep)({name:"dragNodeAnimation",type:"animationRule",extension:l["default"]}),(0,s["default"])(h);var _=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return p(t,e),t.prototype.getName=function(){return"dragNode"},t.prototype.getType=function(){return"dataset"},t.prototype.hide=function(){var e=this.getLinkedParent(),t={hide:!0};this.setState("dirty",!0),this.setState("visible",!1),e.childChanged(t),this.getFromEnv("chart").getChildren("legend")[0].getItem(this.config.legendItemId).setLegendState("hidden"),this.asyncDraw()},t.prototype.show=function(){var e=this.getLinkedParent(),t=this.getFromEnv("legend").getItem(this.config.legendItemId),o={show:!0};this.setState("visible",!0),this.setState("dirty",!0),e.childChanged(o),t&&t.removeLegendState("hidden"),this.asyncDraw()},t.prototype._setDatasetIndex=function(){var e=this.getLinkedParent().getChildren("dataset");this.config.datasetIndex=e.indexOf(this)},t.prototype.pointInShape=function(e,t,o){var a,r,n,i,l,s=this.getFromEnv("chart").getChildren("canvas")[0].config,c=o.symbol,u=o._xPos,p=o._yPos;return!(e<s.canvasLeft||e>s.canvasLeft+s.canvasWidth||t<s.canvasTop||t>s.canvasTop+s.canvasHeight)&&("rectangle"===c?(i=o._plotWidth,p-=(l=o._plotHeight)/2,e>=(u-=i/2)&&t>=p&&e<=u+i&&t<=p+l):(a=(e-u)*(e-u),r=(t-p)*(t-p),n=Number(o.radius),a+r<=(n*=n)))},t.prototype._firePlotEvent=function(e,t,o){var a,n,i,l=this.getFromEnv("chart"),s=this.components,c=this.getFromEnv("toolTipController"),u=s.data[t]||{},p=this.getGraphicalElement("sharedAnchor"),h=u.graphics&&u.graphics.element||void 0!==(u.config&&u.config.setValue)&&p,d=this.config.currentToolTip,f=this.config.viewMode,g=this.getLinkedParent(),m=u.graphics.element;if(h)switch(i=(a=u.config).setLink,n=a.eventArgs,e){case"fc-mouseover":this._decideTooltipType(t,o),this._rolloverResponseSetter(l,u,o),i&&(h.node.style.cursor=r.POINTER);break;case"fc-mouseout":c.hide(d),this._rolloutResponseSetter(l,u,o),i&&(h.node.style.cursor=k);break;case"fc-click":m.data("fire_click_event")&&l.plotEventHandler(h,o,"dataplotclick",n);break;case"fc-mousemove":g.hideWaitElem(),this._decideTooltipType(t,o);break;case"fc-mousedown":clearTimeout(m._longpressactive),m.data("fire_click_event",1),f||g.drawWaitingRing(u,this.config.datasetIndex);break;case"fc-mouseup":g.hideWaitElem(),g.clearLongPress()}},t.prototype.dragUp=function(e){this.data("drag-options").dataset._dragUp.call(this,e)},t.prototype.dragMove=function(e,t){var o=this.data("drag-options").dataset,a=t[0],r=t[1],n=t[2],i=t[3];o._dragMove.call(this,a,r,n,i)},t.prototype.dragStart=function(e){this.data("drag-options").dataset._dragStart.call(this,e)},t.prototype._dragStart=function(){var e,t=this.data("drag-options"),o=t.dataObj,a=o.graphics.element,r=a.getBBox(),n=o.config,i=t.dataset,l=i.getFromEnv("chart"),s=n.dragStart||(n.dragStart={}),c=o.graphics.cloneGraphic,u=i.getContainer("cloneGraphicGroup"),p=o.graphics.cloneText,h=o.graphics.image,d=o.graphics.cloneImage,f=o.graphics.label;S&&(a._.dirty=1),n.allowDrag&&(!c&&o.graphics.element&&(c=o.graphics.cloneGraphic=o.graphics.element.clone(),u.appendChild(c)),f&&!p&&((p=o.graphics.cloneText=o.graphics.label.clone()).followers[0]&&p.followers[0].el&&u.appendChild(p.followers[0].el),u.appendChild(p)),h&&!d&&(d=o.graphics.cloneImage=o.graphics.image.clone(),u.appendChild(d)),p&&p.show(),d&&d.show(),c&&c.show()),s.xPos=n._xPos,s.yPos=n._yPos,s.x=n.x,s.y=n.y,s.bBox=r,s.origX=s.lastDx||(s.lastDx=0),s.origY=s.lastDy||(s.lastDy=0),e=a.data(x),l.fireChartInstanceEvent("dataplotdragstart",e),c&&c.show(),p&&p.show(),d&&d.show()},t.prototype._dragMove=function(e,t){var o,a=this.data("drag-options"),r=a.dataObj,n=r.graphics.element,i=r.graphics.cloneGraphic,l=r.graphics.cloneImage,s=r.graphics.cloneText,c=r.config,u=c.dragStart,p=u.bBox.x+e,h=u.bBox.x2+e,d=u.bBox.y+t,f=u.bBox.y2+t,g=a.dataset,m=g.getFromEnv("animationManager"),v=g.getLinkedParent(),b=g.getFromEnv("chartConfig"),y=b.canvasLeft,x=b.canvasRight,w=b.canvasTop,k=b.canvasBottom;p<y&&(e+=y-p),h>x&&(e-=h-x),d<w&&(t+=w-d),f>k&&(t-=f-k),(e||t)&&(n.data("fire_click_event",0),v.hideWaitElem(),v.clearLongPress()),c.allowDrag&&(u.draged=!0,u.lastDx=e,u.lastDy=t,o=a._transformObj={transform:"t"+(u.origX+e)+C+(u.origY+t)},i&&m.setAnimation({el:i,attr:o,component:g}),l&&m.setAnimation({el:l,attr:o,component:g}),s&&m.setAnimation({el:s,attr:{x:c._xPos+e,y:c._yPos+t},component:g}))},t.prototype._getHoveredPlot=function(e,t){var o=this.config.tree.getNeighbour({x:e,y:t},!1);if(o)return{pointIndex:o.index||o.i,hovered:!0,pointObj:o.data}},t.prototype._rolloutResponseSetter=function(e,t,o){var a=this.getFromEnv("animationManager"),n=t.config,i=t.graphics.element,l=n.dragStart,s=i.data("unHoverAttr");l&&Object.keys(l).length||("poly"!==n.shapeType&&n.shapeType!==g||(s.path=(0,r.polyPathToPath)([n.shapeArg.sides,n._xPos,n._yPos,s.r,n.startAngle,0])),n.rollOverProperties.enabled&&a.setAnimation({el:i,attr:s,component:this}),e&&e.plotEventHandler(i,o,"DataPlotRollOut"))},t.prototype._rolloverResponseSetter=function(e,t,o){var a=this.getFromEnv("animationManager"),n=t.config,i=t.graphics.element,l=n.dragStart,s=i.data("hoverAttr");l&&Object.keys(l).length||("poly"!==n.shapeType&&n.shapeType!==g||(s.path=(0,r.polyPathToPath)([n.shapeArg.sides,n._xPos,n._yPos,s.r,n.startAngle,0])),n.rollOverProperties.enabled&&a.setAnimation({el:i,attr:s,component:this}),e&&e.plotEventHandler(i,o,"DataPlotRollOver"))},t.prototype._dragUp=function(e){var t,o,a,n,i,l,s=this.data("drag-options"),c=s.dataset,u=c.getFromEnv("chart"),p=c.components.data,h=s.dataObj,d=h.graphics.element,f=c.getLinkedParent(),g=h.config,m=h.config.dragStart||{},v=c.getFromEnv("yAxis"),b=h.graphics.cloneText,y=c.getFromEnv("xAxis"),w={},k=c.config.datasetIndex,C=h.graphics.cloneGraphic,N=h.graphics.cloneImage;if(f.hideWaitElem(),f.clearLongPress(),m.draged){for(m.origX+=m.lastDx,m.origY+=m.lastDy,h.config._xPos=m.xPos+m.lastDx,h.config._yPos=m.yPos+m.lastDy,w.x=y.getValue(h.config._xPos),w.y=v.getValue(h.config._yPos),w.update=!0,a=0,i=p.length;a<i&&(n=p[a],h.config.id!==n.config.id);a++);c.updatePointConfig(w,a),(l=d.data(x)).x=w.x,l.y=w.y,c.parsePlotAttributes(a),c._drawNode(a),t=h.config.startConnectors,o=h.config.endConnectors,f.drawNodeConnectors(t,k),f.drawNodeConnectors(o,k),(0,r.getMouseCoordinate)(u.getFromEnv("chart-container"),e).sourceEvent="dataplotdragend",u.fireChartInstanceEvent("chartupdated",(0,r.extend2)({sourceEvent:"dataplotdragend"},l),e),u.fireChartInstanceEvent("dataplotdragend",l,e),m.draged=!1,c._setupKdTree()}b&&b.hide(),C&&C.hide(),N&&N.hide(),delete g.dragStart},t.prototype.updatePointConfig=function(e,t){var o,a=this.components.data,n=this.config,i=(a[t]||{}).config,l=this.getFromEnv("number-formatter"),s=this.getFromEnv("chart-attrib");i!==undefined&&(i.y=l.getCleanValue((0,r.pluck)(e.y)),i.x=l.getCleanValue((0,r.pluck)(e.x)),i._options.x=i.x,i._options.y=i.y,o=l.xAxis(i.x),i.formatedVal=null===i.y?i.y:l.dataLabels(i.y),i.xValue=o,n.showTooltip?i.toolText=L(i,n,s):i.toolText=!1,i.update=e.update)},t.prototype.getNode=function(e){return e?this.components.nodes[e]:this.components.nodes},t.prototype.configureAttributes=function(e){if(e)this.trimData(e),this.config.JSONData=e;else if(!e&&!this.config.JSONData)return!1;var t,o,a,i,l,s,c,u=this.config.datasetIndex,p=this.config.JSONData,h=p.data||[],d=this.getFromEnv("chart-attrib"),f=this.getFromEnv("chartConfig"),g=h.length,m=this.config,v=r.ZEROSTRING,b=this.getFromEnv("color-manager"),y=r.HUNDREDSTRING;for(m.context={},this.components.nodes={},m.showValues=(0,r.pluckNumber)(p.showvalues,d.showvalues,1),c=m.useRoundEdges=(0,r.pluckNumber)(d.useroundedges),m.zIndex=1,m.name=(0,r.getValidValue)(p.seriesname),m.viewMode=(0,r.pluckNumber)(d.viewmode,0),m.id=(0,r.pluck)(p.id,this.index),0!==(0,r.pluckNumber)(p.includeinlegend)&&m.name!==undefined||(m.showInLegend=!1),m.seriesname=(0,r.parseUnsafeString)(p.seriesname),m.includeinlegend=(0,r.pluckNumber)(p.includeinlegend,m.seriesname?1:0),m.showTooltip=(0,r.pluckNumber)(d.showtooltip,1),m.seriesNameInTooltip=(0,r.pluckNumber)(d.seriesnameintooltip,1),m.tooltipSepChar=(0,r.pluck)(d.tooltipsepchar," - "),o=m.plotFillAlpha=(0,r.pluck)(d.plotfillalpha,y),a=m.showPlotBorder=(0,r.pluckNumber)(d.showplotborder,1),i=m.plotBorderColor=(0,n.getFirstColor)((0,r.pluck)(d.plotbordercolor,"666666")),l=m.plotBorderThickness=(0,r.pluckNumber)(d.plotborderthickness,c?2:1),s=m.plotBorderAlpha=(0,r.pluck)(d.plotborderalpha,d.plotfillalpha,c?"35":"95"),m.use3DLighting=Boolean((0,r.pluckNumber)(d.use3dlighting,d.is3d,c?1:0)),m.color=(0,n.getFirstColor)((0,r.pluck)(p.color,b.getPlotColor(u))),m.alpha=(0,r.pluck)(p.plotfillalpha,p.nodeFillAlpha,p.alpha,o),m.datasetShowPlotBorder=Boolean((0,r.pluckNumber)(p.showplotborder,a)),m.datasetPlotBorderColor=(0,n.getFirstColor)((0,r.pluck)(p.plotbordercolor,p.nodebordercolor,i)),m.datasetPlotBorderThickness=(0,r.pluckNumber)(p.plotborderthickness,p.nodeborderthickness,l),m.datasetPlotBorderAlpha=m.datasetShowPlotBorder?(0,r.pluck)(p.plotborderalpha,p.nodeborderalpha,p.alpha,s):v,m.datasetAllowDrag=Boolean((0,r.pluckNumber)(p.allowdrag,1)),m.colorObj={fillColor:(0,n.convertColor)(m.color,m.alpha),lineColor:{FCcolor:{color:m.datasetPlotBorderColor,alpha:m.datasetPlotBorderAlpha}}},m.lineWidth=void 0,m.symbol="poly_4",this.components.data||(this.components.data=[]),this.setState("visible",1===(0,r.pluckNumber)(p.visible,!Number(p.initiallyhidden),1)),m.yMin=m.yMax=m.xMax=m.xMin=0,this._refreshData=!0,t=0;t<g;t+=1)this._setConfigure(t);this._refreshData=!1,f.showLegend&&this._addLegend(),this._setDatasetIndex(),this.setState("dirty",!0)},t.prototype._setConfigure=function(e,t){var o,a,i,l,s,c,u=this.config.JSONData,p=u.data,h=t||p[e],v=this.components.data,b=this.config,y=v[e]=v[e]||(v[e]={}),x=y.config=y.config||(y.config={}),w=b.id,k=b.yMin||+Infinity,C=b.yMax||-Infinity,S=b.xMax||-Infinity,E=b.xMin||+Infinity,T=b.use3DLighting,_=b.datasetPlotBorderThickness,P=b.datasetPlotBorderColor,O=b.datasetPlotBorderAlpha,V=this.getFromEnv("chart-attrib"),M=b.color,F=b.alpha,I=b.datasetAllowDrag,B=this.getFromEnv("number-formatter");if(!y.graphics&&(y.graphics={}),x._options=(0,r.extend2)({},h),h||t){if(a=x.y=B.getCleanValue((0,r.pluck)(h.y)),i=x.x=B.getCleanValue((0,r.pluck)(h.x)),x.index=e,x.dragStart||(x.dragStart={}),C=d(C,x.y),k=f(k,x.y),S=d(S,x.x),E=f(E,x.x),null===a)x.value=null;else{switch(l=B.xAxis(i),x.formatedVal=null===a?a:B.dataLabels(a),x.setTooltext=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(h.tooltext,u.plottooltext,V.plottooltext))),x.pointLabel=(0,r.pluck)(h.label,h.name),s=(0,r.parseUnsafeString)(x.pointLabel),x.label=s,x.name=s,x.displayValue=s,x.xValue=l,t||(x.startConnectors={},x.endConnectors={}),b.showTooltip?x.toolText=L(x,b,V):x.toolText=!1,x.link=h.link,x.id=(0,r.pluck)(h.id,w+r.preDefStr.UNDERSCORE+e),x.allowDrag=Boolean((0,r.pluckNumber)(h.allowdrag,I)),o=x.shape=(0,r.getValidValue)((0,r.pluck)(h.shape),r.preDefStr.RECTANGLE).toLowerCase(),x.height=(0,r.getValidValue)((0,r.pluck)(h.height),10),x.width=(0,r.getValidValue)((0,r.pluck)(h.width),10),x.radius=(0,r.getValidValue)((0,r.pluck)(h.radius),10),x.numSides=(0,r.getValidValue)((0,r.pluck)(h.numsides),4),x.color=(0,n.getFirstColor)((0,r.pluck)(h.color,M)),x.borderColor=(0,n.getFirstColor)((0,r.pluck)(h.bordercolor,P)),x.alpha=(0,r.pluck)(h.alpha,F),x.imageURL=(0,r.getValidValue)(h.imageurl),x.imageNode=Boolean((0,r.pluckNumber)(h.imagenode)),x.imageWidth=h.imagewidth,x.imageHeight=h.imageheight,x.imageAlign=(0,r.getValidValue)(h.imagealign,r.BLANK).toLowerCase(),x.labelAlign=(0,r.pluck)(h.labelalign,x.imageNode&&A(x.imageURL)?N:r.preDefStr.POSITION_MIDDLE),x.hovercolor=(0,r.pluck)(h.hovercolor,u.hovercolor),x.borderhoveralpha=(0,r.pluck)(h.borderhoveralpha,u.borderhoveralpha),x.borderhovercolor=(0,r.pluck)(h.borderhovercolor,u.borderhovercolor),x.borderhoverthickness=(0,r.pluck)(h.borderhoverthickness,u.borderhoverthickness),x.hoveralpha=(0,r.pluck)(h.hoveralpha,u.hoveralpha),x.hoverheight=(0,r.pluck)(h.hoverheight,u.hoverheight),x.hoverradius=(0,r.pluck)(h.hoverradius,u.hoverradius),x.hoverwidth=(0,r.pluck)(h.hoverwidth,u.hoverwidth),x.shape){case g:c=0;break;case m:c=2,o=(0,n.mapSymbolName)(x.numSides);break;default:c=1}x.symbol=o,T?(x.fillColor=D(x.color,x.alpha,c),x.cloneFillColor=D(x.color,50,c)):(x.fillColor={color:x.color,alpha:x.alpha},x.cloneFillColor=(0,n.convertColor)(x.color,50)),x.colorArr=[{FCcolor:{color:x.color,alpha:x.alpha}},{FCcolor:{color:x.borderColor,alpha:O}}],x.rollOverProperties=this.pointHoverOptions(y,V,{shapeType:c,use3D:T,height:x.height,width:x.width,radius:x.radius,color:x.color,alpha:x.alpha,borderColor:x.borderColor,borderAlpha:O,borderThickness:_})}!x.update&&t&&(x.update=t.update),!x.add&&t&&(x.add=t.add),!0===this._refreshData&&delete y.removed}y.dataset=this,b.xMax=S,b.xMin=E,b.yMin=k,b.yMax=C},t.prototype.pointHoverOptions=function(e,t,o){var a,i,l,s=(0,r.pluckNumber)(e.config.showhovereffect,this.config.showhovereffect,t.plothovereffect,t.showhovereffect),c={},u=!!(0,r.pluck)(e.config.hovercolor,this.config.hovercolor,t.plotfillhovercolor,e.config.hoveralpha,this.config.hoveralpha,t.plotfillhoveralpha,e.config.borderhovercolor,this.config.borderhovercolor,t.plotborderhovercolor,e.config.borderhoveralpha,this.config.borderhoveralpha,t.plotborderhoveralpha,e.config.borderhoverthickness,this.config.borderhoverthickness,t.plotborderhoverthickness,e.config.hoverheight,this.config.hoverheight,t.plothoverheight,e.config.hoverwidth,this.config.hoverwidth,t.plothoverwidth,e.config.hoverradius,this.config.hoverradius,t.plothoverradius,s),p=!1;return(s===undefined&&u||s)&&(p=!0,a=(0,r.pluck)(e.config.hovercolor,this.config.hovercolor,t.plotfillhovercolor,(0,n.getLightColor)(o.color,70)),i=(0,r.pluck)(e.config.hoveralpha,this.config.hoveralpha,t.plotfillhoveralpha,o.alpha),c={stroke:(0,n.convertColor)((0,r.pluck)(e.config.borderhovercolor,this.config.borderhovercolor,t.plotborderhovercolor,o.borderColor),(0,r.pluckNumber)(e.config.borderhoveralpha,this.config.borderhoveralpha,t.plotborderhoveralpha,i,o.borderAlpha)),"stroke-width":(0,r.pluckNumber)(e.config.borderhoverthickness,this.config.borderhoverthickness,t.plotborderhoverthickness,o.borderThickness),height:(0,r.pluckNumber)(e.config.hoverheight,this.config.hoverheight,t.plothoverheight,o.height),width:(0,r.pluckNumber)(e.config.hoverwidth,this.config.hoverwidth,t.plothoverwidth,o.width),r:(0,r.pluckNumber)(e.config.hoverradius,this.config.hoverradius,t.plothoverradius,o.radius)},l=o.use3D?D((0,n.getFirstColor)((0,r.pluck)(e.config.hovercolor,this.config.hovercolor,t.plotfillhovercolor,(0,n.getLightColor)(o.color,70))),(0,r.pluck)(e.config.hoveralpha,this.config.hoveralpha,t.plotfillhoveralpha,o.alpha),o.shapeType):(0,n.convertColor)(a,i),c.fill=(0,r.toRaphaelColor)(l)),{enabled:p,rollOverAttrs:c}},t.prototype._addLegend=function(){var e,t=this.config,o=this.getFromEnv("legend"),a={enabled:t.includeInLegend,type:this.type,anchorSide:4,label:(0,r.getFirstValue)(this.config.JSONData.seriesname)};t.includeinlegend?((e=o.getItem(this.config.legendItemId))?e.configure({style:o.config.itemStyle,hiddenStyle:o.config.itemHiddenStyle,datasetVisible:o.config.datasetVisible,hoverStyle:o.config.itemHoverStyle}):(this.config.legendItemId=o.createItem(this),e=o.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){e.itemClickFn()},e)),e.configure(a),e.setStateCosmetics("default",{symbol:{fill:(0,r.toRaphaelColor)({color:t.color,alpha:t.alpha}),rawFillColor:t.color,stroke:(0,r.toRaphaelColor)({color:t.plotBorderColor,alpha:r.HUNDREDSTRING}),"stroke-width":t.anchorBorderThickness}}),this.getState("visible")?e.removeLegendState("hidden"):e.setLegendState("hidden")):this.config.legendItemId&&o.disposeItem(this.config.legendItemId)},t.prototype.createContainer=function(){var e=this.getFromEnv("animationManager"),t=this.getLinkedParent().getChildContainer();!this.getContainer("nodesGroup")&&this.addContainer("nodesGroup",T("nodesGroup",e,t.defaultVcanvasGroup,this)),!this.getContainer("dataLabelsGroup")&&this.addContainer("dataLabelsGroup",T("dataLabelsGroup",e,t.vcanvasLabelGroup,this)),!this.getContainer("cloneGraphicGroup")&&this.addContainer("cloneGraphicGroup",T("cloneGraphicGroup",e,t.defaultVcanvasGroup,this))},t.prototype.draw=function(){var e,t,o,a=this.components,r=this.getFromEnv("smartLabel"),n=a.data,i=this.components.removeDataArr||[],l=i.length,s=this.getFromEnv("dataLabelStyle"),c={fontFamily:s.fontFamily,fontSize:s.fontSize,lineHeight:s.lineHeight,fontWeight:s.fontWeight,fontStyle:s.fontStyle};if(this.getState("dirty")||this._contextChanged()){for(this.createContainer(),o=this.getContainer("nodesGroup"),this.getFromEnv("animationManager").setAnimation({el:this.getContainer("cloneGraphicGroup"),attr:{opacity:.3},component:this}),o.css(c),r.useEllipsesOnOverflow(this.getFromEnv("chartConfig").useEllipsesWhenOverflow),e=0,t=n.length;e<t;e+=1)!n[e].removed&&this._drawNode(e);for(this.config.drawn=!0,e=0;e<l;e++)this._removeDataVisuals(i.shift());this._setupKdTree()}},t.prototype._setupKdTree=function(){var e,t,o,a,n,i=this.config,l=this.components.data,s=-Infinity;for(n=i.searchDataArr=[],e=l.length,t=0;t<e;t++)o=l[t].config,l[t].removed||o._yPos===undefined||isNaN(o._yPos)||(a=o.props.element.attr,s=Math.max(s,(0,r.pluckNumber)(o.radius,0)),n.push({x:(0,r.pluckNumber)(a.x,o._xPos),y:(0,r.pluckNumber)(a.y,o._yPos),index:t,data:l[t],shapeInfo:{type:o.shape,radius:(0,r.pluck)(o.radius,0),width:(0,r.pluckNumber)(o.width),height:(0,r.pluckNumber)(o.height),sides:(0,r.pluckNumber)(o.numSides)}}));i.tree=new c["default"](!0).buildKdTree(n),i.tree._setSearchLimit(s,s)},t.prototype.drawLabel=function(e){var t,o,a,n,i,l,s,c,u,p,h,d,f,g,m,v,b,w,k,C,S,E,T,D=this.getFromEnv("chart"),L=this.config.datasetIndex,_=this.getFromEnv("animationManager"),P=this.components.data,O=P.length,V=this.getContainer("nodesGroup"),M=this.getFromEnv("chartConfig"),F=this.getFromEnv("dataLabelStyle"),I=this.dragUp,B=this.dragMove,R=this.dragStart,j=this.getFromEnv("smartLabel"),G=this.getState("visible");for(j.setStyle(F),e!==undefined?O=(t=e)+1:t=0;t<O;t++)if(v=(n=(p=P[t]).config)._plotWidth,b=n._plotHeight,i=n.displayValue,w=n.labelAlign,m=(k=p.graphics).cloneText,C=p.config.rollOverProperties,S=n.shapeType,G&&(A(i)||i!==r.BLANK)){switch(j.useEllipsesOnOverflow(M.useEllipsesWhenOverflow),c=.5*b-.5*(s=j.getSmartText(i,v-1,b-1)).height,w){case N:c=-c;break;case r.POSITION_BOTTOM:break;default:c=0}d=n._xPos,E=n._yPos,p._yAdjustment=h=c,f=E+h,l=n.link?r.POINTER:n.allowDrag?"move":r.BLANKSTRING,o={text:s.text,title:s.tooltext||r.BLANKSTRING,fill:F.color,"text-bound":[F.backgroundColor,F.borderColor,F.borderThickness,F.borderPadding,F.borderRadius,F.borderDash],x:d,y:f,cursor:l},a=k.label,a=_.setAnimation({el:a||"text",attr:o,container:V,component:this}),k.label?a.show():(a=this.addGraphicalElement("plotLabel",a,!0),k.label=a,a.drag(B,R,I)),(T=k&&(k.image||k.element))&&a.insertAfter(T),m&&_.setAnimation({el:m,attr:{transform:r.BLANKSTRING,x:d,y:f,text:s.text,title:s.tooltext||r.BLANKSTRING,fill:F.color,"text-bound":[F.backgroundColor,F.borderColor,F.borderThickness,F.borderPadding,F.borderRadius,F.borderDash]},component:this}),a.data("drag-options",{dataObj:p,dataset:this,datasetIndex:L,pointIndex:p.config.index,cursor:l,chart:D,link:p.link}),u={index:t,link:n.link,y:n.y,x:n.x,shape:(0,r.pluck)(S,"rect"),width:n.width,height:n.height,radius:n.radius,sides:n.numSides,label:n.displayValue,toolText:n.toolText,id:n.id,datasetIndex:L,datasetName:this.config.JSONData.seriesname,sourceType:"dataplot"},g=L+"_"+t,a.data(y,g),a.data(x,u),a.data("hoverAttr",C&&C.rollOverAttrs),a.data("unHoverAttr",T.data("unHoverAttr"))}else k.label&&k.label.hide()},t.prototype.parsePlotAttributes=function(e){var t,o,a,n,i,l,s,c,u,p,h,d,f,m,y,x,w,k,C,N,S,E,A,T=this.config.datasetIndex,D=this.components,L=D.nodes,_=this.getFromEnv("xAxis"),P=this.getFromEnv("yAxis"),O=D.data[e],V=O.config,M=this.config,F=O.graphics||(O.graphics={}),I=V.symbol,B=M.colorObj.lineColor,R=M.datasetPlotBorderThickness,j=O.config.rollOverProperties,G=V.shape,H=V.link?r.POINTER:V.allowDrag?"move":r.BLANKSTRING,W=F.cloneImage;if(V._yPos=o=P.getPixel(V.y),V._xPos=t=_.getPixel(V.x),o!==undefined&&!isNaN(o)){if(V.shapeArg={},c=V.shapeArg,n=(0,r.pluckNumber)(V.height),a=(0,r.pluckNumber)(V.width),i=(0,r.pluckNumber)(V.radius),f=I===v,l=V.id,s=V.imageNode,u=V.imageURL,p=V.imageAlign,h=f?a:1.4*i,m=(0,r.pluckNumber)(V.imageWidth,h),d=f?n:1.4*i,y=(0,r.pluckNumber)(V.imageHeight,d),k=(0,r.toRaphaelColor)(V.fillColor),V._plotWidth=h,V._plotHeight=d,w={fill:k,"stroke-width":R,stroke:(0,r.toRaphaelColor)(B)},N=[(I=(I=c.symbol=(0,r.pluck)(V.symbol,M.symbol,r.BLANK)).split(b))[1],t,o,V.radius,V.startAngle,0],"poly"===I[0]||I[0]===g?(V.shapeType=I[0],V.elemType="path",S={path:(0,r.polyPathToPath)(N)},c.x=t,c.y=o,c.radius=V.radius,c.sides=I[1],w.r=V.radius,delete w.width,delete w.x,delete w.y,delete w.height,j&&j.enabled&&(delete(C=j.rollOverAttrs).x,delete C.y,delete C.width,delete C.height)):(V.shapeType=r.SHAPE_RECT,V.elemType="rect",c.x=t-a/2,c.y=o-n/2,c.r=0,c.width=a,c.height=n,S={x:c.x,y:c.y,width:a,height:n,r:0},w.width=a,w.height=n,w.x=t-a/2,w.y=o-n/2,j&&j.enabled&&((C=j.rollOverAttrs).x=t-C.width/2,C.y=o-C.height/2,delete C.r)),S.fill=k,S["stroke-width"]=R,S.stroke=(0,r.toRaphaelColor)(B),V.eventArgs={index:e,link:V.link,y:V.y,x:V.x,shape:(0,r.pluck)(G,"rect"),width:a,height:n,radius:i,sides:V.numSides,label:V.displayValue,toolText:V.toolText,id:V.id,datasetIndex:T,datasetName:this.config.JSONData.seriesname,sourceType:"dataplot"},s&&u){switch(y>d&&(y=d),m>h&&(m=h),p){case r.POSITION_MIDDLE:x=o-y/2;break;case r.POSITION_BOTTOM:x=d>y?o+d/2-y:o-y/2;break;default:x=d>y?o-.5*d:o-y/2}V.imageX=t-m/2,V.imageY=x,V.imageWidth=m,V.imageHeight=y,A={src:u,x:V.imageX,y:x,width:m,height:y,cursor:H},W&&(E={transform:r.BLANKSTRING,src:u,x:V.imageX,y:x,width:m,height:y})}V.pointAttr=w,L[l]=O,V.props={element:{attr:S},imageElement:{attr:A},cloneImage:{attr:E},cloneGraphic:{attr:S}}}},t.prototype.allocatePosition=function(e){var t,o;if(o=this.components.data.length,e!==undefined)this.parsePlotAttributes(e);else for(t=0;t<o;t++)this.parsePlotAttributes(t)},t.prototype._drawNode=function(e){var t,o,a=this.getFromEnv("chart"),n=this.config.datasetIndex,i=this.getLinkedParent(),l=this.components,s=this.getFromEnv("animationManager"),c=l.data[e],u=c.config,p=c.graphics||(c.graphics={}),h=u.imageNode,d=u.imageURL,f=this.getContainer("nodesGroup"),g=c.config.rollOverProperties,m=this.dragUp,v=this.dragMove,b=this.dragStart,w=u.link?r.POINTER:u.allowDrag?"move":r.BLANKSTRING,k=p.graphic,C=p.cloneText,N=p.cloneGraphic,S=p.cloneImage,A=p.image,T=p.label,D=this.getState("visible");u._yPos===undefined||isNaN(u._yPos)?(p.element&&(p.element=s.setAnimation({el:p.element,component:this})),p.image&&(p.image=s.setAnimation({el:p.image,component:this})),p.label&&(p.label=s.setAnimation({el:p.label,component:this}))):(o=(k=p.element)&&k.type,-1===u.elemType.indexOf(o)&&k&&(k.remove(),k=p.element=null,T&&T.remove(),A&&A.remove(),delete p.label,delete p.image,A=null,T=null),k=s.setAnimation({el:k||u.elemType,label:"node",attr:u.props.element.attr,container:f,component:this}),p.graphic||k.drag(v,b,m),p.element=k,k.show(),i.animationDone=!0,t=n+"_"+e,N&&(N.type===k.type?s.setAnimation({el:N,attr:u.props.element.attr,component:this}).transform(r.BLANKSTRING):(N.remove(),delete c.graphics.cloneGraphic,C&&(C.remove(),delete c.graphics.cloneText))),h&&d?(A=s.setAnimation({el:p.image||"image",attr:D&&u.props.imageElement.attr,doNotRemove:!0,container:f,component:this,callback:!D&&E}),!p.image&&A&&A.drag(v,b,m),p.image=A,D&&A.show(),A.data("drag-options",{dataObj:c,dataset:this,datasetIndex:this.index,pointIndex:c.config.index,cursor:w,link:c.link}),A.data(y,t),A.data(x,u.eventArgs),A.data("hoverAttr",g&&g.rollOverAttrs),A.data("unHoverAttr",u.pointAttr),S&&s.setAnimation({el:S,attr:u.props.cloneImage.attr,component:this})):p.image&&(p.image=s.setAnimation({el:p.image,component:this})),this.drawLabel(e),s.setAnimation({el:k,attr:{cursor:w},component:this}),k.data("drag-options",{dataObj:c,dataset:this,datasetIndex:this.index,pointIndex:c.config.index,cursor:w,chart:a,link:c.link}),k.data(y,t),k.data(x,u.eventArgs),k.data("hoverAttr",g&&g.rollOverAttrs),k.data("unHoverAttr",u.pointAttr),D?k.show():k.hide())},t.prototype.trimData=function(e){if(this.config.JSONData){var t=this.components,o=t.data&&t.data.length,a=e.data&&e.data.length||0,r=o-a;r>0&&this.removeData(a,r)}},t.prototype.removeData=function(e,t){var o=this.components,a=this.getLinkedParent(),r=o.data,n=o.removeDataArr||(o.removeDataArr=[]);t=t||1,(e=e||0)<0&&(e=0),o.removeDataArr=n=n.concat(r.splice(e,t)),a._clearConnectors()},t.prototype._removeDataVisuals=function(e){var t,o,a;if(e)for(t in o=e.graphics)(a=o[t]).hide&&"function"==typeof a.hide&&(this.getFromEnv("animationManager").setAnimation({el:a,attr:{"text-bound":[]},component:this}),a.hide(),a.transform&&a.transform(r.BLANKSTRING))},t.prototype.getJSONData=function(){var e,t,o=this.components.data,a=o.length,r=[];for(t=0;t<a;t++)(e=o[t]).removed||e.config._options&&(delete e.config._options.update,delete e.config._options.add,r.push(e.config._options));return r},t}(a["default"]);t["default"]=_},548:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.dragNode":function(){return{"node.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"axis"}]}}}}},549:function(e,t,o){"use strict";t.__esModule=!0;var a=s(o(547)),r=o(118),n=o(122),i=o(125),l=s(o(550));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u=r.preDefStr.EVENTARGS,p=r.preDefStr.configStr,h=function(e){var t,o=e.config,a=o.fromPointObj,n=o.toPointObj,i=o.fromX,l=o.fromY,s=o.toX,c=o.toY,u=["M",i,l];return o.arrowAtStart&&(u=(t=a.config).shapeType===r.SHAPE_RECT?u.concat(f._drawArrow(i,l,s,c,t.shapeArg.width,t.shapeArg.height)):u.concat(f._drawArrow(i,l,s,c,t.shapeArg.radius))),o.arrowAtEnd&&(u=(t=n.config).shapeType===r.SHAPE_RECT?u.concat(f._drawArrow(s,c,i,l,t.shapeArg.width,t.shapeArg.height)):u.concat(f._drawArrow(s,c,i,l,t.shapeArg.radius))),u.push("L",s,c),u},d=function(e,t,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,component:o,label:"group"})};(0,i.addDep)({name:"connectorAnimation",type:"animationRule",extension:l["default"]});var f=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"dragNodeConnector"},t.prototype._setDatasetIndex=function(){var e=this.getLinkedParent().getChildren("connector");this.config.datasetIndex=e.indexOf(this)},t.prototype.configureAttributes=function(e){if(e)this.trimData(e),this.config.JSONData=e;else if(!e&&!this.config.JSONData)return!1;var t,o=this.getFromEnv("chart-attrib"),a=this.config,i=this.config.JSONData,l=i.connector,s=l&&l.length,c=r.HUNDREDSTRING;for(a.connectorsTooltext=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(i.connectortooltext,o.connectortooltext))),a.stdThickness=(0,r.pluckNumber)(i.stdthickness,1),a.conColor=(0,n.getFirstColor)((0,r.pluck)(i.color,"FF5904")),a.conAlpha=(0,r.pluck)(i.alpha,c),a.conDashGap=(0,r.pluckNumber)(i.dashgap,5),a.conDashLen=(0,r.pluckNumber)(i.dashlen,5),a.conDashed=Boolean((0,r.pluckNumber)(i.dashed,0)),a.arrowAtStart=Boolean((0,r.pluckNumber)(i.arrowatstart,1)),a.arrowAtEnd=Boolean((0,r.pluckNumber)(i.arrowatend,1)),a.conStrength=(0,r.pluckNumber)(i.strength,1),a.toolTipSepChar=(0,r.pluck)(o.tooltipsepchar," - "),a.showTooltip=(0,r.pluckNumber)(o.showtooltip,1),a.viewMode=(0,r.pluckNumber)(o.viewmode,1),a._refreshData=!0,this._setDatasetIndex("connector"),t=0;t<s;t+=1)this._setConfigure(t,l[t]);a._refreshData=!0},t.prototype._setConfigure=function(e,t){var o,a,i,l=this.components.data||(this.components.data=[]),s=l[e]||(l[e]=l[e]={}),c=this.config,u=(0,r.parseUnsafeString)((0,r.pluck)(t.label,t.name)),p=(0,r.pluck)(t.alpha,c.conAlpha),h=this.getFromEnv("smartLabel"),d="$fromLabel"+c.toolTipSepChar+"$toLabel",f={FCcolor:{color:(0,n.getFirstColor)((0,r.pluck)(t.color,c.conColor)),alpha:p}},g=c.connectorsTooltext,m=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(t.tooltext,g))),v=Boolean((0,r.pluckNumber)(t.dashed,c.conDashed));h.setStyle(this.getFromEnv("dataLabelStyle")),h.useEllipsesOnOverflow(this.getFromEnv("chartConfig").useEllipsesWhenOverflow),i=h.getOriSize(u),a=s.config=s.config||(s.config={}),!s.graphics&&(s.graphics={}),o=!!c.showTooltip&&(0,r.pluck)(m,u?"$label":d),(a=s.config={_options:t,id:(0,r.pluck)(t.id,e).toString(),from:(0,r.pluck)(t.from,r.BLANK),to:(0,r.pluck)(t.to,r.BLANK),label:u,toolText:o,customToolText:m,color:f,index:e,dashStyle:v?(0,r.getDashStyle)((0,r.pluckNumber)(t.dashlen,c.conDashLen),(0,r.pluckNumber)(t.dashgap,c.conDashGap)):r.DASH_DEF,dashed:t.dashed,dashlen:t.dashlen,dashgap:t.dashgap,arrowAtStart:Boolean((0,r.pluckNumber)(t.arrowatstart,c.arrowAtStart)),arrowAtEnd:Boolean((0,r.pluckNumber)(t.arrowatend,c.arrowAtEnd)),conStrength:(0,r.pluckNumber)(t.strength,c.conStrength),link:t.link,stdThickness:c.stdThickness,labelWidth:i.widht,labelHeight:i.height}).datasetIndex=this.config.datasetIndex,a.add=t.add,a.update=t.update,c._refreshData&&delete s.removed},t.prototype.createContainer=function(){var e=this.getLinkedParent().getChildContainer();!this.getContainer("connectorGroup")&&this.addContainer("connectorGroup",d("connectorGroup",e.connectorGroup,this)),!this.getContainer("connectorDataLabelGroup")&&this.addContainer("connectorDataLabelGroup",d("connectorDataLabelGroup",e.connectorGroup,this))},t.prototype.draw=function(){var e,t,o,a,r,n,i,l=this.getLinkedParent(),s=this.config,c=this.components.data,u=this.getFromEnv("dataLabelStyle"),p=c.length,h=this.components.removeDataArr||[],d=h.length;for(this.createContainer(),s.cleared=!1,this.getContainer("connectorDataLabelGroup").css(u),n=0;n<p;n++)t=(i=(e=c[n]).config).from,o=i.to,a=l.getNode(t),r=l.getNode(o),a&&r&&!0!==i.deleted&&this.drawConnector(e,a,r,n);for(this.config.drawn=!0,n=0;n<d;n++)this._removeDataVisuals(h.shift())},t.prototype.parsePlotAttributes=function(e,t,o){var a,n,i,l,s,c,u,p,d,f,g,m,v=this.getFromEnv("number-formatter"),b=e.config,y=b.eventArgs||(b.eventArgs={});b.fromPointObj=t,b.toPointObj=o,d=t.config,f=o.config,b.fromX=a=d._xPos,b.fromY=i=d._yPos,b.toX=n=f._xPos,b.toY=l=f._yPos,b._labelX=(a+n)/2,b._labelY=(i+l)/2,b.strokeWidth=s=b.conStrength*b.stdThickness,g=b.color,b.textBgColor=g&&g.FCcolor&&g.FCcolor.color,y.label=b.label,y.arrowAtStart=b.arrowAtStart,y.arrowAtEnd=b.arrowAtEnd,y.link=b.link,y.id=b.id,y.fromNodeId=d.id,y.toNodeId=f.id,b.toolText=(0,r.parseTooltext)(b.toolText,[3,83,84,85,86,87,88,89,90,91,92],{label:b.label,fromXValue:v.dataLabels(t.config.x),fromYValue:v.dataLabels(t.config.y),fromXDataValue:t.config.x,fromYDataValue:t.config.y,fromLabel:(0,r.pluck)(t.config.displayValue,t.config.id),toXValue:v.dataLabels(o.config.x),toYValue:v.dataLabels(o.config.y),toXDataValue:o.config.x,toYDataValue:o.config.y,toLabel:(0,r.pluck)(o.config.displayValue,o.config.id)}),d=t.config,f=o.config,u=d.startConnectors||(d.startConnectors={}),p=f.endConnectors||(f.endConnectors={}),u[m=e.config.id+"-"+d.id+"-"+f.id]=e,p[m]=e,c=h(e),b.props={element:{attr:{path:c,"stroke-width":s,"stroke-dasharray":b.dashStyle,cursor:b.link?r.POINTER:r.BLANKSTRING,stroke:(0,r.toRaphaelColor)(g)}}}},t.prototype.allocatePosition=function(){var e,t,o,a,r,n,i,l=this.getLinkedParent(),s=this.components.data,c=s.length;for(e=0;e<c;e++)a=(o=(t=s[e]).config).from,r=o.to,n=l.getNode(a),i=l.getNode(r),n&&i&&!0!==o.deleted&&this.parsePlotAttributes(t,n,i,e)},t.prototype.drawConnector=function(e){var t,o,a=this.getFromEnv("toolTipController"),r=this.getFromEnv("animationManager"),n=e.graphics,i=this.getContainer("connectorGroup"),l=e.config,s=l.toolText,c=l.eventArgs||(l.eventArgs={}),h=this.config,d=this.components.pool||{};e.removed||(t=o=n.graphic,n.graphic||d.graphic&&d.graphic.path&&d.graphic.path.length&&(o=n.graphic=d.graphic.path.shift()),t=r.setAnimation({el:o||"path",container:i,attr:l.props.element.attr,label:"path",component:this}),o||(n.graphic=t,t.on("fc-mousedown",this.mouseDown).on("fc-mousemove",this.mousemove).on("fc-mouseup",this.mouseup).hover(this.hoverIn,this.hoverOut)),t.show().data(u,c).data("viewMode",h.viewMode).data(p,l).data("dataset",this),h.showTooltip?a.enableToolTip(t,s):a.disableToolTip(t),this.drawLabel(e))},t.prototype.drawLabel=function(e){var t,o,a,n,i,l,s,c,h,d,f,g=this,m=g.getFromEnv("toolTipController"),v=g.config,b=g.getFromEnv("animationManager"),y=g.getContainer("connectorDataLabelGroup"),x=g.getFromEnv("dataLabelStyle"),w=g.components.data,k=g.components.pool||{},C=w.length,N=function(e){t=e.config,a=t.toolText,s=e.graphics,o=t.label,h=t._labelX,d=t._labelY,f=t.textBgColor,o?(l=s.text=s.text||k.element&&k.element.text&&k.element.text.shift(),n={text:o,fill:x.color,direction:r.BLANKSTRING,cursor:t.link?r.POINTER:r.BLANKSTRING,"text-bound":[(0,r.pluck)(x.backgroundColor,f),(0,r.pluck)(x.borderColor,f),1,"2"],x:h,y:d},(i=b.setAnimation({el:l||"text",attr:n,container:y,label:"text",component:g})).show(),l||(s.text=i,i.on("fc-mousedown",g.mouseDown).on("fc-mousemove",g.mousemove).on("fc-mouseup",g.mouseup).hover(g.hoverIn,g.hoverOut)),i.data(u,t.eventArgs).data("viewMode",v.viewMode).data(p,t).data("dataset",g),v.showTooltip?m.enableToolTip(i,a):m.disableToolTip(i)):s.text&&s.text.hide()};if(e)N(e);else for(c=0;c<C;c++)N(w[c])},t.prototype.mouseDown=function(){var e=this.data("dataset").getLinkedParent();e.clearLongPress(),this.data("fire_click_event",1),e.triggerConnectorUI(this)},t.prototype.mousemove=function(){var e=this.data("dataset").getLinkedParent();this.data("fire_click_event",0),e.clearLongPress()},t.prototype.mouseup=function(){this.data("dataset").getLinkedParent().clearLongPress()},t.prototype.hoverIn=function(e){this.data("dataset").getFromEnv("chart").plotEventHandler(this,e,"ConnectorRollover")},t.prototype.hoverOut=function(e){this.data("dataset").getFromEnv("chart").plotEventHandler(this,e,"ConnectorRollout")},t._drawArrow=function(e,t,o,a,r,n){var i,l,s,c,u=(t-a)/(e-o),p=Math.atan(u),h=[];return p<0&&(p=2*Math.PI+p),a>t?(o>=e&&p>Math.PI||o<e&&p>Math.PI)&&(p-=Math.PI):(o>=e&&p<Math.PI&&0!==p||o<e&&p<Math.PI)&&(p+=Math.PI),void 0===n?(i=e+r*Math.cos(p),l=t+r*Math.sin(p)):(s=Math.abs(r)/2,c=Math.abs(n)/2,i=e+(s=e<o?s:-s),l=t+s*Math.tan(p),Math.abs(t-l)>Math.abs(c)&&(l=t+(c=t<a?c:-c),i=e+c/Math.tan(p))),h.push("L",i,l,i+10*Math.cos(p+.79),l+10*Math.sin(p+.79),"M",i+10*Math.cos(p-.79),l+10*Math.sin(p-.79),"L",i,l),h},t.prototype.removeData=function(e,t){var o=this.components,a=o.data;e<0&&(e=0),o.removeDataArr=a.splice(e,t)},t.prototype.trimData=function(e){if(this.config.JSONData){var t=this.components,o=t.data&&t.data.length,a=e.connector&&e.connector.length||0,r=o-a;r>0&&this.removeData(a,r)}},t}(a["default"]);t["default"]=f},550:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.dragNodeConnector":function(){return{"path.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot"}]},"text.appearing":function(){return[{initialAttr:{opacity:0,"text-bound":"none"},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},551:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(547)),r=o(118),n=o(125),i=l(o(552));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c=r.preDefStr.PX,u="rgba(192,192,192,"+(r.isIE?.002:1e-6)+")",p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return(0,n.addDep)({name:"draggablelabelAnimation",type:"animationRule",extension:i["default"]}),o}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"dragNodeLabels"},t.prototype.configure=function(e){if(e)this.trimData(e),this.config.JSONData=e.label;else if(!e&&!this.config.JSONData)return!1;var t,o=this.getFromEnv("chart-attrib"),a=this.config,n=(this.config.JSONData||[]).length,i=this.components.data;for(a.viewMode=(0,r.pluckNumber)(o.viewmode,0),i||(i=this.components.data=[]),t=0;t<n;t++)this._setConfigure(t)},t.prototype._setConfigure=function(e,t){var o,a,n,i,l=this.config.JSONData,s=t||l[e],u=this.components.data,p=this.getFromEnv("style").inCanvasStyle,h=p.fontSize;!(o=u[e])&&(o=u[e]={}),!o.graphics&&(o.graphics={}),n=o.config=o.config||(o.config={}),a=(0,r.parseUnsafeString)((0,r.pluck)(s.text,s.label)),n._options=s,n.add=s.add,a&&(n.text=a,n.x=s.x||0,n.y=s.y||0,n.labelFontSize=i=(0,r.pluckNumber)(s.fontsize,h),n.labelColor=(0,r.hashify)((0,r.pluck)(s.color,p.color)),n.alpha=(0,r.pluckNumber)(s.alpha,100)/100,n.allowDrag=(0,r.pluckNumber)(s.allowdrag,1),n.padding=(0,r.pluckNumber)(s.padding,5),s.fontsize?n.labelCSS={fontSize:i+c}:n.labelCSS={},n.labelBGColor=(0,r.pluck)(s.bgcolor&&s.bgcolor.replace(r.dropHash,r.HASHSTRING)),n.labelBDColor=(0,r.pluck)(s.bordercolor&&s.bordercolor.replace(r.dropHash,r.HASHSTRING)),n.link=s.link,n.borderThickness=s.borderthickness,n.dashLen=s.dashlen,n.dashGap=s.dashgap,n.dashed=s.dashed,n.radius=s.radius)},t.prototype.getJSONData=function(){var e,t,o=this.components.data,a=o.length,r=[];for(t=0;t<a;t++)(e=o[t]).removed||e.config._options&&r.push(e.config._options);return r},t.prototype.createContainer=function(){var e=this.getFromEnv("animationManager"),t=this.getLinkedParent().getChildContainer();!this.getContainer("dragLabelGroup")&&this.addContainer("dragLabelGroup",e.setAnimation({el:"group",attr:{name:"dragLabelGroup"},label:"group",component:this,container:t.defaultVcanvasGroup}))},t.prototype.allocatePosition=function(){this.parsePlotAttributes()},t.prototype.parsePlotAttributes=function(){var e,t,o,a,n,i,l,s,c,u,p,h,d,f,g,m,v,b,y,x,w,k=this.components.data,C=this.getFromEnv("yAxis"),N=this.getFromEnv("xAxis"),S=this.getFromEnv("smartLabel"),E=this.getFromEnv("dataLabelStyle"),A=k&&k.length,T=this.getFromEnv("chartConfig");for(x=0;x<A;x++)(d=k[x]).removed||(p=d.config,!d.graphics&&(d.graphics={}),p.index=x,a=N.getPixel(p.x),n=C.getPixel(p.y),l=p.text,s=p.labelBGColor,c=p.labelBDColor,u=p.padding,f=p.allowDrag,g=p.labelFontSize,i=p.labelColor,m=p.radius,o=p.dashed,b=p.borderThickness,e=p.dashLen,t=p.dashGap,b=p.borderThickness,w=p.labelCSS,h={x:a,y:n,text:l,align:r.POSITION_CENTER,fill:i,"text-bound":[s||r.BLANKSTRING,c||r.BLANKSTRING,(0,r.pluckNumber)(b,1),u,(0,r.pluckNumber)(m,0),(0,r.pluckNumber)(o,0)?(0,r.getDashStyle)((0,r.pluckNumber)(e,5),(0,r.pluckNumber)(t,4)):r.DASH_DEF],visibility:r.visibleStr},y={backgroundColor:s,borderColor:c,borderPadding:u,fontSize:g+r.PXSTRING,fontStyle:E.fontStyle,fontWeight:E.fontWeight,borderRadius:0,borderDash:r.DASH_DEF,fontFamily:E.fontFamily},(0,r.setLineHeight)(y),S.useEllipsesOnOverflow(T.useEllipsesWhenOverflow),S.setStyle(y),w["line-height"]=y.lineHeight,p.eventArgs={link:p.link,text:l,x:a,y:n,allowdrag:f,sourceType:"labelnode"},p.props={element:{attr:h}},p.labelCSSApplied=w,v=S.getOriSize(l),p.width=v.width,p.height=v.height,p.xPos=a,p.yPos=n)},t.prototype.draw=function(){var e,t,o,a,r,n,i=this.components.data,l=this.getFromEnv("animationManager"),s=this.getFromEnv("dataLabelStyle"),c=i&&i.length,u=this.components.removeDataArr||[],p=u.length;for(this.createContainer(),(n=this.getContainer("dragLabelGroup")).css({"font-weight":s.fontWeight,"font-style":s.fontStyle,"font-size":s.fontSize,"font-family":s.fontFamily}),r=0;r<c;r++)(t=i[r]).removed||(e=t.config,a=t.graphics.element,o=l.setAnimation({el:a||"text",container:n,css:e.labelCSS,attr:e.props.element.attr,component:this}),a?(e.labelCSSApplied&&o.removeCSS(),o.show().css(e.labelCSS)):t.graphics.element=o,o.data("eventArgs",e.eventArgs));for(this.drawTracker(),r=0;r<p;r++)this._removeDataVisuals(u.shift())},t.prototype.drawTracker=function(){var e,t,o,a,n,i,l,s,c,p,h,d,f,g,m=this,v=m.components.data,b=m.getFromEnv("animationManager"),y=m.getFromEnv("chart"),x=m.getLinkedParent(),w=m.config,k=m.getContainer("dragLabelGroup"),C=v&&v.length,N=function(){var e=this.data("drag-options"),t=e.dataset,o=e.index,a=t.components.data[o];this.data("fire_click_event",1),x.clearLongPress(),x.triggerLabelUI(this,a)},S=function(){this.data("fire_click_event")&&(this.data("fire_click_event",0),x.clearLongPress())},E=function(e){var t=this.data("fire_click_event");x.clearLongPress(),t&&y.plotEventHandler(this,e,"LabelClick")},A=function(e){y.plotEventHandler(this,e,"LabelRollover")},T=function(e){y.plotEventHandler(this,e,"LabelRollout")},D=function(e,t){m._labelDragMove.call(this,e,t,y)},L=function(e){m._labelDragStart.call(this,e,y)},_=function(e){m._labelDragUp.call(this,e)};for(g=0;g<C;g++)(e=v[g]).removed||(o=(t=e.config).padding||0,d=t.width,f=t.height,p=t.xPos-d/2,h=t.yPos-f/2,i=t.allowDrag,l=t.text,c=e.graphics.trackerElement,n={x:p-o,y:h-o,width:d+2*o,height:f+2*o,cursor:t.allowDrag?"move":r.BLANKSTRING,fill:u,stroke:u},a={link:t.link,text:l,x:p,y:h,allowdrag:i,sourceType:"labelnode"},s=b.setAnimation({el:c||"rect",container:k,attr:n,component:m}),c||(e.graphics.trackerElement=s,s.on("fc-mousedown",N).on("fc-mousemove",S).on("fc-mouseup",E).data("viewMode",w.viewMode).data(r.preDefStr.EVENTARGS,a).hover(A,T),t.allowDrag&&s.drag(D,L,_)),s.data("drag-options",{index:g,dataset:m}))},t.prototype._labelDragStart=function(){var e=this.getBBox(),t=this.data("drag-options"),o=t.dataset,a=o.getLinkedParent(),r=t.index,n=o.components.data[r],i=n.graphics.element,l=n.dragStart=n.dragStart||(n.dragStart={});t.ox=i.attr("x"),t.oy=i.attr("y"),t.bBox=e,l.xPos=n.config.xPos,l.yPos=n.config.yPos,l.bBox=e,this.data("fire_click_event",1),this.data("fire_dragend",0),a.clearLongPress(),a.triggerLabelUI(this,n)},t.prototype._labelDragMove=function(e,t){var o,a,r=this.data("drag-options"),n=r.index,i=r.dataset,l=i.getFromEnv("chart"),s=i.getFromEnv("chartConfig"),c=s.canvasLeft,u=s.canvasRight,p=s.canvasBottom,h=s.canvasTop,d=i.getLinkedParent(),f=i.components.data[n],g=f.graphics.element,m=f.dragStart,v=m.bBox,b=t[0],y=t[1],x=m.bBox.x+b,w=m.bBox.x2+b,k=m.bBox.y+y,C=m.bBox.y2+y,N=i.getFromEnv("yAxis"),S=i.getFromEnv("xAxis");x<c&&(b+=c-x),w>u&&(b-=w-u),k<h&&(y+=h-k),C>p&&(y-=C-p),m.draged=!0,this.attr({x:v.x+b,y:v.y+y}),o=r.ox+b,a=r.oy+y,g.attr({x:r.ox+b,y:r.oy+y}),f.config.x=S.getValue(o),f.config.y=N.getValue(a),this.data("fire_dragend")||(l.plotEventHandler(this,e,"LabelDragStart"),this.data("fire_dragend",1)),this.data("fire_click_event")&&(this.data("fire_click_event",0),d.clearLongPress())},t.prototype._labelDragUp=function(e){var t=this.data("drag-options"),o=t.index,a=t.dataset,n=a.getFromEnv("chart"),i=n.getChildren("xAxis")[0],l=n.getChildren("yAxis")[0],s=a.getLinkedParent(),c=a.components.data[o].dragStart,u=this.data("eventArgs");u.x=i.getValue(this.attr("x")),u.y=l.getValue(this.attr("y")),c.draged=!1,this.data("fire_dragend")&&(n.fireChartInstanceEvent("chartupdated",(0,r.extend2)({sourceEvent:"labeldragend"},u),e),n.fireChartInstanceEvent("chartupdated",u,e),n.plotEventHandler(this,e,"labeldragend")),s.clearLongPress()},t.prototype.removeData=function(e,t){var o=this.components,a=o.data;o.removeDataArr=a.splice(e,t)},t.prototype.trimData=function(e){if(this.config.JSONData){var t=this.config.JSONData,o=t&&t.length,a=e.label&&e.label.length||0,r=o-a;r>0&&this.removeData(a,r)}},t}(a["default"]);t["default"]=p},552:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.dragNodeLabels":function(){return{"group.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot"}]}}}}},553:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(131)),r=l(o(551)),n=o(118),i=o(122);function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c,u,p,h={circle:"circ",rectangle:"rect",polygon:"poly"},d=void 0,f=n.preDefStr.INPUT,g=n.preDefStr.BLANKSPACE,m=n.preDefStr.BLANK,v=n.preDefStr.PX,b=n.preDefStr.LABEL,y=n.preDefStr.DATASET,x=n.preDefStr.COMMA,w="appearing",k=function(e){return e!==d&&null!==e},C=function(e,t){switch(e.shape){case n.preDefStr.CIRCLE:e.radius=t.radius;break;case n.preDefStr.POLYGON:e.radius=t.radius,e.sides=t.numsides;break;default:e.width=t.width,e.height=t.height}},N=(c=function(){for(var e,t=this.getGraphicalElement("cacheUpdateUI"),o=t.fields.shape,a=["rectWidth","rectHeight","circPolyRadius","polySides"],r=a.length;r--;)/rect|poly|circ/gi.test(e=a[r])&&(t.labels[e].hide(),t.fields[e].hide()),new RegExp((0,n.pluck)(o.val(),"rect"),"ig").test(e)&&(t.labels[e].show(),t.fields[e].show())},u=function(){var e=this.getGraphicalElement("cacheUpdateUI").fields,t=(0,i.getValidColor)(e.color.val());t&&e.colorOut.css({background:(0,i.parseColor)(t)})},p=function(e){var t,o,a,r=this.getGraphicalElement("cacheUpdateUI"),n=this.getFromEnv("animationManager"),i=r.fields.image,l=this.getFromEnv("chartConfig").height,s=i.val(),c=["imgWidth","imgHeight","imgAlign","imgUrl"];for(t=s?250:215,e&&(r.ok.hide(),r.cancel.hide(),r.removeItem.hide(),r.error.hide()),o=c.length;!s&&o--;)a=c[o],r.labels[a].hide(),r.fields[a].hide();e&&n.setAnimationState("uichange"),n.setAnimation({el:r.dialog,state:"updating",attr:{top:(l-t)/2,height:t},component:this,label:"uidialog",callback:function(){for(o=c.length;o--&&s;)a=c[o],r.labels[a].show(),r.fields[a].show();r.ok.attr({y:t-23-5}).show(),r.cancel.attr({y:t-23-5}).show(),r.removeItem.attr({y:t-23-5}),r.error.attr({y:t-23-5+4}).show(),r.edit?r.removeItem.show():r.removeItem.hide()}})},function(e,t){var o,a,r=this,i=r.getGraphicalElement("cacheUpdateUI"),l=r.getFromEnv("style").inCanvasStyle||{},s=r.getFromEnv("paper"),h={width:80+v,border:"1px solid #cccccc",fontSize:10+v,lineHeight:15+v,padding:2+v,fontFamily:l.fontFamily},f={textAlign:"right"},g=i&&i.fields,y=i&&i.labels;r.getFromEnv("animationManager").setAnimationState("uichange"),i||(o=!0),i=r.addGraphicalElement("cacheUpdateUI",r.createHtmlDialog(350,215,function(e){e.stopPropagation();var t,o,a,l,s,c=i&&i.fields,u=i.edit,p=c.shape.val();if(t=r.getFromEnv("xAxis").getLimit().min,o=r.getFromEnv("yAxis").getLimit().min,c){switch(s={x:(0,n.getFirstValue)(c.x.val(),t),y:(0,n.getFirstValue)(c.y.val(),o),id:l=c.id.val(),datasetId:c.dataset.val(),name:c.label.val(),tooltext:c.tooltip.val(),color:c.color.val(),alpha:c.alpha.val(),labelalign:c.labelalign.val(),allowdrag:c.draggable.val(),imagenode:c.image.val(),imagewidth:c.imgWidth.val(),imageheight:c.imgHeight.val(),imagealign:c.imgAlign.val(),imageurl:c.imgUrl.val(),link:c.link.val()},p){case"circ":s.shape=n.preDefStr.CIRCLE,s.radius=c.circPolyRadius.val();break;case"poly":s.shape=n.preDefStr.POLYGON,s.radius=c.circPolyRadius.val(),s.numsides=c.polySides.val();break;default:s.shape=n.preDefStr.RECTANGLE,s.width=c.rectWidth.val(),s.height=c.rectHeight.val()}if(r.getNode(s.id)&&(a=!0),!a||u!==d)return void(((l=s.datasetId)!==n.BLANKSTRING||u)&&(l=Number(l),u?r.updateNode(s):r.addNode(s),i.hide(),i.visible=!1));i.error.attr({text:"ID already exist."}),c.label.focus()}i.enableFields()},function(e){e.stopPropagation(),i.hide(),i.visible=!1,i.enableFields(),i.error.attr({text:m}),i.visible=!1},function(e){e.stopPropagation(),r.deleteNode(i.fields.id.val()),i.hide(),i.visible=!1},i)),o&&(a=i.dialog,y=i.labels={},g=i.fields={}),i.config=e,i.edit=t,i.error||(i.error=s.html("span",{color:"ff0000",x:30,y:228},d,a)),i.enableFields||(i.enableFields=function(){var t;for(t in e)e[t]&&e[t].disabled&&g[t]&&g[t].element.removeAttribute("disabled")}),i.clearFields||(i.clearFields=function(){var e,t=i.fields;for(e in t)t[e].element.disabled||(t[e].element.value=n.BLANKSTRING)}),(0,n.fcEach)(this.nodeUpdateUIDefinition,function(t){var o,l,d,v=t.key,x={},w=e[v]||{};!y[v]&&(y[v]=s.html(b,{x:t.x,y:t.y,width:t.labelWidth||45,text:t.text},f,a)),t.noInput||((o=g[v])||(h.border="checkbox"==t.type?m:"1px solid #cccccc",o=g[v]=s.html(t.inputType||"input",{x:t.labelWidth&&t.labelWidth+5||50,y:-2+(t.inputPaddingTop||0),width:t.inputWidth||50,name:v||n.BLANKSTRING},h),"select"!==t.inputType&&o.attr({type:t.type||"text"}).on("keyup",i.handleKeyPress),o.add(y[v])),k(l=(0,n.getFirstValue)(w.innerHTML,t.innerHTML))&&(x.innerHTML=l),w.disabled?x.disabled="disabled":o.element&&(o.element.disabled=!1),o.attr(x),k(d=(0,n.getFirstValue)(w.value,t.value))&&o.val(d),"shape"===v&&o.on("change",function(){c.call(r)}),"image"===v&&o.on("click",function(){p.call(r,!0)}),"color"===v&&o.on("keyup",function(){u.call(r)}))}),u.call(this),p.call(this),c.call(this),i.visible=!0,i.fields[t?b:"id"].focus()}),S=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),a=o;return a.setState("visible",!0),a.connectorUpdateUIDefinition=[{key:"fromid",text:"Connect From",inputType:"select",x:10,y:15,labelWidth:80,inputWidth:100},{key:"toid",text:"Connect To",inputType:"select",x:10,y:40,labelWidth:80,inputWidth:100},{key:"arratstart",text:"Arrow At Start",x:200,y:15,type:"checkbox",inputPaddingTop:3,labelWidth:80,inputWidth:15},{key:"arratend",text:"Arrow At End",x:200,y:40,type:"checkbox",inputPaddingTop:3,labelWidth:80,inputWidth:15},{key:b,text:"Label",x:10,y:75,labelWidth:40,inputWidth:120},{key:"id",text:"Node ID",x:190,y:75,inputWidth:55},{key:"color",text:"Color",x:10,y:100,labelWidth:40,inputWidth:35},{key:"alpha",text:"Alpha",x:110,y:100,inputWidth:25,labelWidth:35},{key:"strength",text:"Strength",x:190,y:100,inputWidth:55,val:"0.1"},{key:"url",text:"Link",x:10,y:125,labelWidth:40,inputWidth:120},{key:"tooltext",text:"Tooltip",x:190,y:125,labelWidth:40,inputWidth:60},{key:"dashed",text:"Dashed",x:10,y:150,type:"checkbox",inputPaddingTop:3,inputWidth:15,labelWidth:40},{key:"dashgap",text:"Dash Gap",x:85,y:150,labelWidth:60,inputWidth:25},{key:"dashlen",text:"Dash Length",x:190,y:150,labelWidth:70,inputWidth:30}],a.nodeUpdateUIDefinition=[{key:"id",text:"Id",inputWidth:60,x:10,y:15},{key:y,text:y,inputType:"select",inputWidth:110,innerHTML:d,x:170,y:15},{key:"x",text:"Value",x:10,y:40,inputWidth:21},{key:"y",text:x,x:88,y:40,inputWidth:21,labelWidth:5},{text:"(x, y)",x:125,y:40,labelWidth:33,noInput:!0},{key:"tooltip",text:"Tooltip",inputWidth:105,x:170,y:40},{key:b,text:"Label",inputWidth:92,x:10,y:65},{key:"labelalign",text:"Align",labelWidth:70,inputWidth:110,inputType:"select",innerHTML:'<option></option><option value="top">Top</option><option value="middle">Middle</option><option value="bottom">Bottom</option>',x:145,y:63},{key:"color",text:"Color",x:10,y:90,inputWidth:60},{key:"colorOut",innerHTML:" ",x:85,y:90,inputWidth:15,inputType:"span"},{key:"alpha",text:"Alpha",x:170,y:90,inputWidth:20},{key:"draggable",text:"Allow Drag",value:!0,inputWidth:20,x:250,y:90,labelWidth:58,inputPaddingTop:3,type:"checkbox"},{key:"shape",text:"Shape",inputType:"select",inputWidth:97,innerHTML:'<option value="rect">Rectangle</option><option value="circ">Circle</option><option value="poly">Polygon</option>',x:10,y:115},{key:"rectHeight",text:"Height",x:170,y:115,inputWidth:20},{key:"rectWidth",text:"Width",x:255,y:115,inputWidth:20},{key:"circPolyRadius",text:"Radius",x:170,y:115,inputWidth:20},{key:"polySides",text:"Sides",x:255,y:115,inputWidth:20},{key:"link",text:"Link",x:10,y:140,inputWidth:92},{key:"image",text:"Image",type:"checkbox",inputPaddingTop:4,inputWidth:20,x:10,y:170},{key:"imgUrl",text:"URL",inputWidth:105,x:170,y:170},{key:"imgWidth",text:"Width",inputWidth:20,x:10,y:195},{key:"imgHeight",text:"Height",inputWidth:20,x:82,y:195},{key:"imgAlign",text:"Align",inputType:"select",inputWidth:75,innerHTML:'<option value="top">Top</option><option value="middle">Middle</option><option value="bottom">Bottom</option>',x:170,y:195}],a.labelUpdateUIDefinition=[{key:b,text:"Label*",x:10,y:15,inputWidth:235},{key:"size",text:"Size",x:10,y:40},{key:"padding",text:"Padding",x:10,y:65},{key:"x",text:"Position",x:120,y:65,labelWidth:70,inputWidth:25},{key:"y",text:x,x:225,y:65,labelWidth:10,inputWidth:25},{key:"xy",text:"(x, y)",x:260,y:65,noInput:!0},{key:"allowdrag",text:"Allow Drag",x:120,y:40,inputType:"checkbox",inputPaddingTop:3,inputWidth:15,labelWidth:70,val:1},{key:"color",text:"Color",x:10,y:90},{key:"alpha",text:"Alpha",x:145,y:90,inputWidth:30,val:n.preDefStr.HUNDREDSTRING},{key:"bordercolor",text:"Border Color",x:10,y:125,labelWidth:100},{key:"bgcolor",text:"Background Color",x:10,y:150,labelWidth:100}],o}return s(t,e),t.prototype.configure=function(){this.setState("configured",!0)},t.prototype.getType=function(){return"group"},t.prototype.getName=function(){return"dragNodeGroup"},t.prototype.showLabelUpdateUI=function(){var e,t,o,a,r=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},i=this,l=i.getFromEnv("paper"),s=i.getFromEnv("style").inCanvasStyle||{},c=i.getGraphicalElement("cacheLabelUpdateUI"),u={border:"1px solid #cccccc",fontSize:10+v,lineHeight:15+v,fontFamily:s.fontFamily,padding:2+v},p={textAlign:"right"},h=c&&c.fields,g=c&&c.labels;i.getFromEnv("animationManager").setAnimationState("uichange"),c||(e=!0),c=i.addGraphicalElement("cacheLabelUpdateUI",i.createHtmlDialog(315,205,function(){var e,t=c&&c.fields;t&&((e={text:t.label.val(),x:t.x.val(),y:t.y.val(),color:t.color.val(),alpha:t.alpha.val(),bgcolor:t.bgcolor.val(),bordercolor:t.bordercolor.val(),fontsize:t.size.val(),allowdrag:t.allowdrag.val(),padding:t.padding.val()}).text?(i.addLabel&&i.addLabel(e),c.hide()):(c.error.attr({text:"Label cannot be blank."}),t.label.focus()))},function(){c.error.attr({text:n.BLANKSTRING}),c.hide()},d,c)),e&&(a=c.dialog,g=c.labels={},h=c.fields={}),(0,n.fcEach)(i.labelUpdateUIDefinition,function(e){var i=e.key;g[i]||(g[i]=l.html(b,{x:e.x,y:e.y,width:e.labelWidth||45,text:e.text},p,a)),e.noInput||((t=h[i])||(t=h[i]=l.html(f,{y:-2+(e.inputPaddingTop||0),x:e.labelWidth&&e.labelWidth+5||50,width:e.inputWidth||50,type:e.inputType||"text",name:i||n.BLANKSTRING},u,g[i]).on("keyup",c.handleKeyPress)),k(o=(0,n.getFirstValue)(r[i],e.val))&&t.val(o))}),c.error||(c.error=l.html("span",{color:"ff0000",x:10,y:180},d,a)),c.fields.label.focus()},t.prototype.restoreData=function(){var e,t,o,a,r,i,l,s=this.getChildren("dataset"),c=this.getFromEnv("chart"),u=this.getFromEnv("legend"),p=(0,n.pluckNumber)(c.config.showlegend,0),h=this.getChildren("connector"),d=c.getFromEnv("dataSource"),f=d.dataset,g=d.connectors,m=d.labels,v=this.getChildren("labels"),b=function(e){var t,o;for(t=0;t<(e&&e.length);t++)if(delete(a=e[t]).removed,a.config.add){for(o in r=e[t].graphics)r[o].remove();e.splice(t,1),t--}},y=function(e,a,r){t=a[e],o=t.components.data,b(o),t.drawn=!1,t.configure(r[e])};for(e=0,l=s&&s.length;e<l;e++)y(e,s,f);for(e=0,l=h&&h.length;e<l;e++)y(e,h,g);v&&v.length&&(i=v[0],(o=i.components.data)&&b(o),i.configure(m)),c.fireChartInstanceEvent("dataRestored"),this.asyncDraw(),p&&u.asyncDraw()},t.prototype.addLabel=function(e){var t,o,a=this.getChildren("labels"),i=this.getFromEnv("chart");e.add=!0,a?a=a[0]:((0,n.componentFactory)(this,r["default"],"labels",1,[{}]),a=this.getChildren("labels")[0]),o=(a.components.data||(a.components.data=[])).length,a._setConfigure(o,e),t={text:e.text,x:e.x,y:e.y,allowdrag:e.allowdrag,sourceType:"labelnode",link:e.link},i.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"labeladded"},t)),i.fireChartInstanceEvent("labeladded",t),a.asyncDraw()},t.prototype.showNodeAddUI=function(){var e,t,o,a=this.getChildren("dataset"),r=n.BLANKSTRING;for(o=0;o<a.length;o++)e=(t=a[o]||{}).config,"dragNode"===t.getName()&&(r+='<option value="'+t.config.datasetIndex+'">'+(e.name!==m&&e.name!==d&&e.name+n.COMMASTRING+g||m)+t.config.datasetIndex+"</option>");this.showNodeUpdateUI({dataset:{innerHTML:r}})},t.prototype.showConnectorAddUI=function(){var e,t,o=this.getNode(),a=n.BLANKSTRING;for(t in o)a+='<option value="'+(e=o[t].config.id)+'">'+e+"</option>";this.showConnectorUpdateUI({fromid:{innerHTML:a},toid:{innerHTML:a}})},t.prototype.showConnectorUpdateUI=function(e,t){var o,a,r,i,l,s=this,c=s.getFromEnv("paper"),u=s.getFromEnv("style").inCanvasStyle||{},p="cacheConnectorUpdateUI"+(t?"edit":"new"),h=s.getGraphicalElement(p),g={border:"1px solid #cccccc",fontSize:10+v,lineHeight:15+v,fontFamily:u.fontFamily,padding:2+v},m={textAlign:"right"},y=h&&h.fields,x=h&&h.labels;s.getFromEnv("animationManager").setAnimationState("uichange"),h||(o=!0),h=s.addGraphicalElement(p,s.createHtmlDialog(315,215,function(){var e,o=h&&h.fields;o&&((e={from:o.fromid.val(),to:o.toid.val(),id:o.id.val(),label:o.label.val(),color:o.color.val(),alpha:o.alpha.val(),link:o.url.val(),tooltext:o.tooltext.val(),strength:o.strength.val(),arrowatstart:o.arratstart.val(),arrowatend:o.arratend.val(),dashed:o.dashed.val(),dashlen:o.dashlen.val(),dashgap:o.dashgap.val()}).from?e.to?e.from!=e.to?(t?s.editConnector(e):s.addConnector(e),h.enableFields(),h.hide(),h.clearFields()):(h.error.attr({text:"Connector cannot start and end at the same node!"}),o.fromid.focus()):(h.error.attr({text:"Please select a valid connector end."}),o.toid.focus()):(h.error.attr({text:"Please select a valid connector start."}),o.fromid.focus()))},function(){h.error.attr({text:n.BLANKSTRING}),h.enableFields(),h.hide()},function(){var e=h&&h.fields,t={from:e.fromid.val(),to:e.toid.val(),id:e.id.val()};s.deleteConnector(t),h.hide()},h)),o&&(l=h.dialog,x=h.labels={},y=h.fields={}),h.config=e,h.enableFields||(h.enableFields=function(){var t;for(t in e)e[t]&&e[t].disabled&&y[t]&&y[t].element.removeAttribute("disabled")}),h.clearFields||(h.clearFields=function(){var e,t=h.fields;for(e in t)t[e].element.disabled||(t[e].element.value=n.BLANKSTRING)}),(0,n.fcEach)(s.connectorUpdateUIDefinition,function(t){var o=t.key,s=e[o]||{};x[o]||(x[o]=c.html(b,{x:t.x,y:t.y,width:t.labelWidth||45,text:t.text},m,l)),t.noInput||((r=y[o])||(r=y[o]=c.html(t.inputType||f,{y:-2+(t.inputPaddingTop||0),x:t.labelWidth&&t.labelWidth+5||50,width:t.inputWidth||50,name:o||n.BLANKSTRING},g),"select"!==t.inputType&&r.attr({type:t.type||"text"}).on("keyup",h.handleKeyPress),r.add(x[o])),(a=(0,n.pluck)(s.innerHTML,t.innerHTML))&&r.attr({innerHTML:a}),(i=(0,n.pluck)(s.val,t.val))!==d&&r.val(i),s.disabled?r.attr({disabled:"disabled"}):r.element&&(r.element.disabled=!1))}),h.checkDash=function(){var e=y.dashed&&y.dashed.val()?"show":"hide";x.dashgap&&x.dashgap[e](),y.dashgap&&y.dashgap[e](),x.dashlen&&x.dashlen[e](),y.dashlen&&y.dashlen[e]()},h.checkDash(),y.dashed.on("click",h.checkDash),h.error||(h.error=c.html("span",{color:"ff0000",x:10,y:170},d,l)),h.removeItem[t?"show":"hide"]()},t.prototype.showNodeUpdateUI=function(){return N.apply(this,arguments)},t.prototype.addNode=function(e){var t,o,a,r,i,l,s,c=this.getChildren("dataset"),u=e.datasetId,p=c.length,h=this.getFromEnv("chart");for(i=0;i<p;i++)if((r=(t=c[i]||{}).config.datasetIndex)!==d&&(r=r.toString()),r===u){a=!0;break}t&&a&&(s=t.components.data,e.add=!0,l={index:o=s.length,dataIndex:o,link:e.link,y:e.y,x:e.x,shape:e.shape,label:e.name,toolText:e.tooltext,id:e.id,datasetIndex:t.config.datasetIndex,datasetName:t.config.seriesname,sourceType:"dataplot"},C(l,e),t._setConfigure(o,e),t.parsePlotAttributes(o),t._drawNode(o),t.setState("dirty",!0),h.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"nodeAdded"},l)),h.fireChartInstanceEvent("nodeAdded",l),t._setupKdTree())},t.prototype.updateNode=function(e){var t,o,a,r,i,l,s,c=this.getChildren("dataset"),u=c.length,p=this.getFromEnv("chart");for(e.update=!0,r=0;r<u;r++)for(t=(i=(a=c[r]).components.data||[]).length,s=0;s<t;s++)if(i[s].config.id===e.id){o=!0;break}a&&o&&(l={index:s,dataIndex:s,link:e.link,y:e.y,x:e.x,shape:e.shape,label:e.name,toolText:e.tooltext,id:e.id,datasetIndex:a.config.datasetIndex,datasetName:a.config.seriesname,sourceType:"dataplot"},C(l,e),a._setConfigure(s,e),a.parsePlotAttributes(s),a._drawNode(s),a.setState("dirty",!0),p.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"nodeupdated"},l)),p.fireChartInstanceEvent("nodeupdated",l),a._setupKdTree())},t.prototype.deleteNode=function(e){var t,o,a,r,i,l,s,c,u,p,h,d,f=this.getNode(e),g=this.getFromEnv("chart"),m=function(e){for(var t in e)e[t].remove()};if(f){for(o=(t=f.dataset).components.data,a=f.config.startConnectors,r=f.config.endConnectors,u=o.length,i=0;i<u;i++)if((s=o[i]).config.id===e){d=!0;break}if(!0===d){for(c in m(s.graphics),a)m((l=a[c]||{}).graphics),delete l.graphics,l.removed=!0;for(c in r)m((l=r[c]||{}).graphics),delete l.graphics,l.removed=!0;s.removed=!0,p={index:i,dataIndex:i,link:(h=s.config||{}).link,y:h.y,x:h.x,shape:h.shape,label:h.displayValue,toolText:h.toolText,id:h.id,datasetIndex:t.config.datasetIndex,datasetName:t.config.seriesname,sourceType:"dataplot"},C(p,{width:h.width,height:h.height,radius:h.radius,numsides:h.numSides}),g.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"nodedeleted"},p)),g.fireChartInstanceEvent("nodedeleted",p),t._setupKdTree()}}},t.prototype.addConnector=function(e){var t,o=this.getChildren("connector")[0],a=o.components.data,r=this.getFromEnv("chart"),i=a.length;e.add=!0,o._setConfigure(i,e),t={arrowAtEnd:Boolean(e.arrowatend),arrowAtStart:Boolean(e.arrowatstart),fromNodeId:e.from,id:e.id,label:e.label,link:e.connectorLink,sourceType:"connector",toNodeId:e.to},r.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"connectoradded"},t)),r.fireChartInstanceEvent("connectoradded",t),o.asyncDraw()},t.prototype.editConnector=function(e){var t,o,a,r,i,l,s,c,u,p,h=e.from,d=e.to,f=this.getChildren("connector"),g=this.getFromEnv("chart"),m=f.length;for(t=0;t<m;t++)for(o=(a=(c=f[t])&&c.components.data||[]).length,l=0;l<o;l++)if(r=(u=a[l].config).from,i=u.to,r===h&&i===d){s=!0;break}e.update=!0,s&&(c._setConfigure(l,e),p={arrowAtEnd:Boolean(e.arrowatend),arrowAtStart:Boolean(e.arrowatstart),fromNodeId:e.from,id:e.id,label:e.label,link:e.link,sourceType:"connector",toNodeId:e.to},g.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"connectorupdated"},p)),g.fireChartInstanceEvent("connectorupdated",p),c.asyncDraw())},t.prototype.deleteConnector=function(e){var t,o,a,r,i,l,s,c=e.from,u=e.to,p=this.getChildren("connector"),h=!1,d=p.length,f=this.getFromEnv("chart");for(t=0;t<d;t++)for(i=(r=p[t].components.data).length,o=0;o<i;o++)if((a=r[o]).config.from===c&&a.config.to===u){h=!0;break}h&&(l={arrowAtEnd:(s=a.config||{}).arrowAtEnd,arrowAtStart:s.arrowAtStart,fromNodeId:s.from,id:s.id,label:s.label,link:s.connectorLink,sourceType:"connector",toNodeId:s.to},function(e){var t;for(t in e)e[t].remove()}(a.graphics),delete a.graphics,a.removed=!0,f.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"connectordeleted"},l)),f.fireChartInstanceEvent("connectordeleted",l))},t.prototype.createHtmlDialog=function(e,t,o,a,r,i){var l,s,c,u,p,h,d,f,g=this.getFromEnv("chartConfig"),m=this.getFromEnv("chart-container"),b=this.getFromEnv("style").inCanvasStyle||{},y=Number(g.width),x=Number(g.height),k=this.getFromEnv("animationManager"),C={color:(0,n.hashify)(b.color),textAlign:"center",paddingTop:1+v,border:"1px solid #cccccc",borderRadius:4+v,cursor:n.preDefStr.POINTER,_cursor:"hand",backgroundColor:n.HASHSTRING+"ffffff",zIndex:21,"-webkit-border-radius":4+v},N=i;return f={width:y,height:x},i||(f.fill="transparent",f.type="div"),N=k.setAnimation({el:i||"html",attr:f,component:this,label:"ui",state:w,css:{fontSize:10+v,lineHeight:15+v,fontFamily:b.fontFamily,display:"block"},container:!i&&m}),f={width:y,height:x,opacity:.3},N.veil||(f.fill="000000",f.type="div"),N.veil=k.setAnimation({el:N.veil||"html",attr:f,component:this,state:w,label:"uiveil",container:!N.veil&&N}),u={x:(y-e)/2,y:(x-t)/2,width:e,height:t},N.dialog||(u.fill="efefef",u.strokeWidth=1,u.stroke="000000",u.type="div"),N.dialog=k.setAnimation({el:N.dialog||"html",attr:u,component:this,state:w,label:"uidialog",container:!N.dialog&&N,css:{borderRadius:5+v,boxShadow:"1px 1px 3px #000000","-webkit-border-radius":5+v,"-webkit-box-shadow":"1px 1px 3px #000000",filter:'progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000")'}}),p={x:e-70-5,y:t-23-5,width:65,height:17},N.ok||(p.text="Submit",p.tabIndex=1,p.type="div"),l=k.setAnimation({el:N.ok||"html",state:w,attr:p,component:this,label:"uiok",css:C,container:!N.ok&&N.dialog}),!N.ok&&(N.ok=l)&&l.on("mousedown",o),h={x:e-140-5,y:t-23-5,width:65,height:17},N.cancel||(h.text="Cancel",h.tabIndex=2,h.type="div"),s=k.setAnimation({el:N.cancel||"html",state:w,attr:h,component:this,label:"uicancel",css:C,container:!N.cancel&&N.dialog}),!N.cancel&&(N.cancel=s)&&s.on("mousedown",a),d={x:e-210-5,y:t-23-5,width:65,height:17},N.removeItem||(d.text="Delete",d.tabIndex=3,d.type="div"),c=k.setAnimation({el:N.removeItem||"html",state:w,attr:d,component:this,label:"uiremove",css:C,container:!N.removeItem&&N.dialog}),!N.removeItem&&(N.removeItem=c)&&c.on("mousedown",r),N.handleKeyPress||(N.handleKeyPress=function(e){13===e.keyCode?N.ok.element&&N.ok.element.onmousedown&&N.ok.element.onmousedown(e):27===e.keyCode&&N.cancel.element&&N.cancel.element.onmousedown&&N.cancel.element.onmousedown(e)}),N},t.prototype.getNode=function(e){for(var t,o={},a=this.getChildren("dataset"),r=0,n=a.length;r<n;r++)if(e){if(t=a[r].getNode(e))return t}else Object.assign(o,a[r].getNode());return!e&&o},t.prototype.createContainer=function(){var e=this,t=e.getFromEnv("animationManager"),o=e.getLinkedParent().getChildContainer();["connectorGroup","defaultVcanvasGroup","vcanvasLabelGroup","cloneGroup"].forEach(function(a){!e.getChildContainer(a)&&e.addChildContainer(a,t.setAnimation({el:"group",attr:{name:"manager-"+a},component:e,container:o[a]||o.defaultVcanvasGroup}))}),!e.getContainer("waitContainer")&&e.addContainer("waitContainer",t.setAnimation({el:"group",attr:{name:"manager-waitContainer"},container:o.defaultVcanvasGroup,component:e}))},t.prototype.draw=function(){var e,t,o={cacheUpdateUI:[350,215],cacheLabelDeleteUI:[250,100],cacheLabelUpdateUI:[350,205],cacheConnectorUpdateUIedit:[315,215],cacheConnectorUpdateUInew:[315,215]};if(!this.getState("configured")){for(e in w="update",o)if((t=this.getGraphicalElement(e))&&t.isVisible()){if("cacheUpdateUI"===e){var a=t.fields.image.val();o[e][1]=a?250:215}this.createHtmlDialog(o[e][0],o[e][1],d,d,d,t)}w="appearing"}this.setState("configured",!1),this.createContainer()},t.prototype.getDataLimits=function(){var e,t,o=this.getChildren("dataset"),a=+Infinity,r=-Infinity,n=-Infinity,i=+Infinity;for(e=0;e<o.length;e++)t=o[e].config,r=Math.max(r,t.yMax),a=Math.min(a,t.yMin),n=Math.max(n,t.xMax),i=Math.min(i,t.xMin);return{max:r,min:a,xMax:n,xMin:i}},t.prototype.isVisible=function(){return!this.isNotVisible},t.prototype.childChanged=function(){return this},t.prototype.hideWaitElem=function(){this.getGraphicalElement("waitElement")&&this.getGraphicalElement("waitElement").hide()},t.prototype.clearLongPress=function(){clearTimeout(this.config._longpressactive),delete this.config._longpressactive},t.prototype.triggerLabelUI=function(e,t){var o=this;o.config._longpressactive=setTimeout(function(){e.data("fire_click_event",0),e.data("viewMode")||o.showLabelDeleteUI(t)},1e3)},t.prototype.triggerConnectorUI=function(e){var t=this,o=e.data("dataset"),a=o.config,r=e.data(n.preDefStr.configStr),i=r||{};t.config._longpressactive=setTimeout(function(){e.data("fire_click_event",0),e.data("viewMode")||t.showConnectorUpdateUI({fromid:{val:i.from,innerHTML:"<option>"+i.from+"</option>",disabled:!0},toid:{val:i.to,innerHTML:"<option>"+i.to+"</option>",disabled:!0},datasetIndex:o.config.datasetIndex,index:r.index,arratstart:{val:Boolean((0,n.pluckNumber)(i.arrowatstart,1))},arratend:{val:Boolean((0,n.pluckNumber)(i.arrowatend,1))},dashed:{val:(0,n.pluckNumber)(i.dashed)},dashgap:{val:i.dashgap},dashlen:{val:i.dashlen},label:{val:i.label},tooltext:{val:i.tooltext},id:{val:a.id,disabled:!0},strength:{val:i.conStrength},alpha:{val:i.alpha},color:{val:i.color.FCcolor.color}},!0)},1e3)},t.prototype.deleteLabel=function(e){var t,o,a,r=this.getChildren("labels")[0],i=(0,n.pluckNumber)(e,r.config.lastTappedLabelIndex),l=r.components.data[i],s=this.getFromEnv("chart");t=l.graphics.element,o=l.graphics.trackerElement,t&&(a=t.data("eventArgs"),t.remove(),o&&o.remove(),delete l.graphics),s.fireChartInstanceEvent("chartupdated",(0,n.extend2)({sourceEvent:"labeldeleted"},a)),s.fireChartInstanceEvent("labeldeleted",a),l.removed=!0},t.prototype.showLabelDeleteUI=function(e){var t=this,o=t.getChildren("labels")[0],a=t.getFromEnv("paper"),r=t.getGraphicalElement("cacheLabelDeleteUI");o.config.lastTappedLabelIndex=e.config.index,r?r.show():((r=t.addGraphicalElement("cacheLabelDeleteUI",t.createHtmlDialog(250,100,d,function(){r.hide()},function(){t.deleteLabel(),r.hide()}))).message=a.html("span",{x:10,y:10,width:230,height:80}).add(r.dialog),r.ok.hide(),r.removeItem.translate(175).show()),r.message.attr({text:'Would you really like to delete the label: "'+e.config.text+'"?'})},t.prototype.drawWaitingRing=function(e,t){var o=this,a=o.config,r=o.getFromEnv("animationManager"),i=o.getContainer("waitContainer"),l=e.config,s=o.getChildren("dataset")[t].config,c=o.getGraphicalElement("waitElement");o.clearLongPress(),c=r.setAnimation({el:c||"ringpath",attr:{ringpath:[l._xPos,l._yPos,8,11,0,0],fill:(0,n.toRaphaelColor)({alpha:"100,100",angle:120,color:"CCCCCC,FFFFFF",ratio:"30,50"}),"stroke-width":0},container:i,component:o}),o.getGraphicalElement("waitElement")||o.addGraphicalElement("waitElement",c),c.show().animate({ringpath:[l._xPos,l._yPos,8,11,0,6.28]},1e3),a._longpressactive=setTimeout(function(){var e=s.name!==m&&s.name!==d?s.name+n.preDefStr.BLANKSPACE:m,a=s.id!==d?(e?n.COMMASTRING:e)+s.id:m;c&&c.hide(),o.showNodeUpdateUI({x:{value:l.x},y:{value:l.y},draggable:{value:(0,n.getFirstValue)(l.allowdrag,1)},color:{value:l.color},alpha:{value:l.alpha},label:{value:(0,n.getFirstValue)(l.label,l.name)},tooltip:{value:l.toolText},shape:{value:h[l.shape]},rectWidth:{value:l.width},rectHeight:{value:l.height},circPolyRadius:{value:l.radius},polySides:{value:l.numsides},image:{value:l.imageNode},imgWidth:{value:l.imageWidth},imgHeight:{value:l.imageHeight},imgAlign:{value:l.imageAlign},imgUrl:{value:l.imageURL},id:{value:l.id,disabled:!0},link:{value:l.link},dataset:{innerHTML:'<option value="'+a+'">'+e+a+"</option>",disabled:!0},datasetIndex:t},!0)},1e3)},t.prototype.drawNodeConnectors=function(e){var t,o,a,r,n,i,l=this.getChildren("connector");if(e)for(t in e)(r=e[t])&&(o=r.config.datasetIndex,n=r.config.fromPointObj,i=r.config.toPointObj,(a=l[o])&&(a&&a.parsePlotAttributes(r,n,i),a&&a.drawConnector(r,n,i)))},t.prototype._clearConnectors=function(){var e,t,o,a,r,i,l=this.getNode();for(e in l)if(i=l[e]){for(r in t=i.config.startConnectors||{},o=i.config.endConnectors||{},t)a={graphics:t[r].graphics||{}},n.componentDispose.call(a);for(r in o)a={graphics:o[r].graphics||{}},n.componentDispose.call(a)}},t.prototype.getJSONData=function(){var e,t,o,a=this.getChildren(),r=a.dataset,i=a.connector,l=a.labels,s={};for(s.dataset=[],s.connectors=[],s.labels=[],e=0,t=r&&r.length;e<t;e++)o=r[e],s.dataset[e]||(s.dataset[e]=(0,n.extend2)({},o.JSONData)),s.dataset[e].data=o.getJSONData();for(e=0,t=i&&i.length;e<t;e++)o=i[e],s.connectors[e]||(s.connectors[e]=(0,n.extend2)({},o.JSONData)),s.connectors[e].connector=o.getJSONData();for(e=0,t=l&&l.length;e<t;e++)o=l[e],s.labels[e]||(s.labels[e]={label:[]}),s.labels[e].label=o.getJSONData();return s},t}(a["default"]);t["default"]=S},554:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o,n=e.getFromEnv("dataSource"),i=n.dataset,l=n.connectors,s=n.labels,c=void 0,u=c=e.getChildren().canvas[0].getChildren("vCanvas")[0],p=[];s&&(s=[s]),i||l||s?(t=e.getDSGroupdef(),(0,a.componentFactory)(c,t,"datasetGroup_dragNode"),(o=c.getChildren("datasetGroup_dragNode"))&&(u=o[0]),i&&i.length?(0,a.componentFactory)(u,e.getDSdef("dragnode"),"dataset",i.length,i):p.push("dataset"),l&&l.length?(0,a.componentFactory)(u,e.getDSdef("connector"),"connector",l.length,l):p.push("connector"),s&&s.length?(0,a.componentFactory)(u,e.getDSdef("dragableLabels"),"labels",s.length,s):p.push("labels"),p.length&&r(u,p)):e.setChartMessage()};var a=o(118),r=function(e,t){var o=e.getChildren(),a=void 0,r=void 0,n=void 0;if(t&&t.length)for(n=t.length-1;n>-1;n--)for(r=(a=o[t[n]])&&a.length-1;r>-1;a[r].remove(),r--);}},555:function(e,t,o){"use strict";t.__esModule=!0;var a=o(118),r=o(122),n=h(o(354)),i=h(o(326)),l=h(o(556)),s=h(o(562)),c=h(o(558)),u=h(o(563)),p=h(o(565));function h(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var f=a.preDefStr.altHGridColorStr,g=a.preDefStr.altHGridAlphaStr,m=Math,v=m.max,b=m.round,y=a.preDefStr.POSITION_BOTTOM,x=a.preDefStr.divLineAlpha3DStr,w=a.preDefStr.defaultFontStr,k=a.preDefStr.divLineAlphaStr,C=a.preDefStr.altVGridColorStr,N=a.preDefStr.altVGridAlphaStr,S=a.preDefStr.colors.c000000,E={chart2D:{bgColor:"bgColor",bgAlpha:"bgAlpha",bgAngle:"bgAngle",bgRatio:"bgRatio",canvasBgColor:"canvasBgColor",canvasBaseColor:"canvasBaseColor",divLineColor:"divLineColor",legendBgColor:"legendBgColor",legendBorderColor:"legendBorderColor",toolTipbgColor:"toolTipbgColor",toolTipBorderColor:"toolTipBorderColor",baseFontColor:"baseFontColor",anchorBgColor:"anchorBgColor"},chart3D:{bgColor:"bgColor3D",bgAlpha:"bgAlpha3D",bgAngle:"bgAngle3D",bgRatio:"bgRatio3D",canvasBgColor:"canvasBgColor3D",canvasBaseColor:"canvasBaseColor3D",divLineColor:"divLineColor3D",divLineAlpha:x,legendBgColor:"legendBgColor3D",legendBorderColor:"legendBorderColor3D",toolTipbgColor:"toolTipbgColor3D",toolTipBorderColor:"toolTipBorderColor3D",baseFontColor:"baseFontColor3D",anchorBgColor:"anchorBgColor3D"}},A=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.isDual=!0,o.paletteIndex=3,o.canvasborderthickness=1,o.hasInteractiveLegend=!1,o.numOfCanvas=2,o.registerFactory("vCanvas",i["default"],["axis"]),o.registerFactory("axis",s["default"],["canvas"]),o.registerFactory("dataset",l["default"],["vCanvas"]),o}return d(t,e),t.prototype.getName=function(){return"candlestick"},t.getName=function(){return"candlestick"},t.prototype.getDSdef=function(e){return"bar"===e?u["default"]:"line"===e?p["default"]:c["default"]},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.hasLegend=!0,t.defaultDatasetType="candlestick",t.drawanchors=0,t.enablemousetracking=!0,t.iscandlestick=!0},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t)},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t);var o,n=this.config,i=this.getFromEnv("chart-attrib"),l=this.getFromEnv("color-manager");n.showVolumeChart=(0,a.pluckNumber)(i.showvolumechart,function(e){if(!e||!e.dataset)return 0;var t=e.dataset[0].data;return!!(Array.isArray(t)&&t.filter(function(e){return e.volume})||[]).length}(t),1),n.rollOverBandColor=(0,r.convertColor)((0,a.pluck)(i.rolloverbandcolor,l.getColor(f)),(0,a.pluck)(i.rolloverbandalpha,l.getColor(g))),n.crosslinecolor=(0,a.pluck)(i.crosslinecolor,i.rolloverbandcolor,l.getColor(f)),n.drawcrosslineontop=0,n.crosslinealpha=(0,a.pluckNumber)(i.crosslinealpha,i.rolloverbandalpha,l.getColor(g)),n.drawcrossline=1,n.skipClipping=!0,i=this.getFromEnv("chart-attrib"),n.vplotbordercolor=(0,a.getFirstValue)(i.vplotbordercolor,""),n.vplotborderalpha=(0,a.getFirstValue)(i.vplotborderalpha,""),n.vplotborderthickness=(0,a.pluckNumber)(i.vplotborderthickness,1),n.showplotborder=(0,a.pluckNumber)(i.showvplotborder,1),o=(0,a.pluckNumber)(i.volumeheightpercent,40),n.volumeHeightPercent=o<20?20:o>80?80:o,n.canvasBorderWidth=(0,a.pluckNumber)(i.canvasborderthickness,1)},t.prototype._spaceManager=function(){var e,t,o,r,n,i,l,s,c,u,p,h,d,f,g,m,x,w,k,C,N,S,E,A=this.config,T=this.getChildren(),D=A.legendPosition,L=T.xAxis&&T.xAxis[0],_=T.yAxis&&T.yAxis[0],P=T.yAxis&&T.yAxis[1],O=A.hasLegend,V=this.getFromEnv("legend"),M=this.config.showVolumeChart,F=M?A.volumeHeightPercent:0,I=T.canvas[0],B=I.config,R=A.width,j=A.height,G={},H=A.chartBorderWidth,W=B.canvasBorderWidth,z=A.minCanvasHeight,U=A.minCanvasWidth,J=A.canvasMarginLeft,K=A.canvasMarginRight,q=A.canvasMarginTop,Y=A.canvasMarginBottom,X=A.origCanvasTopMargin,Q=A.origCanvasBottomMargin,Z=A.origCanvasLeftMargin,$=A.origCanvasRightMargin;this._allocateSpace({top:H,bottom:H,left:H,right:H}),e=.225*A.availableHeight,t=this._manageActionBarSpace&&this._manageActionBarSpace(e)||{},this._allocateSpace(t),d=D===a.POSITION_RIGHT?.225*A.canvasWidth:.3*A.canvasHeight,!1!==O&&L&&A.showLegend&&this._allocateSpace(V._manageLegendPosition(d)),o=.7*A.canvasWidth,p=_.placeAxis(o),h=M?P.placeAxis(o):{},G.left=v(p.left,h.left||0),G.right=v(p.right,h.right||0),this._allocateSpace(G),U>R-J-K&&(S=!0,f=A.canvasWidth-U,E=J+K,J=A.canvasMarginLeft=f*J/E,K=A.canvasMarginRight=f*K/E),w=J>A.canvasLeft?J-A.canvasLeft:0,k=K>R-A.canvasRight?K+A.canvasRight-R:0,this._allocateSpace({left:w,right:k}),S&&(E=Z+$,(m=A.canvasWidth)>U&&(w=(f=m-U)*Z/E,k=f*$/E),this._allocateSpace({left:w,right:k})),r=.225*A.canvasHeight,r=D===y?.6*A.canvasHeight:.6*A.canvasWidth,this._manageChartMenuBar(r),this._allocateSpace({top:A.canvasMarginTop,bottom:A.canvasMarginBottom}),r=.3*A.canvasHeight,i=L.placeAxis(r),L&&this._allocateSpace(i),i.bottom+=6,B.intermediarySpace=i.bottom,M&&this._allocateSpace({bottom:10}),this._allocateSpace({top:W,bottom:2*W,left:W,right:W}),z>j-q-Y&&(x=!0,f=A.canvasHeight-z,E=q+Y,q=A.canvasMarginTop=f*q/E,Y=A.canvasMarginBottom=f*Y/E),C=q>A.canvasTop?q-A.canvasTop:0,N=Y>j-A.canvasBottom?Y+A.canvasBottom-j:0,this._allocateSpace({top:C,bottom:N}),x&&(E=X+Q,(g=A.canvasHeight)>z&&(C=(f=g-z)*X/E,N=f*Q/E),this._allocateSpace({top:C,bottom:N})),n=A.canvasHeight,B.canvasHeight=b((100-F)/100*n),B.canvasTop=A.canvasTop,B.canvasLeft=A.canvasLeft,B.canvasBottom=B.canvasTop+B.canvasHeight,B.canvasWidth=A.canvasWidth,B.canvasRight=A.canvasRight,u=A.canvasTop+B.canvasHeight+W,B.canvasY=u,I.setDimension({top:B.canvasTop,left:B.canvasLeft,width:B.canvasWidth,height:B.canvasHeight}),M&&((s=(l=T.canvas[1]).config).canvasHeight=F/100*n,s.canvasTop=B.canvasBottom+i.bottom+2*W,s.canvasLeft=A.canvasLeft,s.canvasBottom=s.canvasTop+s.canvasHeight+2*W,s.canvasRight=A.canvasRight,s.canvasWidth=A.canvasWidth,c=A.canvasTop+B.canvasHeight+i.bottom+2*W,s.canvasY=c,l.setDimension({top:s.canvasTop,left:s.canvasLeft,width:s.canvasWidth,height:s.canvasHeight}))},t.prototype._postSpaceManagement=function(){e.prototype._postSpaceManagement.call(this)},t.prototype.setAxisDimention=function(){var e=this.getChildren(),t=this.config.showVolumeChart,o=e.xAxis&&e.xAxis[0],a=e.yAxis&&e.yAxis[0],r=e.yAxis&&e.yAxis[1],n=e.canvas,i=n[0].config,l=void 0,s=i.canvasBorderWidth;o&&o.setAxisDimention({x:i.canvasLeft,y:i.canvasY,opposite:i.canvasTop-s,axisLength:i.canvasWidth}),a&&a.setAxisDimention({x:i.canvasLeft-s,y:i.canvasTop,opposite:i.canvasRight+s,axisLength:i.canvasHeight}),o.setCanvas(i),a.setCanvas(i),t&&(l=n[1].config,r&&r.setAxisDimention({x:i.canvasLeft-s,y:l.canvasTop,opposite:l.canvasRight+s,axisLength:l.canvasHeight}),r&&r.setCanvas(l))},t.prototype._feedAxesRawData=function(){var e,t,o,r=this.getFromEnv("color-manager"),n=this.getFromEnv("dataSource"),i=this.getFromEnv("chart-attrib"),l=[],s=[],c=this.config.is3D,u=c?E.chart3D:E.chart2D;return(e={isVertical:!1,isReverse:!1,isOpposit:!1,drawTrendLabels:!0,outCanfontFamily:(0,a.pluck)(i.outcnvbasefont,i.basefont,w),outCanfontSize:(0,a.pluckFontSize)(i.outcnvbasefontsize,i.basefontsize,10),outCancolor:(0,a.pluck)(i.outcnvbasefontcolor,i.basefontcolor,r.getColor(u.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),axisNamePadding:i.xaxisnamepadding,axisValuePadding:i.labelpadding,axisNameFont:i.xaxisnamefont,axisNameFontSize:i.xaxisnamefontsize,axisNameFontColor:i.xaxisnamefontcolor,axisNameFontBold:i.xaxisnamefontbold,axisNameFontItalic:i.xaxisnamefontitalic,axisNameBgColor:i.xaxisnamebgcolor,axisNameBorderColor:i.xaxisnamebordercolor,axisNameAlpha:i.xaxisnamealpha,axisNameFontAlpha:i.xaxisnamefontalpha,axisNameBgAlpha:i.xaxisnamebgalpha,axisNameBorderAlpha:i.xaxisnameborderalpha,axisNameBorderPadding:i.xaxisnameborderpadding,axisNameBorderRadius:i.xaxisnameborderradius,axisNameBorderThickness:i.xaxisnameborderthickness,axisNameBorderDashed:i.xaxisnameborderdashed,axisNameBorderDashLen:i.xaxisnameborderdashlen,axisNameBorderDashGap:i.xaxisnameborderdashgap,useEllipsesWhenOverflow:i.useellipseswhenoverflow,divLineColor:(0,a.pluck)(i.vdivlinecolor,i.divlinecolor,r.getColor(u.divLineColor)),divLineAlpha:(0,a.pluck)(i.vdivlinealpha,i.divlinealpha,c?r.getColor(x):r.getColor(k)),divLineThickness:(0,a.pluckNumber)(i.vdivlinethickness,i.divlinethickness,1),divLineIsDashed:Boolean((0,a.pluckNumber)(i.vdivlinedashed,i.vdivlineisdashed,i.divlinedashed,i.divlineisdashed,0)),divLineDashLen:(0,a.pluckNumber)(i.vdivlinedashlen,i.divlinedashlen,4),divLineDashGap:(0,a.pluckNumber)(i.vdivlinedashgap,i.divlinedashgap,2),showAlternateGridColor:(0,a.pluckNumber)(i.showalternatevgridcolor,0),alternateGridColor:(0,a.pluck)(i.alternatevgridcolor,r.getColor(C)),alternateGridAlpha:(0,a.pluck)(i.alternatevgridalpha,r.getColor(N)),numDivLines:i.numvdivlines,labelFont:i.labelfont,labelFontSize:i.labelfontsize,labelFontColor:i.labelfontcolor,labelFontAlpha:i.labelalpha,labelFontBold:i.labelfontbold,labelFontItalic:i.labelfontitalic,axisName:i.xaxisname,axisMinValue:i.xaxisminvalue,axisMaxValue:i.xaxismaxvalue,setAdaptiveMin:i.setadaptivexmin,adjustDiv:i.adjustvdiv,labelDisplay:i.labeldisplay,showLabels:i.showlabels,rotateLabels:i.rotatelabels,slantLabel:(0,a.pluckNumber)(i.slantlabels,i.slantlabel),labelStep:(0,a.pluckNumber)(i.labelstep,i.xaxisvaluesstep),showAxisValues:(0,a.pluckNumber)(i.showxaxisvalues,i.showxaxisvalue),showLimits:i.showvlimits,showDivLineValues:(0,a.pluckNumber)(i.showvdivlinevalues,i.showvdivlinevalues),showZeroPlane:i.showvzeroplane,zeroPlaneColor:i.vzeroplanecolor,zeroPlaneThickness:i.vzeroplanethickness,zeroPlaneAlpha:i.vzeroplanealpha,showZeroPlaneValue:i.showvzeroplanevalue,trendlineColor:i.trendlinecolor,trendlineToolText:i.trendlinetooltext,trendlineThickness:i.trendlinethickness,trendlineAlpha:i.trendlinealpha,showTrendlinesOnTop:i.showtrendlinesontop,showAxisLine:(0,a.pluckNumber)(i.showxaxisline,i.showaxislines,i.drawAxisLines,0),axisLineThickness:(0,a.pluckNumber)(i.xaxislinethickness,i.axislinethickness,1),axisLineAlpha:(0,a.pluckNumber)(i.xaxislinealpha,i.axislinealpha,100),axisLineColor:(0,a.pluck)(i.xaxislinecolor,i.axislinecolor,S),freezeLimit:!0}).vtrendlines=n.vtrendlines,s.push(e),(t={isVertical:!0,isReverse:!0,isOpposit:!1,drawLabelsOpposit:1,axisNameAlignCanvas:1,outCanfontFamily:(0,a.pluck)(i.outcnvbasefont,i.basefont,w),outCanfontSize:(0,a.pluckFontSize)(i.outcnvbasefontsize,i.basefontsize,10),outCancolor:(0,a.pluck)(i.outcnvbasefontcolor,i.basefontcolor,r.getColor(u.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),axisNamePadding:i.yaxisnamepadding,axisValuePadding:i.yaxisvaluespadding,axisNameFont:i.pyaxisnamefont,axisNameFontSize:i.pyaxisnamefontsize,axisNameFontColor:i.pyaxisnamefontcolor,axisNameFontBold:i.pyaxisnamefontbold,axisNameFontItalic:i.pyaxisnamefontitalic,axisNameBgColor:i.pyaxisnamebgcolor,axisNameBorderColor:i.pyaxisnamebordercolor,axisNameAlpha:i.pyaxisnamealpha,axisNameFontAlpha:i.pyaxisnamefontalpha,axisNameBgAlpha:i.pyaxisnamebgalpha,axisNameBorderAlpha:i.pyaxisnameborderalpha,axisNameBorderPadding:i.pyaxisnameborderpadding,axisNameBorderRadius:i.pyaxisnameborderradius,axisNameBorderThickness:i.pyaxisnameborderthickness,axisNameBorderDashed:i.pyaxisnameborderdashed,axisNameBorderDashLen:i.pyaxisnameborderdashlen,axisNameBorderDashGap:i.pyaxisnameborderdashgap,axisNameWidth:i.yaxisnamewidth,useEllipsesWhenOverflow:i.useellipseswhenoverflow,rotateAxisName:(0,a.pluckNumber)(i.rotateyaxisname,1),axisName:i.pyaxisname,divLineColor:(0,a.pluck)(i.divlinecolor,r.getColor(u.divLineColor)),divLineAlpha:(0,a.pluck)(i.divlinealpha,r.getColor(k)),divLineThickness:(0,a.pluckNumber)(i.divlinethickness,1),divLineIsDashed:Boolean((0,a.pluckNumber)(i.divlinedashed,i.divlineisdashed,1)),divLineDashLen:(0,a.pluckNumber)(i.divlinedashlen,4),divLineDashGap:(0,a.pluckNumber)(i.divlinedashgap,2),showAlternateGridColor:(0,a.pluckNumber)(i.showalternatehgridcolor,1),alternateGridColor:(0,a.pluck)(i.alternatehgridcolor,r.getColor(f)),alternateGridAlpha:(0,a.pluck)(i.alternatehgridalpha,r.getColor(g)),numDivLines:(0,a.pluckNumber)(i.numpdivlines,5),axisMinValue:i.pyaxisminvalue,axisMaxValue:i.pyaxismaxvalue,setAdaptiveMin:(0,a.pluckNumber)(i.setadaptiveymin,1),adjustDiv:i.adjustdiv,labelStep:i.yaxisvaluesstep,showAxisValues:(0,a.pluckNumber)(i.showyaxisvalues,i.showyaxisvalue),showLimits:(0,a.pluckNumber)(i.showyaxislimits,i.showlimits,this.showLimits),showDivLineValues:(0,a.pluckNumber)(i.showdivlinevalues,i.showdivlinevalue),showZeroPlane:i.showzeroplane,zeroPlaneColor:i.zeroplanecolor,zeroPlaneThickness:i.zeroplanethickness,zeroPlaneAlpha:i.zeroplanealpha,showZeroPlaneValue:i.showzeroplanevalue,trendlineColor:i.trendlinecolor,trendlineToolText:i.trendlinetooltext,trendlineThickness:i.trendlinethickness,trendlineAlpha:i.trendlinealpha,showTrendlinesOnTop:i.showtrendlinesontop,showAxisLine:(0,a.pluckNumber)(i.showyaxisline,i.showaxislines,i.drawAxisLines,0),axisLineThickness:(0,a.pluckNumber)(i.yaxislinethickness,i.axislinethickness,1),axisLineAlpha:(0,a.pluckNumber)(i.yaxislinealpha,i.axislinealpha,100),axisLineColor:(0,a.pluck)(i.yaxislinecolor,i.axislinecolor,S)}).trendlines=n.trendlines,l.push(t),this.config.showVolumeChart&&(o={isVertical:!0,isReverse:!0,isOpposit:!1,axisIndex:1,drawLabelsOpposit:1,axisNameAlignCanvas:1,uniqueClassName:1,outCanfontFamily:(0,a.pluck)(i.outcnvbasefont,i.basefont,w),outCanfontSize:(0,a.pluckFontSize)(i.outcnvbasefontsize,i.basefontsize,10),outCancolor:(0,a.pluck)(i.outcnvbasefontcolor,i.basefontcolor,r.getColor(u.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),axisNamePadding:i.yaxisnamepadding,axisValuePadding:i.yaxisvaluespadding,axisNameFont:i.vyaxisnamefont,axisNameFontSize:i.vyaxisnamefontsize,axisNameFontColor:i.vyaxisnamefontcolor,axisNameFontBold:i.vyaxisnamefontbold,axisNameFontItalic:i.vyaxisnamefontitalic,axisNameBgColor:i.vyaxisnamebgcolor,axisNameBorderColor:i.vyaxisnamebordercolor,axisNameAlpha:i.vyaxisnamealpha,axisNameFontAlpha:i.vyaxisnamefontalpha,axisNameBgAlpha:i.vyaxisnamebgalpha,axisNameBorderAlpha:i.vyaxisnameborderalpha,axisNameBorderPadding:i.vyaxisnameborderpadding,axisNameBorderRadius:i.vyaxisnameborderradius,axisNameBorderThickness:i.vyaxisnameborderthickness,axisNameBorderDashed:i.vyaxisnameborderdashed,axisNameBorderDashLen:i.vyaxisnameborderdashlen,axisNameBorderDashGap:i.vyaxisnameborderdashgap,axisNameWidth:i.yaxisnamewidth,useEllipsesWhenOverflow:i.useellipseswhenoverflow,rotateAxisName:(0,a.pluckNumber)(i.rotateyaxisname,1),axisName:i.vyaxisname,divLineColor:(0,a.pluck)(i.divlinecolor,r.getColor(u.divLineColor)),divLineAlpha:(0,a.pluck)(i.divlinealpha,r.getColor(k)),divLineThickness:(0,a.pluckNumber)(i.divlinethickness,1),divLineIsDashed:Boolean((0,a.pluckNumber)(i.divlinedashed,i.divlineisdashed,1)),divLineDashLen:(0,a.pluckNumber)(i.divlinedashlen,4),divLineDashGap:(0,a.pluckNumber)(i.divlinedashgap,2),showAlternateGridColor:(0,a.pluckNumber)(i.showalternatehgridcolor,1),alternateGridColor:(0,a.pluck)(i.alternatehgridcolor,r.getColor(f)),alternateGridAlpha:(0,a.pluck)(i.alternatehgridalpha,r.getColor(g)),numDivLines:i.numdivlines,axisMinValue:i.vyaxisminvalue,axisMaxValue:i.vyaxismaxvalue,setAdaptiveMin:i.setadaptiveymin,adjustDiv:i.adjustdiv,labelStep:i.yaxisvaluesstep,showAxisValues:(0,a.pluckNumber)(i.showyaxisvalues,i.showyaxisvalue),showLimits:(0,a.pluckNumber)(i.showsecondarylimits,i.showlimits),showDivLineValues:(0,a.pluckNumber)(i.showdivlinevalues,i.showdivlinevalue),showZeroPlane:i.showzeroplane,zeroPlaneColor:i.zeroplanecolor,zeroPlaneThickness:i.zeroplanethickness,zeroPlaneAlpha:i.zeroplanealpha,showZeroPlaneValue:i.showzeroplanevalue,trendlineColor:i.trendlinecolor,trendlineToolText:i.trendlinetooltext,trendlineThickness:i.trendlinethickness,trendlineAlpha:i.trendlinealpha,showTrendlinesOnTop:i.showtrendlinesontop,showAxisLine:(0,a.pluckNumber)(i.showyaxisline,i.showaxislines,i.drawAxisLines,0),axisLineThickness:(0,a.pluckNumber)(i.yaxislinethickness,i.axislinethickness,1),axisLineAlpha:(0,a.pluckNumber)(i.yaxislinealpha,i.axislinealpha,100),axisLineColor:(0,a.pluck)(i.yaxislinecolor,i.axislinecolor,S)},l.push(o)),{xAxisConfigure:s,yAxisConfigure:l}},t.prototype.mouseoutHandler=function(e,t,o){var a=this.config.datasetOrder||this.getDatasets(),r=this.getChildren("mouseTracker")[0];a[t]&&a[t].components.data[o]?a[t]._firePlotEvent("fc-mouseout",o,e):this.getFromEnv("toolTipController").hideAll(),delete r._lastDatasetIndex,delete r._lastPointIndex},t.prototype._mouseEvtHandler=function(e,t){var o,r,n,i,l,s,c,u=this,p=t.mouseTracker,h=e.originalEvent,d=u.getChildren("canvas").length,f=h&&(0,a.getMouseCoordinate)(u.getFromEnv("chart-container"),h,u),g=f&&f.chartX||0,m=f&&f.chartY||0,v=!1,b=p._lastDatasetIndex,y=p._lastPointIndex;for(i=0;i<d;i++)for(l=(o=u.getDatasets()).length;l--&&!v;)(r=o[l])&&r.getState("visible")&&(n=r._getHoveredPlot&&r._getHoveredPlot(g,m))&&n.hovered&&(v=!0,n.datasetIndex=l,c=p.getMouseEvents(e,n.datasetIndex,n.pointIndex));if((!v||c&&c.fireOut)&&void 0!==b&&o[b]&&o[b]._firePlotEvent&&(c&&!c.events.length?p.mouseoutTimer=setTimeout(function(){u.mouseoutHandler(e,b,y)},20):(u.mouseoutHandler(e,b,y),clearTimeout(p.mouseoutTimer))),v)for((s=c.events&&c.events.length)&&(p._lastDatasetIndex=n.datasetIndex,y=p._lastPointIndex=n.pointIndex),l=0;l<s;l+=1)r&&r._firePlotEvent&&r._firePlotEvent(c.events[l],y,e,n.datasetIndex)},t.prototype._allocateSpace=function(e){var t,o,a=this.getChildren("canvas"),r=a&&a[0].config,n=this.config,i=n.canvasHeight,l=n.canvasWidth,s=n.availableHeight,c=n.availableWidth;o=n.canvasLeft+=e.left||0,t=n.canvasTop+=e.top||0,l=n.canvasWidth=v(l-((e.left||0)+(e.right||0)),0),i=n.canvasHeight=v(i-((e.top||0)+(e.bottom||0)),0),n.availableHeight=v(s-((e.top||0)+(e.bottom||0)),0),n.availableWidth=v(c-((e.left||0)+(e.right||0)),0),n.canvasRight=o+l,n.canvasBottom=t+i,r&&(r.canvasPaddingLeft=v(r.canvasPaddingLeft,e.paddingLeft||0),r.canvasPaddingRight=v(r.canvasPaddingRight,e.paddingRight||0),r.canvasPaddingTop=v(r.canvasPaddingTop,e.paddingTop||0),r.canvasPaddingBottom=v(r.canvasPaddingBottom,e.paddingBottom||0))},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource").dataset,t=e&&e[0]&&e[0].data;if(!e||!t||!Array.isArray(t))return!0},t}(n["default"]);t["default"]=A},556:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o=e.getFromEnv("dataSource"),i=o.dataset,c=o.trendset,u=e.getFromEnv("chart-attrib"),p=e.getFromEnv("chartConfig").showVolumeChart,h=(0,a.pluck)((0,a.parseUnsafeString)(u.plotpriceas).toLowerCase(),"candlestick"),d=e.getChildren(),f=d.canvas[0].getChildren("vCanvas")[0],g=void 0,m=void 0,v=["candlestick","candlestickbar","candlestickline","trendset"];i?((m=i.slice(0))[0]&&m[0].data&&m[0].data.sort(function(e,t){return e.x-t.x}),t=e.getDSdef(h),(0,a.datasetFactory)(f,t,"dataset_"+h,i.length,m),l(v,"bar"===h?"candlestickbar":"line"===h?"candlestickline":"candlestick"),p&&(g=d.canvas[1].getChildren("vCanvas")[0],(0,a.datasetFactory)(g,r["default"],"dataset_volume",i.length,i)),c&&((0,a.datasetFactory)(f,n["default"],"dataset_trendset",c.length,c),l(v,"trendset")),s(f,v)):e.setChartMessage()};var a=o(118),r=i(o(557)),n=i(o(560));function i(e){return e&&e.__esModule?e:{"default":e}}var l=function(e,t){var o=e.indexOf(t);-1!==o&&e.splice(o,1)},s=function(e,t){var o=void 0;e&&e.iterateComponents(function(e){for(o=0;o<t.length;o++)e.getName()===t[o]&&e.remove()})}},557:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(331),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118),l=o(122),s=o(558);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u=i.preDefStr.colors,p=u.B90000,h=u.FFFFFF,d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,a,r,n,s,c,u,d,f,g,m,v,b,y,x,w,k,C=this.config,N=this.config.JSONData,S=N.data||[],E=this.getFromEnv("chart-attrib"),A=this.getFromEnv("chartConfig"),T=S.length,D=this.getFromEnv("color-manager"),L=C.bearBorderColor=(0,l.getFirstColor)((0,i.pluck)(E.bearbordercolor,A.vplotbordercolor,p)),_=C.bearFillColor=(0,l.getFirstColor)((0,i.pluck)(E.bearfillcolor,p)),P=C.bullBorderColor=(0,l.getFirstColor)((0,i.pluck)(E.bullbordercolor,A.vplotbordercolor,D.getColor("canvasBorderColor"))),O=C.bullFillColor=(0,l.getFirstColor)((0,i.pluck)(E.bullfillcolor,h)),V=(0,i.pluckNumber)(A.showplotborder,1)?(0,i.pluckNumber)(E.vplotborderthickness,1):0,M=this.getFromEnv("number-formatter"),F=-Infinity,I=+Infinity,B=-Infinity,R=+Infinity,j=this.getFromEnv("number-formatter");for(this.setState("visible",1===(0,i.pluckNumber)(N.visible,1)),!0===this.getState("visible")?this._conatinerHidden=!1:this._containerHidden=!0,C.parentYAxis=1,C.volumeToolText=(0,i.getValidValue)((0,i.parseUnsafeString)((0,i.pluck)(N.volumetooltext,E.volumetooltext,E.plottooltext))),C.name=(0,i.getValidValue)(N.seriesname),C.showTooltip=(0,i.pluck)(E.showtooltip,1),C.showShadow=(0,i.pluckNumber)(E.showshadow,D.getColor("showShadow")),k=(0,i.pluck)(E.maxcolwidth),C.maxColWidth=Math.abs((0,i.pluckNumber)(k,50))||1,w=Math.max((0,i.pluckNumber)(E.plotspacepercent,20)%100,0),C.plotSpacePercent=C.groupPadding=w/200,C.plotborderthickness=V,b=this.components.data=this.components.data||(this.components.data=[]),g=(0,i.extend2)((0,i.extend2)({},E),{sforcedecimals:(0,i.getFirstValue)(E.forcevdecimals,E.forcedecimals),sforceyaxisvaluedecimals:(0,i.getFirstValue)(E.forcevyaxisvaluedecimals,E.forceyaxisvaluedecimals),syaxisvaluedecimals:(0,i.getFirstValue)(E.vyaxisvaluedecimals,E.yaxisvaluedecimals),sformatnumber:(0,i.getFirstValue)(E.vformatnumber,E.formatnumber),sformatnumberscale:(0,i.getFirstValue)(E.vformatnumberscale,E.formatnumberscale,"1"),sdefaultnumberscale:(0,i.getFirstValue)(E.vdefaultnumberscale,E.defaultnumberscale),snumberscaleunit:(0,i.getFirstValue)(E.vnumberscaleunit,E.numberscaleunit),vnumberscalevalue:(0,i.getFirstValue)(E.vnumberscalevalue,E.numberscalevalue),sscalerecursively:(0,i.getFirstValue)(E.vscalerecursively,E.scalerecursively),smaxscalerecursion:(0,i.getFirstValue)(E.vmaxscalerecursion,E.maxscalerecursion),sscaleseparator:(0,i.getFirstValue)(E.vscaleseparator,E.scaleseparator),snumberprefix:(0,i.getFirstValue)(E.vnumberprefix,E.numberprefix),snumbersuffix:(0,i.getFirstValue)(E.vnumbersuffix,E.numbersuffix),sdecimals:(0,i.getFirstValue)(E.vdecimals,E.decimals)}),m=C.plotLineDashLen=(0,i.pluckNumber)(E.plotlinedashlen,5),v=C.plotLineDashGap=(0,i.pluckNumber)(E.plotlinedashgap,4),j.configure(g),r=0;r<T;r+=1)y=S[r],(n=b[r])||(n=b[r]={}),!n.config&&(n.config={}),!n.graphics&&(n.graphics={}),x=n.config,y&&!y.vline&&(s=x.open=M.getCleanValue(y.open),c=x.close=M.getCleanValue(y.close),u=x.volume=M.getCleanValue(y.volume,!0),x.high=M.getCleanValue(y.high),x.low=M.getCleanValue(y.low),d=x.x=M.getCleanValue(y.x),F=Math.max(F,u),I=Math.min(I,u),B=Math.max(B,d),R=Math.min(R,d),x.borderColor=(0,l.getFirstColor)((0,i.pluck)(y.bordercolor,c<s?L:P)),o=(0,i.pluckNumber)(y.alpha,100),f=(0,i.pluckNumber)(A.vplotborderalpha,y.alpha,100),t=(0,l.getFirstColor)((0,i.pluck)(y.color,c<s?_:O)),a={opacity:C.showShadow?o/100:0},x.color=t,x.alpha=o,x.setLink=y.link,x.borderWidth=V,x.borderAlpha=f,x.y=u,x.colorArr=[{color:x.color,alpha:x.alpha},{color:x.borderColor,alpha:x.borderAlpha}],x.toolText=this._parseToolText(r),x.toolTipValue="",x.setValue=x._y=x.y,x.plotBorderDashStyle=(0,i.pluckNumber)(y.dashed)?(0,i.getDashStyle)(m,v):"none",d=null!==d?d:r+1,x._x=d,x.shadow=a);C.defaultPadding={left:0,right:0},C.yMax=F,C.yMin=I,C.xMax=B,C.xMin=R,this.setState("dirty",!0)},t.prototype._parseToolText=function(e){return s._parseToolText.call(this,e)},t.prototype.getPlotIndices=function(e){var t,o,a=Math.floor(e),r=Math.ceil(e),n=[],i=this.config.JSONData&&this.config.JSONData.data;for(t=i.length;t--;)(o=i[t]).x>=a&&o.x<=r&&n.push(t);return n},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i,l=this.getFromEnv("xAxis");for(e+=l.getTranslation(),o=l.getValue(e),a=(n=this.getPlotIndices(o)).length-1;a>-1&&!(r=(i=n[a])-o>0?this._checkPointerOverColumn(i,e,t)||this._checkPointerOverColumn(i-1,e,t):this._checkPointerOverColumn(i+1,e,t)||this._checkPointerOverColumn(i,e,t));a--);return r},t.prototype.getDataLimits=function(){var e=this.config;return{max:e.yMax,min:e.yMin,xMax:e.xMax,xMin:e.xMin}},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.components.data&&this.components.data.length;e.scrollMinVal=0,e.scrollMaxVal=t,e.scrollMinValForLabel=e.scrollMinVal,e.scrollMaxValForLabel=e.scrollMaxVal},t.prototype.drawLabel=function(){},t.prototype.getName=function(){return"volume"},t}(n["default"]);t["default"]=d},558:function(e,t,o){"use strict";t.__esModule=!0,t._parseToolText=t._firePlotEvent=t.getPlotIndices=undefined;var a=o(118),r=o(122),n=c(o(470)),i=o(125),l=c(o(559)),s=o(331);function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var p=a.preDefStr.colors,h=p.B90000,d=p.FFFFFF,f=function(e,t,o){var a,r,n,i=this.getFromEnv("chart"),l=this.components.data[t],s=this.config.currentToolTip,c=l.graphics.element,u=o.originalEvent,p=i.getFromEnv("paper").canvas.style,h=this.getFromEnv("toolTipController");if(c)switch(a=(r=l.config).toolText,n=r.setLink,e){case"fc-mouseover":a&&(s?h.draw(u,a,s):s=this.config.currentToolTip=h.draw(u,a)),i.plotEventHandler(c,o,"DataPlotRollOver"),n&&(p.cursor="pointer");break;case"fc-mouseout":h.hide(s),i.plotEventHandler(c,o,"DataPlotRollOut"),n&&(p.cursor="default");break;case"fc-click":i.plotEventHandler(c,o);break;case"fc-mousemove":a&&(s?h.draw(u,a,s):s=this.config.currentToolTip=h.draw(u,a))}},g=function(e){var t,o,a=Math.floor(e),r=Math.ceil(e),n=[],i=this.config.JSONData&&this.config.JSONData.data;for(t=i.length;t--;)(o=i[t]).x>=a&&o.x<=r&&n.push(t);return n},m=function(e){var t,o=this.config,r=o.JSONData.data,n=this.components.data,i=this.getFromEnv("xAxis"),l=this.getFromEnv("chart-attrib"),s="line"===o.plotType?1:0,c=r[e],u=n[e].config,p=i.getLabel(u.x).label,h=u.open,d=u.close,f=this.getFromEnv("yAxis"),g=u.high,m=u.low,v=u.volume,b=void 0!==v?c.volumetooltext:void 0;return o.showTooltip?void 0!==(t=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(b,c.tooltext,o.volumeToolText,o.toolText))))?t=(0,a.parseTooltext)(t,[3,5,6,10,54,55,56,57,58,59,60,61,81,82],{label:p,yaxisName:(0,a.parseUnsafeString)(l.yaxisname),xaxisName:(0,a.parseUnsafeString)(l.xaxisname),openValue:c.open,openDataValue:f.dataLabels(h),closeValue:c.close,closeDataValue:f.dataLabels(d),highValue:c.high,highDataValue:f.dataLabels(g),lowValue:c.low,lowDataValue:f.dataLabels(m),volumeValue:c.volume,volumeDataValue:f.dataLabels(v)},c,l):(t=null===h||s?"":"<b>Open:</b> "+f.dataLabels(h)+"<br />",t+=null!==d?"<b>Close:</b> "+f.dataLabels(d)+"<br />":"",t+=null===g||s?"":"<b>High:</b> "+f.dataLabels(g)+"<br />",t+=null===m||s?"":"<b>Low:</b> "+f.dataLabels(m)+"<br />",t+=null!==v?"<b>Volume:</b> "+f.dataLabels(v):""):t="",t};(0,i.addDep)({name:"candlestickAnimation",type:"animationRule",extension:l["default"]});var v=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return u(t,e),t.prototype.trimData=function(e){if(this.components||!this.components.data||!this.components.data.length){var t=this.components,o=t&&t.data,a=o&&o.length,r=e.data,n=Array.isArray(r)&&r.filter(function(e){return e.high||e.open||e.close||e.low}).length||0,i=a-n;i>0&&this.removeData(n,i,!1)}},t.prototype.removePlots=function(){var e=this.components,t=e&&e.removeDataArr;(0,s._removePlots)(t,this.__removeElem)},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,n,i,l,s,c,u,p,f,g,m,v,b,y,x,w,k,C,N,S,E=this.config,A=this.getFromEnv("chart"),T=A.getFromEnv("dataSource"),D=this.config.JSONData,L=D.data||[],_=T.chart,P=L.length,O=this.getFromEnv("number-formatter"),V=this.getFromEnv("color-manager"),M=E.bearBorderColor=(0,r.getFirstColor)((0,a.pluck)(_.bearbordercolor,h)),F=E.bearFillColor=(0,r.getFirstColor)((0,a.pluck)(_.bearfillcolor,h)),I=E.bullBorderColor=(0,r.getFirstColor)((0,a.pluck)(_.bullbordercolor,V.getColor("canvasBorderColor"))),B=E.bullFillColor=(0,r.getFirstColor)((0,a.pluck)(_.bullfillcolor,d)),R=E.linethickness=E.plotBorderThickness=(0,a.pluckNumber)(_.plotlinethickness,1),j=E.plotLineDashLen=(0,a.pluckNumber)(_.plotlinedashlen,5),G=E.plotLineDashGap=(0,a.pluckNumber)(_.plotlinedashgap,4),H=-Infinity,W=+Infinity,z=-Infinity,U=+Infinity;for(this.setState("visible",1===(0,a.pluckNumber)(D.visible,1)),this._conatinerHidden=!!this.getState("visible"),E.defaultPadding={left:.5,right:.5},E.parentYAxis=0,E.toolText=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(D.tooltext,_.plottooltext))),E.name=(0,a.getValidValue)(D.seriesname),E.showTooltip=(0,a.pluck)(_.showtooltip,1),E.showShadow=(0,a.pluckNumber)(_.showshadow,V.getColor("showShadow")),E.showErrorValue=!0,E.errorBarWidthPercent=0,!0,S=(0,a.pluck)(_.maxcolwidth),E.maxColWidth=Math.abs((0,a.pluckNumber)(S,50))||1,N=Math.max((0,a.pluckNumber)(_.plotspacepercent,20)%100,0),E.plotSpacePercent=E.groupPadding=N/200,w=this.components.data=this.components.data||(this.components.data=[]),E.valuePadding=(0,a.pluckNumber)(D.valuepadding,_.valuepadding,2),E.plotBorderThickness=R,l=0;l<P;l+=1)k=L[l],(s=w[l])||(s=w[l]={}),!s.config&&(s.config={}),!s.graphics&&(s.graphics={}),C=s.config,k&&!k.vline&&(C.setLink=(0,a.pluck)(k.link),c=C.open=O.getCleanValue(k.open),u=C.close=O.getCleanValue(k.close),p=C.high=O.getCleanValue(k.high),f=C.low=O.getCleanValue(k.low),null!==(C.volume=O.getCleanValue(k.volume,!0))&&(A.config.drawVolume=!0),v=C.x=O.getCleanValue(k.x),b=C.closeVal=Math.min(c,u),x=C.yVal=Math.max(c,u),g=Math.min(c,u,p,f),m=Math.max(c,u,p,f),o=(0,r.getFirstColor)((0,a.pluck)(k.bordercolor,u<c?M:I)),n=(0,a.pluckNumber)(k.alpha,100),t=(0,r.getFirstColor)((0,a.pluck)(k.color,u<c?F:B)),C.plotBorderDashStyle=(0,a.pluckNumber)(k.dashed)?(0,a.getDashStyle)(j,G):"none",i={opacity:E.showShadow?n/100:0},C.color=t,C.alpha=n,C.setColor=C.color,C.setAlpha=C.alpha,C.anchorImageUrl=(0,a.pluck)(k.anchorimageurl,D.anchorimageurl,_.anchorimageurl),y=C.borderColor=o,C.borderAlpha=C.plotLineAlpha,C.colorArr=[{color:C.color,alpha:C.alpha},{color:C.borderColor,alpha:C.borderAlpha}],C.showValue=1,C.hoverEffects={},C.y=Math.abs(u-c),C.previousY=b,C.link=(0,a.pluck)(k.link),C.errorValueArr=[],p-x>0&&(C.errorValue=!0,C.errorValueArr.push({errorValue:x-p,errorStartValue:x,errorBarColor:y,errorBarThickness:R,opacity:1})),f-b<0&&(C.errorValue=!0,C.errorValueArr.push({errorValue:b-f,errorStartValue:b,errorBarColor:y,errorBarThickness:R,opacity:1})),C.setValue=x,null!==g&&(H=Math.max(H,g),W=Math.min(W,g)),null!==m&&(H=Math.max(H,m),W=Math.min(W,m)),null!==v&&(z=Math.max(z,v),U=Math.min(U,v)),v=null!==v?v:l+1,C._x=v,C._y=x,C._b=b,C.high=Math.max(c,u,p,f),C.low=Math.min(c,u,p,f),C.shadow=i,C.toolText=this._parseToolText(l),C.toolTipValue="",C.displayValue=(0,a.parseUnsafeString)((0,a.pluck)(k.displayvalue,k.valuetext,"")));E.yMax=H,E.yMin=W,E.xMax=z,E.xMin=U,this.setState("dirty",!0)},t.prototype._parseToolText=function(e){return m.call(this,e)},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.components.data&&this.components.data.length;e.scrollMinVal=e.scrollMinValForLabel=0,e.scrollMaxVal=e.scrollMaxValForLabel=t},t.prototype.getPlotIndices=function(e){return g.call(this,e)},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i;for(o=this.getFromEnv("xAxis").getValue(e),a=(n=this.getPlotIndices(o)).length-1;a>-1&&!(r=(i=n[a])-o>0?this._checkPointerOverPlot(i,e,t)||this._checkPointerOverPlot(i-1,e,t):this._checkPointerOverPlot(i+1,e,t)||this._checkPointerOverPlot(i,e,t));a--);return r},t.prototype._firePlotEvent=function(e,t,o){f.call(this,e,t,o)},t.prototype.getDataLimits=function(){var e=this.config;return{max:e.yMax,min:e.yMin,xMax:e.xMax,xMin:e.xMin}},t.prototype.getName=function(){return"candlestick"},t}(n["default"]);t["default"]=v,t.getPlotIndices=g,t._firePlotEvent=f,t._parseToolText=m},559:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.candlestick":function(){return{"rect.appearing":function(e){return[{initialAttr:{y:e.attr.y+e.attr.height,height:0},slot:"plot"}]},"group.appearing":function(e){return"label-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]},"*":null}},"initial.dataset.volume":function(){return{"rect.appearing":function(e){return[{initialAttr:{y:e.attr.y+e.attr.height,height:0},slot:"plot"}]},"*":null}}}},560:function(e,t,o){"use strict";t.__esModule=!0;var a=s(o(346)),r=o(118),n=o(122),i=o(125),l=s(o(561));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}(0,i.addDep)({name:"trendsetAnimation",type:"animationRule",extension:l["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.drawLine=1},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,a,i,l,s,c=this.getFromEnv("chart-attrib"),u=this.getFromEnv("chartConfig"),p=this.config.JSONData,h=this.index,d=p.data||p.set||[],f=this.config,g=this.components.data,m=-Infinity,v=+Infinity,b=-Infinity,y=+Infinity,x=this.getFromEnv("number-formatter"),w=(0,n.getFirstColor)((0,r.pluck)(p.color,c.trendsetcolor,"666666")),k=(0,r.pluck)(p.alpha,c.trendsetalpha,"100"),C=(0,r.pluckNumber)(p.thickness,c.trendsetthickness,2),N=Boolean((0,r.pluckNumber)(p.dashed,c.trendsetdashed,0)),S=(0,r.pluckNumber)(p.dashlen,c.trendsetdashlen,4),E=(0,r.pluckNumber)(p.dashgap,c.trendsetdashgap,4);for(f.includeInLegend=(0,r.pluckNumber)(p.includeinlegend,1),f.lineColor=w,f.lineAlpha=k,f.connectNullData=(0,r.pluckNumber)(c.connectnulldata,0),f.linethickness=C,f.lineDashStyle=N?(0,r.getDashStyle)(S,E):"none",f.name=(0,r.getValidValue)(p.name),f.includeInLegend=(0,r.pluckNumber)(p.includeinlegend,1),f.defaultPadding={left:.5,right:.5},g||(g=this.components.data=[]),h=0,s=d.length;h<s;h+=1)(t=d[h])&&!t.vline&&(o=(i=(a=g[h]=g[h]||(g[h]={})).config=a.config||(a.config={}))._y=i.setValue=x.getCleanValue(t.value),i.setColor=f.lineColor,i.setAlpha=f.lineAlpha,l=x.getCleanValue(t.x),l=i._x=i.x=null!==l?l:h+1,m=Math.max(m,o),v=Math.min(v,o),y=Math.min(y,l),b=Math.max(b,l),i.anchorProps=this._parseAnchorProperties(h),i.hoverEffects={},a.graphics||(a.graphics={}));f.max=m,f.min=v,f.xMax=b,f.xMin=y,u.showLegend&&this._addLegend(),this.setState("visible",!0),this.setState("dirty",!0)},t.prototype._addLegend=function(){var e,t=this.config.JSONData,o=this.config,a=this.getFromEnv("legend"),n={enabled:o.includeInLegend,interactiveLegend:!1,type:this.type,drawLine:!0,label:(0,r.getFirstValue)(t.name)};o.includeinlegend?((e=a.getItem(this.config.legendItemId))?e.configure({style:a.config.itemStyle,hiddenStyle:a.config.itemHiddenStyle,datasetVisible:a.config.datasetVisible,hoverStyle:a.config.itemHoverStyle}):(this.config.legendItemId=a.createItem(this),e=a.getItem(this.config.legendItemId)),e.configure(n),e.setStateCosmetics("default",{symbol:{stroke:(0,r.toRaphaelColor)({color:o.lineColor,alpha:"100"}),rawFillColor:o.lineColor}})):this.config.legendItemId&&a.disposeItem(this.config.legendItemId)},t.prototype.getDataLimits=function(){var e=this.config;return{max:e.max,min:e.min,xMax:e.xMax,xMin:e.xMin}},t.prototype.getType=function(){return"trendset"},t.prototype.drawLabel=function(){},t.prototype.getName=function(){return"trendset"},t}(a["default"]);t["default"]=u},561:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(349),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.trendset.trendset":n["default"]["initial.dataset.line"]}},562:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o=e.getChildren("canvas"),a=o[0],n=o[1],l=e.config.showVolumeChart,s={zoomable:!0,pannable:!0},c=a.getChildren("axisRefVisualCartesian")[0],u=void 0,p=void 0,h=void 0,d=void 0,f=function(){return c.asyncDraw()},g=function(){return u.asyncDraw()};t=e._feedAxesRawData(),(0,r.componentFactory)(e,i["default"],"yAxis",l?2:1,t.yAxisConfigure),(0,r.componentFactory)(e,i["default"],"xAxis",1,t.xAxisConfigure),h=e.getChildren("yAxis")[0],p=e.getChildren("yAxis")[1],h.setAxisConfig({relativeAxis:p}),p&&p.setAxisConfig({relativeAxis:h}),d=e.getChildren("xAxis")[0],h.setLinkedItem("canvas",a),d.setLinkedItem("canvas",a),c.setLinkedItem(h.getId(),h),c.setLinkedItem(d.getId(),d),c.addExtEventListener("visiblerangeset",f,h),c.addExtEventListener("visiblerangeset",f,d),a.attachAxis(d,!1,e.zoomX?s:{}),a.attachAxis(h,!0,e.zoomY?s:{}),l&&(u=n.getChildren("axisRefVisualCartesian")[0],n.attachAxis(d,!1,e.zoomX?s:{}),p.setLinkedItem("canvas",n),u.setLinkedItem(p.getId(),p),u.setLinkedItem(d.getId(),d),u.addExtEventListener("visiblerangeset",g,p),u.addExtEventListener("visiblerangeset",g,d),n.attachAxis(p,!0,e.zoomY?s:{})),e._setCategories()};var a,r=o(118),n=o(292),i=(a=n)&&a.__esModule?a:{"default":a}},563:function(e,t,o){"use strict";t.__esModule=!0;var a=o(118),r=o(122),n=u(o(331)),i=o(470),l=o(558),s=o(125),c=u(o(564));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var h=a.preDefStr.colors,d=h.B90000,f=h.FFFFFF,g=a.preDefStr.ROUND,m=a.preDefStr.visibleStr;(0,s.addDep)({name:"candlestickbarAnimation",type:"animationRule",extension:c["default"]});var v=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return p(t,e),t.prototype.trimData=function(e){if(this.components||!this.components.data||!this.components.data.length){var t=this.components,o=t&&t.data,a=o&&o.length,r=e.data,n=Array.isArray(r)&&r.filter(function(e){return e.high||e.open||e.close||e.low}).length||0,i=a-n;i>0&&this.removeData(n,i,!1)}},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,n,i,l,s,c,u,p,h,g,m,v,b,y,x,w,k,C,N=this.config,S=this.getFromEnv("chart").getFromEnv("dataSource"),E=this.config.JSONData,A=E.data||[],T=S.chart,D=A.length,L=this.getFromEnv("number-formatter"),_=this.getFromEnv("color-manager"),P=N.bearBorderColor=(0,r.getFirstColor)((0,a.pluck)(T.bearbordercolor,d)),O=N.bearFillColor=(0,r.getFirstColor)((0,a.pluck)(T.bearfillcolor,d)),V=N.bullBorderColor=(0,r.getFirstColor)((0,a.pluck)(T.bullbordercolor,_.getColor("canvasBorderColor"))),M=N.bullFillColor=(0,r.getFirstColor)((0,a.pluck)(T.bullfillcolor,f)),F=-Infinity,I=+Infinity,B=-Infinity,R=+Infinity;for(this.setState("visible",1===(0,a.pluckNumber)(E.visible,1)),this._conatinerHidden=!!this.getState("visible"),N.defaultPadding={left:.5,right:.5},N.linethickness=(0,a.pluckNumber)(T.plotlinethickness,2),N.toolText=(0,a.getValidValue)((0,a.parseUnsafeString)((0,a.pluck)(E.tooltext,T.plottooltext))),N.name=(0,a.getValidValue)(E.seriesname),N.showTooltip=(0,a.pluck)(T.showtooltip,1),N.showErrorValue=!0,N.errorBarWidthPercent=0,!0,k=(0,a.pluck)(T.maxcolwidth),N.maxColWidth=Math.abs((0,a.pluckNumber)(k,50))||1,N.enableAnimation=C=(0,a.pluckNumber)(T.animation,T.defaultanimation,1),N.animation=!!C&&{duration:1e3*(0,a.pluckNumber)(T.animationduration,1)},v=N.plotLineDashLen=(0,a.pluckNumber)(T.plotlinedashlen,5),b=N.plotLineDashGap=(0,a.pluckNumber)(T.plotlinedashgap,4),y=this.components.data=this.components.data||(this.components.data=[]),N.valuePadding=(0,a.pluckNumber)(E.valuepadding,T.valuepadding,2),N.showShadow=(0,a.pluckNumber)(T.showshadow,_.getColor("showShadow")),i=0;i<D;i++)x=A[i],(l=y[i])||(l=y[i]={}),!l.config&&(l.config={}),!l.graphics&&(l.graphics={}),w=l.config,x&&!x.vline&&(w.setLink=(0,a.pluck)(x.link),s=w.open=L.getCleanValue(x.open),c=w.close=L.getCleanValue(x.close),u=L.getCleanValue(x.high),p=L.getCleanValue(x.low),w.volume=L.getCleanValue(x.volume,!0),m=w.x=L.getCleanValue(x.x),w.high=Math.max(s,c,u,p),w.low=Math.min(s,c,u,p),w.yVal=Math.max(s,c),h=Math.min(s,c,u,p),g=Math.max(s,c,u,p),o=(0,r.getFirstColor)((0,a.pluck)(x.bordercolor,c<s?P:V)),n=(0,a.pluckNumber)(x.alpha,100),t=(0,r.getFirstColor)((0,a.pluck)(x.color,c<s?O:M)),w.color=t,w.alpha=n,w.setColor=w.color,w.setAlpha=w.alpha,w.borderColor=o,w.borderAlpha=w.plotLineAlpha,w.colorArr=[{color:w.color,alpha:w.alpha},{color:w.borderColor,alpha:w.borderAlpha}],w.showValue=1,w.hoverEffects={},w.link=(0,a.pluck)(x.link),w.setValue=w.y,null!==h&&(F=Math.max(F,h),I=Math.min(I,h)),null!==g&&(F=Math.max(F,g),I=Math.min(I,g)),null!==m&&(B=Math.max(B,m),R=Math.min(R,m)),w.dashStyle=(0,a.pluckNumber)(x.dashed)?(0,a.getDashStyle)(v,b):"none",w.shadow={opacity:N.showShadow?n/100:0},m=null!==m?m:i+1,w.toolText=this._parseToolText(i),w.toolTipValue="",w._x=m,w.y=s,w.previousY=c);N.yMax=F,N.yMin=I,N.xMax=B,N.xMin=R,this.setState("dirty",!0)},t.prototype.drawPlots=function(){var e,t,o,r,n,i,l,s,c,u,p,h,d,f,v,b,y,x=this.getFromEnv("animationManager"),w=this.config,k=this.components.data,C=k.length,N=this.getFromEnv("xAxis"),S=this.getFromEnv("yAxis"),E=function(e){return function(){this.shadow(e)}},A=w.linethickness>5?w.linethickness/2:2.5,T=this.getContainer("plotGroup"),D=this.getState("visible");for(x.setAnimation({el:T,attr:{opacity:D?1:0},component:this}),this.setColumnPosition(),t=this.getFromEnv("columnXShift"),o=0;o<C;o+=1)e=(r=k[o]).config,y=r.graphics,h=null,null===(l=e.y)?h=y.element:(i=e._x,n=e.link,e.setLink=e.link,c=N.getPixel(i),s=e.previousY,p=S.getPixel(s),u=S.getPixel(l),d=S.getPixel(e.high),f=S.getPixel(e.low),v=t,r.errorBar=[],r.errorBar.push([{_xPos:c-A,_yPos:d,_height:Math.abs(d-f),_width:2*A},{_xPos:c+v,_yPos:u,_height:2*A,_width:Math.abs(v)},{_xPos:c,_yPos:p,_height:2*A,_width:Math.abs(v)}]),b=["M",c,f,"L",c,d,"M",c,u,"L",c+v,u,"M",c,p,"L",c-v,p],h=y.element,h=x.setAnimation({el:h||"path",container:T,attr:{path:b,cursor:n?"pointer":"",fill:(0,a.toRaphaelColor)(e.color),stroke:(0,a.toRaphaelColor)(e.borderColor),"stroke-width":w.linethickness,"stroke-dasharray":e.dashStyle,"stroke-linecap":g,"stroke-linejoin":g,"shape-rendering":"crisp",visibility:m},label:"path",component:this,callback:E.call(h,e.shadow)}),y.element=h)},t.prototype._parseToolText=function(e){return l._parseToolText.call(this,e)},t.prototype._firePlotEvent=function(e,t,o){l._firePlotEvent.call(this,e,t,o)},t.prototype._checkPointerOverColumn=function(){},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i;for(o=this.getFromEnv("xAxis").getValue(e),a=(n=l.getPlotIndices.call(this,o)).length-1;a>-1&&!(r=(i=n[a])-o>0?this._checkPointerOverPlot(i,e,t)||this._checkPointerOverPlot(i-1,e,t):this._checkPointerOverPlot(i+1,e,t)||this._checkPointerOverPlot(i,e,t));a--);return r},t.prototype._checkPointerOverPlot=function(e,t,o){return i._checkPointerOverPlot.call(this,e,t,o)},t.prototype._checkPointerOverErrorBar=function(e,t,o){return i._checkPointerOverErrorBar.call(this,e,t,o)},t.prototype.drawLabel=function(){},t.prototype.getDataLimits=function(){var e=this.config;return{max:e.yMax,min:e.yMin,xMax:e.xMax,xMin:e.xMin}},t.prototype.getName=function(){return"candlestickbar"},t}(n["default"]);t["default"]=v},564:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.candlestickbar":function(){return{"path.appearing":function(){return[{initialAttr:{opacity:1,"stroke-width":1},finalAttr:{opacity:1}}]},"*":null}}}},565:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(118),n=o(122),i=o(346),l=(a=i)&&a.__esModule?a:{"default":a},s=o(558);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u=r.preDefStr.colors,p=u.B90000,h=u.FFFFFF,d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,a,i,l,s,c,u,d,f,g,m,v,b,y,x,w,k,C,N=this.config,S=this.config.JSONData,E=S.data||[],A=this.getFromEnv("chart-attrib"),T=E.length,D=this.getFromEnv("number-formatter"),L=this.getFromEnv("color-manager"),_=N.bearBorderColor=(0,n.getFirstColor)((0,r.pluck)(A.bearbordercolor,p)),P=N.bearFillColor=(0,n.getFirstColor)((0,r.pluck)(A.bearfillcolor,p)),O=N.bullBorderColor=(0,n.getFirstColor)((0,r.pluck)(A.bullbordercolor,L.getColor("canvasBorderColor"))),V=N.bullFillColor=(0,n.getFirstColor)((0,r.pluck)(A.bullfillcolor,h)),M=N.linethickness=N.plotBorderThickness=(0,r.pluckNumber)(A.plotlinethickness,2),F=N.plotLineDashLen=(0,r.pluckNumber)(A.plotlinedashlen,5),I=N.plotLineDashGap=(0,r.pluckNumber)(A.plotlinedashgap,4),B=!!(0,r.pluckNumber)(A.drawanchors,0),R=(0,r.pluckNumber)(A.anchorstartangle,90),j=(0,r.pluckNumber)(A.anchorradius,this.anchorRadius,3),G=(0,n.getFirstColor)((0,r.pluck)(A.anchorbordercolor,O)),H=(0,r.pluckNumber)(A.anchorborderthickness,this.anchorBorderThickness,1),W=(0,n.getFirstColor)((0,r.pluck)(A.anchorbgcolor,L.getColor("anchorBgColor"))),z=(0,r.pluck)(A.anchoralpha,"0"),U=(0,r.pluck)(A.anchorbgalpha,z),J=-Infinity,K=+Infinity,q=-Infinity,Y=+Infinity;for(this.setState("visible",1===(0,r.pluckNumber)(S.visible,1)),this._conatinerHidden=!!this.getState("visible"),N.defaultPadding={left:.5,right:.5},N.plotType="line",N.parentYAxis=0,N.toolText=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(S.tooltext,A.plottooltext))),N.name=(0,r.getValidValue)(S.seriesname),N.showTooltip=(0,r.pluck)(A.showtooltip,1),k=(0,r.pluck)(A.maxcolwidth),N.maxColWidth=Math.abs((0,r.pluckNumber)(k,50))||1,N.enableAnimation=C=(0,r.pluckNumber)(A.animation,A.defaultanimation,1),N.animation=!!C&&{duration:1e3*(0,r.pluckNumber)(A.animationduration,1)},N.lineAlpha=(0,r.pluck)(A.plotlinealpha,"100"),w=Math.max((0,r.pluckNumber)(A.plotspacepercent,20)%100,0),N.plotSpacePercent=N.groupPadding=w/200,b=this.components.data=this.components.data||(this.components.data=[]),N.valuePadding=(0,r.pluckNumber)(S.valuepadding,A.valuepadding,2),N.plotBorderThickness=M,N.showvalues=1,N.showShadow=(0,r.pluckNumber)(A.showshadow,L.getColor("showShadow")),l=0;l<T;l+=1)y=E[l],(s=b[l])||(s=b[l]={}),!s.config&&(s.config={}),!s.graphics&&(s.graphics={}),x=s.config,y&&!y.vline&&(x.setLink=(0,r.pluck)(y.link),c=x.open=D.getCleanValue(y.open),u=x.close=D.getCleanValue(y.close),d=x.high=D.getCleanValue(y.high),f=x.low=D.getCleanValue(y.low),x.volume=D.getCleanValue(y.volume,!0),v=x.x=D.getCleanValue(y.x),x.closeVal=Math.min(c,u),x.yVal=Math.max(c,u),g=Math.min(c,u,d,f),m=Math.max(c,u,d,f),t=(0,n.getFirstColor)((0,r.pluck)(y.bordercolor,u<c?_:O)),o=(0,r.pluck)(y.alpha,N.lineAlpha),(0,n.getFirstColor)((0,r.pluck)(y.color,u<c?P:V)),a=(0,r.pluckNumber)(y.dashed)?(0,r.getDashStyle)(F,I):"none",x.dashStyle=a,i={opacity:N.showShadow?o/100:0},x.color=t,x.alpha=o,x.setColor=x.color,x.setAlpha=x.alpha,x.anchorImageUrl=(0,r.pluck)(y.anchorimageurl,S.anchorimageurl,A.anchorimageurl),x.borderColor=t,x.borderAlpha=x.plotLineAlpha,x.colorArr=[{color:x.color,alpha:x.alpha},{color:x.borderColor,alpha:x.borderAlpha}],x.anchorSides=(0,r.pluckNumber)(y.anchorsides,S.anchorsides,A.anchorsides),x.symbol=(0,n.mapSymbolName)(x.anchorSides).split("_"),x.anchorProps={enabled:B,bgColor:W,symbol:x.symbol,bgAlpha:U*z/100+"",borderColor:G,borderAlpha:z,anchorAlpha:z,borderThickness:H,imageUrl:x.anchorImageUrl,radius:j,imageScale:(0,r.pluckNumber)(y.imagescale,S.imagescale,A.imagescale,100),imagePadding:(0,r.pluckNumber)(y.anchorimagepadding,S.anchorimagepadding,A.anchorimagepadding,1),imageAlpha:(0,r.pluckNumber)(S.anchorimagealpha,A.anchorimagealpha,100),startAngle:R},x.showValue=y.displayvalue?1:0,x.hoverEffects={},x.anchorSides=(0,r.pluckNumber)(y.anchorsides,S.anchorsides,A.anchorsides),x.symbol=(0,n.mapSymbolName)(x.anchorSides).split("_"),x.hoverEffects={},x.y=u,x.link=(0,r.pluck)(y.link),x.toolText=this._parseToolText(l),x.toolTipValue="",x.setValue=x._y=x.y,x.displayValue=(0,r.parseUnsafeString)((0,r.pluck)(y.displayvalue,y.valuetext,"")),null!==g&&(J=Math.max(J,g),K=Math.min(K,g)),null!==m&&(J=Math.max(J,m),K=Math.min(K,m)),null!==v&&(q=Math.max(q,v),Y=Math.min(Y,v)),v=v||l+1,x._x=x.x=v,x.high=Math.max(c,u,d,f),x.low=Math.min(c,u,d,f),x.shadow=i);N.yMax=J,N.yMin=K,N.xMax=q,N.xMin=Y,this.setState("dirty",!0)},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.drawLine=1},t.prototype.trimData=function(e){if(this.components||!this.components.data||!this.components.data.length){var t=this.components,o=t&&t.data,a=o&&o.length,r=e.data,n=Array.isArray(r)&&r.filter(function(e){return e.high||e.open||e.close||e.low}).length||0,i=a-n;i>0&&this.removeData(n,i,!1)}},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.components.data&&this.components.data.length;e.scrollMinVal=e.scrollMinValForLabel=0,e.scrollMaxVal=e.scrollMaxValForLabel=t},t.prototype.getDataLimits=function(){var e=this.config;return{max:e.yMax,min:e.yMin,xMax:e.xMax,xMin:e.xMin}},t.prototype.getPlotIndices=function(e){var t,o,a=Math.floor(e),r=Math.ceil(e),n=[],i=this.config.JSONData&&this.config.JSONData.data;for(t=i.length;t--;)(o=i[t]).x>=a&&o.x<=r&&n.push(t);return n},t.prototype._parseToolText=function(e){return s._parseToolText.call(this,e)},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i,l,s=this.getFromEnv("xAxis"),c=this.components.data,u=c.length,p=this.config,h=p&&p.radius||0;e+=s.getTranslation();var d=(r=(a=this.getPlotIndices(Math.floor(Math.max(s.getValue(e-h),0))))[0])>(n=(a=this.getPlotIndices(Math.ceil(Math.min(s.getValue(e+h),u-1))))[a.length-1])?[n,r]:[r,n];for(r=d[0],l=n=d[1];l>=r&&(!(o=c[l])||!(i=this.isWithinShape(o,l,e,t)));l--);return i},t.prototype.getName=function(){return"candlestickline"},t}(l["default"]);t["default"]=d},566:function(e,t,o){"use strict";t.__esModule=!0;var a=s(o(404)),r=s(o(567)),n=s(o(571)),i=o(118),l=s(o(572));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}i.setAttribDefs&&(0,i.setAttribDefs)({whiskerslimitswidthratio:{type:i.attrTypeNum,pAttr:"whiskerslimitswidthratio"},outliersupperrangeratio:{type:i.attrTypeNum,pAttr:"outliersupperrangeratio"},outlierslowerrangeratio:{type:i.attrTypeNum,pAttr:"outlierslowerrangeratio"},showalloutliers:{type:i.attrTypeNum,pAttr:"showalloutliers"},showmean:{type:i.attrTypeNum,pAttr:"showmean"},showsd:{type:i.attrTypeNum,pAttr:"showsd"},showmd:{type:i.attrTypeNum,pAttr:"showmd"},showqd:{type:i.attrTypeNum,pAttr:"showqd"},showminvalues:{type:i.attrTypeNum,pAttr:"showminvalues"},showmaxvalues:{type:i.attrTypeNum,pAttr:"showmaxvalues"},showq1values:{type:i.attrTypeNum,pAttr:"showq1values"},showq3values:{type:i.attrTypeNum,pAttr:"showq3values"},showmedianvalues:{type:i.attrTypeNum,pAttr:"showmedianvalues"}});var u=i.preDefStr.POLYGON,p=i.preDefStr.colors.c000000,h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),a=o;return a.maxColWidth=+Infinity,a.useErrorAnimation=1,a.avoidCrispError=0,a.plotSpacePercent=20,a.useplotgradientcolor=1,a.fireGroupEvent=!0,o.registerFactory("dataset",l["default"],["vCanvas"]),o}return c(t,e),t.getName=function(){return"BoxAndWhisker2D"},t.prototype.getName=function(){return"BoxAndWhisker2D"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.decimals=2,t.friendlyName="Box and Whisker iapi",t.defaultDatasetType="boxandwhisker2d",t.showplotborder=1,t.plotborderdashlen=5,t.plotborderdashgap=4,t.plotfillalpha=i.HUNDREDSTRING,t.useroundedges=0,t.plotborderthickness=1,t.showvalues=1,t.valuepadding=2,t.decimals=2,t.showtooltip=1,t.maxcolwidth=50,t.rotatevalues=0,t.use3dlighting=1,t.whiskerslimitswidthratio=40,t.outliersupperrangeratio=0,t.outlierslowerrangeratio=0,t.showalloutliers=0,t.showmean=0,t.showsd=0,t.showmd=0,t.showqd=0,t.showminvalues=1,t.showmaxvalues=1,t.showq1values=0,t.showq3values=0,t.showmedianvalues=1,t.tooltipsepchar=": ",t.anchorborderthickness=1,t.anchorimageurl=void 0,t.anchorimagepadding=1,t.anchorsides=1,t.anchoralpha=void 0,t.anchorbgalpha=i.HUNDREDSTRING,t.anchorimagealpha=i.HUNDREDSTRING,t.anchorimagescale=100,t.anchorstartangle=90,t.anchorshadow=0,t.anchorbgcolor=void 0,t.anchorbordercolor=void 0,t.anchorradius=3,t.linedashlen=5,t.linedashgap=4,t.linedashed=void 0,t.linealpha=i.HUNDREDSTRING,t.linethickness=2,t.drawfullareaborder=1,t.connectnulldata=0},t.prototype._getLineJSONdata=function(){var e,t,o,a,r,n,l,s,c,h,d,f,g,m,v,b,y,x,w,k,C=this.getChildren("BoxAndWhiskerStatisticalCalc")[0],N=this.getFromEnv("dataSource"),S=N.chart,E=N.dataset,A=E.length,T=[],D=[],L=[],_=function(e){y=Number(e);var t=(0,i.extent)(C.values);v=t[0],b=t[1],(y<v||y>b)&&m.push({value:y,index:x,anchorbgcolor:r.outliericoncolor,anchorradius:r.outliericonradius,anchoralpha:r.outliericonalpha,anchorbgalpha:r.outliericonalpha,anchorsides:r.outliericonsides,dip:r.outliericonshape})};for(k=0;k<A;k++)for(t=E[k],c=D[k]={},l=L[k]={showMean:{seriesname:"Mean",showvalues:0,anchorbgcolor:(0,i.pluck)(t.meaniconcolor,S.meaniconcolor,p),anchorbordercolor:p,anchorradius:(0,i.pluckNumber)(t.meaniconradius,S.meaniconradius,5),anchoralpha:(0,i.pluck)(t.alpha,t.meaniconalpha,S.meaniconalpha),linethickness:(0,i.pluck)(t.linethickness,S.linethickness,1),anchorsides:(0,i.pluck)(t.meaniconsides,S.meaniconsides,3),showline:!(0,i.pluckNumber)(t.drawmeanconnector,S.drawmeanconnector),dip:(0,i.pluck)(t.meaniconshape,S.meaniconshape,u),color:(0,i.pluck)(t.meaniconcolor,S.meaniconcolor,p),data:[]},showSD:{seriesname:"SD",showvalues:0,anchorbgcolor:(0,i.pluck)(t.sdiconcolor,S.sdiconcolor,p),anchorbordercolor:p,anchorradius:(0,i.pluckNumber)(t.sdiconradius,S.sdiconradius,5),anchoralpha:(0,i.pluck)(t.alpha,t.sdiconalpha,S.sdiconalpha),anchorbgalpha:(0,i.pluck)(t.sdiconalpha,S.sdiconalpha,100),linethickness:(0,i.pluck)(t.linethickness,S.linethickness,1),anchorsides:(0,i.pluck)(t.sdiconsides,S.sdiconsides,3),showline:!(0,i.pluckNumber)(t.drawsdconnector,S.drawsdconnector),dip:(0,i.pluck)(t.sdiconshape,S.sdiconshape,u),color:(0,i.pluck)(t.sdiconcolor,S.sdiconcolor,p),data:[]},showQD:{seriesname:"QD",showvalues:0,anchorbgcolor:(0,i.pluck)(t.qdiconcolor,S.qdiconcolor,p),anchorbordercolor:p,anchorradius:(0,i.pluckNumber)(t.qdiconradius,S.qdiconradius,5),anchoralpha:(0,i.pluck)(t.alpha,t.qdiconalpha,S.qdiconalpha),anchorbgalpha:(0,i.pluck)(t.qdiconalpha,S.qdiconalpha,100),linethickness:(0,i.pluck)(t.linethickness,S.linethickness,1),anchorsides:(0,i.pluck)(t.qdiconsides,S.qdiconsides,3),showline:!(0,i.pluckNumber)(t.drawqdconnector,S.drawqdconnector),dip:(0,i.pluck)(t.qdiconshape,S.qdiconshape,u),color:(0,i.pluck)(t.qdiconcolor,S.qdiconcolor,p),data:[]},showMD:{seriesname:"MD",showvalues:0,anchorbgcolor:(0,i.pluck)(t.mdiconcolor,S.mdiconcolor,p),anchorbordercolor:p,anchorradius:(0,i.pluckNumber)(t.mdiconradius,S.mdiconradius,5),anchoralpha:(0,i.pluck)(t.alpha,t.mdiconalpha,S.mdiconalpha),anchorbgalpha:(0,i.pluck)(t.mdiconalpha,S.mdiconalpha,100),linethickness:(0,i.pluck)(t.linethickness,S.linethickness,1),anchorsides:(0,i.pluck)(t.mdiconsides,S.mdiconsides,3),showline:!(0,i.pluckNumber)(t.drawmdconnector,S.drawmdconnector),dip:(0,i.pluck)(t.mdiconshape,S.mdiconshape,u),color:(0,i.pluck)(t.mdiconcolor,S.mdiconcolor,p),data:[]},outliers:{seriesname:"Outliers",showvalues:0,anchorbgcolor:(0,i.pluck)(t.outliericoncolor,S.outliericoncolor,p),anchorbordercolor:p,anchorradius:(0,i.pluckNumber)(t.outliericonradius,S.outliericonradius,5),anchoralpha:(0,i.pluck)(t.alpha,t.outliericonalpha,S.outliericonalpha),includeinlegend:t.seriesname?1:0,anchorbgalpha:(0,i.pluck)(t.outliericonalpha,S.outliericonalpha,100),linethickness:(0,i.pluck)(t.linethickness,S.linethickness,1),anchorsides:(0,i.pluck)(t.outliericonsides,S.outliericonsides,3),showline:!(0,i.pluckNumber)(t.drawoutliersconnector,S.drawoutliersconnector),color:(0,i.pluck)(t.outliericoncolor,S.outliericoncolor,p),dip:(0,i.pluck)(t.outliericonshape,S.outliericonshape,u),data:[]}},e=(0,i.pluckNumber)(t.showmean,S.showmean,0),h=(0,i.pluckNumber)(t.showsd,S.showsd,0),d=(0,i.pluckNumber)(t.showqd,S.showqd,0),f=(0,i.pluckNumber)(t.showmd,S.showmd,0),a=(o=t.data)&&o.length||0,x=0;x<a;x++)r=o[x],C.setArray(r.value),C.getQuartiles(),g=r.outliers,e=c.showMean=c.showMean||(0,i.pluckNumber)(r.showmean,e),h=c.showSD=c.showSD||(0,i.pluckNumber)(r.showsd,h),d=c.showQD=c.showQD||(0,i.pluckNumber)(r.showqd,d),f=c.showMD=c.showMD||(0,i.pluckNumber)(r.showmd,f),l.showMean.data.push({value:e&&C.getMean(),anchorbgcolor:r.meaniconcolor,anchorradius:r.meaniconradius,anchoralpha:r.meaniconalpha,anchorbgalpha:r.meaniconalpha,anchorsides:r.meaniconsides,dip:r.meaniconshape}),l.showSD.data.push({value:h&&C.getSD(),anchorbgcolor:r.sdiconcolor,anchorradius:r.sdiconradius,anchoralpha:r.sdiconalpha,anchorbgalpha:r.sdiconalpha,anchorsides:r.sdiconsides,dip:r.sdiconshape}),l.showQD.data.push({value:d&&C.getQD(),anchorbgcolor:r.qdiconcolor,anchorradius:r.qdiconradius,anchoralpha:r.qdiconalpha,anchorbgalpha:r.qdiconalpha,anchorsides:r.qdiconsides,dip:r.qdiconshape}),l.showMD.data.push({value:f&&C.getMD(),anchorbgcolor:r.mdiconcolor,anchorradius:r.mdiconradius,anchoralpha:r.mdiconalpha,anchorbgalpha:r.mdiconalpha,anchorsides:r.mdiconsides,dip:r.mdiconshape}),g&&(m=l.outliers.data,g.split(i.COMMA).forEach(_),c.outliers=!0);for(s=D.length,w=0;w<s;w++)for(k in c=D[w],n=T[w]=[],c)c[k]&&n.push(L[w][k]);return T},t.prototype.getDSdef=function(){return r["default"]},t.prototype.getDSGroupdef=function(){return n["default"]},t}(a["default"]);t["default"]=h},567:function(e,t,o){"use strict";t.__esModule=!0;var a=c(o(331)),r=c(o(568)),n=o(118),i=o(122),l=o(125),s=c(o(570));function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var p=n.preDefStr.colors.c000000,h=n.preDefStr.LABEL,d=n.preDefStr.UNDERSCORE,f=n.preDefStr.POINTER,g=n.preDefStr.BLANK,m=n.preDefStr.ROUND,v=n.preDefStr.GROUPID,b=n.preDefStr.POSITION_START,y=n.preDefStr.POSITION_BOTTOM,x=n.preDefStr.POSITION_TOP,w=n.preDefStr.showHoverEffectStr,k=n.preDefStr.EVENTARGS,C=n.preDefStr.POSITION_END,N="M",S="H",E="V",A=n.preDefStr.pStr,T=n.preDefStr.sStr,D=function(e,t,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:e,container:t,component:o,label:"group"})},L=function(){return function(){this.hide()}};(0,l.addDep)({name:"boxandwhisker2dAnimation",type:"animationRule",extension:s["default"]});var _=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return u(t,e),t.prototype.createContainer=function(){var e,t,o=this.type,a=this.groupName,r=this.getLinkedParent(),n=a||this.dsGroup||o;!r.getChildContainer(n+"VcanvasGroup")&&(n="default"),e=r.getChildContainer(n+"VcanvasGroup"),t=r.getChildContainer(n+"ShadowVcanvasGroup"),!this.getContainer("shadowGroup")&&this.addContainer("shadowGroup",D({name:"shadow-group"},t,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("lowerBoxGroup",D({name:"lower-box-group"},e,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("upperBoxGroup",D({name:"upper-box-group"},e,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("upperWhiskerGroup",D({name:"upper-whisker-group"},e,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("lowerWhiskerGroup",D({name:"lower-whisker-group"},e,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("medianGroup",D({name:"median-group"},e,this)),!this.getContainer("labelGroup")&&this.addContainer("labelGroup",D({name:"label-group","class":"fusioncharts-datalabels"},r.getChildContainer("vcanvasLabelGroup"),this))},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,a,r,l,s,c,u,p,h,d,f,g,m,v,b,y,x,w,k,C,N,S,E,D,L,_,P,O,V,M,F,I,B,R,j,G,H,W,z,U,J,K,q,Y,X,Q,Z,$,ee,te,oe,ae,re,ne,ie,le,se,ce,ue,pe,he,de,fe,ge,me,ve,be,ye,xe,we,ke,Ce=this.config,Ne=this.config.JSONData,Se=Ne.data,Ee=Se&&Se.length,Ae=this.getFromEnv("chartConfig"),Te=this.getFromEnv("xAxis"),De=Te.getTicksLen(),Le=Math.min(De,Ee),_e=this.getFromEnv("chart-attrib"),Pe=this.getFromEnv("color-manager"),Oe=Ce.index,Ve=Ce.plotColor=Pe.getPlotColor(Oe),Me=(0,n.pluckNumber)(Ne.dashed,_e.plotborderdashed),Fe=Ae.useplotgradientcolor,Ie=Ae.yaxisname,Be=Ae.xaxisname,Re=(0,n.parseUnsafeString)((0,n.pluck)(_e.tooltipsepchar,": ")),je=this.components.data,Ge=this.getFromEnv("number-formatter"),He=-Infinity,We=+Infinity,ze=this.getFromEnv("BoxAndWhiskerStatisticalCalc");for(this.setState("visible",!(1!==(0,n.pluckNumber)(this.config.JSONData.visible,!Number(this.config.JSONData.initiallyhidden),1))),(0,n.parseConfiguration)(Ne,Ce,Ae,{data:!0}),Ce.defaultPadding={left:.5,right:.5},Ce.seriesname=(0,n.parseUnsafeString)(Ne.seriesname),Ce.includeInLegend=(0,n.pluckNumber)(Ne.includeinlegend,Ce.seriesname?1:0),Ce.legendSymbolColor=Ce.plotColor,t=Ce.showplotborder,p=Ce.plotborderdashlen,h=Ce.plotborderdashgap,v=Ce.plotfillalpha,f=Ce.useroundedges,b=Ce.ratio,d=Ce.plotborderthickness,be=Ce.showvalues=(0,n.pluckNumber)(Ne.showvalues,_e.showvalues,1),o=Ce.showtooltip,Ce.rotatevalues&&(Ce.rotatevalues=270),ye=Ce.showalloutliers,Ce.plotfillAngle=m=(0,n.pluckNumber)(360-_e.plotfillangle,90),Ce.plotColor=Ve=(0,n.pluck)(Ne.color,Ve),Ce.plotRadius=(0,n.pluckNumber)(_e.useroundedges,f?1:0),Ce.plotgradientcolor=y=(0,n.getDefinedColor)(_e.plotgradientcolor,Pe.getColor("plotGradientColor")),!Fe&&(y=n.BLANKSTRING),Ce.plotBorderAlpha=x=t?(0,n.pluck)(_e.plotborderalpha,v,n.HUNDREDSTRING):0,Ce.plotBorderColor=w=(0,n.pluck)(_e.plotbordercolor,Pe.getColor("plotBorderColor")),Ce.plotBorderDashStyle=k=Me?(0,n.getDashStyle)(p,h,d):"none",Ce.showShadow=f?(0,n.pluckNumber)(_e.showshadow,1):(0,n.pluckNumber)(_e.showshadow,Pe.getColor("showShadow")),Ce.showHoverEffect=g=(0,n.pluckNumber)(_e.plothovereffect,_e.showhovereffect,void 0),Ce.parentYAxis=Q=(0,n.pluck)(Ne.parentyaxis&&Ne.parentyaxis.toLowerCase(),A)===T?1:0,Ce.dataSeparator=n.COMMASTRING,Ce.textDirection="1"===_e.hasrtltext?"rtl":n.BLANKSTRING,Ce.showMeanLegend=Ce.showSDLegend=Ce.showMDLegend=Ce.showQDLegend=Ce.showOutliersLegend=0,!this.components.data&&(this.components.data=[]),je=this.components.data,Ce.upperBoxColor=de=(0,n.pluck)(Ne.upperboxcolor,_e.upperboxcolor,Pe.getPlotColor(2*Oe)),fe=Ce.upperBoxAlpha=(0,n.pluck)(Ne.upperboxalpha,_e.upperboxalpha,v,n.HUNDREDSTRING),Ce.lowerBoxColor=ge=(0,n.pluck)(Ne.lowerboxcolor,_e.lowerboxcolor,Pe.getPlotColor(2*Oe+1)),me=Ce.lowerBoxAlpha=(0,n.pluck)(Ne.lowerboxalpha,_e.lowerboxalpha,v,n.HUNDREDSTRING),te=0;te<Le;te++)C=Se&&Se[te],E=(S=je[te])&&S.config,S||(S=je[te]={graphics:{}}),S.config||(E=je[te].config={}),C.value?(C.value&&(ze.setArray(C.value),ae=(oe=ze.getQuartiles()).q1,re=oe.q3,ne=ze.getMinMax(),E.min=ie=ne.min,E.max=le=ne.max,se=ze.getMedian(),E.mean=ce=ze.getMean(),E.md=ue=ze.getMD(),E.sd=pe=ze.getSD(),E.qd=he=ze.getQD()),E.upperQuartile={value:re,color:(0,i.convertColor)((0,n.pluck)(C.upperquartilecolor,Ne.upperquartilecolor,_e.upperquartilecolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),(0,n.pluckNumber)(C.upperquartilealpha,Ne.upperquartilealpha,_e.upperquartilealpha,_e.plotborderalpha,100)),borderWidth:(0,n.pluckNumber)(C.upperquartilethickness,Ne.upperquartilethickness,_e.upperquartilethickness,_e.plotborderthickness,f?0:1),displayValue:Ge.dataLabels(re)},E.lowerQuartile={value:ae,color:(0,i.convertColor)((0,n.pluck)(C.lowerquartilecolor,Ne.lowerquartilecolor,_e.lowerquartilecolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),(0,n.pluckNumber)(C.lowerquartilealpha,Ne.lowerquartilealpha,_e.lowerquartilealpha,_e.plotborderalpha,100)),borderWidth:(0,n.pluckNumber)(C.lowerquartilethickness,Ne.lowerquartilethickness,_e.lowerquartilethickness,_e.plotborderthickness,f?0:1),displayValue:Ge.dataLabels(ae)},E.upperBoxBorder={color:(0,i.convertColor)((0,n.pluck)(C.upperboxbordercolor,Ne.upperboxbordercolor,_e.upperboxbordercolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),(0,n.pluckNumber)(C.upperboxborderalpha,Ne.upperboxborderalpha,_e.upperboxborderalpha,_e.plotborderalpha,100)),borderWidth:(0,n.pluckNumber)(C.upperboxborderthickness,Ne.upperboxborderthickness,_e.upperboxborderthickness,!f&&_e.plotborderthickness,f?0:1)},E.lowerBoxBorder={color:(0,i.convertColor)((0,n.pluck)(C.lowerboxbordercolor,Ne.lowerboxbordercolor,_e.lowerboxbordercolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),(0,n.pluckNumber)(C.lowerboxborderalpha,Ne.lowerboxborderalpha,_e.lowerboxborderalpha,_e.plotborderalpha,100)),borderWidth:(0,n.pluckNumber)(C.lowerboxborderthickness,Ne.lowerboxborderthickness,_e.lowerboxborderthickness,!f&&_e.plotborderthickness,f?0:1)},E.median={value:se,color:(0,i.convertColor)((0,n.pluck)(C.mediancolor,Ne.mediancolor,_e.mediancolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),(0,n.pluckNumber)(C.medianalpha,Ne.medianalpha,_e.medianalpha,_e.plotborderalpha,100)),borderWidth:(0,n.pluckNumber)(C.medianthickness,Ne.medianthickness,_e.medianthickness,_e.plotborderthickness,1),displayValue:Ge.dataLabels(se)},Ce.upperBoxColor=de=(0,n.pluck)(C.upperboxcolor,Ne.upperboxcolor,_e.upperboxcolor,Pe.getPlotColor(2*Oe)),fe=Ce.upperBoxAlpha=(0,n.pluck)(C.upperboxalpha,Ne.upperboxalpha,_e.upperboxalpha,v,n.HUNDREDSTRING),Ce.lowerBoxColor=ge=(0,n.pluck)(C.lowerboxcolor,Ne.lowerboxcolor,_e.lowerboxcolor,Pe.getPlotColor(2*Oe+1)),me=Ce.lowerBoxAlpha=(0,n.pluck)(C.lowerboxalpha,Ne.lowerboxalpha,_e.lowerboxalpha,v,n.HUNDREDSTRING),E.upperColorArr=(0,i.getColumnColor)(de,fe,void 0,void 0,f,w,x.toString(),0,!1),E.lowerColorArr=(0,i.getColumnColor)(ge,me,void 0,void 0,f,w,x.toString(),0,!1),E.showValue=(0,n.pluckNumber)(C.showvalue,be),E.showMinValues=E.showValue?(0,n.pluckNumber)(C.showminvalues,Ce.showminvalues):0,E.showMaxValues=E.showValue?(0,n.pluckNumber)(C.showmaxvalues,Ce.showmaxvalues):0,E.showQ1Values=E.showValue?(0,n.pluckNumber)(C.showq1values,Ce.showq1values):0,E.showQ3Values=E.showValue?(0,n.pluckNumber)(C.showq3values,Ce.showq3values):0,E.showMedianValues=E.showValue?(0,n.pluckNumber)(C.showmedianvalues,Ce.showmedianvalues):0,E.upperWhiskerAlpha=ve=(0,i.getFirstAlpha)((0,n.pluck)(C.upperwhiskeralpha,Ne.upperwhiskeralpha,_e.upperwhiskeralpha,_e.plotborderalpha,100)),E.upperWhiskerColor=(0,i.convertColor)((0,i.getFirstColor)((0,n.pluck)(C.upperwhiskercolor,Ne.upperwhiskercolor,_e.upperwhiskercolor,_e.plotbordercolor,Pe.getColor("plotBorderColor"))),ve),E.upperWhiskerThickness=(0,n.pluckNumber)(C.upperwhiskerthickness,Ne.upperwhiskerthickness,_e.upperwhiskerthickness,_e.plotborderthickness,1),E.upperWhiskerShadowOpacity=Ce.showShadow?ve/100:0,E.lowerWhiskerAlpha=we=(0,i.getFirstAlpha)((0,n.pluck)(C.lowerwhiskeralpha,Ne.lowerwhiskeralpha,_e.lowerwhiskeralpha,_e.plotborderalpha,100)),E.lowerWhiskerColor=(0,i.convertColor)((0,i.getFirstColor)((0,n.pluck)(C.lowerwhiskercolor,Ne.lowerwhiskercolor,_e.lowerwhiskercolor,_e.plotbordercolor,Pe.getColor("plotBorderColor"))),we),E.lowerWhiskerThickness=(0,n.pluckNumber)(C.lowerwhiskerthickness,Ne.lowerwhiskerthickness,_e.lowerwhiskerthickness,_e.plotborderthickness,1),E.lowerWhiskerShadowOpacity=Ce.showShadow?we/100:0,E.setValue=N=Ge.getCleanValue(C.value),E.setLink=(0,n.pluck)(C.link),E.toolTipValue=Y=Ge.dataLabels(N,Q),E.setDisplayValue=X=(0,n.parseUnsafeString)(C.displayvalue),E.displayValue=(0,n.pluck)(X,Y),Z=(0,n.pluckNumber)(C.dashed),$=(0,n.pluckNumber)(C.dashlen,p),ee=h=(0,n.pluckNumber)(C.dashgap,h),He=Math.max(He,le),We=Math.min(We,ie),E.plotBorderDashStyle=1===Z?(0,n.getDashStyle)($,ee,d):0===Z?"none":k,Ve=(0,n.pluck)(C.color,Ce.plotColor),v=(0,n.pluck)(C.alpha,Ce.plotfillalpha),N<0&&!f&&(c=m,m=360-m),E.colorArr=(0,i.getColumnColor)(Ve+n.COMMA+y,v,b,m,f,w,x.toString(),0,!1),E.label=D=(0,n.getValidValue)((0,n.parseUnsafeString)(Te.getLabel((0,n.pluckNumber)(te)).label)),0!==g&&(L=(0,n.pluck)(C.upperboxhovercolor,Ne.upperboxhovercolor,_e.upperboxhovercolor,de),_=(0,n.pluck)(C.upperboxhoveralpha,Ne.upperboxhoveralpha,_e.upperboxhoveralpha,fe),P=(0,n.pluck)(C.upperboxborderhovercolor,Ne.upperboxborderhovercolor,_e.upperboxborderhovercolor,C.upperboxbordercolor,Ne.upperboxbordercolor,_e.upperboxbordercolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),O=(0,n.pluck)(C.upperboxborderhoveralpha,Ne.upperboxborderhoveralpha,_e.upperboxborderhoveralpha,C.upperboxborderalpha,Ne.upperboxborderalpha,_e.upperboxborderalpha,_e.plotborderalpha,100),V=f?0:(0,n.pluck)(C.upperboxborderhoverthickness,Ne.upperboxborderhoverthickness,_e.upperboxborderhoverthickness,E.upperBoxBorder.borderWidth),M=(0,n.pluck)(C.lowerboxhovercolor,Ne.lowerboxhovercolor,_e.lowerboxhovercolor,ge),F=(0,n.pluck)(C.lowerboxhoveralpha,Ne.lowerboxhoveralpha,_e.lowerboxhoveralpha,me),I=(0,n.pluck)(C.lowerboxborderhovercolor,Ne.lowerboxborderhovercolor,_e.lowerboxborderhovercolor,C.lowerboxbordercolor,Ne.lowerboxbordercolor,_e.lowerboxbordercolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),B=(0,n.pluck)(C.lowerboxborderhoveralpha,Ne.lowerboxborderhoveralpha,_e.lowerboxborderhoveralpha,C.lowerboxborderalpha,Ne.lowerboxborderalpha,_e.lowerboxborderalpha,_e.plotborderalpha,100),R=f?0:(0,n.pluck)(C.lowerboxborderhoverthickness,Ne.lowerboxborderhoverthickness,_e.lowerboxborderhoverthickness,E.lowerBoxBorder.borderWidth),j=(0,n.pluck)(C.upperquartilehovercolor,Ne.upperquartilehovercolor,_e.upperquartilehovercolor,C.upperquartilecolor,Ne.upperquartilecolor,_e.upperquartilecolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),G=(0,n.pluck)(C.upperquartilehoveralpha,Ne.upperquartilehoveralpha,_e.upperquartilehoveralpha,C.upperquartilealpha,Ne.upperquartilealpha,_e.upperquartilealpha,_e.plotborderalpha,100),H=(0,n.pluck)(C.upperquartilehoverthickness,Ne.upperquartilehoverthickness,_e.upperquartilehoverthickness,E.upperQuartile.borderWidth),W=(0,n.pluck)(C.lowerquartilehovercolor,Ne.lowerquartilehovercolor,_e.lowerquartilehovercolor,C.lowerquartilecolor,Ne.lowerquartilecolor,_e.lowerquartilecolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),z=(0,n.pluck)(C.lowerquartilehoveralpha,Ne.lowerquartilehoveralpha,_e.lowerquartilehoveralpha,C.lowerquartilealpha,Ne.lowerquartilealpha,_e.lowerquartilealpha,_e.plotborderalpha,100),U=(0,n.pluck)(C.lowerquartilehoverthickness,Ne.lowerquartilehoverthickness,_e.lowerquartilehoverthickness,E.lowerQuartile.borderWidth),J=(0,n.pluck)(C.medianhovercolor,Ne.medianhovercolor,_e.medianhovercolor,C.mediancolor,Ne.mediancolor,_e.mediancolor,_e.plotbordercolor,Pe.getColor("plotBorderColor")),K=(0,n.pluck)(C.medianhoveralpha,Ne.medianhoveralpha,_e.medianhoveralpha,C.medianalpha,Ne.medianalpha,_e.medianalpha,_e.plotborderalpha,100),q=(0,n.pluck)(C.medianhoverthickness,Ne.medianhoverthickness,_e.medianhoverthickness,E.median.borderWidth),1===g&&(de===L&&(L=(0,i.getLightColor)(L,70)),ge===M&&(M=(0,i.getLightColor)(M,70))),E.upperBoxHoverColorArr=(0,i.getColumnColor)(L,_,void 0,void 0,f,w,x.toString(),0,!1),E.lowerBoxHoverColorArr=(0,i.getColumnColor)(M,F,void 0,void 0,f,w,x.toString(),0,!1),E.setUpperBoxRolloutAttr={fill:(0,n.toRaphaelColor)(E.upperColorArr[0])},E.setUpperBoxRolloverAttr={fill:(0,n.toRaphaelColor)(E.upperBoxHoverColorArr[0])},E.setLowerBoxRolloutAttr={fill:(0,n.toRaphaelColor)(E.lowerColorArr[0])},E.setLowerBoxRolloverAttr={fill:(0,n.toRaphaelColor)(E.lowerBoxHoverColorArr[0])},E.setUpperBoxBorderRolloverAttr={stroke:(0,i.convertColor)(P,O),"stroke-width":V},E.setUpperBoxBorderRolloutAttr={stroke:E.upperBoxBorder.color,"stroke-width":E.upperBoxBorder.borderWidth},E.setLowerBoxBorderRolloverAttr={stroke:(0,i.convertColor)(I,B),"stroke-width":R},E.setLowerBoxBorderRolloutAttr={stroke:E.lowerBoxBorder.color,"stroke-width":E.lowerBoxBorder.borderWidth},E.setUpperQuartileRolloverAttr={stroke:(0,i.convertColor)(j,G),"stroke-width":H},E.setUpperQuartileRolloutAttr={stroke:E.upperQuartile.color,"stroke-width":E.upperQuartile.borderWidth},E.setLowerQuartileRolloverAttr={stroke:(0,i.convertColor)(W,z),"stroke-width":U},E.setLowerQuartileRolloutAttr={stroke:E.lowerQuartile.color,"stroke-width":E.lowerQuartile.borderWidth},E.setMedianRolloverAttr={stroke:(0,i.convertColor)(J,K),"stroke-width":q},E.setMedianRolloutAttr={stroke:E.median.color,"stroke-width":E.median.borderWidth}),a=E.toolTipValue,l=(0,n.getValidValue)((0,n.parseUnsafeString)((0,n.pluck)(C.tooltext,Ne.plottooltext,_e.plottooltext))),o?null===a?u=!1:void 0!==l?(s=[1,2,3,4,5,6,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80],r={maxValue:le,maxDataValue:Ge.dataLabels(le),minValue:ie,minDataValue:Ge.dataLabels(ie),Q1:Ge.dataLabels(ae),unformattedQ1:ae,Q3:Ge.dataLabels(re),unformattedQ3:re,median:Ge.dataLabels(se),unformattedMedian:se,SD:Ge.dataLabels(pe),unformattedsd:pe,QD:Ge.dataLabels(he),unformattedQD:he,MD:Ge.dataLabels(ue),unformattedMD:ue,mean:Ge.dataLabels(ce),unformattedMean:ce,label:D,yaxisName:Ie,xaxisName:Be,formattedValue:a,value:D},u=(0,n.parseTooltext)(l,s,r,C,_e,Ne)):u="<b>Maximum"+Re+"</b>"+Ge.dataLabels(le)+"<br /><b>Q3"+Re+"</b>"+Ge.dataLabels(re)+"<br /><b>Median"+Re+"</b>"+Ge.dataLabels(se)+"<br /><b>Q1"+Re+"</b>"+Ge.dataLabels(ae)+"<br /><b>Minimum"+Re+"</b>"+Ge.dataLabels(ie):u=!1,E.toolText=u,E.setTooltext=u,c&&(m=c)):E.setValue=void 0;ye?(ke=this._getOutLiersLimit(),He=Math.max(He,ke.max),We=Math.min(We,ke.min)):(xe=He-We,He+=Ce.outliersupperrangeratio*xe,We-=Ce.outlierslowerrangeratio*xe),Ce.maxValue=He,Ce.minValue=We,this.setState("dirty",!0),this._createSubDS(),Ae.showLegend&&this._addLegend()},t.prototype._createSubDS=function(){var e=this.config.index,t=this.getFromEnv("lineJSON")[e],o=t.length;(0,n.datasetFactory)(this,r["default"],"dataset",o,t,function(e,t){for(var o=[];t;)o.unshift(e+Number("."+t)),t--;return o}(e,o)),o||this.iterateComponents(function(e){"line"===e.getName()&&e.remove()})},t.prototype._getOutLiersLimit=function(){var e,t,o,a,r,n=this.config.index,i=this.getFromEnv("lineJSON")[n],l=i.length,s=-Infinity,c=+Infinity;for(r=0;r<l;r++)if("Outliers"===(e=i[r]).seriesname){for(t=(a=e.data).length,o=0;o<t;o++)s=Math.max(a[o].value,s),c=Math.min(a[o].value,c);return{max:s,min:c}}return{max:s,min:c}},t.prototype.parsePlotAttributes=function(e,t){var o,a,r,i,l,s,c,u,p,h,d,v,w,k,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H,W,z,U,J,K,q,Y,X,Q,Z,$,ee,te,oe,ae,re,ne,ie,le,se,ce,ue,pe,he=this.config.JSONData,de=this.config,fe=de.index,ge=t,me=this.getState("visible"),ve=this.getFromEnv("chart"),be=this.getFromEnv("chartConfig"),ye=this.getFromEnv("xAxis"),xe=this.getFromEnv("yAxis"),we=this.components.data,ke=be.dataLabelStyle,Ce=de.rotatevalues,Ne=de.valuepadding,Se=this.getFromEnv("number-formatter"),Ee=Ce?n.POSITION_LEFT:n.POSITION_MIDDLE,Ae=this.getFromEnv("smartLabel"),Te=+Infinity;r=this.getFromEnv("columnXShift"),a=this.getFromEnv("columnWidth"),s=(c=e&&e.config)&&c.setValue,void 0!==e&&void 0!==s&&null!==s&&(I=e.graphics,l=c.setLink,e.graphics||(we[ge].graphics={}),I.label||(we[ge].graphics.label=[]),o=ye.getPixel(ge)+r,h=((p=(u=c.upperQuartile||{})&&u.value)||0===p)&&xe.getPixel(p),w=((v=(d=c.lowerQuartile||{})&&d.value)||0===v)&&xe.getPixel(v),D=(T=((A=(k=c.median)&&k.value)||0===A)&&xe.getPixel(A))-h,L=w-T,_=c.upperBoxBorder||{},P=c.lowerBoxBorder||{},i=c.toolText,c.eventArgs={index:ge,link:l,maximum:c.max,minimum:c.min,median:A,q3:u.value,q1:d.value,maxDisplayValue:c.showMaxValues?Se.dataLabels(c.max):n.BLANKSTRING,minDisplayValue:c.showMinValues?Se.dataLabels(c.min):n.BLANKSTRING,medianDisplayValue:c.showMedianValues?Se.dataLabels(A):n.BLANKSTRING,q1DisplayValue:c.showQ1Values?Se.dataLabels(d.value):n.BLANKSTRING,q3DisplayValue:c.showQ3Values?Se.dataLabels(u.value):n.BLANKSTRING,categoryLabel:c.label,toolText:i,datasetIndex:fe,datasetName:he.seriesname,visible:me},O=Math.round(o)+_.borderWidth%2*.5,V=Math.round(o+a)+_.borderWidth%2*.5,M=Math.round(h)+u.borderWidth%2*.5,a=V-O,F={upperBox:{fill:(0,n.toRaphaelColor)(c.upperColorArr[0]),"stroke-width":0,"stroke-dasharray":"none",cursor:l?f:n.BLANKSTRING,visibility:me},lowerBox:{fill:(0,n.toRaphaelColor)(c.lowerColorArr[0]),"stroke-width":0,"stroke-dasharray":"none",cursor:l?f:g,visibility:me},upperBoxBorder:{stroke:_.color,"stroke-width":_.borderWidth,"stroke-linecap":m,dashstyle:_.dashStyle,visibility:me},lowerBoxBorder:{stroke:P.color,"stroke-width":P.borderWidth,dashstyle:P.dashStyle,"stroke-linecap":m,visibility:me},upperQuartile:{stroke:(0,n.toRaphaelColor)(u.color),"stroke-width":u.borderWidth,"stroke-dasharray":u.dashSyle,"stroke-linecap":m,cursor:l?f:g,visibility:me},lowerQuartile:{stroke:(0,n.toRaphaelColor)(d.color),"stroke-width":d.borderWidth,"stroke-dasharray":d.dashSyle,cursor:l?f:n.BLANKSTRING,"stroke-linecap":m,visibility:me},median:{stroke:(0,n.toRaphaelColor)(k.color),"stroke-width":k.borderWidth,"stroke-dasharray":k.dashSyle,cursor:l?f:n.BLANKSTRING,"stroke-linecap":m,visibility:me}},se=M,ee=Object.assign({x:O,y:M,width:Math.max(a,0),height:Math.max(Math.min(Te,D),0),r:0},F.upperBox),$=Object.assign({path:[N,O,M,E,M+D,N,V,M,E,M+D]},F.upperBoxBorder),te=Object.assign({path:[N,O,M,S,O+a]},F.upperQuartile),B=M,R=a*(de.whiskerslimitswidthratio/100)/2,H=j=xe.getPixel(c.max),G=O,H=Math.round(j)+c.upperWhiskerThickness%2/2,O=Math.round(O+a/2)+c.upperWhiskerThickness%2/2,oe={path:W=[N,O,B,E,Math.min(H,se),N,O-R,Math.min(H,se),S,O+R],"stroke-width":c.upperWhiskerThickness,cursor:l?f:n.BLANKSTRING,"stroke-linecap":m,stroke:c.upperWhiskerColor},Ae.useEllipsesOnOverflow(ve.config.useEllipsesWhenOverflow),Ae.setStyle(ke),z=Ae.getOriSize(Se.dataLabels(c.max)),U=Ce?z.width:z.height,(K=j-.5*c.upperWhiskerThickness-Ne-U*(Ce?.5:1))-(Ce?U/2:0)<be.canvasTop&&(K=be.canvasTop+(Ce?U/2:0)),ae={text:Se.dataLabels(c.max),x:G+a/2,title:u.originalText||n.BLANKSTRING,y:K,"text-anchor":Ce?n.POSITION_MIDDLE:Ee,"vertical-align":Ce?n.POSITION_MIDDLE:x,visibility:n.visibleStr,direction:de.textDirection,fill:ke.color,transform:(0,n.getSuggestiveRotation)(Ce,G+a/2,K),"text-bound":[ke.backgroundColor,ke.borderColor,ke.borderThickness,ke.borderPadding,ke.borderRadius,ke.borderDash]},O=Math.round(o)+P.borderWidth%2*.5,V=Math.round(o+a)+P.borderWidth%2*.5,M=Math.round(T+L)+d.borderWidth%2*.5,pe=(ce=T)+(ue=Math.max(Math.min(Te,M-T),0)),Y=Object.assign({x:O,y:ce,width:Math.max(a,0),height:ue,r:0},F.lowerBox),q=Object.assign({path:[N,O,T,E,T+L,N,V,T,E,T+L]},F.lowerBoxBorder),M=Math.round(T+L)+d.borderWidth%2*.5,X=Object.assign({path:[N,O,M,S,O+a]},F.lowerQuartile),B=M,R=a*(de.whiskerslimitswidthratio/100)/2,H=j=xe.getPixel(c.min),G=O,H=Math.round(j)+c.lowerWhiskerThickness%2/2,G=Math.round(G+a/2)+c.lowerWhiskerThickness%2/2,W=[N,G,B,E,Math.max(H,pe),N,G-R,Math.max(H,pe),S,G+R],Ae.setStyle(ke),z=Ae.getOriSize(Se.dataLabels(c.min)),U=Ce?z.width:z.height,(J=j+.5*c.lowerWhiskerThickness+Ne)+U>be.canvasBottom&&(J=be.canvasBottom-U),re={text:Se.dataLabels(c.min),x:G,title:u.originalText||n.BLANKSTRING,y:J,"text-anchor":Ce?C:Ee,"vertical-align":Ce?n.POSITION_MIDDLE:x,visibility:n.visibleStr,direction:de.textDirection,fill:ke.color,transform:(0,n.getSuggestiveRotation)(Ce,G,J),"text-bound":[ke.backgroundColor,ke.borderColor,ke.borderThickness,ke.borderPadding,ke.borderRadius,ke.borderDash]},Q={path:W,"stroke-width":c.lowerWhiskerThickness,cursor:l?f:n.BLANKSTRING,"stroke-linecap":m,stroke:c.lowerWhiskerColor},M=Math.round(T)+k.borderWidth%2*.5,Z=Object.assign({path:[N,O,M,S,O+a]},F.median),Ee=Ce?n.POSITION_LEFT:n.POSITION_MIDDLE,ne={text:u.displayValue,x:o+a/2,title:u.originalText||n.BLANKSTRING,y:h-Ne,"text-anchor":Ce?b:Ee,"vertical-align":Ce?n.POSITION_MIDDLE:y,visibility:n.visibleStr,direction:de.textDirection,fill:ke.color,transform:(0,n.getSuggestiveRotation)(Ce,o+a/2,h-Ne),"text-bound":[ke.backgroundColor,ke.borderColor,ke.borderThickness,ke.borderPadding,ke.borderRadius,ke.borderDash]},le={text:k.displayValue,x:O+a/2,y:T-Ne,title:k.originalText||n.BLANKSTRING,"text-anchor":Ce?b:Ee,"vertical-align":Ce?n.POSITION_MIDDLE:y,visibility:n.visibleStr,direction:de.textDirection,fill:ke.color,transform:(0,n.getSuggestiveRotation)(Ce,O+a/2,T-Ne),"text-bound":[ke.backgroundColor,ke.borderColor,ke.borderThickness,ke.borderPadding,ke.borderRadius,ke.borderDash]},ie={text:d.displayValue,x:o+a/2,y:w+Ne,title:d.originalText||n.BLANKSTRING,"text-anchor":Ce?b:Ee,"vertical-align":Ce?n.POSITION_MIDDLE:x,visibility:n.visibleStr,direction:de.textDirection,fill:ke.color,transform:(0,n.getSuggestiveRotation)(Ce,o+a/2,w+Ne),"text-bound":[ke.backgroundColor,ke.borderColor,ke.borderThickness,ke.borderPadding,ke.borderRadius,ke.borderDash]},c.props={lowerBoxBorderEle:{attr:q},lowerBoxElem:{attr:Y},lowerQuartileEle:{attr:X},lowerWhiskerEle:{attr:Q},midLineElem:{attr:Z},upperBoxElem:{attr:ee},upperBoxBorderEle:{attr:$},upperQuartileEle:{attr:te},upperWhiskerEle:{attr:oe},upperQuartileMaxLabel:{attr:ae},upperQuartileMinLabel:{attr:re},medianLabel:{attr:le},upperQuartileLabel:{attr:ne},lowerQuartileLabel:{attr:ie}})},t.prototype.allocatePosition=function(){var e,t,o,a=this.config.JSONData.data,r=a&&a.length,n=this.getFromEnv("xAxis").getTicksLen(),i=this.components.data;for(o=Math.min(n,r),this.setColumnPosition(),t=0;t<o;t++)e=i[t],this.parsePlotAttributes(e,t)},t.prototype.drawPlots=function(){var e,t,o,a,r,i,l,s,c,u,p,f,m,b,y,x,C,N,S,E,A,T,D,_,P,O,V,M,F,I,B,R,j,G,H,W,z,U,J,K,q,Y,X,Q,Z,$,ee,te,oe=this,ae=oe.config.JSONData,re=oe.config,ne=re.index,ie=ae.data,le=ie&&ie.length,se=oe.getState("visible"),ce=oe.getFromEnv("chart"),ue=oe.getFromEnv("xAxis").getTicksLen(),pe=re.showtooltip,he=oe.getFromEnv("toolTipController"),de=oe.components.data,fe=re.showShadow,ge=oe.getContainer("upperBoxGroup").toBack(),me=oe.getContainer("lowerBoxGroup"),ve=oe.getContainer("medianGroup"),be=oe.getContainer("upperWhiskerGroup"),ye=oe.getContainer("lowerWhiskerGroup"),xe=oe.getContainer("labelGroup"),we=oe.getContainer("shadowGroup"),ke=oe.getFromEnv("smartLabel"),Ce=(oe.components.removeDataArr||[]).length,Ne=re.showHoverEffect,Se=oe.getFromEnv("animationManager"),Ee=function(e){return function(t){ce.plotEventHandler(e,t)}},Ae=function(e,t){return function(o){var a;if(0!==t.data(w))for(a in e)a!==h&&(Se.setAnimation({el:e[a],doNotRemove:!0,attr:t.data("setRolloverAttr")[a],component:oe}),ce.plotEventHandler(t,o,"DataPlotRollOver"))}},Te=function(e,t){return function(o){var a;if(0!==t.data(w))for(a in e)a!==h&&(Se.setAnimation({el:e[a],doNotRemove:!0,attr:t.data("setRolloutAttr")[a],component:oe}),ce.plotEventHandler(t,o,"DataPlotRollOut"))}};for(s=function(e){return function(){this.show(),this.shadow(e)}},oe.setColumnPosition(),se?(ge.show(),me.show(),be.show(),ye.show(),ve.show(),we.show(),xe.show(),oe._conatinerHidden=!1):(xe.hide(),be.hide(),ge.hide(),ye.hide(),me.hide(),ve.hide(),we.hide()),e=Math.min(ue,le),t=0;t<e;t++)if(r=(i=(a=de[t])&&a.config)&&i.setValue,H=!1,W=!1,z=!1,U=!1,J=!1,K=!1,q=!1,Y=!1,X=!1,void 0!==a&&void 0!==r&&null!==r)V=a.graphics,a.graphics||(de[t].graphics={}),V.label||(de[t].graphics.label=[]),l=i.upperQuartile||{},c=i.lowerQuartile||{},u=i.median,o=i.toolText,M=ne+d+t,f=a.graphics.upperBoxElem,p=Se.setAnimation({el:f||"rect",attr:i.props.upperBoxElem.attr,label:"upperBox",container:ge,component:oe}),f||(a.graphics.upperBoxElem=p,H=!0),p.shadow({opacity:fe?re.upperBoxAlpha/100:0},we),b=a.graphics.upperBoxBorderEle,m=Se.setAnimation({el:b||"path",attr:i.props.upperBoxBorderEle.attr,container:ge,label:"path",component:oe}),b||(a.graphics.upperBoxBorderEle=m,z=!0),x=a.graphics.upperQuartileEle,y=Se.setAnimation({el:x||"path",attr:i.props.upperQuartileEle.attr,label:"path",container:ge,component:oe}),x||(a.graphics.upperQuartileEle=y,J=!0),I=a.graphics.upperWhiskerEle,F=Se.setAnimation({el:I||"path",attr:i.props.upperWhiskerEle.attr,label:"path",container:be,component:oe}),s({opacity:i.upperWhiskerShadowOpacity}),I||(a.graphics.upperWhiskerEle=F,Y=!0),ke.useEllipsesOnOverflow(ce.config.useEllipsesWhenOverflow),i.showMaxValues?((O=V.label[3])&&O.show(),P=Se.setAnimation({el:O||"text",attr:i.props.upperQuartileMaxLabel.attr,component:oe,label:"text",container:xe}),O||(V.label[3]=P),V.label[3].data(v,M)):V.label[3]&&Se.setAnimation({el:V.label[3],component:oe,attr:{"text-bound":[]},callback:L.call(V.label[3])}),N=a.graphics.lowerBoxElem,C=Se.setAnimation({el:N||"rect",attr:i.props.lowerBoxElem.attr,label:"lowerBox",container:me,component:oe}),N||(a.graphics.lowerBoxElem=C,W=!0),C.shadow({opacity:fe?re.lowerBoxAlpha/100:0},we),E=a.graphics.lowerBoxBorderEle,S=Se.setAnimation({el:E||"path",attr:i.props.lowerBoxBorderEle.attr,component:oe,label:"path",container:me}),E||(a.graphics.lowerBoxBorderEle=S,U=!0),T=a.graphics.lowerQuartileEle,A=Se.setAnimation({el:T||"path",attr:i.props.lowerQuartileEle.attr,component:oe,label:"path",container:me}),T||(a.graphics.lowerQuartileEle=A,K=!0),B=a.graphics.lowerWhiskerEle,i.showMinValues?((O=V.label[4])&&O.show(),P=Se.setAnimation({el:O||"text",attr:i.props.upperQuartileMinLabel.attr,label:"text",container:xe,component:oe}),O||(V.label[4]=P),V.label[4].data(v,M)):V.label[4]&&Se.setAnimation({el:V.label[4],component:oe,attr:{"text-bound":[]},callback:L.call(V.label[4])}),R=a.graphics.lowerWhiskerEle,B=Se.setAnimation({el:R||"path",attr:i.props.lowerWhiskerEle.attr,label:"path",container:ye,component:oe}),s({opacity:i.lowerWhiskerShadowOpacity}),R||(a.graphics.lowerWhiskerEle=B,X=!0),_=a.graphics.midLineElem,D=Se.setAnimation({el:_||"path",component:oe,label:"midline",container:ve,attr:i.props.midLineElem.attr}),_||(a.graphics.midLineElem=D,q=!0),Q={upperBoxElem:i.setUpperBoxRolloverAttr,lowerBoxElem:i.setLowerBoxRolloverAttr,upperBoxBorderEle:i.setUpperBoxBorderRolloverAttr,lowerBoxBorderEle:i.setLowerBoxBorderRolloverAttr,upperQuartileEle:i.setUpperQuartileRolloverAttr,lowerQuartileEle:i.setLowerQuartileRolloverAttr,midLineElem:i.setMedianRolloverAttr},Z={upperBoxElem:i.setUpperBoxRolloutAttr,lowerBoxElem:i.setLowerBoxRolloutAttr,upperBoxBorderEle:i.setUpperBoxBorderRolloutAttr,lowerBoxBorderEle:i.setLowerBoxBorderRolloutAttr,upperQuartileEle:i.setUpperQuartileRolloutAttr,lowerQuartileEle:i.setLowerQuartileRolloutAttr,midLineElem:i.setMedianRolloutAttr},p.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),H&&(p.on("fc-click",Ee(p)),p.on("fc-mouseover",Ae(a.graphics,p)),p.on("fc-mouseout",Te(a.graphics,p))),C.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),W&&(C.on("fc-click",Ee(C)),C.on("fc-mouseover",Ae(a.graphics,C)),C.on("fc-mouseout",Te(a.graphics,C))),m.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),z&&(m.on("fc-click",Ee(m)),m.on("fc-mouseover",Ae(a.graphics,m)),m.on("fc-mouseout",Te(a.graphics,m))),S.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),U&&(S.on("fc-click",Ee(S)),S.on("fc-mouseover",Ae(a.graphics,S)),S.on("fc-mouseout",Te(a.graphics,S))),y.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),J&&(y.on("fc-click",Ee(y)),y.on("fc-mouseover",Ae(a.graphics,y)),y.on("fc-mouseout",Te(a.graphics,y))),A.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),K&&(A.on("fc-click",Ee(A)),A.on("fc-mouseover",Ae(a.graphics,A)),A.on("fc-mouseout",Te(a.graphics,A))),D.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),q&&(D.on("fc-click",Ee(D)),D.on("fc-mouseover",Ae(a.graphics,D)),D.on("fc-mouseout",Te(a.graphics,D))),F.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),Y&&(F.on("fc-click",Ee(F)),F.on("fc-mouseover",Ae(a.graphics,F)),F.on("fc-mouseout",Te(a.graphics,F))),B.data(v,M).data(k,i.eventArgs).data(w,Ne).data("setRolloverAttr",Q).data("setRolloutAttr",Z),X&&(B.on("fc-click",Ee(B)),B.on("fc-mouseover",Ae(a.graphics,B)),B.on("fc-mouseout",Te(a.graphics,B))),(0,n.defined)(l.displayValue)&&l.displayValue!==g&&i.showQ3Values?((O=V.label[0])&&O.show(),P=Se.setAnimation({el:O||"text",attr:i.props.upperQuartileLabel.attr,component:oe,label:"text",container:xe}),O||(V.label[0]=P),V.label[0].data(v,M)):V.label[0]&&Se.setAnimation({el:V.label[0],component:oe,attr:{"text-bound":[]},callback:L.call(V.label[0])}),(0,n.defined)(u.displayValue)&&u.displayValue!==g&&i.showMedianValues?((O=V.label[1])&&O.show(),P=Se.setAnimation({el:O||"text",attr:i.props.medianLabel.attr,component:oe,label:"text",container:xe}),O||(V.label[1]=P),V.label[1].data(v,M)):V.label[1]&&Se.setAnimation({el:V.label[1],component:oe,attr:{"text-bound":[]},callback:L.call(V.label[1])}),(0,n.defined)(c.displayValue)&&c.displayValue!==g&&i.showQ1Values?(O=V.label[2],P=Se.setAnimation({el:O||"text",component:oe,attr:i.props.lowerQuartileLabel.attr,container:xe}),O||(V.label[2]=P,P.show()),V.label[2].data(v,M)):V.label[2]&&Se.setAnimation({el:V.label[2],component:oe,attr:{"text-bound":[]},callback:L.call(V.label[2])}),pe?(he.enableToolTip(p,o),he.enableToolTip(C,o),he.enableToolTip(m,o),he.enableToolTip(S,o),he.enableToolTip(y,o),he.enableToolTip(A,o),he.enableToolTip(D,o),he.enableToolTip(F,o),he.enableToolTip(B,o)):(he.enableToolTip(p,!1),he.enableToolTip(C,!1),he.enableToolTip(m,!1),he.enableToolTip(S,!1),he.enableToolTip(y,!1),he.enableToolTip(A,!1),he.enableToolTip(D,!1),he.enableToolTip(F,!1),he.enableToolTip(B,!1));else for(j in G=a.graphics)if(G[j]instanceof Array)for($=0,te=(ee=G[j]).length;$<te;$++)ee[$]&&ee[$].hide();else G[j].hide();!1!==oe.getState("visible")||!1!==oe._conatinerHidden&&void 0!==oe._conatinerHidden||(ge.hide(),me.hide(),be.hide(),ye.hide(),ve.hide(),we.hide(),xe&&xe.hide(),oe._conatinerHidden=!0),Ce&&oe.removePlots()},t.prototype.removePlots=function(){var e,t,o,a,r,n,i=this.components.removeDataArr,l=this.getFromEnv("animationManager"),s=i.length;for(a=0;a<s;a++)if(e=i[0],i.splice(0,1),e&&e.graphics)for(t in o=e.graphics)if(t!==h)o[t].shadow({opacity:0}),o[t].hide();else for(r=o[t].length,n=0;n<r;n++)o[t][n]&&(o[t][n].shadow({opacity:0}),l.setAnimation({el:o[t][n],component:this,attr:{"text-bound":[]},callback:L.call(o[t][n])}))},t.prototype.removeData=function(e,t,o){var a=this.components,r=a.data,n=a.removeDataArr||(a.removeDataArr=[]);t=t||1,(e=e||0)+t===r.length?this.endPosition=!0:0!==e&&void 0!==e||(this.endPosition=!1),a.removeDataArr=n=n.concat(r.splice(e,t)),o&&this.asyncDraw()},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.showplotborder=void 0,t.plotborderdashlen=void 0,t.plotborderdashgap=void 0,t.plotfillalpha=void 0,t.useroundedges=void 0,t.ratio=void 0,t.plotborderthickness=void 0,t.showvalues=void 0,t.valuepadding=void 0,t.showtooltip=void 0,t.maxcolwidth=void 0,t.rotatevalues=void 0,t.use3dlighting=void 0,t.whiskerslimitswidthratio=void 0,t.outliersupperrangeratio=void 0,t.outlierslowerrangeratio=void 0,t.showalloutliers=void 0,t.showmean=void 0,t.showsd=void 0,t.showmd=void 0,t.showqd=void 0,t.showminvalues=void 0,t.showmaxvalues=void 0,t.showq1values=void 0,t.showq3values=void 0,t.showmedianvalues=void 0},t.prototype.getDataLimits=function(){var e=this.config,t=this.getState("removed");return{max:t?-Infinity:e.maxValue,min:t?+Infinity:e.minValue}},t.prototype._addLegend=function(){var e,t,o,a,r=this.config,i=this.getFromEnv("legend"),l=r.upperBoxColor,s=r.lowerBoxColor;e=p,t={FCcolor:{color:l+n.COMMA+s,angle:90,ratio:"50, 0",alpha:"100, 100"}},o={label:(0,n.getFirstValue)(this.config.JSONData.seriesname),index:this.getJSONIndex(),mainDS:!0},r.includeInLegend?((a=i.getItem(this.config.legendItemId))||(this.config.legendItemId=i.createItem(this),a=i.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){a.itemClickFn()},a)),a.configure(o),a.setStateCosmetics("default",{symbol:{fill:(0,n.toRaphaelColor)(t),rawFillColor:r.upperBoxColor,stroke:(0,n.toRaphaelColor)(e)},background:{legendBackgroundColor:(0,n.toRaphaelColor)(l),alpha:20}}),this.getState("visible")?a.removeLegendState("hidden"):a.setLegendState("hidden")):this.config.legendItemId&&i.disposeItem(this.config.legendItemId),this._mapChildren(function(e){e.getState("removed")||(e.addToEnv("legendBackgroundColor",l),e&&e._addLegend(!0))})},t.prototype.legendInteractivity=function(){var e,t,o=this.getChildren("dataset");for(e=this.getState("visible")?"hide":"show",t=0;t<(o&&o.length);t++)o[t][e]();this[e]()},t.prototype.drawLabel=function(){return this},t.prototype.getName=function(){return"boxandwhisker2D"},t.prototype.childChanged=function(){return this},t.prototype.show=function(){e.prototype.show.call(this)},t.prototype.hide=function(){e.prototype.hide.call(this)},t}(a["default"]);t["default"]=_},568:function(e,t,o){"use strict";t.__esModule=!0;var a=l(o(346)),r=o(118),n=o(125),i=l(o(569));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var c=r.preDefStr.POLYGON,u=r.preDefStr.SPOKE,p=function(e,t,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:e,container:t,component:o,label:"group"})};(0,n.addDep)({name:"boxandwhiskerlineAnimation",type:"animationRule",extension:i["default"]});var h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getName=function(){return"boxandwhiskerline"},t.prototype.createCoordinates=function(){var e,t,o,a,r,n=this.components.data,i=this.getFromEnv("yAxis"),l=this.getFromEnv("xAxis"),s=n.length,c=this.components.data,u=this.getFromEnv("columnXShift"),p=this.getFromEnv("columnWidth");for(o=0;o<s;o++)t=(e=c[o])&&e.config,void 0!==e&&(a=l.getPixel(t._x),r=i.getPixel(t._y),t._Px=a+u+p/2,t._Py=r)},t.prototype.getAllPlots=function(e,t){var o,a=this.components.data,r=[],n=void 0;for(n=0,o=a.length;n<o;n++)(a[n].config._x>=e||a[n].config._x<=t)&&r.push(a[n]);return r},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.components.data;e.scrollMinVal=0,e.scrollMaxVal=t.length,e.scrollMinValForLabel=e.scrollMinVal,e.scrollMaxValForLabel=e.scrollMaxVal},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i,l,s=this.getFromEnv("xAxis"),c=this.components.data.length,u=this.config,p=u&&u.radius||0;for(e+=s.getTranslation(),a=Math.floor(Math.max(s.getValue(e-p),0)),r=Math.ceil(Math.min(s.getValue(e+p),c-1)),i=(l=this.getAllPlots(a,r)).length;i>=0&&(!(o=l[i])||!(n=this.isWithinShape(o,i,e,t)));i--);return n},t.prototype._addLegend=function(e){if(e){var t,o,a=this.getFromEnv("chart"),n=this.config,i=a.getChildren("legend")[0],l=(0,r.pluckNumber)(n.drawanchors,1);n.includeinlegend?(o={anchorSide:l?n.anchorsides:0,label:(0,r.getFirstValue)(n.JSONData.seriesname),customLegendIcon:!1,spoke:"spoke"===n.dip?1:0,drawLine:!n.showline,index:this.getJSONIndex()},(t=i.getItem(this.config.legendItemId))||(this.config.legendItemId=i.createItem(this),t=i.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){t.itemClickFn()},t)),t.configure(o),t.setStateCosmetics("default",{symbol:{fill:(0,r.toRaphaelColor)({color:n.anchorbgcolor,alpha:n.anchorbgalpha}),rawFillColor:n.anchorbgcolor,stroke:(0,r.toRaphaelColor)({color:n.anchorbordercolor,alpha:"100"})},background:{legendBackgroundColor:(0,r.toRaphaelColor)(this.getFromEnv("legendBackgroundColor")),alpha:20}}),this.getState("visible")?t.removeLegendState("hidden"):t.setLegendState("hidden")):this.config.legendItemId&&i.disposeItem(this.config.legendItemId)}},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t);var o=this.config.JSONData,a=this.config;this.setState("visible",this.getLinkedParent().getState("visible")),a.skipCommonElements=o.showline,a.dip=o.dip},t.prototype.createContainer=function(){var e,t,o=this.getType(),a=this.groupName,r=this.getLinkedParent().getLinkedParent(),n=a||this.dsGroup||o;!r.getChildContainer(n+"VcanvasGroup")&&(n="default"),e=r.getChildContainer("manager-defaultVcanvasGroup-lines"),t=r.getChildContainer(n+"ShadowVcanvasGroup"),!this.getContainer("shadowGroup")&&this.addContainer("shadowGroup",p({name:"shadow-group"},t,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("commonElemsGroup",p({name:"common-elems-group"},e,this)),!this.getContainer("plotGroup")&&this.addContainer("plotGroup",p({name:"common-elems-group"},e,this)),!this.getContainer("labelGroup")&&this.addContainer("labelGroup",p({name:"label-group","class":"fusioncharts-datalabels",opacity:1},r.getChildContainer("vcanvasLabelGroup"),this))},t.prototype._setConfigure=function(e,t){var o,a,n,i,l,s,p,h,d=this.getFromEnv("chart"),f=this.config,g=d.config,m=this.config.JSONData,v=e||m.data||[],b=this.getFromEnv("xAxis").getTicksLen(),y=e&&e.data.length,x="Outliers"===m.seriesname?v.length:y||Math.min(b,v.length);for(f.imageCount=0,(n=this.components.data)||(n=this.components.data=[]),f.maxRadius=-Infinity,i=0;i<x;i++)e?(o=e&&e.data[i]||{},a=void 0!==t?n[h=t+i]:n[h=n.length-x+i],l=h):(a=n[i],o=v&&v[i]||{},l=i),a||(a=n[l]={}),a.config||(a.config={}),a.graphics||(a.graphics={}),this._plotConfigure(l,o,y),h&&h++,s=a&&a.config,p=(0,r.pluck)(o.dip,m.dip),s.dip=p===c?0:p===u?1:0,s.toolText=s.finalTooltext="<b>"+m.seriesname+g.tooltipsepchar+"</b>"+s.displayValue},t}(a["default"]);t["default"]=h},569:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.boxandwhiskerline":function(){return{"line.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot",startEnd:{start:.5,end:1}}],"anchor.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot",startEnd:{start:.5,end:1}}]}}}},570:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.boxandwhisker2D":function(){return{"upperBox.appearing":function(e){return[{initialAttr:{x:e.attr.x,y:e.attr.y+e.attr.height,height:0,width:e.attr.width},slot:"plot",startEnd:{start:0,end:.5}}]},"lowerBox.appearing":function(e){return[{initialAttr:{x:e.attr.x,y:e.attr.y,height:0,width:e.attr.width},slot:"plot",startEnd:{start:0,end:.5}}]},"path.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot",startEnd:{start:.5,end:1}}],"midline.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot",startEnd:{start:0,end:.2}}],"group.appearing":function(e){return"label-group"===e.attr.name?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:[{initialAttr:{opacity:1},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},571:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(402);function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var i="manager-defaultVcanvasGroup-lines",l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return n(t,e),t.prototype.createContainer=function(){e.prototype.createContainer.call(this);var t=this.getFromEnv("animationManager"),o=this.getLinkedParent().getChildContainer("defaultVcanvasGroup");!this.getChildContainer(i)&&this.addChildContainer(i,t.setAnimation({el:"group",component:this,attr:{name:i},container:o}))},t}(((a=r)&&a.__esModule?a:{"default":a})["default"]);t["default"]=l},572:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o,a,n=e.getFromEnv("dataSource").dataset,l=void 0,s=l=e.getChildren().canvas[0].getChildren("vCanvas")[0],c=e.config.defaultDatasetType||"";n||e.setChartMessage(),t=e.getDSGroupdef(),(0,r.componentFactory)(l,t,"datasetGroup_"+c),(a=l.getChildren("datasetGroup_"+c))&&(s=a[0]),o=e.getDSdef(),(0,r.componentFactory)(e,i["default"],"BoxAndWhiskerStatisticalCalc"),l.getChildren("datasetGroup_"+c)[0].addToEnv("BoxAndWhiskerStatisticalCalc",e.getChildren("BoxAndWhiskerStatisticalCalc")[0]),s.addToEnv("lineJSON",e._getLineJSONdata()),(0,r.datasetFactory)(s,o,"dataset",n.length,n)};var a,r=o(118),n=o(573),i=(a=n)&&a.__esModule?a:{"default":a}},573:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(131),n=(a=r)&&a.__esModule?a:{"default":a},i=o(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.setArray=function(e){var t,o,a=this.getFromEnv("number-formatter"),r=i.COMMASTRING,n=0;for(!e&&(e=i.BLANK),o=e.replace(/\s/g,i.BLANK).split(r),t=this.dataLength=o&&o.length;t--;)n+=o[t]=a.getCleanValue(o[t]);o&&o.sort(function(e,t){return e-t}),this.values=o,this.mean=n/this.dataLength,this.getFrequencies()},t.prototype.getQuartiles=function(){var e,t,o,a,r,n,l=this.values,s=this.dataLength,c=s%2;switch(i.BLANKSTRING){case"tukey":c?(e=(s+3)/4,o=(3*s+1)/4):(e=(s+2)/4,o=(3*s+2)/4);break;case"mooremccabe":c?o=3*(e=(s+1)/4):(e=(s+2)/4,o=(3*s+2)/4);break;case"freundperles":e=(s+3)/4,o=(3*s+1)/4;break;case"mendenhallsincich":e=Math.round((s+1)/4),o=Math.round(3*e);break;default:o=3*(e=(s+1)/4)}return e-=1,o-=1,t=Math.floor(e),a=Math.floor(o),r=e-t?l[t]+(l[Math.ceil(e)]-l[t])*(e-t):l[e],n=o-a?l[a]+(l[Math.ceil(o)]-l[a])*(o-a):l[o],this.quartiles={q1:r,q3:n}},t.prototype.getMinMax=function(){var e=this.values;return{min:e[0],max:e[this.dataLength-1]}},t.prototype.getMean=function(){return this.mean},t.prototype.getMD=function(){for(var e,t=this.mean,o=this.frequencies,a=o.length,r=0;a--;)r+=(e=o[a]).frequency*Math.abs(e.value-t);return r/this.dataLength},t.prototype.getSD=function(){for(var e=this.mean,t=this.values,o=this.dataLength,a=o,r=0;o--;)r+=Math.pow(t[o]-e,2);return Math.sqrt(r/(a-1))},t.prototype.getQD=function(){return.5*(this.quartiles.q3-this.quartiles.q1)},t.prototype.getFrequencies=function(){var e,t,o,a=[],r=this.dataLength,n=this.values,l=0;for(o=0;o<r;o+=1)l+=e=n[o],(0,i.defined)(a[o])?a[o].frequency+=1:((t={}).value=e,t.frequency=1,a[o]=t);this.sum=l,this.frequencies=a},t.prototype.getMedian=function(){var e=this.dataLength,t=.5*e,o=this.values;return e%2==0?(o[t]+o[t-1])/2:o[Math.floor(t)]},t}(n["default"]);t["default"]=s},574:function(e,t,o){"use strict";t.__esModule=!0;var a=h(o(354)),r=h(o(575)),n=h(o(577)),i=h(o(578)),l=h(o(356)),s=h(o(579)),c=h(o(584)),u=o(118),p=o(122);function h(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var f=u.preDefStr.defaultFontStr,g=u.preDefStr.divLineAlpha3DStr,m=u.preDefStr.divLineAlphaStr,v=u.preDefStr.altVGridColorStr,b=u.preDefStr.altVGridAlphaStr,y=u.preDefStr.altHGridColorStr,x=u.preDefStr.altHGridAlphaStr,w=u.preDefStr.colors.c000000,k=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.tooltipsepchar=" = ",o.hasGradientLegend=!0,o.registerFactory("axis",i["default"],["canvas"]),o.registerFactory("legend",c["default"],["canvas"]),o.registerFactory("colormanager-decider",s["default"],["legend"]),o.registerFactory("dataset",l["default"],["colormanager-decider","vCanvas"]),o}return d(t,e),t.getName=function(){return"HeatMap"},t.prototype.getName=function(){return"HeatMap"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.isSingleSeries=!0,t.friendlyName="Heatmap Chart",t.hasLegend=!0,t.defaultDatasetType="heatmap",t.enablemousetracking=!0},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource"),t=e.dataset,o=e.colorrange;if(!t||!o||!o.color&&!Number(o.gradient))return!0},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t),this.config.drawTrendRegion=0},t.prototype.configureAttributes=function(e){var t,o,a=this.config,r=this.getFromEnv("dataSource"),n=this.config.skipConfigureIteration={},i=e.dataset,l=[];if(t=r.rows&&r.rows.row.filter(function(e){return""!==e.id&&e.id!==undefined}),o=r.columns&&r.columns.column.filter(function(e){return""!==e.id&&e.id!==undefined}),!t||!o){for(var s=0;s<i.length;s++)for(var c=0;c<i[s].data.length;c++)l.push(i[s].data[c]);t||(t=l.map(function(e){return e.rowid}).filter(function(e,t,o){return o.indexOf(e)===t})),o||(o=l.map(function(e){return e.columnid}).filter(function(e,t,o){return o.indexOf(e)===t}))}this.parseChartAttr(e),this.addToEnv("chartColorRange",e.colorrange||{}),this.createComponent(e),this._feedAxesRawData(),n.axis=!0,this.addToEnv("totalRows",t.length),this.addToEnv("totalColumns",o.length),this._createToolBox(),n.toolbar=!0,this.configureChildren(),this.asyncDraw(),this.getFromEnv("toolTipController").setStyle({bgColor:(0,p.convertColor)(a.tooltipbgcolor||"FFF",a.tooltipbgalpha||100),rawBgColor:(a.tooltipbgcolor||"FFF").replace(/^#?([a-f0-9]+)/gi,"#$1"),fontColor:(a.tooltipcolor||a.basefontcolor||"545454").replace(/^#?([a-f0-9]+)/gi,"#$1"),borderColor:(0,p.convertColor)(a.tooltipbordercolor||"666",a.tooltipborderalpha||100),rawBorderColor:(a.tooltipbordercolor||"666").replace(/^#?([a-f0-9]+)/gi,"#$1"),bgAlpha:(0,u.pluckNumber)(a.tooltipbgalpha,100),borderThickness:(0,u.pluckNumber)(a.tooltipborderthickness,1),showToolTipShadow:(0,u.pluckNumber)(a.showtooltipshadow||0),borderRadius:(0,u.pluckNumber)(a.tooltipborderradius,0),"font-size":a.basefontsize||10,"font-family":a.basefont||this.getFromEnv("style").inCanfontFamily,padding:(0,u.pluckNumber)(a.tooltippadding||3),borderAlpha:(0,u.pluckNumber)(a.tooltipborderalpha,100)})},t.prototype._postSpaceManagement=function(){var e=this.config,t=this.getChildren("xAxis")[0],o=this.getFromEnv("legend"),a=e.xDepth;this.setAxisDimention(),t&&t.shiftLabels(-a,0),o&&o.postSpaceManager()},t.prototype.setAxisDimention=function(){var e=this.getChildren("xAxis")&&this.getChildren("xAxis")[0],t=this.getChildren("yAxis")&&this.getChildren("yAxis")[0],o=this.getFromEnv("chartConfig"),a=o.placeAxisLabelsOnTop,r=this.getChildren("canvas")[0],n=r.config,i=r.getEffectiveDimensions(),l=i.left,s=i.top,c=i.width,u=i.height,p=i.paddingLeft,h=i.paddingRight,d=n&&n.canvasBorderWidth,f=n&&n.canvasPadding;e&&e.setAxisConfig({canvasPaddingLeft:Math.max(p,f),canvasPaddingRight:Math.max(h,f)}),e&&e.setAxisDimention({x:l,y:a?s+(o.shift||0)-d:s+u+(o.shift||0)+d,opposite:a?s+u+d:s-d,axisLength:c}),t&&t.setAxisDimention({x:l-d,y:s,opposite:l+c+d,axisLength:u})},t.prototype._feedAxesRawData=function(){var e,t,o=this.getFromEnv("color-manager"),a=this.getFromEnv("dataSource"),r=a.chart,n=this.config.is3D,i=n?u.chartPaletteStr.chart3D:u.chartPaletteStr.chart2D;return e={mapTickValuesById:!0,isVertical:!1,isReverse:!1,isOpposit:!!this.config.placeAxisLabelsOnTop,outCanfontFamily:(0,u.pluck)(r.outcnvbasefont,r.basefont,f),outCanfontSize:(0,u.pluckFontSize)(r.outcnvbasefontsize,r.basefontsize,10),outCancolor:(0,u.pluck)(r.outcnvbasefontcolor,r.basefontcolor,o.getColor(i.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),axisNamePadding:r.xaxisnamepadding,axisValuePadding:r.labelpadding,axisNameFont:r.xaxisnamefont,axisNameFontSize:r.xaxisnamefontsize,axisNameFontColor:r.xaxisnamefontcolor,axisNameFontBold:r.xaxisnamefontbold,axisNameFontItalic:r.xaxisnamefontitalic,axisNameBgColor:r.xaxisnamebgcolor,axisNameBorderColor:r.xaxisnamebordercolor,axisNameAlpha:r.xaxisnamealpha,axisNameFontAlpha:r.xaxisnamefontalpha,axisNameBgAlpha:r.xaxisnamebgalpha,axisNameBorderAlpha:r.xaxisnameborderalpha,axisNameBorderPadding:r.xaxisnameborderpadding,axisNameBorderRadius:r.xaxisnameborderradius,axisNameBorderThickness:r.xaxisnameborderthickness,axisNameBorderDashed:r.xaxisnameborderdashed,axisNameBorderDashLen:r.xaxisnameborderdashlen,axisNameBorderDashGap:r.xaxisnameborderdashgap,useEllipsesWhenOverflow:r.useellipseswhenoverflow,divLineColor:(0,u.pluck)(r.vdivlinecolor,r.divlinecolor,o.getColor(i.divLineColor)),divLineAlpha:(0,u.pluck)(r.vdivlinealpha,r.divlinealpha,n?o.getColor(g):o.getColor(m)),divLineThickness:(0,u.pluckNumber)(r.vdivlinethickness,r.divlinethickness,1),divLineIsDashed:Boolean((0,u.pluckNumber)(r.vdivlinedashed,r.vdivlineisdashed,r.divlinedashed,r.divlineisdashed,0)),divLineDashLen:(0,u.pluckNumber)(r.vdivlinedashlen,r.divlinedashlen,4),divLineDashGap:(0,u.pluckNumber)(r.vdivlinedashgap,r.divlinedashgap,2),showAlternateGridColor:(0,u.pluckNumber)(r.showalternatevgridcolor,0),alternateGridColor:(0,u.pluck)(r.alternatevgridcolor,o.getColor(v)),alternateGridAlpha:(0,u.pluck)(r.alternatevgridalpha,o.getColor(b)),numDivLines:r.numvdivlines,labelFont:r.labelfont,labelFontSize:r.labelfontsize,labelFontColor:r.labelfontcolor,labelFontAlpha:r.labelalpha,labelFontBold:r.labelfontbold,labelFontItalic:r.labelfontitalic,axisName:r.xaxisname,axisMinValue:r.xaxisminvalue,axisMaxValue:r.xaxismaxvalue,setAdaptiveMin:r.setadaptivexmin,adjustDiv:r.adjustvdiv,labelDisplay:r.labeldisplay,showLabels:(0,u.pluckNumber)(r.showxaxislabels,r.showlabels),rotateLabels:r.rotatexaxislabels,slantLabel:(0,u.pluckNumber)(r.slantlabels,r.slantlabel),labelStep:(0,u.pluckNumber)(r.labelstep,r.xaxisvaluesstep),showAxisValues:(0,u.pluckNumber)(r.showxaxisvalues,r.showxaxisvalue),maxLabelHeight:r.maxlabelheight,showZeroPlane:r.showvzeroplane,zeroPlaneColor:r.vzeroplanecolor,zeroPlaneThickness:r.vzeroplanethickness,zeroPlaneAlpha:r.vzeroplanealpha,showZeroPlaneValue:r.showvzeroplanevalue,trendlineColor:r.trendlinecolor,trendlineToolText:r.trendlinetooltext,trendlineThickness:r.trendlinethickness,trendlineAlpha:r.trendlinealpha,showTrendlinesOnTop:r.showtrendlinesontop,showAxisLine:(0,u.pluckNumber)(r.showxaxisline,r.showaxislines,r.drawAxisLines,0),axisLineThickness:(0,u.pluckNumber)(r.xaxislinethickness,r.axislinethickness,1),axisLineAlpha:(0,u.pluckNumber)(r.xaxislinealpha,r.axislinealpha,100),axisLineColor:(0,u.pluck)(r.xaxislinecolor,r.axislinecolor,w)},t={mapTickValuesById:!0,isVertical:!0,isReverse:!1,isOpposit:!1,outCanfontFamily:(0,u.pluck)(r.outcnvbasefont,r.basefont,f),outCanfontSize:(0,u.pluckFontSize)(r.outcnvbasefontsize,r.basefontsize,10),outCancolor:(0,u.pluck)(r.outcnvbasefontcolor,r.basefontcolor,o.getColor(i.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),axisNamePadding:r.yaxisnamepadding,axisValuePadding:r.yaxisvaluespadding,axisNameFont:r.yaxisnamefont,axisNameFontSize:r.yaxisnamefontsize,axisNameFontColor:r.yaxisnamefontcolor,axisNameFontBold:r.yaxisnamefontbold,axisNameFontItalic:r.yaxisnamefontitalic,axisNameBgColor:r.yaxisnamebgcolor,axisNameBorderColor:r.yaxisnamebordercolor,axisNameAlpha:r.yaxisnamealpha,axisNameFontAlpha:r.yaxisnamefontalpha,axisNameBgAlpha:r.yaxisnamebgalpha,axisNameBorderAlpha:r.yaxisnameborderalpha,axisNameBorderPadding:r.yaxisnameborderpadding,axisNameBorderRadius:r.yaxisnameborderradius,axisNameBorderThickness:r.yaxisnameborderthickness,axisNameBorderDashed:r.yaxisnameborderdashed,axisNameBorderDashLen:r.yaxisnameborderdashlen,axisNameBorderDashGap:r.yaxisnameborderdashgap,axisNameWidth:r.yaxisnamewidth,useEllipsesWhenOverflow:r.useellipseswhenoverflow,rotateAxisName:(0,u.pluckNumber)(r.rotateyaxisname,1),axisName:r.yaxisname,showAlternateGridColor:(0,u.pluckNumber)(r.showalternatehgridcolor,1),alternateGridColor:(0,u.pluck)(r.alternatehgridcolor,o.getColor(y)),alternateGridAlpha:(0,u.pluck)(r.alternatehgridalpha,o.getColor(x)),numDivLines:r.numdivlines,axisMinValue:r.yaxisminvalue,axisMaxValue:r.yaxismaxvalue,setAdaptiveMin:r.setadaptiveymin,adjustDiv:r.adjustdiv,labelStep:r.yaxisvaluesstep,showLabels:(0,u.pluckNumber)(r.showyaxislabels,r.showlabels),maxLabelWidthPercent:r.maxlabelwidthpercent,showAxisValues:(0,u.pluckNumber)(r.showyaxisvalues,r.showyaxisvalue),divLineColor:(0,u.pluck)(r.hdivlinecolor,o.getColor(i.divLineColor)),divLineAlpha:(0,u.pluck)(r.hdivlinealpha,o.getColor(m)),divLineThickness:(0,u.pluckNumber)(r.hdivlinethickness,1),divLineIsDashed:Boolean((0,u.pluckNumber)(r.hdivlinedashed,r.hdivlineisdashed,0)),divLineDashLen:(0,u.pluckNumber)(r.hdivlinedashlen,4),divLineDashGap:(0,u.pluckNumber)(r.hdivlinedashgap,2),showZeroPlane:r.showzeroplane,zeroPlaneColor:r.zeroplanecolor,zeroPlaneThickness:r.zeroplanethickness,zeroPlaneAlpha:r.zeroplanealpha,showZeroPlaneValue:r.showzeroplanevalue,trendlineColor:r.trendlinecolor,trendlineToolText:r.trendlinetooltext,trendlineThickness:r.trendlinethickness,trendlineAlpha:r.trendlinealpha,showTrendlinesOnTop:r.showtrendlinesontop,showAxisLine:(0,u.pluckNumber)(r.showyaxisline,r.showaxislines,r.drawAxisLines,0),axisLineThickness:(0,u.pluckNumber)(r.yaxislinethickness,r.axislinethickness,1),axisLineAlpha:(0,u.pluckNumber)(r.yaxislinealpha,r.axislinealpha,100),axisLineColor:(0,u.pluck)(r.yaxislinecolor,r.axislinecolor,w)},e.vtrendlines=a.vtrendlines,t.trendlines=a.trendlines,{yAxisConf:[t],xAxisConf:[e]}},t.prototype._setCategories=function(){var e,t,o,a,r,n,i,l,s,c,p=this.getFromEnv("dataSource"),h=this.getChildren("xAxis"),d=this.getChildren("yAxis"),f=[],g=[];if(!p.columns||!p.rows)for(p.columns={},p.columns.column=n=[],p.rows={},p.rows.row=i=[],o=0;o<(p.dataset&&p.dataset.length);o++)for(e=p.dataset&&p.dataset[o].data&&p.dataset[o].data.length,t=0;t<e;t++){for(l=!0,s=!0,c=0;c<n.length;c++)p.dataset[o].data[t].columnid==n[c].id&&(l=!1);for(l&&(a={id:p.dataset[o].data[t].columnid,label:p.dataset[o].data[t].columnid},p.columns.column.push(a)),c=0;c<i.length;c++)p.dataset[o].data[t].rowid==i[c].id&&(s=!1);s&&(r={id:p.dataset[o].data[t].rowid,label:p.dataset[o].data[t].rowid},p.rows.row.push(r))}for(n=p.columns.column,i=p.rows.row,t=0;t<(n&&n.length);t++)n[t].label=(0,u.pluck)(n[t].label,n[t].name,n[t].id),void 0!==n[t].label&&f.push(n[t]);for(p.columns.column=f,t=0;t<(i&&i.length);t++)i[t].label=(0,u.pluck)(i[t].label,i[t].name,i[t].id),void 0!==i[t].label&&g.push(i[t]);p.rows.row=g,p.columns&&h[0].setTickValues(p.columns.column),p.rows&&d[0].setTickValues(p.rows.row),h[0].setAxisConfig({categoryNumDivLines:this.getFromEnv("totalColumns")-1,categoryDivLinesFromZero:0,showAlternateGridColor:0}),d[0].setAxisConfig({categoryNumDivLines:this.getFromEnv("totalRows")-1,categoryDivLinesFromZero:0,showAlternateGridColor:0})},t.prototype.getDSdef=function(){return r["default"]},t.prototype.getDSGroupdef=function(){return n["default"]},t}(a["default"]);t["default"]=k},575:function(e,t,o){"use strict";t.__esModule=!0;var a=c(o(131)),r=o(118),n=o(122),i=o(125),l=c(o(576)),s=o(129);function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var p=r.preDefStr.pStr,h=r.preDefStr.sStr,d=r.preDefStr.miterStr,f=r.preDefStr.hiddenStr,g=r.preDefStr.showHoverEffectStr,m=r.preDefStr.POSITION_START,v=r.preDefStr.POSITION_TOP,b=r.preDefStr.POSITION_END,y=r.preDefStr.POSITION_BOTTOM,x=r.preDefStr.DEFAULT,w=function(e){return void 0!==e&&null!==e},k=function(e,t,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:e,container:t,component:o,label:"group"})},C="rgba(192,192,192,"+(r.isIE?.002:1e-6)+")",N=r.hasTouch?r.TOUCH_THRESHOLD_PIXELS:r.CLICK_THRESHOLD_PIXELS,S=Math.max,E=Math.min,A=Math.abs;(0,i.addDep)({name:"heatmapAnimation",type:"animationRule",extension:l["default"]});var T=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.components={},o.graphics={},o.dataSetArray=[],o}return u(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"heatMap"},t.prototype.configureAttributes=function(e){if(!e)return!1;this.trimData(e),this.config.JSONData=e;var t,o,a,i,l,s,c,u,d,f,g,m,v,b,y,x,w,k=this.getFromEnv("chart"),C=this.getFromEnv("chartConfig").style,N=this.config,S=N.JSONData,E=S.data,A=E&&E.length,T=this.getFromEnv("chart-attrib"),D=this.getFromEnv("color-manager"),L=this.index||this.positionIndex,_=N.plotColor=D.getPlotColor(L),P=(0,r.pluckNumber)(S.dashed,T.plotborderdashed),O=this.components.data,V=this.components.plotGrid=[],M=this.getFromEnv("number-formatter"),F=k.isBar,I=k.config.is3D,B=-Infinity,R=+Infinity,j=this.getFromEnv("totalRows"),G=this.getFromEnv("totalColumns");for(m=0;m<j;m++)for(V.push([]),v=0;v<G;v++)V[m].push([]);for(this.setState("visible",1===(0,r.pluckNumber)(this.getState("visible"),this.config.JSONData.visible,!Number(this.config.JSONData.initiallyhidden),1)),t=N.showplotborder=(0,r.pluckNumber)(T.showplotborder,I?0:1),N.plotDashLen=o=(0,r.pluckNumber)(T.plotborderdashlen,5),N.plotDashGap=a=(0,r.pluckNumber)(T.plotborderdashgap,4),N.plotfillAngle=(0,r.pluckNumber)(360-T.plotfillangle,F?180:90),N.plotFillAlpha=l=(0,r.pluck)(S.alpha,T.plotfillalpha,"100"),N.plotColor=_=(0,r.pluck)(S.color,_),N.isRoundEdges=i=(0,r.pluckNumber)(T.useroundedges,0),N.plotRadius=(0,r.pluckNumber)(T.useRoundEdges,N.isRoundEdges?1:0),N.plotFillRatio=(0,r.pluck)(S.ratio,T.plotfillratio),N.plotgradientcolor=(0,r.getDefinedColor)(T.plotgradientcolor,D.getColor("plotGradientColor")),N.plotBorderAlpha=t?(0,r.pluck)(T.plotborderalpha,l,"100"):0,N.plotBorderColor=(0,r.pluck)(T.plotbordercolor,I?"FFFFFF":D.getColor("plotBorderColor")),N.plotBorderThickness=(0,r.pluckNumber)(T.plotborderthickness,1),N.plotBorderDashStyle=P?(0,r.getDashStyle)(o,a):"none",N.showValues=(0,r.pluckNumber)(S.showvalues,T.showvalues,1),N.valuePadding=(0,r.pluckNumber)(T.valuepadding,2),N.enableAnimation=f=(0,r.pluckNumber)(T.animation,T.defaultanimation,1),N.animation=!!f&&{duration:1e3*(0,r.pluckNumber)(T.animationduration,1)},N.transposeAnimation=(0,r.pluckNumber)(T.transposeanimation,f),N.transposeAnimDuration=1e3*(0,r.pluckNumber)(T.transposeanimduration,.2),N.showShadow=i||I?(0,r.pluckNumber)(T.showshadow,1):(0,r.pluckNumber)(T.showshadow,D.getColor("showShadow")),N.showHoverEffect=(0,r.pluckNumber)(T.plothovereffect,T.showhovereffect,void 0),N.showTooltip=(0,r.pluckNumber)(T.showtooltip,1),N.definedGroupPadding=Math.max((0,r.pluckNumber)(T.plotspacepercent),0),N.plotSpacePercent=Math.max((0,r.pluckNumber)(T.plotspacepercent,20)%100,0),N.maxColWidth=(0,r.pluckNumber)(F?T.maxbarheight:T.maxcolwidth,50),N.plotPaddingPercent=(0,r.pluckNumber)(T.plotpaddingpercent),N.rotateValues=(0,r.pluckNumber)(T.rotatevalues)?270:0,N.placeValuesInside=(0,r.pluckNumber)(T.placevaluesinside,0),N.defaultPadding={left:.5,right:.5,top:.5,bottom:.5},b=C.inCanfontFamily,w=C.inCanfontSize,y=parseInt(w,10||10),x=C.inCancolor,"normal","normal",N.tlLabelStyle={fontFamily:(0,r.pluck)(T.tlfont,b),fontSize:(0,r.pluckNumber)(T.tlfontsize,y)+"px",color:(0,n.convertColor)((0,r.pluck)(T.tlfontcolor,x),100),fontWeight:"normal",fontStyle:"normal"},(0,r.setLineHeight)(N.tlLabelStyle),N.trLabelStyle={fontFamily:(0,r.pluck)(T.trfont,b),fontSize:(0,r.pluckNumber)(T.trfontsize,y)+"px",color:(0,n.convertColor)((0,r.pluck)(T.trfontcolor,x),100),fontWeight:"normal",fontStyle:"normal"},N.brLabelStyle={fontFamily:(0,r.pluck)(T.brfont,b),fontSize:(0,r.pluckNumber)(T.brfontsize,y)+"px",color:(0,n.convertColor)((0,r.pluck)(T.brfontcolor,x),100),fontWeight:"normal",fontStyle:"normal"},N.blLabelStyle={fontFamily:(0,r.pluck)(T.blfont,b),fontSize:(0,r.pluckNumber)(T.blfontsize,y)+"px",color:(0,n.convertColor)((0,r.pluck)(T.blfontcolor,x),100),fontWeight:"normal",fontStyle:"normal"},N.use3DLighting=(0,r.pluckNumber)(T.use3dlighting,1),N.parentYAxis=(0,r.pluck)(S.parentyaxis&&S.parentyaxis.toLowerCase(),p)===h?1:0,O||(O=this.components.data=[]),g=0;g<A;g++)s=E&&E[g],d=(u=O[g])&&u.config,u||(u=O[g]={graphics:{}}),u.config||(d=O[g].config={}),d.setValue=c=M.getCleanValue(s.value),B=Math.max(B,c),R=Math.min(R,c);N.maxValue=B,N.minValue=R,this._setConfigure(),this.setState("dirty",!0)},t.prototype._setConfigure=function(){var e,t,o,a,i,l,s,c,u,p,h,d,f,g,m,v,b,y,x,w,k,N,S,E,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H=this,W=H.getFromEnv("chart"),z=H.config,U=H.config.JSONData,J=U.data,K=J&&J.length,q=H.getFromEnv("chart-attrib"),Y=H.getFromEnv("color-manager"),X=H.index||H.positionIndex,Q=z.showplotborder,Z=z.plotColor=Y.getPlotColor(X),$=(0,r.pluckNumber)(q.showtooltip,1),ee=(0,r.parseUnsafeString)(q.yaxisname),te=(0,r.parseUnsafeString)(q.xaxisname),oe=(0,r.parseUnsafeString)((0,r.pluck)(q.tooltipsepchar,": ")),ae=(0,r.pluckNumber)(q.useplotgradientcolor,1),re="",ne=z.plotDashLen,ie=z.plotDashGap,le=z.plotBorderThickness,se=z.isRoundEdges,ce=z.showHoverEffect,ue=z.plotfillAngle,pe=z.plotFillAlpha,he=z.plotFillRatio,de=z.plotBorderAlpha,fe=z.plotBorderColor,ge=H.getFromEnv("chartColorRange"),me=H.getFromEnv("xAxis"),ve=H.getFromEnv("yAxis"),be=z.mapByPercent=(0,r.pluckNumber)(ge.mapbypercent,0),ye=z.mapByCategory=(0,r.pluckNumber)(q.mapbycategory,0),xe=ge&&(0,r.pluckNumber)(ge.gradient),we=H.components.data,ke=H.getFromEnv("number-formatter"),Ce=W.isBar,Ne=W.config.is3D,Se=z.parentYAxis,Ee=z.maxValue,Ae=z.minValue,Te=(0,r.getValidValue)(q.tltype,r.BLANK),De=(0,r.getValidValue)(q.trtype,r.BLANK),Le=(0,r.getValidValue)(q.bltype,r.BLANK),_e=(0,r.getValidValue)(q.brtype,r.BLANK),Pe=r.BLANK,Oe=r.BLANK,Ve=r.BLANK,Me=r.BLANK,Fe=W.getFromEnv("colorManager");if(A=Ee-Ae,z.eventAttached||(H.addExtEventListener("legendUpdate",function(e,t){if("legend"===t.component)t.legendItem.hasState("hidden")?H.show(t.legendItem,e):H.hide(t.legendItem,e);else for(F=t.maxMinArray,I=F.length,E=0;E<I;E++)H.updatePlot(F[E].min,F[E].max)},Fe),z.eventAttached=!0),(!xe||ye)&&(z.colorMap=[],ge.color))for(E=0;E<ge.color.length;E++)z.colorMap[E]={config:ge.color[E],dataSet:H},z.colorMap[E].config.visible=!0;for(E=0;E<K;E++)i=J&&J[E],l=(c=(s=we[E])&&s.config).setValue,c.showValue=(0,r.pluckNumber)(i.showvalue,z.showValues),c.setLink=(0,r.pluck)(i.link),c.toolTipValue=B=ke.dataLabels(l,Se),c.setDisplayValue=S=(0,r.parseUnsafeString)(i.displayvalue),c.displayValue=(0,r.pluck)(S,B),R=(0,r.pluckNumber)(i.dashed),j=(0,r.pluckNumber)(i.dashlen,ne),G=ie=(0,r.pluckNumber)(i.dashgap,ie),c.plotBorderDashStyle=1===R?(0,r.getDashStyle)(j,G):0===R?"none":z.plotBorderDashStyle,c.percentValue=be?O=i.value&&Math.round((i.value-Ae)/A*1e4)/100:void 0,c.value=M=ye?i.colorrangelabel||i.categoryid:be?O:c.setValue,T=Fe.getColor(M),s.legendItemIndex=T.seriesIndex,c.legendItemId=T.legendItemId,T&&!T.code&&(T.code="ffffff"),c.plotFillAlpha=pe=(0,r.pluckNumber)(i.alpha,T&&T.oriAlpha,z.plotFillAlpha),Z=(0,r.pluck)(i.color,T&&T.code),l<0&&!se&&(ue=Ce?180-ue:360-ue),c.colorArr=(0,n.getColumnColor)(Z+","+z.plotgradientcolor,pe.toString(),he,ue,se,fe,de.toString(),Ce?1:0,!!Ne),T&&T.outOfRange?(c.visible=!1,c.displayValue=r.BLANKSTRING):(c.visible=!0,c.color=(0,n.convertColor)(Z,c.plotFillAlpha),0!==ce&&(h=(0,r.pluck)(i.hovercolor,U.hovercolor,q.plotfillhovercolor,q.columnhovercolor,Z),d=(0,r.pluck)(i.hoveralpha,U.hoveralpha,q.plotfillhoveralpha,q.columnhoveralpha,"25"),!(0,r.pluck)(i.hovergradientcolor,U.hovergradientcolor,q.plothovergradientcolor,!ae&&r.BLANKSTRING)&&r.BLANKSTRING,f=(0,r.pluck)(i.hoverratio,U.hoverratio,q.plothoverratio,he),g=(0,r.pluckNumber)(360-i.hoverangle,360-U.hoverangle,360-q.plothoverangle,ue),m=(0,r.pluck)(i.borderhovercolor,U.borderhovercolor,q.plotborderhovercolor,fe),v=(0,r.pluck)(i.borderhoveralpha,U.borderhoveralpha,q.plotborderhoveralpha,de,pe),b=(0,r.pluckNumber)(i.borderhoverthickness,U.borderhoverthickness,q.plotborderhoverthickness,le),y=(0,r.pluckNumber)(i.borderhoverdashed,U.borderhoverdashed,q.plotborderhoverdashed),x=(0,r.pluckNumber)(i.borderhoverdashgap,U.borderhoverdashgap,q.plotborderhoverdashgap,ne),w=(0,r.pluckNumber)(i.borderhoverdashlen,U.borderhoverdashlen,q.plotborderhoverdashlen,ie),k=y?(0,r.getDashStyle)(w,x):z.plotBorderDashStyle,1==ce&&h===Z&&(h=(0,n.getLightColor)(h,70)),N=(0,n.getColumnColor)(h,d,f,g,se,m,v.toString(),Ce?1:0,!!Ne),c.setRolloutAttr={fill:(0,r.toRaphaelColor)(c.color),stroke:Q&&(0,r.toRaphaelColor)(c.colorArr[1])||C,"stroke-width":le,"stroke-dasharray":[]},c.setRolloverAttr={fill:(0,r.toRaphaelColor)(N[0]),stroke:Q&&(0,r.toRaphaelColor)(N[1])||C,"stroke-width":b,"stroke-dasharray":k}),be&&(O=ke.percentValue(O)),c.setValue=l=ke.getCleanValue(i.value),c.toolTipValue=ke.dataLabels(l,Se),e=c.toolTipValue,o=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(i.tooltext,U.plottooltext,q.plottooltext))),c.tlLabel=D=(0,r.parseUnsafeString)((0,r.pluck)(i.tllabel,i.ltlabel)),c.trLabel=L=(0,r.parseUnsafeString)((0,r.pluck)(i.trlabel,i.rtlabel)),c.blLabel=_=(0,r.parseUnsafeString)((0,r.pluck)(i.bllabel,i.lblabel)),c.brLabel=P=(0,r.parseUnsafeString)((0,r.pluck)(i.brlabel,i.rblabel)),S=(0,r.getValidValue)((0,r.parseUnsafeString)(i.displayvalue)),V=ye?S:(0,r.pluck)(i.displayvalue,e),c.displayValue=(0,r.pluck)(S,O,c.toolTipValue),Te!==r.BLANK&&(Pe="<b>"+Te+oe+"</b>"),De!==r.BLANK&&(Oe="<b>"+De+oe+"</b>"),Le!==r.BLANK&&(Ve="<b>"+Le+oe+"</b>"),_e!==r.BLANK&&(Me="<b>"+_e+oe+"</b>"),u=me.getCategoryFromId(J[E].columnid.toLowerCase()),p=ve.getCategoryFromId(J[E].rowid.toLowerCase()),$&&(null===e?re=!1:void 0!==o?(a=[1,2,5,6,7,14,93,94,95,96,97,98,112,113,114,115,116,117],t={formattedValue:e,value:i.value,yaxisName:ee,xaxisName:te,displayValue:S,percentValue:be?O:r.BLANK,tlLabel:D,trLabel:L,blLabel:_,brLabel:P,rowLabel:p.tickObj&&p.tickObj.label,columnLabel:u.tickObj&&u.tickObj.label,percentDataValue:be?O:r.BLANK,trtype:De,tltype:Te,brType:_e,blType:Le,colorRangeLabel:c.colorRangeLabel},re=(0,r.parseTooltext)(o,a,t,i,q,t)):re=(be?"<b>Value"+oe+"</b>"+e+"<br /><b>Percentage"+oe+"</b>"+O:V)+(D!==r.BLANK?"<br />"+(Pe+D):r.BLANK)+(L!==r.BLANK?"<br />"+Oe+L:r.BLANK)+(_!==r.BLANK?"<br />"+Ve+_:r.BLANK)+(P!==r.BLANK?"<br />"+Me+P:r.BLANK)),c.toolText=re,c.setTooltext=re)},t.prototype.hide=function(e){var t,o,a,r,n,i=this.components.data,l=this.getFromEnv("chart"),s=this.getFromEnv("animationManager"),c=l.getChildren("colorRange")[0];for(r=e.config.datasetObj.code,t=0,o=i.length;t<o;t++)Object.keys(i[t]).length&&(n=c.getColorObj(i[t].config.value).code,a=i[t].config,r===n&&(i[t].graphics.element&&s.setAnimation({el:i[t].graphics.element,attr:{"fill-opacity":0,"stroke-width":0},component:this}),i[t].graphics.hotElement&&i[t].graphics.hotElement.hide(),i[t].graphics.valEle&&i[t].graphics.valEle.hide(),i[t].graphics.tlLabel&&i[t].graphics.tlLabel.hide(),i[t].graphics.trLabel&&i[t].graphics.trLabel.hide(),i[t].graphics.blLabel&&i[t].graphics.blLabel.hide(),i[t].graphics.brLabel&&i[t].graphics.brLabel.hide(),a.visible=!1,i[t].visible=!1));e.setLegendState("hidden")},t.prototype.show=function(e){var t,o,a,r,n,i,l=this.components.data,s=this.config,c=this.getFromEnv("chart"),u=this.getFromEnv("animationManager"),p=c.getChildren("colorRange")[0];for(i=e.config.datasetObj.code,r=0,n=l.length;r<n;r++)Object.keys(l[r]).length&&(o=(t=l[r].config).plotFillAlpha/100,i===(!(a=p.getColorObj(l[r].config.value)).outOfRange&&a.code)&&(l[r].graphics.element&&u.setAnimation({el:l[r].graphics.element,attr:{visibility:"visible"},component:this}),l[r].graphics.element&&u.setAnimation({el:l[r].graphics.element,component:this,attr:{"fill-opacity":o,"stroke-width":s.plotBorderThickness}}),l[r].graphics.hotElement&&l[r].graphics.hotElement.show(),l[r].graphics.valEle&&l[r].graphics.valEle.show(),l[r].graphics.tlLabel&&l[r].graphics.tlLabel.show(),l[r].graphics.trLabel&&l[r].graphics.trLabel.show(),l[r].graphics.blLabel&&l[r].graphics.blLabel.show(),l[r].graphics.brLabel&&l[r].graphics.brLabel.show(),t.visible=!0,l[r].visible=!0));e&&e.removeLegendState("hidden")},t.prototype.updatePlot=function(){var e,t,o,a,r,n=arguments[0],i=arguments[1],l=this.config,s=this.getFromEnv("animationManager"),c=this.components.data;for(o=0,a=c.length;o<a;o++)Object.keys(c[o]).length&&(t=(e=c[o].config).plotFillAlpha/100,(r=c[o].config.value)<n||r>i?e.visible&&(c[o].graphics.element&&s.setAnimation({el:c[o].graphics.element,attr:{"fill-opacity":0,"stroke-width":0},component:this}),c[o].graphics.hotElement&&c[o].graphics.hotElement.hide(),c[o].graphics.valEle&&c[o].graphics.valEle.hide(),c[o].graphics.tlLabel&&c[o].graphics.tlLabel.hide(),c[o].graphics.trLabel&&c[o].graphics.trLabel.hide(),c[o].graphics.blLabel&&c[o].graphics.blLabel.hide(),c[o].graphics.brLabel&&c[o].graphics.brLabel.hide(),e.visible=!1,c[o].visible=!1):e.visible||(c[o].graphics.element&&s.setAnimation({el:c[o].graphics.element,attr:{"fill-opacity":t,"stroke-width":l.plotBorderThickness},callback:function(){this.show()},component:this}),c[o].graphics.hotElement&&c[o].graphics.hotElement.show(),c[o].graphics.valEle&&c[o].graphics.valEle.show(),c[o].graphics.tlLabel&&c[o].graphics.tlLabel.show(),c[o].graphics.trLabel&&c[o].graphics.trLabel.show(),c[o].graphics.blLabel&&c[o].graphics.blLabel.show(),c[o].graphics.brLabel&&c[o].graphics.brLabel.show(),e.visible=!0,c[o].visible=!0))},t.prototype._checkPointObj=function(e,t,o,a){var r,n,i,l,s,c=this.components.plotGrid,u=this.getFromEnv("chartConfig"),p=u.viewPortConfig,h=p.x,d=p.scaleX,f=u.plotborderthickness,g=u.showplotborder;if(r=c[t]&&c[t][e],n=(n=(f=g?f:0)/2)%2==0?n+1:Math.round(n),r&&r.config&&r.config.visible&&(i=o-(r._xPos-h*d)+n,l=a-r._yPos+n,s=i>=0&&i<=r._width+f&&l>=0&&l<=r._height+f))return{pointIndex:r._index,hovered:s,pointObj:r}},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,i=this.getFromEnv("chartConfig"),l=this.getFromEnv("xAxis"),s=this.getFromEnv("yAxis"),c=i.canvasHeight/this.getFromEnv("totalRows");return e+=l.getTranslation(),t+=s.getTranslation(),a=s.getValue(t+c/2),n=Math.floor(a),o=l.getValue(e),(r=Math.round(o))-o>0?a-n>.5?this._checkPointObj(r,n,e,t)||this._checkPointObj(r-1,n,e,t):this._checkPointObj(r,n-1,e,t)||this._checkPointObj(r,n,e,t):a-n>.5?this._checkPointObj(r+1,n,e,t)||this._checkPointObj(r,n,e,t):this._checkPointObj(r,n-1,e,t)||this._checkPointObj(r+1,n,e,t)||this._checkPointObj(r,n,e,t)},t.prototype.parsePlotAttributes=function(e,t){var o,a,n,i,l,s,c,u,p,h,g,m,v,b,y,x=this.config.JSONData,w=this.config,k=x.data,S=t,E=this.getState("visible"),A=this.getFromEnv("chart"),T=this.getFromEnv("xAxis"),D=this.getFromEnv("yAxis"),L=this.getFromEnv("chartConfig"),_=L.showtooltip,P=this.components.data,O=D.getAxisBase(),V=(D.yBasePos=D.getPixel(O),w.plotBorderThickness),M=w.plotRadius,F=A.getFromEnv("legend")&&A.getFromEnv("legend").config.isActive,I=this.components.plotGrid;e&&Object.keys(e).length&&(m=L.canvasWidth/this.getFromEnv("totalColumns"),l=L.canvasHeight/this.getFromEnv("totalRows"),y=e.trackerConfig={},u=(h=e&&e.config).setValue,v=T.getCategoryFromId(k[S].columnid.toLowerCase()),b=D.getCategoryFromId(k[S].rowid.toLowerCase()),0!==v.index&&!v.index||0!==b.index&&!b.index||(w.mapByCategory||null!==u)&&(c=h.setLink,g=h.colorArr,e.graphics||(P[S].graphics={}),p=h.displayValue,a=T.getPixel(v.index)-m/2,n=D.getPixel(b.index)-l/2,i=m,s=h.toolText,y.eventArgs={index:S,link:c,value:h.percentValue||u,displayValue:p,columnId:v.tickObj.id,rowId:b.tickObj.id,tlLabel:h.tlLabel,trLabel:h.trLabel,blLabel:h.blLabel,brLabel:h.brLabel,toolText:s||"",id:r.BLANKSTRING,datasetIndex:F?e.datasetIndex:void 0,datasetName:F?e.datasetName:void 0,visible:E},o={x:a,y:n,width:i,height:l||1,r:M,fill:h.color,stroke:(0,r.toRaphaelColor)(g[1]),"stroke-width":V,"stroke-dasharray":void 0,"fill-opacity":h.plotFillAlpha/100,"stroke-linejoin":d,visibility:h.visible?"visible":f,cursor:c?"pointer":r.BLANKSTRING},e._xPos=a,e._yPos=n,e._height=l,e._width=i,e._index=S,I[b.index][v.index]=e,e.graphics.element?((o={x:a,y:n,width:i,height:l||1}).fill=h.color,o.stroke=(0,r.toRaphaelColor)(g[1]),o["fill-opacity"]=h.visible?h.plotFillAlpha/100:0,o["stroke-width"]=h.visible?V:0,o["stroke-dasharray"]=void 0,o["stroke-linejoin"]=d,o.visibility=h.visible?"visible":f,o.cursor=c?"pointer":r.BLANKSTRING):(o["fill-opacity"]=h.plotFillAlpha/100,o["stroke-width"]=V),(c||_)&&(l<N&&(n-=(N-l)/2,l=N),y.attr={x:a,y:n,width:i,height:l,r:M,cursor:c?"pointer":r.BLANKSTRING,stroke:C,"stroke-width":V,fill:C,visibility:h.visible?"visible":f}),h.props={element:{attr:o}}))},t.prototype.allocatePosition=function(){var e,t,o,a=this.config.JSONData.data,r=this.components.data;for(e=a&&a.length,t=0;t<e;t++)o=r[t],this.parsePlotAttributes(o,t)},t.prototype.drawPlots=function(){var e,t,o,a,n,i,l,c,u,p,h,d=this.config.JSONData,f=this.config,m=d.data,v=this.getFromEnv("animationManager"),b=this.getState("visible"),y=this.getFromEnv("xAxis"),x=this.getFromEnv("yAxis"),w=this.getFromEnv("chartConfig"),k=this.components.data,C=f.showShadow,N=this.getContainer("plotGroup"),S=this.getContainer("shadowGroup"),E=[],A=(this.components.removeDataArr||[]).length,T=f.showHoverEffect;for(e=m&&m.length,t=0;t<e;t++)h=(o=k[t]).trackerConfig,i=o&&o.config,o.graphics&&(l=o.graphics.element?b?"updating":"hiding":"appearing",n=i.setValue,c=y.getCategoryFromId(m[t].columnid.toLowerCase()),u=x.getCategoryFromId(m[t].rowid.toLowerCase()),0!==c.index&&!c.index||0!==u.index&&!u.index?o.graphics.element=o.graphics.element&&v.setAnimation({el:o.graphics.element,component:this}):(c.tickObj&&u.tickObj&&i.value!==r.BLANKSTRING||!o.graphics||(o.graphics.element=o.graphics.element&&v.setAnimation({el:o.graphics.element,component:this})),f.mapByCategory||null!==n||!o.graphics?(p=c.index.toString()+u.index.toString(),E.push(p),o.graphics.element?(a=o.graphics.element,i.elemCreated=!1,v.setAnimation({el:a,state:l,attr:i.props.element.attr,component:this})):(a=o.graphics.element=v.setAnimation({el:"rect",component:this,attr:i.props.element.attr,label:"rect",container:N}),i.elemCreated=!0),a.shadow({opacity:C},S).data("BBox",void 0),w.enablemousetracking&&a.data("eventArgs",h.eventArgs).data(g,T).data("setRolloverAttr",i.setRolloverAttr||{}).data("setRolloutAttr",i.setRolloutAttr||{})):(o.graphics.element&&o.graphics.element.hide(),o.graphics.hotElement&&o.graphics.hotElement.hide())));this.drawn?this.drawLabel():this.addJob("labelJob",this.drawLabel.bind(this),s.priorityList.label),this.drawn=!0,A&&this.removeDataElems()},t.prototype.drawLabel=function(){var e,t,o,a,n,i,l,s,c,u,p,h,d,g,x,C,N,S,E,A,T,D,L,_,P,O,V,M,F,I,B,R,j,G,H=this.getFromEnv("chartConfig"),W=this.getFromEnv("smartLabel"),z=this.getFromEnv("animationManager"),U=H.dataLabelStyle,J=this.config,K=(this.config.JSONData.data||[]).length,q=this.components.data,Y=this.getContainer("labelGroup"),X=this.graphics.tlLabelContainer,Q=this.graphics.blLabelContainer,Z=this.graphics.trLabelContainer,$=this.graphics.brLabelContainer;for(z.setAnimation({el:Y,attr:{opacity:1},component:this,label:"text"}),X||(X=this.graphics.tlLabelContainer=k({name:"tlLabel"},Y,this)),Q||(Q=this.graphics.blLabelContainer=k({name:"blLabel"},Y,this)),Z||(Z=this.graphics.trLabelContainer=k({name:"trLabel"},Y,this)),$||($=this.graphics.brLabelContainer=k({name:"brLabel"},Y,this)),c=J.tlLabelStyle,u=J.trLabelStyle,p=J.blLabelStyle,h=J.brLabelStyle,d={fontFamily:c.fontFamily,fontSize:c.fontSize,lineHeight:c.lineHeight,fontWeight:c.fontWeight,fontStyle:c.fontStyle},g={fontFamily:u.fontFamily,fontSize:u.fontSize,lineHeight:u.lineHeight,fontWeight:u.fontWeight,fontStyle:u.fontStyle},x={fontFamily:p.fontFamily,fontSize:p.fontSize,lineHeight:p.lineHeight,fontWeight:p.fontWeight,fontStyle:p.fontStyle},C={fontFamily:h.fontFamily,fontSize:h.fontSize,lineHeight:h.lineHeight,fontWeight:h.fontWeight,fontStyle:h.fontStyle},W.useEllipsesOnOverflow(H.useEllipsesWhenOverflow),W.setStyle(U),X.css(d),Q.css(x),Z.css(g),$.css(C),t=0;t<K;t++)void 0!==(e=q[t])&&e.graphics&&(G=(j=e&&e.config).setValue,J.mapByCategory||null!==G?(o=j.displayValue,N=e.graphics.element,S=e._width,E=e._height,A=e._xPos,T=e._yPos,W.setStyle(U),o=(D=W.getSmartText(o,S,E,!1)).text,w(o)&&o!==r.BLANK&&j.showValue?(a=T+.5*E,n=A+.5*S,s={text:o,title:D.tooltext||r.BLANKSTRING,visibility:j.visible?"visible":f,fill:U.color,direction:j.textDirection,x:n,y:a,"text-bound":[U.backgroundColor,U.borderColor,U.borderThickness,U.borderPadding,U.borderRadius,U.borderDash]},N?e.graphics.valEle=z.setAnimation({el:e.graphics.valEle||"text",container:Y,component:this,label:"text",attr:s}):e.graphics.valEle&&(e.graphics.valEle=z.setAnimation({el:e.graphics.valEle,component:this})),L=j.tlLabel,_=j.trLabel,P=j.blLabel,O=j.brLabel,V=w(L)&&L!==r.BLANK,M=w(_)&&_!==r.BLANK,F=w(P)&&P!==r.BLANK,I=w(O)&&O!==r.BLANK,B=S*(V&&M?.5:.9),R=.5*(E-(D&&D.height||0)),i=T+4,V?(W.setStyle(c),l=A,s={text:o=(D=W.getSmartText(L,B,R,!1)).text,title:D.tooltext||r.BLANKSTRING,visibility:j.visible?"visible":f,fill:c.color,"text-anchor":m,"vertical-align":v,direction:j.textDirection,x:l+4,y:i,"text-bound":[c.backgroundColor,c.borderColor,c.borderThickness,c.borderPadding,c.borderRadius,c.borderDash]},e.graphics.tlLabel=z.setAnimation({el:e.graphics.tlLabel||"text",component:this,attr:Object.assign(s,d),container:X})):e.graphics.tlLabel&&(e.graphics.tlLabel=z.setAnimation({el:e.graphics.tlLabel,component:this})),M?(W.setStyle(u),l=A+S,s={text:o=(D=W.getSmartText(_,B,R,!1)).text,title:D.tooltext||r.BLANKSTRING,visibility:j.visible?"visible":f,fill:u.color,"text-anchor":b,"vertical-align":v,direction:j.textDirection,x:l-4,y:i,"text-bound":[u.backgroundColor,u.borderColor,u.borderThickness,u.borderPadding,u.borderRadius,u.borderDash]},e.graphics.trLabel=z.setAnimation({el:e.graphics.trLabel||"text",attr:Object.assign(s,g),container:Z,component:this})):e.graphics.trLabel&&(e.graphics.trLabel=z.setAnimation({el:e.graphics.trLabel,component:this})),i=T+E-4,F?(W.setStyle(p),l=A,s={text:o=(D=W.getSmartText(P,B,R,!1)).text,title:D.tooltext||r.BLANKSTRING,visibility:j.visible?"visible":f,fill:p.color,"text-anchor":m,"vertical-align":y,direction:j.textDirection,x:l+4,y:i,"text-bound":[p.backgroundColor,p.borderColor,p.borderThickness,p.borderPadding,p.borderRadius,p.borderDash]},e.graphics.blLabel=z.setAnimation({el:e.graphics.blLabel||"text",component:this,container:Q,attr:Object.assign(s,x)})):e.graphics.blLabel&&(e.graphics.blLabel=z.setAnimation({el:e.graphics.blLabel,component:this})),I?(W.setStyle(p),l=A+S-4,s={text:o=(D=W.getSmartText(O,B,R,!1)).text,title:D.tooltext||r.BLANKSTRING,visibility:j.visible?"visible":f,fill:h.color,"text-anchor":b,"vertical-align":y,direction:j.textDirection,x:l,y:i,"text-bound":[h.backgroundColor,h.borderColor,h.borderThickness,h.borderPadding,h.borderRadius,h.borderDash]},e.graphics.brLabel=z.setAnimation({el:e.graphics.brLabel||"text",attr:Object.assign(s,C),container:$,component:this})):e.graphics.brLabel&&(e.graphics.brLabel=z.setAnimation({el:e.graphics.brLabel,component:this}))):this.removeLabels(e)):this.removeLabels(e));this.labelDrawn=!0},t.prototype.removeLabels=function(e){var t=this.getFromEnv("animationManager");e.graphics.valEle&&(e.graphics.valEle=t.setAnimation({el:e.graphics.valEle,component:this})),e.graphics.tlLabel&&(e.graphics.tlLabel=t.setAnimation({el:e.graphics.tlLabel,component:this})),e.graphics.trLabel&&(e.graphics.trLabel=t.setAnimation({el:e.graphics.trLabel,component:this})),e.graphics.blLabel&&(e.graphics.blLabel=t.setAnimation({el:e.graphics.blLabel,component:this})),e.graphics.brLabel&&(e.graphics.brLabel=t.setAnimation({el:e.graphics.brLabel,component:this}))},t.prototype.removeDataElems=function(){var e,t,o,a,r=this.getFromEnv("animationManager"),n=this.components,i=n.removeDataArr,l=n.pool||(n.pool={element:[],hotElement:[],label:[]}),s=i.length;for(a=0;a<s;a++)if(e=i[0],i.splice(0,1),e&&e.graphics){for(t in o=e.graphics)o[t]&&(o[t]=r.setAnimation({el:o[t],component:this}));e.graphics.element&&(l.element=l.element.concat(e.graphics.element)),e.graphics.hotElement&&(l.hotElement=l.hotElement.concat(e.graphics.hotElement)),e.graphics.label&&(l.label=l.label.concat(e.graphics.label))}n.pool=l},t.prototype.getAxisValuePadding=function(){return this.config.defaultPadding},t.prototype.getDataLimits=function(){var e,t,o=this.components.data,a=this.config,r=o.length,n=-Infinity,i=+Infinity;for(e=0;e<r;e++)o[e]&&Object.keys(o[e]).length&&void 0!==(t=o[e].config.setValue)&&null!==t&&(n=S(n,t),i=E(i,t));return a.maxValue=n,a.minValue=i,{max:a.maxValue,min:a.minValue}},t.prototype.trimData=function(e){if(this.config.JSONData){var t=this.config,o=t&&t.context,a=o&&o.prevCatlen,r=this.getFromEnv("xAxis").getTicksLen(),n=a-r,i=t.JSONData,l=i.data&&i.data.length,s=e.data&&e.data.length||0,c=l-s,u=void 0,p=void 0;n>c?(u=n,p=r):(u=c,p=s),u>0&&this.removeData(p,u,!1)}},t.prototype.draw=function(){var e=this.config,t=this.getFromEnv("xAxis"),o=t.getPixel(0),a=t.getPixel(1),r=this.getFromEnv("groupMaxWidth"),n=e.drawn;r||(r=A(a-o),this.addToEnv("groupMaxWidth",r)),!n&&this.createContainer(),t.getState("scrolling")||this.createCoordinates(),this.drawPlots()},t.prototype.createContainer=function(){var e,t,o=this.getType(),a=this.groupName,r=this.getFromEnv("chart"),n=this.getLinkedParent(),i=a||this.dsGroup||o;!n.getChildContainer(i+"VcanvasGroup")&&(i="default"),e=n.getChildContainer(i+"VcanvasGroup"),t=n.getChildContainer(i+"ShadowVcanvasGroup"),!this.getContainer("shadowGroup")&&this.addContainer("shadowGroup",k({name:"shadow-group"},t,this)),!this.getContainer("errorShadowGroup")&&this.addContainer("errorShadowGroup",k({name:"error-shadow-group"},t,this)),!this.getContainer("commonElemsGroup")&&this.addContainer("commonElemsGroup",k({name:"common-elems-group"},e,this)),!this.getContainer("plotGroup")&&this.addContainer("plotGroup",k({name:"plot-group"},e,this)),!this.getContainer("errorPlotGroup")&&this.addContainer("errorPlotGroup",k({name:"error-plot-group"},e,this)),r.hasAnchor&&this.getContainer("errorPlotGroup").insertBefore(this.getContainer("plotGroup")),!this.getContainer("labelGroup")&&this.addContainer("labelGroup",k({name:"label-group","class":"fusioncharts-datalabels"},n.getChildContainer("vcanvasLabelGroup"),this))},t.prototype.createCoordinates=function(){var e,t,o,a,r,n,i,l=this.components.data,s=this.getFromEnv("chart"),c=s.isBar,u=this.getFromEnv("yAxis"),p=this.getFromEnv("xAxis"),h=u.getAxisBase(),d=u.getPixel(h),f=p.config.isVertical,g=s.config.xDepth||0,m=s.config.yDepth||0,v=l.length,b=this.components,y=this.getLinkedParent(),x=y.getstackConf&&y.getstackConf(),w=b.data;for(!c&&(g=-g),c&&(m=-m),a=0;a<v;a++)t=(e=w[a])&&e.config,void 0!==e&&(o=t._b,r=p.getPixel(x&&x[a].x||t._x)+g,n=u.getPixel(t._y)+m,i=(o?u.getPixel(o):d)+m,f?(t._Px=n,t._Py=r,t._Pby=r,t._Pbx=i):(t._Px=r,t._Py=n,t._Pby=i,t._Pbx=r),this.getLineShift&&(t._Py+=this.getLineShift("y")))},t.prototype._decideTooltipType=function(e,t){var o=this.getLinkedParent(),a=this.getFromEnv("chart").config.drawTrendRegion,r=this.components,n=this.getFromEnv("toolTipController"),i=r.data[e],l=i&&(i.config.finalTooltext||i.config.toolText),s=i&&(i.graphics.element||this.graphics.sharedAnchor.element),c=this.config.currentToolTip,u=t.originalEvent;a&&s?this.config.currentToolTip=o._drawTooltip(e,this.config.index,u,c):l&&!a&&(c?n.draw(u,l,c):c=this.config.currentToolTip=n.draw(u,l))},t.prototype._firePlotEvent=function(e,t,o){var a,r=this.getFromEnv("chart"),n=this.components,i=this.getFromEnv("toolTipController"),l=n.data[t],s=l.graphics.element,c=this.config.currentToolTip;if(s)switch(a=l.config.setLink,e){case"fc-mouseover":this._decideTooltipType(t,o),function(e,t,o,a,r){var n=t.graphics,i=e.getFromEnv("animationManager"),l=n&&n.element,s=l&&l.getData();!0!==s.draged&&(i.setAnimationState("mouseOver"),l&&0!==s.showHoverEffect&&i.setAnimation({el:l,attr:l.getData().setRolloverAttr,component:r}),!a&&l&&e.plotEventHandler(l,o,"DataPlotRollOver"))}(r,l,o,void 0,this),a&&(s.node.style.cursor="pointer");break;case"fc-mouseout":i.hide(c),function(e,t,o,a,r){var n=t.graphics,i=e.getFromEnv("animationManager"),l=n&&n.element,s=l&&l.getData();!0!==s.draged&&(i.setAnimationState("mouseOut"),l&&0!==s.showHoverEffect&&i.setAnimation({el:l,attr:l.getData().setRolloutAttr,component:r}),!a&&l&&e.plotEventHandler(l,o,"DataPlotRollOut"))}(r,l,o,void 0,this),a&&(s.node.style.cursor=x);break;case"fc-click":r.plotEventHandler(s,o);break;case"fc-mousemove":this._decideTooltipType(t,o)}},t.prototype.removeData=function(e,t,o){var a,r,n,i=this.getFromEnv("chart"),l=this.components,s=l.data,c=l.removeDataArr||(l.removeDataArr=[]),u=this.config,p=this.maxminFlag;for(void 0===t&&(t=1),(e=e||0)+t!==s.length&&i.isRealTime?0!==e&&void 0!==e||(this.endPosition=!1):this.endPosition=!0,l.removeDataArr=c=c.concat(s.splice(e,t)),a=(n=c.length)-1;a>=0;a--)if(c[a]){if((r=c[a].config).setValue!==u.maxValue&&r.setValue!==u.minValue||(p=this.maxminFlag=!0),r._x-=t,p)break}else c.splice(a,1);this.removeDataLen=n,this.resetCatPos&&this.resetCatPos(),p&&this.getDataLimits&&this.getDataLimits(),o&&this.asyncDraw()},t}(a["default"]);t["default"]=T},576:function(e,t,o){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.heatMap":function(){return{"rect.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"plot"}]},"text.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},577:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(131);function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var i=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.setState("visible",!0),o.getDataLimits=null,o}return n(t,e),t.prototype.getType=function(){return"group"},t.prototype.getName=function(){return"heatMapGroup"},t.prototype.createContainer=function(){var e=void 0,t=this.getLinkedParent(),o=this.getFromEnv("animationManager"),a=void 0,r=t.getChildContainer();for(e in r)a=r[e],!this.getChildContainer(e)&&this.addChildContainer(e,o.setAnimation({el:"group",attr:{name:"manager-"+e},container:a,component:this,label:"group"}))},t.prototype.getLimits=function(e){var t=+Infinity,o=-Infinity,a=void 0,r=0,n=function(e){o=Math.max(o,e.max),t=Math.min(t,e.min)};return this._mapChildren(function(t){t.getState("removed")||!1===t.getState("visible")?e&&(a=t.getDataLimits(e),n(a)):(r++,a=t.getDataLimits(e),n(a))}),r?this.setState("visible",!0):this.setState("visible",!1),this.config.range||(this.config.range={},this.config.range.min=this.config.dataMin,this.config.range.max=this.config.dataMax),{max:o,min:t}},t.prototype.draw=function(){var e=this.getLimits(!0);this.addToEnv("datasetMinValue",e.min),this.addToEnv("datasetMaxValue",e.max),this.createContainer()},t.prototype.getAxisValuePadding=function(){var e={},t=-Infinity,o=-Infinity,a=-Infinity,r=-Infinity;return this._mapChildren(function(n){n.getState("removed")||(e=n.getAxisValuePadding&&n.getAxisValuePadding()||{},t=Math.max(t,e.left||-Infinity),o=Math.max(o,e.right||-Infinity),a=Math.max(a,e.top||-Infinity),r=Math.max(r,e.bottom||-Infinity))}),t===-Infinity&&(t=0),o===-Infinity&&(o=0),a===-Infinity&&(a=0),r===-Infinity&&(r=0),this.config.padding||(this.config.padding={},this.config.padding.left=t,this.config.padding.right=o,this.config.padding.top=a,this.config.padding.bottom=r),{left:t,right:o,top:a,bottom:r}},t}(((a=r)&&a.__esModule?a:{"default":a})["default"]);t["default"]=i},578:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0],o=t.getChildren("axisRefVisualCartesian")[0],a={zoomable:!0,pannable:!0},n=e._feedAxesRawData(),l=void 0,s=void 0,c=function(){return o.asyncDraw()};(0,r.componentFactory)(e,i["default"],"yAxis",1,n.yAxisConf),(0,r.componentFactory)(e,i["default"],"xAxis",1,n.xAxisConf),l=e.getChildren("yAxis")[0],s=e.getChildren("xAxis")[0],l.setLinkedItem("canvas",t),s.setLinkedItem("canvas",t),o.setLinkedItem(l.getId(),l),o.setLinkedItem(s.getId(),s),o.addExtEventListener("visiblerangeset",c,s),o.addExtEventListener("visiblerangeset",c,l),t.attachAxis(s,!1,e.zoomX?a:{}),t.attachAxis(l,!0,e.zoomY?a:{}),e._setCategories()};var a,r=o(118),n=o(321),i=(a=n)&&a.__esModule?a:{"default":a}},586:function(e,t,o){"use strict";t.__esModule=!0;var a=s(o(427)),r=s(o(587)),n=s(o(590)),i=s(o(594)),l=o(118);function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.registerFactory("canvas",i["default"]),o.registerFactory("axis",n["default"],["canvas"]),o}return c(t,e),t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.axisType="polar",t.axisValuePadding=10,t.gridLineWidth=1,t.showRadarBorder=1,t.showvalues=0,t.radarBorderThickness=2,t.skipCanvasDrawing=!0,t.useplotgradientcolor=0,t.plotfillalpha=50},t.prototype.setAxisDimention=function(){var e=this.getChildren("yAxis")&&this.getChildren("yAxis")[0],t=this.config;e&&e.setAxisDimention({x:t.canvasLeft+t.canvasWidth/2,y:t.canvasTop,axisLength:t.canvasHeight/2})},t.prototype._feedAxesRawData=function(){var e,t,o=this.getFromEnv("dataSource");return e=this.getSpecificxAxisConf(),t=this.getSpecificyAxisConf(),e.vtrendlines=o.vtrendlines,t.trendlines=o.trendlines,{xAxisConf:[e],yAxisConf:[t]}},t.prototype.getSpecificxAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config,o=this.getBasexAxisConf();return o.isReverse=t.reverseXAxis,o.axisLineColor=(0,l.pluck)(e.xaxislinecolor,e.axislinecolor,"#000000"),o.showAlternateGridColor=(0,l.pluckNumber)(e.showalternatevgridcolor,1),o.numDivLines=e.numvdivlines,o.axisName=e.xaxisname,o.setAdaptiveMin=e.setadaptivexmin,o.showLimits=e.showvlimits,o.showDivLineValues=(0,l.pluckNumber)(e.showvdivlinevalues,e.showvdivlinevalues),o.zeroPlaneThickness=e.vzeroplanethickness,o.zeroPlaneAlpha=e.vzeroplanealpha,o.showZeroPlaneValue=e.showvzeroplanevalue,o.showAxisLine=(0,l.pluckNumber)(e.showxaxisline,e.showaxislines,e.drawAxisLines,0),o.showRadarBorder=e.showradarborder,o.radarBorderColor=e.radarbordercolor,o.radarBorderThickness=e.radarborderthickness,o.radarBorderAlpha=e.radarborderalpha,o.radarFillColor=e.radarfillcolor,o.radarFillAlpha=e.radarfillalpha,o.radarSpikeColor=e.radarspikecolor,o.radarSpikeThickness=e.radarspikethickness,o.radarSpikeAlpha=e.radarspikealpha,o.radarInLineAlpha=e.radarinlinealpha,o.showTooltip=(0,l.pluckNumber)(e.showtooltip,1),o},t.prototype.getSpecificyAxisConf=function(){var e=this.getFromEnv("chart-attrib"),t=this.config,o=this.config.is3D?l.chartPaletteStr.chart3D:l.chartPaletteStr.chart2D,a=t.isInverse,r=this.getFromEnv("color-manager");return{isVertical:!0,isReverse:!a,isOpposit:!1,outCanfontFamily:(0,l.pluck)(e.outcnvbasefont,e.basefont,"Verdana,sans"),outCanfontSize:(0,l.pluckFontSize)(e.outcnvbasefontsize,e.basefontsize,10),outCancolor:(0,l.pluck)(e.outcnvbasefontcolor,e.basefontcolor,r.getColor(o.baseFontColor)).replace(/^#? ([a-f0-9]+)/gi,"#$1"),axisNamePadding:e.yaxisnamepadding,axisValuePadding:e.yaxisvaluespadding,axisNameFont:e.yaxisnamefont,axisNameFontSize:e.yaxisnamefontsize,axisNameFontColor:e.yaxisnamefontcolor,axisNameFontBold:e.yaxisnamefontbold,axisNameFontItalic:e.yaxisnamefontitalic,axisNameBgColor:e.yaxisnamebgcolor,axisNameBorderColor:e.yaxisnamebordercolor,axisNameAlpha:e.yaxisnamealpha,axisNameFontAlpha:e.yaxisnamefontalpha,axisNameBgAlpha:e.yaxisnamebgalpha,axisNameBorderAlpha:e.yaxisnameborderalpha,axisNameBorderPadding:e.yaxisnameborderpadding,axisNameBorderRadius:e.yaxisnameborderradius,axisNameBorderThickness:e.yaxisnameborderthickness,axisNameBorderDashed:e.yaxisnameborderdashed,axisNameBorderDashLen:e.yaxisnameborderdashlen,axisNameBorderDashGap:e.yaxisnameborderdashgap,axisNameWidth:e.yaxisnamewidth,useEllipsesWhenOverflow:e.useellipseswhenoverflow,rotateAxisName:(0,l.pluckNumber)(e.rotateyaxisname,1),divLineColor:(0,l.pluck)(e.divlinecolor,r.getColor(o.divLineColor)),divLineAlpha:(0,l.pluck)(e.divlinealpha,r.getColor("divLineAlpha")),divLineThickness:(0,l.pluckNumber)(e.divlinethickness,1),divLineIsDashed:Boolean((0,l.pluckNumber)(e.divlinedashed,e.divlineisdashed,0)),divLineDashLen:(0,l.pluckNumber)(e.divlinedashlen,4),divLineDashGap:(0,l.pluckNumber)(e.divlinedashgap,2),showAlternateGridColor:(0,l.pluckNumber)(e.showalternatehgridcolor,1),alternateGridColor:(0,l.pluck)(e.alternatehgridcolor,r.getColor("altHGridColor")),alternateGridAlpha:(0,l.pluck)(e.alternatehgridalpha,r.getColor("altHGridAlpha")),numDivLines:e.numdivlines,axisMinValue:e.yaxisminvalue,axisMaxValue:e.yaxismaxvalue,setAdaptiveMin:e.setadaptiveymin,adjustDiv:e.adjustvdiv,labelStep:e.yaxisvaluesstep,showAxisValues:(0,l.pluckNumber)(e.showyaxisvalues,e.showyaxisvalue),showLimits:(0,l.pluckNumber)(e.showyaxislimits,e.showlimits,this.showLimits),showDivLineValues:(0,l.pluckNumber)(e.showdivlinevalues,e.showdivlinevalue),zeroPlaneColor:e.zeroplanecolor,zeroPlaneThickness:(0,l.pluckNumber)(e.zeroplanethickness,e.divlinethickness,2),zeroPlaneAlpha:e.zeroplanealpha,showZeroPlaneValue:e.showzeroplanevalue,trendlineColor:e.trendlinecolor,trendlineToolText:e.trendlinetooltext,trendlineThickness:e.trendlinethickness,trendlineAlpha:e.trendlinealpha,showTrendlinesOnTop:e.showtrendlinesontop,axisLineThickness:(0,l.pluckNumber)(e.yaxislinethickness,e.axislinethickness,1),axisLineAlpha:(0,l.pluckNumber)(e.yaxislinealpha,e.axislinealpha,100),axisLineColor:(0,l.pluck)(e.yaxislinecolor,e.axislinecolor,"#000000"),showTooltip:(0,l.pluckNumber)(e.showtooltip,1)}},t.prototype._spaceManager=function(){var e,t,o,a,r,n,i,s=this.config,c=s.radarBorderThickness,u=s.legendposition,p=this.getChildren("xAxis")&&this.getChildren("xAxis")[0],h=(this.getChildren("yAxis")&&this.getChildren("yAxis")||[])[0],d=s.hasLegend,f=this.getChildren("legend")&&this.getChildren("legend")[0],g=l.preDefStr.POSITION_BOTTOM,m=Math,v=m.min,b=m.abs;r=u===g?.3*s.canvasHeight:.3*s.canvasWidth,!1!==d&&p&&s.showLegend&&this._allocateSpace(f._manageLegendPosition(r)),a=.7*s.canvasHeight,o=.7*s.canvasWidth,p&&this._allocateSpace(p.placeAxis(o,a)),o=.7*s.canvasWidth,h&&h.placeAxis(o),e=.225*s.availableHeight,t=this._manageActionBarSpace&&(this._manageActionBarSpace(e)||{}),this._allocateSpace(t),n=s.radarradius>0?2*s.radarradius:v(s.canvasHeight,s.canvasWidth),s.canvasHeight>n&&(i=b((s.canvasHeight-n)/2),this._allocateSpace({top:i,bottom:i})),s.canvasWidth>n&&(i=b((s.canvasWidth-n)/2),this._allocateSpace({left:i,right:i})),a=u===g?.6*s.availableHeight:.6*s.availableWidth,this._manageChartMenuBar(a),h.setAxisDimention({x:s.canvasLeft+s.canvasWidth/2-c/2,y:s.canvasTop,axisLength:s.canvasHeight/2}),p.setAxisConfig({radius:v(s.canvasWidth/2,s.canvasHeight/2)-c/2}),p.setAxisDimention({x:s.canvasLeft+s.canvasWidth/2,y:s.canvasTop+s.canvasHeight/2})},t.getName=function(){return"Radar"},t.prototype.getName=function(){return"Radar"},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=u},587:function(e,t,o){"use strict";t.__esModule=!0;var a=c(o(347)),r=c(o(588)),n=o(125),i=o(589),l=o(118),s=o(122);function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var p=l.regex.dropHash;(0,n.addDep)({name:"radarAnimation",type:"animationRule",extension:r["default"]});var h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return u(t,e),t.prototype.getName=function(){return"radar"},t.prototype.createCoordinates=function(){var e,t,o,a,r,n,l,s,c=this.components.data,u=this.getFromEnv("chart").config,p=this.getFromEnv("yAxis"),h=this.getFromEnv("xAxis"),d=c.length,f=this.components.data;for(o=0;o<d;o++)s=(t=(e=f[o])&&e.config).setValue,void 0!==e&&(l=p.getPixel(s+0),r=(n=(0,i.getCoordinates)({radius:u.canvasTop+u.canvasHeight/2-l,theta:o},h)).y,a=n.x,t._Px=a,t._Py=r,t._Pbx=a,t._Pby=r)},t.prototype.getLinePath=function(e,t,o){var a,r,n,l,s,c=this.getFromEnv("chart").config,u={},p=u.lastValidValue||!1,h=u.temp||[],d=u.temp2||[],f=u.pathArr||[],g=e.length,m=u.pointsJoined||0,v=t&&t.begin||0,b=t&&t.end||g,y=c.viewPortConfig.step||1,x=this.getFromEnv("yAxis"),w=this.getFromEnv("xAxis"),k=x.getPixel(0),C=(this.removeDataLen,[]);for(0,C=C.concat(e),a=v;a<b+0;a+=y)(s=C[a])&&(null===(r=s.config).setValue||r&&!0===r.isSkipped?(n=(0,i.getCoordinates)({theta:w.getLimit().min},w).x,l=x.getPixel(x.config.axisRange.min)):(n=r._Px,l=r._Py),"zero"===o?l=k:"base"===o&&(l=r._Pby),p?(h.length&&(f=f.concat(h),h=[],m++),f.push(["L",n,l])):(h.push(["M",n,l]),m=0,p=!0));return"Z"!==f[f.length-1]&&m>0&&f.push("Z"),{pathArr:f,path2Arr:[],lastValidValue:p,pointsJoined:m,temp:h,temp2:d,getPathArr:function(){var e=this.pathArr,t=this.path2Arr;return e.length||t.length?e.concat(t):[]}}},t.prototype.configureAttributes=function(t){if(!t)return!1;this.trimData(t),this.JSONData=t;var o=this.config,a=this.getFromEnv("chart"),r=this.index,n=a.getFromEnv("dataSource").chart,i=this.getFromEnv("color-manager"),s=this.JSONData,c=i.getPlotColor(r);e.prototype.configureAttributes.call(this,t),o.defaultPadding={left:0,right:0},o.plotfillcolor=(0,l.pluck)(s.color,n.plotfillcolor,c),o.plotbordercolor=(0,l.pluck)(s.plotbordercolor,n.plotbordercolor,n.areabordercolor,c).split(",")[0],o.fillColor={color:o.plotfillcolor+(o.plotgradientcolor?","+o.plotgradientcolor:l.BLANKSTRING),alpha:o.plotfillalpha,angle:o.plotfillangle},o.legendSymbolColor=o.plotfillcolor},t.prototype._getHoveredPlot=function(e,t){var o,a,r,n,l=this.getFromEnv("xAxis"),s=this.components.data,c=s.length,u=this.config,p=360/c;for(a=Math.floor(Math.max((0,i.getPlotFromPixel)({x:e-u.maxRadius,y:t},l)/p-1,0)),n=Math.floor(Math.max((0,i.getPlotFromPixel)({x:e+u.maxRadius,y:t},l)/p,c-1));n>=a&&(!(o=s[n])||!(r=this.isWithinShape(o,n,e,t)));n--);return r},t.prototype._contextChanged=function(){this.config.context||(this.config.context={});var t,o,a=this.config.context,r=this.getFromEnv("xAxis"),n=a.axisCenterX;return t=!((o=r.config.axisDimention.centerX)===n),a.axisCenterX=o,t||e.prototype._contextChanged.call(this)},t.prototype.getPlotInCategoryAt=function(e,t){var o=this.components.data,a=this.getFromEnv("xAxis"),r=this.getState("visible"),n=Math.round((0,i.getPlotFromPixel)({x:e,y:t},a)),l=o.find(function(e,t,o){var r,l,s,c,u=void 0,p=void 0;return 0===t?(u=o[t+1],p=o[o.length-1]):t===o.length-1?(u=o[0],p=o[o.length-2]):(u=o[t+1],p=o[t-1]),r=(0,i.getPlotFromPixel)({x:e.config._Px,y:e.config._Py},a),l=t===o.length-1?360:(0,i.getPlotFromPixel)({x:u.config._Px,y:u.config._Py},a),s=(0,i.getPlotFromPixel)({x:p.config._Px,y:p.config._Py},a),n<=0+(c=(l-r)/2)?n>=0&&n<=0+c:n>360-c?n>=360-c&&n<=360:n>=s+c&&n<=l-c}),s=this._getHoveredPlot(e,t);return r&&s?s:!(!r||!l)&&{pointIndex:l._index,hovered:!1,pointObj:l}},t.prototype._addLegend=function(){var e,t,o,a,r=this.config,n=this.getFromEnv("chart-attrib"),i=this.getFromEnv("legend"),c=r.legendSymbolColor,u=(0,l.pluckNumber)(n.use3dlighting,n.useplotgradientcolor,1);e=(0,s.getLightColor)(c,60).replace(p,l.HASHSTRING),t=u?{FCcolor:{color:c+","+c+","+(0,s.getLightColor)(c,40)+","+c+","+c,ratio:"0,70,30",angle:270,alpha:"100,100,100,100,100"}}:{FCcolor:{color:c,angle:0,ratio:"0",alpha:"100"}},o={enabled:r.includeInLegend,type:this.type,label:(0,l.getFirstValue)(this.JSONData.seriesname)},r.includeinlegend?((a=i.getItem(this.config.legendItemId))||(this.config.legendItemId=i.createItem(this),a=i.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){a.itemClickFn()},a)),a.configure(o),a.setStateCosmetics("default",{symbol:{fill:(0,l.toRaphaelColor)(t),rawFillColor:c,stroke:(0,l.toRaphaelColor)(e)}}),this.getState("visible")?a.removeLegendState("hidden"):a.setLegendState("hidden")):this.config.legendItemId&&i.disposeItem(this.config.legendItemId)},t.prototype.getOldPath=function(e,t){var o,a=t.x,r=t.y,n=this.config&&this.config.prevLim,i=n.x,s=n.y,c=0,u=e.pathArr.length,p=function(e){return(e=((e=(e=(e-i.minPixel.x)/(i.maxPixel.x-i.minPixel.x))*(i.max-i.min)+i.min)-a.min)/(a.max-a.min))*(a.maxPixel.x-a.minPixel.x)+a.minPixel.x+1},h=function(e){return e===s.base?r.base:function(e){return(e<s.base&&e>r.base||e>s.base&&e<r.base)&&(e=r.base),e-1}(e)};if(s.min===r.min&&i.min===a.min&&s.max===r.max&&i.max===a.max)return e;if(e=(0,l.extend2)({},e),!n)return[];for(e.pathArr=e.pathArr.slice(0),e.path2Arr=e.path2Arr.slice(0),c=u;c--;)(o=e.pathArr[c].slice(0))[1]&&o.join&&(o[1]=p(o[1]),o[2]=h(o[2]),e.pathArr[c]=o);for(c=e.path2Arr.length;c--;)(o=e.path2Arr[c].slice(0))[1]&&o.join&&(o[1]=p(o[1]),o[2]=h(o[2]),e.path2Arr[c]=o);return e},t.prototype._setConfigure=function(){var e,t,o,a,r=this.config,n=this.config.JSONData.data||[],i=this.getFromEnv("xAxis").getTicksLen();for(r.imageCount=0,(o=this.components.data)||(o=this.components.data=[]),r.maxRadius=-Infinity,a=0;a<i;a++)t=o[a],e=n&&n[a]||{},t||(t=o[a]={}),t.config||(o[a].config={}),t.graphics||(t.graphics={}),this._plotConfigure(a,e)},t}(a["default"]);t["default"]=h},588:function(e,t,o){"use strict";t.__esModule=!0;var a=o(589);t["default"]={"initial.dataset.radar":function(){return{"anchor.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},startEnd:{start:.5,end:1},slot:"plot"}]},"anchor.updating":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"anchor.disappearing":function(){return[{finalAttr:{opacity:0,"fill-opacity":0,"stroke-opacity":0},slot:"final"}]},"line.appearing":function(e){var t=e.component,o=t.getFromEnv("xAxis"),r=t.getFromEnv("yAxis"),n=o.getTicksLen(),i=t.getFromEnv("chartConfig"),l=e.attr,s=i.canvasTop+i.canvasHeight/2,c=[],u=void 0;for(u=0;u<n;u++)c.push(u?"L":"M"),c.push((0,a.getCoordinates)({radius:s,theta:0},o).x),c.push(r.getPixel(0));return c.push("Z"),[{initialAttr:{opacity:0,path:c},finalAttr:{opacity:1,path:l.path},startEnd:{start:0,end:.5},slot:"middle"}]},"label.appearing":[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],"*":null}}}},590:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0],o=e._feedAxesRawData(),i=t.getChildren("axisRefVisualPolar")[0],l=void 0,s=void 0,c=function(){return i.asyncDraw()};(0,n.componentFactory)(e,a["default"],"yAxis",1,o.yAxisConf),(0,n.componentFactory)(e,r["default"],"xAxis",1,o.xAxisConf),l=e.getChildren("yAxis")[0],s=e.getChildren("xAxis")[0],l.setLinkedItem("canvas",t),i.setLinkedItem(l.getId(),l),i.setLinkedItem(s.getId(),s),i.addExtEventListener("visiblerangeset",c,s),i.addExtEventListener("visiblerangeset",c,l),t.attachAxis(s,!1,{}),t.attachAxis(l,!0,{}),e._setCategories()};var a=i(o(292)),r=i(o(591)),n=o(118);function i(e){return e&&e.__esModule?e:{"default":e}}},591:function(e,t,o){"use strict";t.__esModule=!0;var a=d(o(295)),r=o(118),n=o(122),i=o(589),l=d(o(298)),s=d(o(313)),c=d(o(592)),u=o(125),p=d(o(322)),h=o(301);function d(e){return e&&e.__esModule?e:{"default":e}}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var g=r.preDefStr.POSITION_MIDDLE,m=r.preDefStr.POSITION_START,v=r.preDefStr.POSITION_TOP,b=r.preDefStr.POSITION_BOTTOM,y=r.preDefStr.POSITION_END,x=Math,w=x.min,k=x.PI,C=2*k;(0,u.addDep)({name:"polarAnimation",type:"animationRule",extension:c["default"]});var N=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.config.scale=new p["default"],o.config.referenceInfo=[],o}return f(t,e),t.prototype.getName=function(){return"polarCategory"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.drawPlotBands=!1,this.config.forceZeroTick=!1},t.prototype.configureAttributes=function(t){var o=this.config,a=t,i=this.getFromEnv("chart").getFromEnv("dataSource").chart,l=this.getFromEnv("color-manager");e.prototype.configureAttributes.call(this,t),o.gridLineColor=(0,n.convertColor)((0,r.pluck)(a.radarSpikeColor,l.getColor("divLineColor")),(0,r.pluckNumber)(a.radarSpikeAlpha,a.radarInLineAlpha,l.getColor("divLineAlpha"))),o.radarSpikeThickness=(0,r.pluckNumber)(i.radarspikethickness,1)},t.prototype.setAxisDimention=function(e){var t,o=this.getScale(),a=this.config,n=this.getFromEnv("chart").config,i=a.startAngle||-k/2,l=a.totalAngle||-C,s=i+l,c=l/((a.tickValues.tickValue||[]).length||1),u=a.axisDimention||(a.axisDimention={});u.opposite=(0,r.pluckNumber)(e.opposite,u.opposite),u.centerX=(0,r.pluckNumber)(e.x,u.x,n.canvasLeft),u.centerY=(0,r.pluckNumber)(e.y,u.y,n.canvasTop),u.axisLength=C,s-=c,t=a.clockWise?[s,i]:[i,s],o.setRange(t)},t.prototype._parseCategoryPlotLine=function(){var e,t,o,a=this.config,r=a.tickValues.tickValue,n=a.gridLineColor,i=a.radarSpikeThickness,l=a.referenceInfo;if(e={stroke:n,"stroke-width":i},(!r[0]||void 0===r[0].x&&void 0===r[0].y)&&a.lines.isDraw&&a.numDivLines)for(t=0;t<r.length;++t)o=t,l.push({from:o,type:"line",layer:1,attr:e})},t.prototype.placeAxis=function(e,t){var o,a,n,i,l,s,c,u,p=this.config,h=this.getFromEnv("chart"),d=h.getFromEnv("smartLabel"),f=p.labels.style,g=h.getFromEnv("dataSource").categories,m=p.labelPadding=(0,r.pluckNumber)(p.rawAttr.axisValuePadding,10),v=p.useEllipsesWhenOverflow,b=0,y=0,x=0,k=0,C=t/2,N=t/2,S=e/2,E=e/2,A=p.tickValues&&p.tickValues.tickValue;if(p.labels.isDraw=1,p.labels.drawNormalVal=1,p.labels.drawLimitVal=1,this.components||(this.components={}),this.components.labels=[],p.showLabels){if(g){var T=g[0];l={fontFamily:T.font,fontSize:T.fontsize,color:T.fontcolor}}for(o=0,a=A.length;o<a;o++)s={fontFamily:(n=A[o]).font,fontSize:n.fontsize,fontWeight:n.fontbold?"bold":"normal",fontStyle:n.fontitalic?"italic":"normal"},c={fontFamily:(0,r.pluck)(s.fontFamily,l.fontFamily,f.fontFamily),fontSize:(0,r.pluck)(s.fontSize,l.fontSize,f.fontSize),fontWeight:(0,r.pluck)(s.fontWeight,f.fontWeight),fontStyle:(0,r.pluck)(s.fontStyle,f.fontStyle)},u=(0,r.setLineHeight)(c),d.useEllipsesOnOverflow(h.config.useEllipsesWhenOverflow),d.setStyle(c),void 0===n.oriLabel&&(n.oriLabel=n.label),0===o?(i=d.getSmartText(n.oriLabel,e,w(u,C),v),n.label=i.text,n.tooltext=i.tooltext,i.width+=m,i.height+=m,i.height>b&&(k=b=i.height)):o===a/2?(i=d.getSmartText(n.oriLabel,e,w(u,N),v),n.label=i.text,n.tooltext=i.tooltext,i.width+=m,i.height+=m,i.height>k&&(k=i.height)):o<a/2?(i=d.getSmartText(n.oriLabel,E,u,v),n.label=i.text,n.tooltext=i.tooltext,i.width+=m,i.height+=m,i.width>y&&(y=i.width)):(i=d.getSmartText(n.oriLabel,S,u,v),n.label=i.text,n.tooltext=i.tooltext,i.width+=m,i.height+=m,i.width>x&&(x=i.width)),this.components.labels.push({config:{width:i.width,height:i.height,props:{label:{attr:{}}}}})}else for(o=0,a=A.length;o<a;o++)this.components.labels.push({config:{width:0,height:0,props:{label:{attr:{}}}}});return{top:b,left:y,right:x,bottom:k}},t.prototype._drawComponents=function(){var e=this.config;e.drawLabels&&e.hasCategory&&this._drawCategory()},t.prototype.allocatePosition=function(){var e=this.config;e.drawLabels&&e.hasCategory&&this._parseCategory()},t.prototype._parseCategory=function(){var e,t,o,a,l,s,c,u,p,h,d,f,x,w,k,C,N,S,E=this.config,A=this.getFromEnv("chart"),T=E.isOpposit,D=E.labels,L=D.style,_=this.config.categoryLabel||(this.config.categoryLabel={}),P=A.getFromEnv("dataSource").categories,O=E.tickValues.tickValue,V=E.labelPadding,M={},F={},I=E.axisDimention.centerX,B=E.axisDimention.centerY,R=this.getScale();if(w=(0,r.pluckNumber)(E.radius,0),0,t=O?O.length-1:0,E.labels.isDraw){if(P){var j=P[0];M.fontFamily=j.font,M.fontSize=j.fontsize,M.color=j.fontcolor}for(e=0;e<=t;e++)o=O[e],d=(0,r.pluckNumber)(o.x,o.y,e),(E.labels.drawNormalVal||E.labels.drawLimitVal&&(0===e||d===t))&&(E.labels.drawNormalVal||0===d||d===t)&&(E.labels.drawLimitVal||0!==d&&d!==t)&&(F={fontFamily:(0,r.pluck)(o.font,o.labelfont),fontSize:(0,r.pluck)(o.fontsize,o.labelfontsize),fontWeight:(0,r.pluckNumber)(o.fontbold,o.labelfontbold,0)?"bold":void 0,fontStyle:(0,r.pluckNumber)(o.fontitalic,o.labelfontitalic,0)?"italic":void 0},p=(0,n.convertColor)((0,r.pluck)(o.fontcolor,o.labelfontcolor,M.color,L.color),(0,r.pluckNumber)(o.labelalpha,E.rawAttr.labelFontAlpha,100)),(c={fontFamily:(0,r.pluck)(F.fontFamily,M.fontFamily,L.fontFamily),fontSize:(0,r.pluck)(F.fontSize,M.fontSize,L.fontSize),fontWeight:(0,r.pluck)(F.fontWeight,L.fontWeight),fontStyle:(0,r.pluck)(F.fontStyle,L.fontStyle)}).lineHeight=(0,r.setLineHeight)(c),c.lineHeight&&-1!==(l=c.lineHeight).indexOf("px")&&(l=l.replace(/px/i,""),l=parseFloat(l)),C=R.getRangeValue(d),(h=(0,i.polarToCartesian)(w+V,C)).x+=I,h.y+=B,f=h.x,x=h.y,a=o.label||"",0!==(0,r.pluckNumber)(o.showlabel,1)&&0!==E.showLabels||(a=""),s=o.labelPadding||0,u={fill:p,"line-height":l,"font-size":L.fontSize,text:a,cursor:o.link?"pointer":"default",x:f,y:x},s&&(u.y+=s),u["vertical-align"]=T?b:v,0===e?(u["text-anchor"]=g,u["vertical-align"]=b):e===(t+1)/2?(u["text-anchor"]=g,u["vertical-align"]=v):e<(t+1)/2?(u["text-anchor"]=y,u["vertical-align"]=g):(u["text-anchor"]=m,u["vertical-align"]=g),C=R.getRangeValue(d),(k=(0,i.polarToCartesian)(w,C)).x+=I,k.y+=B,D.shiftX&&(u.x+=D.shiftX),D.shiftY&&(u.y+=D.shiftY),(_=E.categoryLabel=_||{})[S="Label"+e]=_[S]||{},_[S].config=_[S].config||{},_[S].config.labelBox=N={label:a,lineHeight:c.lineHeight,border:(0,r.pluckNumber)(o.borderthickness,o.labelborderthickness)?(0,r.pluckNumber)(o.borderthickness,o.labelborderthickness,1)+"px solid":"",borderColor:o.bordercolor||o.labelbordercolor?(0,n.convertColor)(o.bordercolor||o.labelbordercolor,(0,r.pluckNumber)(o.borderalpha,o.labelborderalpha,o.alpha,o.labelalpha,100)):r.BLANKSTRING,borderThickness:(0,r.pluckNumber)(o.borderthickness,o.labelborderthickness),borderPadding:(0,r.pluckNumber)(o.borderpadding,o.labelborderpadding),borderRadius:(0,r.pluckNumber)(o.borderradius,o.labelborderradius),backgroundColor:o.bgcolor||o.labelbgcolor?(0,n.convertColor)(o.bgcolor||o.labelbgcolor,(0,r.pluckNumber)(o.bgalpha,o.labelbgalpha,o.alpha,o.labelalpha,100)):r.BLANKSTRING,borderDash:(0,r.pluckNumber)(o.borderdashed,o.labelborderdashed,0)?(0,r.getDashStyle)((0,r.pluckNumber)(o.borderdashlen,o.labelborderdashlen,4),(0,r.pluckNumber)(o.borderdashgap,o.labelborderdashgap,2)):0===(0,r.pluckNumber)(o.borderdashed,o.labelborderdashed)?"none":L.borderDash},_[S].config.labelBox["text-bound"]=a?[(0,r.pluck)(N.backgroundColor,L.backgroundColor),(0,r.pluck)(N.borderColor,L.borderColor),(0,r.pluck)(N.borderThickness,L.borderThickness),(0,r.pluck)(N.borderPadding,L.borderPadding),(0,r.pluck)(N.borderRadius,L.borderRadius),(0,r.pluck)(N.borderDash,L.borderDash)]:[],u["text-bound"]=_[S].config.labelBox["text-bound"],this.components.labels[e].config.props.label.css=c,this.components.labels[e].config.props.label.attr=Object.assign(this.components.labels[e].config.props.label.attr,u))}},t.prototype._drawCategory=function(){var e,t,o,a,n,i,s,c,u,p,h,d=this,f=d.config,g=d.getFromEnv("chart"),m=g.getFromEnv("animationManager"),v=f.labels.style,b=f.axisContainer,y=f.tickValues.tickValue,x=function(e){return function(t){g.plotEventHandler(this,t,e)}},w=d.getFromEnv("toolTipController"),k=0,C=[];if(0,t=y?y.length-1:0,f.labels.isDraw){for(e=0,k=0;e<=t;e++)o=y[e],c=(0,r.pluckNumber)(o.x,o.y,e),(f.labels.drawNormalVal||f.labels.drawLimitVal&&(0===e||c===t))&&(f.labels.drawNormalVal||0===c||c===t)&&(f.labels.drawLimitVal||0!==c&&c!==t)&&(p="Label"+e,C.push(p),s=d.components.labels[e].config.props.label.attr,i=d.components.labels[e].config.props.label.css,n=d.getGraphicalElement(p),a=m.setAnimation({css:i,el:n||"text",attr:s,container:b,component:d,label:"polarLabel"}),f.showTooltip&&o.tooltext?w.enableToolTip(a,o.tooltext):w.disableToolTip(a),a.data("eventArgs",{link:o.link||o.labellink||v.labelLink,text:s.text,index:k}),n||(d.addGraphicalElement(p,a),a.on("fc-click",x("datalabelclick")).hover(x("dataLabelRollOver"),x("dataLabelRollOut"))),k+=1);f.labelMap=f.labelMap||[],h=(0,l["default"])(f.labelMap,C)}else h=C;f.labelMap=C,function(t){for(e=0;e<t.length;++e)(u=d.getGraphicalElement(t[e]))&&d.removeGraphicalElement(u)}(h)},t.prototype.getTranslation=function(){if(this)return 0},t.prototype.getReferenceInfo=function(){return this.config.referenceInfo},t.prototype.setVisibleConfig=function(e,t){var o,a=this.config,r=this.getScale();return!(e>=t||e<a.axisRange.min||t>a.axisRange.max)&&(o=r.setDomain([e,t]).getDomain(),a.visibleMin=o[0],a.visibleMax=o[1],this.clearReferenceInfo(),this._parseReferenceVisuals(),this.fireEvent("visiblerangeset",{minValue:e,maxValue:t}),this.asyncDraw(),!0)},t.prototype._parseReferenceVisuals=function(){this.config.drawPlotlines&&this._parseCategoryPlotLine()},t.prototype.clearReferenceInfo=function(){this.config.referenceInfo=[]},t.prototype._setAxisRange=function(e){var t,o=e.min,a=e.max,r=this.config,n=r.axisRange,i=e.divGap;o>a||(t=(a-o)/(r.categoryNumDivLines+1),this.getScale().setDomain([o,a]),r.ticks=(0,s["default"])(o,a,t).concat(a),r._allTicks=r.ticks.slice(),n.min=o,n.max=a,n.tickInterval=i||t,this.setVisibleConfig(n.min,n.max))},t}(a["default"]);N.prototype.setTickValues=h.setTickValues,N.prototype.shiftLabels=h.shiftLabels,N.prototype._createContainer=h._createContainer,N.prototype.setAxisPadding=h.setAxisPadding,N.prototype.getPixel=h.getPixel,N.prototype.getLabel=h.getLabel,t["default"]=N},592:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(593),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.axis.polar":function(){return{"path.appearing":n["default"],"text.appearing":n["default"]}}}},594:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t=void 0;(0,n.componentFactory)(e,a["default"],"canvas",e.config.showVolumeChart?2:1);for(var o=0,i=(t=e.getChildren("canvas")).length;o<i;o++)t[o].configure(),(0,n.componentFactory)(t[o],r["default"],"axisRefVisualPolar")};var a=i(o(595)),r=i(o(596)),n=o(118);function i(e){return e&&e.__esModule?e:{"default":e}}},595:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(263),n=(a=r)&&a.__esModule?a:{"default":a},i=o(589),l=o(118),s=o(122);function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getName=function(){return"polarCanvas"},t.prototype.getType=function(){return"canvas"},t.prototype.configureAttributes=function(){e.prototype.configureAttributes.call(this);var t=this.config,o=this.getFromEnv("chart"),a=o.getFromEnv("dataSource").chart,r=o.getFromEnv("color-manager");t.radarBorderColor=(0,s.convertColor)((0,l.pluck)(a.radarbordercolor,r.getColor("divLineColor")),(0,l.pluckNumber)(a.radarborderalpha,100)),t.radarFillColor=(0,s.convertColor)((0,l.pluck)(a.radarfillcolor,r.getColor("altHGridColor")),(0,l.pluckNumber)(a.radarfillalpha,r.getColor("altHGridAlpha"))),t.radarBorderThickness=(0,l.pluckNumber)(a.radarborderthickness,2),t.showRadarBorder=(0,l.pluckNumber)(a.showradarborder,1)},t.prototype.draw=function(){this.createGroup(),this.drawCanvas()},t.prototype.drawCanvas=function(){var e,t,o,a,r=this.config,n=this.getFromEnv("chart"),s=n.config,c=n.getChildren("xAxis")[0],u=n.getFromEnv("animationManager"),p=this.getContainer("radarBorderContainer"),h=this.getContainer("canvasGroup"),d=c.config,f={stroke:r.radarBorderColor,fill:r.radarFillColor,"stroke-width":r.radarBorderThickness,path:[]},g=void 0,m=d.tickValues.tickValue,v=void 0,b=c.getScale(),y=void 0,x=this.getGraphicalElement("radarBorder"),w=d.axisDimention.centerX,k=d.axisDimention.centerY;if(o=(0,l.pluckNumber)(d.radius,0),0,t=m?m.length-1:0,r.canvasLeft=r.canvasLeft||s.canvasLeft,r.canvasTop=r.canvasTop||s.canvasTop,r.canvasWidth=r.canvasWidth||s.canvasWidth,r.canvasHeight=r.canvasHeight||s.canvasHeight,0!==r.showRadarBorder){for(f.path.push("M"),g=0;g<=t;g++)v=b.getRangeValue(g),(y=(0,i.polarToCartesian)(o,v)).x+=w,y.y+=k,f.path.push(y.x,y.y,"L");f.path.pop(),f.path.push("Z")}e=u.setAnimation({el:p||"group",attr:{name:"radarBorderContainer"},container:h,component:this,label:"group"}),p||this.addContainer("radarBorderContainer",e),a=u.setAnimation({el:x||"path",attr:f,container:e,component:c,label:"path"}),x||this.addGraphicalElement("radarBorder",a)},t}(n["default"]);t["default"]=u},596:function(e,t,o){"use strict";t.__esModule=!0;var a=s(o(324)),r=o(589),n=o(118),i=o(125),l=s(o(597));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),a=0;a<o.length;a++){var r=o[a],n=Object.getOwnPropertyDescriptor(t,r);n&&n.configurable&&e[r]===undefined&&Object.defineProperty(e,r,n)}}(e,t))}(0,i.addDep)({name:"axisRefPolarAnimation",type:"animationRule",extension:l["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"axisRefVisuals"},t.prototype.getName=function(){return"axisRefVisualsPolar"},t.prototype.createLine=function(e,t){return"polarCategory"===t.getName()?this.createNormalLine(e,t):"numeric"===t.getName()?this.createRadialLine(e,t):void 0},t.prototype.createRadialLine=function(e,t){var o,a,n=this.getFromEnv("xAxis")[0],i=n.config.tickValues.tickValue,l=t,s=this.config.containers[e.layer],c=this.getFromEnv("animationManager"),u=this.getFromEnv("toolTipController"),p=void 0,h=void 0,d=e.attr,f=["M"],g=void 0,m=l.getId()+"_"+(e.id||e.from),v=e.handlers,b=this.getGraphicalElement(m);for(a=function(e,t){var o=e.getScale(),a=e.config.axisRange;return Math.abs(o.getRangeValue(t)-o.getRangeValue(a.min))}(l,e.from),0,o=i?i.length-1:0,p=0;p<=o;p++)g=(0,r.getCoordinates)({radius:a,theta:p},n),f.push(g.x,g.y,"L");for(h in f.pop(),f.push("Z"),d.path=f,b=this.addGraphicalElement(m,c.setAnimation({container:s,el:b||"path",attr:d,component:this,label:"path"})),e.toolText?u.enableToolTip(b,e.toolText):u.disableToolTip(b),v)v.hasOwnProperty(h)&&b.on(h,v[h].bind(t));return[m]},t.prototype.createNormalLine=function(e,t){var o,a=this.config,i=t.config,l=(0,n.pluckNumber)(i.radius,0),s=["M"],c=a.containers[e.layer],u=this.getFromEnv("animationManager"),p=this.getFromEnv("toolTipController"),h=void 0,d=i.axisDimention.centerX,f=i.axisDimention.centerY,g=t.getId()+"_"+(e.id||e.from),m=e.handlers,v=this.getGraphicalElement(g);for(h in s.push(d,f,"L"),o=(0,r.getCoordinates)({radius:l,theta:e.from},t),s.push(o.x,o.y),e.attr.path=s,v=this.addGraphicalElement(g,u.setAnimation({container:c,el:v||"path",attr:e.attr,component:this,label:"path"})),e.toolText?p.enableToolTip(v,e.toolText):p.disableToolTip(v),m)m.hasOwnProperty(h)&&v.on(h,m[h].bind(t));return[g]},t.prototype.createBand=function(){return[]},t}(a["default"]);t["default"]=u},597:function(e,t,o){"use strict";t.__esModule=!0;var a,r=o(593),n=(a=r)&&a.__esModule?a:{"default":a};t["default"]={"initial.axis.axisRefVisualsPolar":function(){return{"path.appearing":n["default"],"text.appearing":n["default"]}}}}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.powercharts.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.treemap.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.treemap.js new file mode 100755 index 0000000000000000000000000000000000000000..1568fc22aa09eed8d65d25bb8d4c4717c574520d --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.treemap.js @@ -0,0 +1,2 @@ +!function(t){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=t:t()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[7],{697:function(t,e,i){"use strict";e.__esModule=!0,e.Treemap=undefined;var n,o=i(698),r=(n=o)&&n.__esModule?n:{"default":n};e.Treemap=r["default"],e["default"]={name:"treemap",type:"package",requiresFusionCharts:!0,extension:function(t){return t.addDep(r["default"])}}},698:function(t,e,i){"use strict";e.__esModule=!0;var n=b(i(260)),o=i(129),r=i(118),a=b(i(282)),l=b(i(699)),s=b(i(701)),h=i(125),c=b(i(330)),d=i(355),g=b(i(357)),u=b(i(579)),f=b(i(584)),p=b(i(328)),v=b(i(231));function b(t){return t&&t.__esModule?t:{"default":t}}function m(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var i=Object.getOwnPropertyNames(e),n=0;n<i.length;n++){var o=i[n],r=Object.getOwnPropertyDescriptor(e,o);r&&r.configurable&&t[o]===undefined&&Object.defineProperty(t,o,r)}}(t,e))}var y=(0,h.getDep)("redraphael","plugin"),x=Math.round,C="rgba(255,0,0,"+(r.isIE?.002:1e-6)+")";(0,v["default"])(y),y.addSymbol({backIcon:function(t,e,i){var n=i-1,o=e+n,r=o-n/2,a=t+n,l=r-n;return["M",t,e-n,"L",t-n,e,t,o,t,r,a,r,a,l,a-n,l,"Z"]},homeIcon:function(t,e,i){var n=i-1,o=2*n,r=t-n,a=r+o/6,l=e+n,s=a+o/4,h=l-n/2,c=s+o/6,d=h+n/2,g=c+o/4,u=d-n;return["M",t,e-n,"L",r,e,a,e,a,l,s,l,s,h,c,h,c,d,g,d,g,u,g+o/6,u,"Z"]}});var w=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return i.hasGradientLegend=!0,i.addToEnv("ref",(0,s["default"])()),i.registerFactory("legend",g["default"]),i.registerFactory("legend",f["default"],["canvas"]),i.registerFactory("colormanager-decider",u["default"],["legend"]),i.registerFactory("mouseTracker",p["default"]),i.registerFactory("dataset",c["default"],["vCanvas"]),i}return m(e,t),e.getName=function(){return"TreeMap"},e.prototype.getName=function(){return"TreeMap"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this),this.config.enablemousetracking=!0,this.config.skipCanvasDrawing=!0,this.config.valuefontbold=0},e.prototype.configureAttributes=function(t){this.config.skipConfigureIteration={},this.config.valuesset=!1,this.parseChartAttr(t),this.createComponent(t),this.setTooltipStyle(),this.configureChildren(),this._createToolBox()},e.prototype.mouseoutHandler=function(t,e,i){var n=this.config.datasetOrder||this.getDatasets(),o=this.getChildren("mouseTracker")[0];n[e]._firePlotEvent("fc-mouseout",i,t),delete o._lastDatasetIndex,delete o._lastPointIndex},e.prototype._mouseEvtHandler=function(t,e){var i=this,n=e.mouseTracker,o=t.originalEvent,a=i.config,l=a.canvasLeft,s=a.canvasRight,h=a.canvasBottom,c=a.canvasTop,d=a.datasetOrder||i.getDatasets(),g=(0,r.getMouseCoordinate)(i.getFromEnv("chart-container"),o,i),u=g.chartX,f=g.chartY,p=void 0,v=void 0,b=!1,m=d.length,y=void 0,x=void 0,C=void 0,w=n._lastDatasetIndex,k=n._lastPointIndex;if(u>l&&u<s&&f>c&&f<h||i.config.plotOverFlow)for(;m--&&!b;)(p=d[m])&&(v=p._getHoveredPlot&&p._getHoveredPlot(u,f))&&v.hovered&&(b=!0,v.datasetIndex=m,C=n.getMouseEvents(t,v.datasetIndex,v.pointIndex));if((!b||C&&C.fireOut)&&w!==undefined&&d[w]&&d[w]._firePlotEvent&&(C&&!C.events.length?n.mouseoutTimer=setTimeout(function(){i.mouseoutHandler(t,w,k)},20):(i.mouseoutHandler(t,w,k),clearTimeout(n.mouseoutTimer))),b)for((x=C.events&&C.events.length)&&(n._lastDatasetIndex=v.datasetIndex,k=n._lastPointIndex=v.pointIndex),y=0;y<x;y+=1)p&&p._firePlotEvent&&p._firePlotEvent(C.events[y],k,t)},e.prototype._checkInvalidSpecificData=function(){if(!this.getFromEnv("dataSource").data)return!0},e.prototype.addData=function(){var t=this.getFromEnv("ref").algorithmFactory,e=Array.prototype.slice.call(arguments,0);e.unshift("addData"),e.unshift(this._getCleanValue()),t.realTimeUpdate.apply(this,e)},e.prototype.removeData=function(){var t=this.getFromEnv("ref").algorithmFactory,e=Array.prototype.slice.call(arguments,0);e.unshift("deleteData"),e.unshift(this._getCleanValue()),t.realTimeUpdate.apply(this,e)},e.prototype.triggerKDTreePartioning=function(){var t=this.getDatasets()[0];t.addJob("partitioning",t.kdTreePartioning.bind(t),o.priorityList.tracker)},e.prototype.resetSingleTracker=function(){var t=this.getDatasets()[0],e=t&&t.graphics&&t.graphics.singleTracker;e&&e.attr({x:0,y:0,width:0,height:0,stroke:"rgba(255,255,255,0)","fill-opacity":0})},e.prototype._manageLegendSpace=function(){d._manageLegendSpace.call(this)},e.prototype.manageGradientLegendSpace=function(t){return d.manageGradientLegendSpace.call(this,t)},e.prototype.flushKDTree=function(){this.getDatasets()[0].kdTree={}},e.prototype._createToolBox=function(){this.getFromEnv("chartMenuTools").reset(this.getFromEnv("toolbox"),this);var t,e,i,n,o,l,s,h,c,d,g,u,f,p,v,b,m=this,y=m.getFromEnv("chartMenuTools"),w=m.getFromEnv("chartInstance").id,k=y.get,I=y.set,P=this.components,T=m.config,F=m.getChildren("chartMenuBar"),S=m.getChildren("actionBar"),A=T.printOption.enabled;F&&F.drawn||S&&S.drawn||((0,r.componentFactory)(m,a["default"],"tb",1,[{graphics:m.graphics||(m.graphics={}),chart:m,components:P}]),v=(t=m.getChildren("tb")[0]).getICount(),m.addToEnv("toolbox",t),!m.getFromEnv("toolBoxAPI")&&m.addToEnv("toolBoxAPI",t.getAPIInstances(t.config.ALIGNMENT_HORIZONTAL)),u=(l=m.getFromEnv("toolBoxAPI")).SymbolWithContext,d=l.SymbolStore,g=l.ComponentGroup,f=l.Toolbar,t.idCount=t.idCount||0,t.pId=v,i=t.getDefaultConfiguration(),d.register("ContextIcon",function(t,e,i){var n=t,o=e,r=2*i,a=x(r/4),l=.7*x(r/2),s=n-l,h=n+l,c=o+a,d=o-a;return["M",s,o,"L",h,o,"M",s,c,"L",h,c,"M",s,d,"L",h,d]}),(b=new u).configure("ContextIcon",t.idCount++,v,w),b.addToEnv("toolTipController",m.getFromEnv("toolTipController")),n=(e=b).getListRefernce(),m.addToEnv("chartMenuList",n),A&&I([{Print:{handler:function(t){m.getFromEnv("chartInstance").print(t)},action:"click"}}]),n.appendAsList(k()),(o=new g).configure(t.idCount++,v,w),o.setConfiguaration({buttons:i,group:{fill:C,borderColor:C}}),(h=new(s=l.Symbol)).configure("homeIcon",!1,t.idCount++,t.pId,w),h.addToEnv("toolTipController",m.getFromEnv("toolTipController")),(c=new s).configure("backIcon",!1,(t.idCount=t.idCount||0,t.idCount++),t.pId,w),c.addToEnv("toolTipController",m.getFromEnv("toolTipController")),o.addSymbol(e),o.addSymbol(h,!0),o.addSymbol(c,!0),"t"===o.config.btnConfig.vAlign?(p=new f,F=m.attachChild(p,"chartMenuBar",!1),p.configure(t.idCount++,t.pId,w),F.addComponent(o)):(p=new f,F=m.attachChild(p,"actionBar",!1),p.configure(t.idCount++,t.pId,w),F.addComponent(o)),m.addToEnv("toolbarBtns",{back:c,home:h}))},e.prototype._getCleanValue=function(){var t=this.getFromEnv("number-formatter");return function(e){return t.getCleanValue(e)}},e.prototype.getDSdef=function(){return l["default"]},e}(n["default"]);e["default"]=w},699:function(t,e,i){"use strict";e.__esModule=!0;var n=s(i(131)),o=i(129),r=i(118),a=i(125),l=s(i(700));function s(t){return t&&t.__esModule?t:{"default":t}}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var i=Object.getOwnPropertyNames(e),n=0;n<i.length;n++){var o=i[n],r=Object.getOwnPropertyDescriptor(e,o);r&&r.configurable&&t[o]===undefined&&Object.defineProperty(t,o,r)}}(t,e))}var c=r.preDefStr.DEFAULT,d=function(t,e,i){return i.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:t},container:e,state:"appearing",component:i,doNotRemove:!0,label:"group"})},g=function(t){var e,i,n=t&&t[0]&&t[0].plotDetails.rect||5,o=Math.max,r=Math.floor,a=Math.sqrt,l=Math.min,s=Math.log,h=Math.exp,c=Math.pow;for(e=(t=t||[]).length;e--;)t[e].r>n&&(n=t[e].r),t[e].x=+t[e].plotDetails.rect.x,t[e].y=+t[e].plotDetails.rect.y;function d(t,e,i){return t>=e&&t<=i}function g(t,e,i){var n=t[e];t[e]=t[i],t[i]=n}return i={tree:function u(t,e,i,n){var c,d={},f=n?"y":"x";return e===i?(d.point=t[e],d):i-e==1?(t[e][f]>t[i][f]?(d.point=t[e],d.left={point:t[i]}):(d.point=t[i],d.left={point:t[e]}),d):(c=e+i>>1,n?function p(t,e,i,n){for(var c,d,u,f,v,b,m,y,x,C;n>i;){for(n-i>600&&(d=e-i+1,u=s(c=n-i+1),f=.5*h(2*u/3),v=.5*a(u*f*(c-f)/c)*(d-c/2<0?-1:1),b=o(i,r(e-d*f/c+v)),m=l(n,r(e+(c-d)*f/c+v)),p(t,e,b,m)),y=t[e],x=i,C=n,g(t,i,e),t[n].y>y.y&&g(t,i,n);x<C;){for(g(t,x,C),x++,C--;t[x].y<y.y;)x++;for(;t[C].y>y.y;)C--}t[i].y===y.y?g(t,i,C):g(t,++C,n),C<=e&&(i=C+1),e<=C&&(n=C-1)}}(t,c,e,i):function v(t,e,i,n){for(var c,d,u,f,p,b,m,y,x,C;n>i;){for(n-i>600&&(d=e-i+1,u=s(c=n-i+1),f=.5*h(2*u/3),p=.5*a(u*f*(c-f)/c)*(d-c/2<0?-1:1),b=o(i,r(e-d*f/c+p)),m=l(n,r(e+(c-d)*f/c+p)),v(t,e,b,m)),y=t[e],x=i,C=n,g(t,i,e),t[n].x>y.x&&g(t,i,n);x<C;){for(g(t,x,C),x++,C--;t[x].x<y.x;)x++;for(;t[C].x>y.x;)C--}t[i].x===y.x?g(t,i,C):g(t,++C,n),C<=e&&(i=C+1),e<=C&&(n=C-1)}}(t,c,e,i),d.point=t[c],d.left=u(t,e,c-1,!n),d.right=u(t,c+1,i,!n),d)}(t,0,t.length-1,!1),search:function(t,e){function i(i){var n=d(t,i.x1,i.x2)&&d(e,i.y1,i.y2),o=function(t,e,i,n){return a(c(t-i,2)+c(e-n,2))}(t,e,i.point.x,i.point.y);if(!l)return l=i,p=n,void(v=o);n?p?i.point.i>l.point.i&&(l=i,p=n,v=o):(l=i,p=n,v=o):p||o<v&&(l=i,p=n,v=o)}function o(t){t&&t.point&&(d(t.point.x,h,g)&&d(t.point.y,u,f)&&i(t),h<=t.point.x&&r(t.left),g>=t.point.x&&r(t.right))}function r(t){t&&t.point&&(d(t.point.x,h,g)&&d(t.point.y,u,f)&&i(t),u<=t.point.y&&o(t.left),f>=t.point.y&&o(t.right))}var l,s=this.tree,h=t-n,g=t+n,u=e-n,f=e+n,p=!1,v=0;return o(s),l&&l.point||l},searchTreemap:function(t,e){var i;return function n(o,r){if(o&&o.point){var a=o.point.x,l=a+o.point.plotDetails.rect.width,s=o.point.y,h=s+o.point.plotDetails.rect.height;o.point.x2=l,o.point.y2=h,t>=a&&t<=l&&e>=s&&e<=h&&function(t){i?t.i>i.i&&(i=t):i=t}(o.point),n(o.left,!r),n(o.right,!r)}}(this.tree,!1),i}},t.sort(function(t,e){return t.i-e.i}),i};(0,a.addDep)({name:"treeMapAnimation",type:"animationRule",extension:l["default"]});var u=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this)),n=i;return n.components={},n.conf={},n.graphics={elemStore:{rect:[],label:[],highlight:[],hot:[],polypath:[]}},i}return h(e,t),e.prototype.getName=function(){return"treeMap"},e.prototype.configureAttributes=function(t){if(t){this.config.JSONData=t.data[0];var e,i,n=void 0,o=this.getFromEnv("chart"),a=this.conf,l=o.getFromEnv("chart-attrib");a.metaTreeInf={},n=l.algorithm||"squarified",a.algorithm=n.toLowerCase(),a.range=undefined,a.horizontalPadding=(0,r.pluckNumber)(l.horizontalpadding,5),a.horizontalPadding=a.horizontalPadding<0?0:a.horizontalPadding,a.verticalPadding=(0,r.pluckNumber)(l.verticalpadding,5),a.verticalPadding=a.verticalPadding<0?0:a.verticalPadding,a.showParent=(0,r.pluckNumber)(l.showparent,1),a.showChildLabels=(0,r.pluckNumber)(l.showchildlabels,0),a.showHoverEffect=(0,r.pluckNumber)(l.showhovereffect,1),a.highlightParentsOnHover=(0,r.pluckNumber)(l.highlightparentsonhover,0),a.defaultParentBGColor=(0,r.pluck)(l.defaultparentbgcolor,undefined),a.defaultNavigationBarBGColor=(0,r.pluck)(l.defaultnavigationbarbgcolor,a.defaultParentBGColor),a.showTooltip=(0,r.pluckNumber)(l.showtooltip,1),a.baseFontSize=(0,r.pluckNumber)(l.basefontsize,10),a.baseFontSize=a.baseFontSize<1?1:a.baseFontSize,a.labelFontSize=(0,r.pluckNumber)(l.labelfontsize,undefined),a.labelFontSize=a.labelFontSize<1?1:a.labelFontSize,a.baseFont=(0,r.pluck)(l.basefont,"Verdana, Sans"),a.labelFont=(0,r.pluck)(l.labelfont,undefined),a.baseFontColor=(0,r.pluck)(l.basefontcolor,"#000000").replace(/^#?([a-f0-9]+)/gi,"#$1"),a.labelFontColor=(0,r.pluck)(l.labelfontcolor,undefined),a.labelFontColor&&(a.labelFontColor=a.labelFontColor.replace(/^#?([a-f0-9]+)/gi,"#$1")),a.labelFontBold=(0,r.pluckNumber)(l.labelfontbold,0),a.labelFontItalic=(0,r.pluckNumber)(l.labelfontitalic,0),a.plotBorderThickness=(0,r.pluckNumber)(l.plotborderthickness,1),a.plotBorderThickness=a.plotBorderThickness<0?0:a.plotBorderThickness>5?5:a.plotBorderThickness,a.plotBorderColor=(0,r.pluck)(l.plotbordercolor,"#000000").replace(/^#?([a-f0-9]+)/gi,"#$1"),a.tooltipSeparationCharacter=(0,r.pluck)(l.tooltipsepchar,","),a.plotToolText=(0,r.pluck)(l.plottooltext,""),a.parentLabelLineHeight=(0,r.pluckNumber)(l.parentlabellineheight,12),a.parentLabelLineHeight=a.parentLabelLineHeight<0?0:a.parentLabelLineHeight,a.labelGlow=(0,r.pluckNumber)(l.labelglow,1),a.labelGlowIntensity=(0,r.pluckNumber)(l.labelglowintensity,100)/100,a.labelGlowIntensity=a.labelGlowIntensity<0?0:a.labelGlowIntensity>1?1:a.labelGlowIntensity,a.labelGlowColor=(0,r.pluck)(l.labelglowcolor,"#ffffff").replace(/^#?([a-f0-9]+)/gi,"#$1"),a.labelGlowRadius=(0,r.pluckNumber)(l.labelglowradius,2),a.labelGlowRadius=a.labelGlowRadius<0?0:a.labelGlowRadius>10?10:a.labelGlowRadius,a.btnResetChartTooltext=(0,r.pluck)(l.btnresetcharttooltext,"Back to Top"),a.btnBackChartTooltext=(0,r.pluck)(l.btnbackcharttooltext,"Back to Parent"),a.rangeOutBgColor=(0,r.pluck)(l.rangeoutbgcolor,"#808080").replace(/^#?([a-f0-9]+)/gi,"#$1"),a.rangeOutBgAlpha=(0,r.pluckNumber)(l.rangeoutbgalpha,100),a.rangeOutBgAlpha=a.rangeOutBgAlpha<1||a.rangeOutBgAlpha>100?100:a.rangeOutBgAlpha,e=(0,r.pluckNumber)(l.maxdepth),a.maxDepth=e!==undefined?Math.max(e,1):undefined,i=a.showNavigationBar=(0,r.pluckNumber)(l.shownavigationbar,1),a.slicingMode=(0,r.pluck)(l.slicingmode,"alternate"),a.navigationBarHeight=(0,r.pluckNumber)(l.navigationbarheight),a.navigationBarHeightRatio=(0,r.pluckNumber)(l.navigationbarheightratio),a.navigationBarBorderColor=(0,r.pluck)(l.navigationbarbordercolor,a.plotBorderColor).replace(/^#?([a-f0-9]+)/gi,"#$1"),a.navigationBarBorderThickness=i?(0,r.pluckNumber)(l.navigationbarborderthickness,a.plotBorderThickness):0,a.seperatorAngle=(0,r.pluckNumber)(l.seperatorangle)*(Math.PI/180),a.isConfigured=!0,this.setState("dirty",!0)}},e.prototype.createContainer=function(){var t,e,i,n,o=this.getLinkedParent().getChildContainer();t=this.getContainer("plots")||this.addContainer("plots",d("plots",o.defaultGroup,this)),e=this.getContainer("datalabels")||this.addContainer("datalabels",d("datalabels",o.defaultGroup,this).insertAfter(t)),i=this.getContainer("tracker")||this.addContainer("tracker",d("tracker",o.defaultGroup,this)),!this.getContainer("line-hot")&&this.addContainer("line-hot",d("line-hot",i,this)),n=this.getContainer("labelhighlight")||this.addContainer("labelhighlight",d("labelhighlight",e,this)),!this.getContainer("labelfloat")&&this.addContainer("labelfloat",d("labelfloat",e,this).insertAfter(n))},e.prototype._getHoveredPlot=function(t,e){var i,n,o,r=this.config.kdTree||{};for(n=(o=Object.keys(r)).length-1;n>-1;n--)if(this.config.kdTree[o[n]].searchTreemap(t,e)){i=this.config.kdTree[o[n]].searchTreemap(t,e);break}if(i)return this.pointObj=i,{pointIndex:i.i||i.index,hovered:!0,pointObj:i}},e.prototype.kdTreePartioning=function(){var t,e,i=this.getFromEnv("chartConfig").trackerConfig,n={};for(t=i.length;t--;)i[t].i=t,n[i[t].node.meta.depth]===undefined&&(n[i[t].node.meta.depth]=[]),n[i[t].node.meta.depth].push(i[t]);for(this.config.kdTree={},t=(e=Object.keys(n)).length-1;t>-1;t--)this.config.kdTree[e[t]]=g&&g(n[e[t]])},e.prototype._rolloverResponseSetter=function(t,e,i){var n=t.getData(),o=i.getFromEnv("animationManager"),r=this.getFromEnv("chart");n&&0!==n.showHoverEffect&&(r.getState("drill")||(o.setAnimationState("mouseOver"),o.setAnimation({el:t,label:"rect",component:i,attr:t.getData().setRolloverAttr})),r.plotEventHandler(t,e,"DataPlotRollOver"))},e.prototype._rolloutResponseSetter=function(t,e,i){var n=t.getData(),o=i.getFromEnv("animationManager"),r=this.getFromEnv("chart");n&&0!==n.showHoverEffect&&(r.getState("drill")||(o.setAnimationState("mouseOut"),o.setAnimation({el:t,label:"rect",component:i,doNotRemove:!0,attr:t.getData().setRolloutAttr})),r.plotEventHandler(t,e,"DataPlotRollOut"))},e.prototype._getParentNode=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],e=this.conf.navigationBarNodes||[],i=void 0,n=e.length,o=t.length,r=t[o-2],a=t[o-1],l=!1;if(o<2)return!1;for(i=0;i<n;i++)if(e[i].id===r.id){l=!0;break}return l?a:r},e.prototype._firePlotEvent=function(t,e,i){var n,a=this.config.currentToolTip,l=this.getFromEnv("chartConfig").trackerConfig[e||0],s=this.getContainer("tracker"),h=l&&l.node&&l.node.plotItem,d=l&&l.plotDetails&&l.plotDetails.toolText,g=this.getFromEnv("toolTipController"),u=i.originalEvent,f=this.graphics.singleTracker,p=this.pointObj.plotDetails,v=this.conf.showHoverEffect,b=this.conf.highlightParentsOnHover,m=l&&l.node.path,y=this._getParentNode(m),x=y&&y.rect;if(h?n=b&&y?{x:x.x,y:x.y,width:x.width,height:x.height,stroke:"rgba(255,255,255,0)"}:{x:p.rect.x||0,y:p.rect.y||0,width:p.rect.width||0,height:p.rect.height||0,stroke:"rgba(255,255,255,0)"}:(h=l&&(l.node.plotItem||l.node.polyPathItem),(p={}).rect={}),f=this.graphics.singleTracker=this.getFromEnv("animationManager").setAnimation({el:this.graphics.singleTracker||"rect",attr:n,component:this,label:"tracker",container:s,doNotRemove:!0}).toFront(),h)switch(h.node.style.cursor="pointer",f.node.style.cursor="pointer",t){case"fc-mouseover":v?l.evtFns.hover[0](f):f.attr("fill",r.TRACKER_FILL),d&&(a?g.draw(u,d,a):a=this.config.currentToolTip=g.draw(u,d));break;case"fc-mouseout":h.node.style.cursor=c,f.node.style.cursor="pointer",f.attr({x:0,y:0,width:0,height:0,stroke:"#ffffff","stroke-width":"0px"}),f.toFront(),g.hide(a),this._rolloutResponseSetter(h,i,this);break;case"fc-click":l&&l.evtFns&&l.evtFns.click&&l.evtFns.click[0](),this.config.kdTree={},this.addJob("click",this.kdTreePartioning.bind(this),o.priorityList.tracker);break;case"fc-mousemove":d&&(a?g.draw(u,d,a):a=this.config.currentToolTip=g.draw(u,d))}},e.prototype.draw=function(){var t,e,i,n,a,l,s,h,c,d=this,g=d.conf,u=d.getFromEnv("chart"),f=d.getFromEnv("chartConfig"),p=f.trackerConfig,v=f.canvasLeft,b=f.canvasRight,m=f.canvasBottom,y=f.canvasTop,x=d.getFromEnv("chart-attrib"),C=g.metaTreeInf,w=d.graphics.elemStore,k={},I=g._graphicPool||(g._graphicPool={}),P={},T=["fontFamily","fontSize","fontWeight","fontStyle"],F={},S=g,A=d.getFromEnv("colorManager"),E=this.getFromEnv("ref"),_=d.getFromEnv("animationManager"),N=E.containerManager,R=E.algorithmFactory,M={};for(p&&(p.length=0),d.createContainer(),h=(0,r.parsexAxisStyles)({},{},x,{fontFamily:"Verdana,sans",fontSize:"10px"}),l=0,s=T.length;l<s;l++)(c=T[l])in h&&(F[c]=h[c]);N.remove(),t=d.getContainer("plots"),d.getContainer("datalabels").css(F),e=d.getContainer("labelhighlight"),i=d.getContainer("labelfloat"),g.colorRange=A,C.effectiveWidth=b-v,C.effectiveHeight=m-y,C.startX=v,C.startY=y,P.x=C.effectiveWidth/2,P.y=C.effectiveHeight/2,P.x=C.effectiveWidth/2,P.y=C.effectiveHeight/2,k.drawPolyPath=function(e,i,n){var o,r=u.getState("drill")?"updating":"appearing";return M[n.id]&&delete M[n.id],(o=_.setAnimation({el:k.graphicPool(!1,"polyPathItem")||"path",container:t,attr:{path:e.path},css:i,state:r,label:"path",component:d}))&&w.polypath.push(o),o},k.drawRect=function(e,i,n,o,a){var l,s,h={},c={};for(l in s=u.getState("drill")?"updating":"appearing",M[a.id]&&delete M[a.id],e)e[l]<0&&(e[l]=0,c.visibility="hidden");return(0,r.extend2)(h,e),h.x=P.x,h.y=P.y,h.height=0,h.width=0,_.setAnimation({el:k.graphicPool(!1,"plotItem")||"rect",container:t,attr:e,css:Object.assign(i,c),state:s,props:a.__props,label:"rect",component:d}).toFront()},k.drawText=function(t,n,o,a){var l,s,h,c,g=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{},f=arguments[5],p={},v=o.textAttrs,b=o.highlightAttrs;return l=u.getState("drill")?"updating":"appearing",M[f.id]&&delete M[f.id],(0,r.extend2)(p,v),delete p.fill,p["stroke-linejoin"]="round",delete g.opacity,t=n.x<0||n.y<0?r.BLANKSTRING:t,(s=_.setAnimation({el:k.graphicPool(!1,"labelItem")||k.graphicPool(!1,"pathlabelItem")||"text",container:i,component:d,attr:Object.assign({},v,g,{text:t,x:n.x,y:n.y,visibility:"visible"}),state:l,label:"labelItem"})).show(),c="hidden"!==b.visibility,delete b.visibility,h=_.setAnimation({el:k.graphicPool(!1,"highlightItem")||k.graphicPool(!1,"pathhighlightItem")||"text",container:e,component:d,attr:Object.assign({},g,b,{x:n.x,y:n.y,text:c?t:"",visibility:"visible"}),css:{lineHeight:1.2*p.fontSize+"px"},state:l,label:"highlightItem"}),d.prevLabelGlowVisibility!==c&&!0===c&&h.show(),d.prevLabelGlowVisibility=c,w.label.push(void 0),w.highlight.push(void 0),{label:s,highlightMask:h}},k.disposeItems=function(t,e){var i,n,o,r=e||["plotItem","labelItem","hotItem","highlightItem","polyPathItem","pathlabelItem","pathhighlightItem","stackedpolyPathItem","stackedpathlabelItem","stackedpathhighlightItem"];for(i=0;i<r.length;i+=1)(n=t[o=r[i]])&&"text"===n.type&&n.attr({text:"","text-bound":[]}),n&&!n.removed&&(n=_.setAnimation({el:n,component:d})),t[o]=void 0},k.disposeChild=function(){var t,e=function(){return t.disposeItems};return function(i){var n=i.getParent();t||(t=this,e=e()),n?t.disposeChild(n):function o(t,i){var n;for(e(t),n=0;n<(t.getChildren()||[]).length;n++)n=o(t.getChildren()[n],n);return i}(i,0)}}(),k.disposeSelectedChildren=function(){var t,e=function(){return t.addRemovalNodes};return function(i){var n=i.getParent();t||(t=this,e=e()),n?t.addRemovalNodes(n):function o(t,i){var n;for(e(t),n=0;n<(t.getChildren()||[]).length;++n)n=o(t.getChildren()[n],n);return i}(i,0)}}(),k.addRemovalNodes=function(t){M[t.id]=t},k.hideNodes=function(){var t,e,i,n,o=["plotItem","labelItem","hotItem","highlightItem","polyPathItem","pathlabelItem","pathhighlightItem","stackedpolyPathItem","stackedpathlabelItem","stackedpathhighlightItem"];for(var r in M)for(i=M[r],t=0;t<o.length;t+=1)(e=i[n=o[t]])&&"text"===e.type&&e.attr({text:"","text-bound":[]}),e=e&&!e.removed&&_.setAnimation({el:e,component:d,label:"gen"}),i[n]=void 0},k.graphicPool=function(t,e,i){var n,o=I[e];if(o||(o=I[e]=[]),"hotItem"!==e&&"pathhotItem"!==e||i.remove(),t)o.push(i);else if(n=o.splice(0,1)[0])return n.show(),n},k.disposeComplimentary=function(t){var e,i,n=t.getParent(),o=t.getSiblingCount("left");n&&(e=(i=n.getChildren()).splice(o,1)[0],this.disposeChild(t),i.splice(o,0,e)),this.removeLayers()},k.removeLayers=function(){var t,e,i,n;for(e=(n=w.hot).length,t=0;t<e;t++)(i=n[t])&&i.remove();n.length=0},d.getState("dirty")&&(R.init(g.algorithm,!0,g.maxDepth),n=R.plotOnCanvas(d.config.JSONData,u._getCleanValue()),N.init(d,C,k,void 0,n)),N.draw(),a=R.applyShadeFiltering({fill:S.rangeOutBgColor,opacity:.01*S.rangeOutBgAlpha},function(t){this.plotItem&&this.plotItem.css(t)}),d.addExtEventListener("legendUpdate",function(t,e){a.call(this,{start:e.maxMinArray[0].min,end:e.maxMinArray[0].max}),g.range={min:e.maxMinArray[0].min,max:e.maxMinArray[0].max}},d.getFromEnv("colorManager")),g.isConfigured=!1,d.addJob("buildKDTreeID",d.kdTreePartioning.bind(d),o.priorityList.tracker)},e.prototype.getType=function(){return"dataset"},e.prototype.setJSONIndex=function(t){this.config.index=t},e.prototype.getJSONIndex=function(){return this.config.index||0},e}(n["default"]);e["default"]=u},700:function(t,e,i){"use strict";e.__esModule=!0,e["default"]={"*.dataset.treeMap":function(){var t=this.getFromEnv("canvasConfig"),e=t.canvasLeft+t.canvasHeight/2,i=t.canvasWidth/2+t.canvasTop,n={appearing:[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],updating:[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],disappearing:[{initialAttr:{opacity:1},finalAttr:{opacity:0},slot:"initial"}]},o={appearing:[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}],updating:function(t){return[{initialAttr:{opacity:0,path:"string"!=typeof t.el?t.el.attr("path"):t.attr.path},finalAttr:{opacity:1,path:t.attr.path},slot:"final"}]}},r={appearing:function(){return[{initialAttr:{x:i,y:e,width:0,height:0,opacity:0},finalAttr:{opacity:1},slot:"plot"}]},disappearing:[{finalAttr:{opacity:0},slot:"initial"}],updating:function(t){var e=t.props.prev&&t.props.prev.x===t.attr.x,i=t.props.prev&&t.props.prev.y===t.attr.y,n=t.props.prev&&t.props.prev.height===t.attr.height,o=t.props.prev&&t.props.prev.width===t.attr.width;return e&&i&&n&&o?[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]:t.props.prev?[{initialAttr:{x:t.props.prev.x,y:t.props.prev.y,width:t.props.prev.width,height:t.props.prev.height},slot:"plot"}]:[{initialAttr:{x:t.attr.x,y:t.attr.y,width:t.attr.width,height:t.attr.height},slot:"plot"}]}};return{"rect.appearing":r.appearing,"rect.updating":r.updating,"rect.disappearing":r.disappearing,"path.appearing":o.appearing,"path.updating":o.updating,"path.disappearing":r.disappearing,"labelItem.appearing":n.appearing,"labelItem.updating":n.updating,"labelItem.disappearing":n.disappearing,"highlightItem.appearing":n.appearing,"highlightItem.updating":n.updating,"highlightItem.disappearing":n.disappearing,"gen.disappearing":n.disappearing,"*":null}}}},701:function(t,e,i){"use strict";e.__esModule=!0;var n=i(118),o=i(122);function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var i=Object.getOwnPropertyNames(e),n=0;n<i.length;n++){var o=i[n],r=Object.getOwnPropertyDescriptor(e,o);r&&r.configurable&&t[o]===undefined&&Object.defineProperty(t,o,r)}}(t,e))}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var l="drillup",s=1,h=function(t,e){var i,s,h,d,g,u,f,p=t.AbstractTreeMaker;function v(t){for(var e=t.getChildren(),i=void 0,n=0,o=0;o<(e&&e.length);o++)v(i=e[o]),n+=i.getValue()||0;isNaN(t.value)&&(t.value=n)}i={sliceanddice:{areaBaseCalculator:function(t,e){var i=t,n=e;return function(t,e,o){var r,a,l,s,h,c,d,g={},u=0;if(t)return o&&(u=o.textMargin||u),d=u,r=t.getParent(),a=t.getSibling("left"),r?(l=r.getValue(),s=(c=r.rect).height-2*n-d,h=c.width-2*i,g.effectiveRect={height:s,width:h,x:c.x+i,y:c.y+n+d},g.effectiveArea=s*h,g.ratio=t.getValue()/l,a?e.call(t,g,a,r):(g.lastIsParent=!0,e.call(t,g,r))):null}},applyShadeFiltering:function(t,e,i){return t.setRangeOutEffect(e,i),this.applyShadeFiltering.reset=function(){t.resetPointers()},function(e){t.moveLowerShadePointer(e.start),t.moveHigherShadePointer(e.end)}},alternateModeManager:function(){return function(t,e){var i,n,o,r,a,l=t.effectiveArea*t.ratio,s=t.effectiveRect,h=e.rect;return t.lastIsParent?(r=s.x,a=s.y,i=s.height,n=s.width,o=this.isDirectionVertical=!0):(i=s.height+s.y-(h.height+h.y),n=s.width+s.x-(h.width+h.x),o=this.isDirectionVertical=!e.isDirectionVertical),o?(n=l/i,r=r!==undefined?r:h.x,a=a!==undefined?a:h.y+h.height):(i=l/n,r=r!==undefined?r:h.x+h.width,a=a!==undefined?a:h.y),{height:i,width:n,x:r,y:a}}},horizontalVerticalManager:function(t){var e=Boolean("vertical"===t);return function(t,i){var n,o,r,a,l,s=t.effectiveArea*t.ratio,h=t.effectiveRect,c=i.rect;return t.lastIsParent?(a=h.x,l=h.y,n=h.height,o=h.width,r=this.isDirectionVertical=!i.isDirectionVertical):(n=h.height+h.y-(c.height+c.y),o=h.width+h.x-(c.width+c.x),r=this.isDirectionVertical=!arguments[2].isDirectionVertical),(r=e?r:!r)?(0===n&&(n=h.height,a=a!==undefined?a:c.x+c.width,l=l!==undefined?l:c.y),o=s/n,a=a!==undefined?a:c.x,l=l!==undefined?l:c.y+c.height):(0===o&&(o=h.width,a=a!==undefined?a:c.x,l=l!==undefined?l:c.y+c.height),n=s/o,a=a!==undefined?a:c.x+c.width,l=l!==undefined?l:c.y),{height:n,width:o,x:a,y:l}}},drawTree:function(e,i,r,a){var s,h,c,d,g,p,b,m,y=i.getFromEnv("chart"),x=y.config||(y.config={}),C=x.trackerConfig||(x.trackerConfig=[]),w=i.getFromEnv("number-formatter"),k=i.getFromEnv("toolbarBtns"),I=a.drawRect,P=a.drawText,T=a.drawHot,F=r.horizontalPadding,S=r.verticalPadding,A=i.getFromEnv("smartLabel"),E=(0,t.iterator)(this).df,_=e.areaBaseCalculator(F,S),N=i.conf,R=N.highlightParentsOnHover,M=t.context,B=t.visibilityController,O=i.conf.colorRange,V=t.mapColorManager(N,O),L=t.abstractEventRegisterer(e,i,r,a),H=L.click,D=L.mouseover,z=L.mouseout,j=N.slicingMode,G=e["alternate"===j?"alternateModeManager":"horizontalVerticalManager"](j),W=y._intSR;for(m=(b=M.getInstance("ClickedState").get("VisibileRoot")||{}).node,b.node&&b.state&&(b.state.toLowerCase()===l?m instanceof Array?B.controlPreAnimVisibility(m[0].virginNode,m[1]):B.controlPreAnimVisibility(m.virginNode):B.displayAll(b.node.virginNode)),s=N.parentLabelLineHeight,c=t.initConfigurationForlabel({x:5,y:5},s,N),d=h=E.next(f=t.setMaxDepth(this.getDepth()+u));d.getParent();)d=d.getParent();!x.valuesset&&v(d),x.valuesset=!0,N.showNavigationBar?(k.home.hide(),k.back.hide()):d!=h?(k.home.show(),k.back.show()):(k.home.hide(),k.back.hide()),A.useEllipsesOnOverflow(y.config.useEllipsesWhenOverflow),A.setStyle(N._setStyle={fontSize:(N.labelFontSize||N.baseFontSize)+"px",fontFamily:N.labelFont||N.baseFont,lineHeight:1.2*(N.labelFontSize||N.baseFontSize)+"px"}),p=W.backToParent,g=W.resetTree,k.back&&k.back.attachEventHandlers({click:p.bind(h)}),k.home&&k.home.attachEventHandlers({click:g.bind(h)}),function Y(t,e){var r,l,s,d,g,u,p,v,b,m,y,x,k,F,S,B,O={},L={},j={},W="";t&&t.value&&(S=w.yAxis(t.getValue()),B=w.sYAxis(t.getColorValue()),t.setPath(),l=t.rect||{},s=t.textRect||{},v=t.rect={},t.textRect={},v.width=e.width,v.height=e.height,v.x=e.x,v.y=e.y,F=V(t,undefined,i.conf),(k=t.plotItem)&&a.graphicPool(!0,"plotItem",k,l),t.__props||(t.__props={}),t.__props.curr=Object.assign({},v),t.__props.node=Object.assign({},t),k=t.plotItem=I(v,Object.assign({},F,t.getColorValue()&&{fill:t.presentColor}||{}),l,t.overAttr,t),t.__props.prev=Object.assign({},v),t.cssConf=F,y=(m=c(t,v)).conf,O.textMargin=y.rectShiftY,b=t.textRect=y.textRect,x=A.getSmartText(y.label,b.width,b.height).text,t.plotItem=k,(g=t.labelItem)?(u=t.highlightItem,a.graphicPool(!0,"labelItem",g,l),a.graphicPool(!0,"highlightItem",u,l)):s=s||{},p=P(x,b,{textAttrs:m.attr,highlightAttrs:m.highlight},s,t.overAttr,t),t.labelItem=p.label,t.highlightItem=p.highlightMask,L.virginNode=t,L.plotItem=k,L.textItem=p,L.virginNode.dirtyNode=L,t.getColorValue()&&(W=N.tooltipSeparationCharacter+B),N.showTooltip?L.toolText=(0,n.parseTooltext)(N.plotToolText,[1,2,3,119,122],{label:t.getLabel(),formattedValue:S,formattedsValue:B},{value:t.getValue(),svalue:t.getColorValue()})||t.getLabel()+N.tooltipSeparationCharacter+S+W:L.toolText=n.BLANKSTRING,L.rect=v,j.hover=[function(t){var e,i,n,r,a;n=M.getInstance("hover"),i=this.virginNode,e=R&&!i.next?i.getParent()||i:this.virginNode,n.set("element",e),r=e.cssConf,a=(0,o.convertColor)((0,o.getLightColor)(r.fill,80),60),t.attr({fill:a}),D(this)}.bind(L),function(){var t,e,i;e=(t=M.getInstance("hover").get("element")).cssConf,i=(0,o.convertColor)(e.fill||"#fff",0),t.plotItem.tracker.attr({fill:i}),z(this)}.bind(L)],j.tooltip=[L.toolText],j.click=[function(){H(this,h)}.bind(L)],(d=t.hotItem)&&a.graphicPool(!0,"hotItem",d,l),C.push({node:t,key:"hotItem",plotDetails:L,evtFns:j,callback:T}),Y(r=E.next(f),_(r,G,O)))}(h,r)}},squarified:{orderNodes:function(){return this.sort(function(t,e){return parseFloat(t.value,10)<parseFloat(e.value,10)?1:-1})},areaBaseCalculator:function(t,e){var i=t,n=e;return function(t,e,o){var r,a,l,s,h,c,d={},g=0;if(t&&0!==t.length)return o&&(g=o.textMargin||g),s=g,(r=(h=t[0]).getParent())?(a=(c=r.rect).height-2*n-s,l=c.width-2*i,d.effectiveRect={height:a,width:l,x:c.x+i,y:c.y+n+s},d.effectiveArea=a*l,e.call(h,d,r)):null}},layoutManager:{RowLayout:function(){function t(e,i){a(this,t),this.totalValue=i,this._rHeight=e.height,this._rWidth=e.width,this._rx=e.x,this._ry=e.y,this._rTotalArea=e.height*e.width,this.nodes=[],this._prevAR=undefined,this._rHeight<this._rWidth&&(this._hSegmented=!0)}return t.prototype.addNode=function(t){var e,i,n,o,r,a,l,s,h,c,d,g,u,f,p,v,b,m=this._rTotalArea,y=this._hSegmented,x=this._rx,C=this._ry,w=0;for(this.nodes.push(t),o=0,a=this.nodes.length;o<a;o++)w+=parseFloat(this.nodes[o].getValue(),10);for(e=m*(w/this.totalValue),y?(n=this._rHeight,d=x+(i=e/n),g=C,f=this._rHeight,p=this._rWidth-i):(i=this._rWidth,d=x,g=C+(n=e/i),f=this._rHeight-n,p=this._rWidth),o=0,r=this.nodes.length;o<r;o++)l=(t=this.nodes[o]).getValue()/w*e,t.hRect=t.rect||{},t._hRect=t._rect||{},c=t.rect={},y?(c.width=h=i,c.height=s=l/h,c.x=x,c.y=C,C+=s):(c.height=s=n,c.width=h=l/s,c.x=x,c.y=C,x+=h),v=Math.max(c.height,c.width)/Math.min(c.height,c.width),!isFinite(v)&&(v=0),t.aspectRatio=v;if(this.nodes.length>1){if(this.prevAR<t.aspectRatio){for(this.nodes.pop().rect={},o=0,a=this.nodes.length;o<a;o++)1===a&&this.nodes[o].firstPassed?this.nodes[o].rect=this.nodes[o]._hRect:this.nodes[o].rect=this.nodes[o].hRect,u=this.nodes[o]._rect={},b=this.nodes[o].rect,u.width=b.width,u.height=b.height,u.x=b.x,u.y=b.y;return!1}}else t&&(u=t._rect={},b=t.rect,u.width=b.width,u.height=b.height,u.x=b.x,u.y=b.y,t.firstPassed=!0);return this.prevAR=t.aspectRatio,this.height=n,this.width=i,this.getNextLogicalDivision=function(){return{height:f,width:p,x:d,y:g}},t},t}()},applyShadeFiltering:function(t,e,i){return t.setRangeOutEffect(e,i),this.applyShadeFiltering.reset=function(){t.resetPointers()},function(e){t.moveLowerShadePointer(e.start),t.moveHigherShadePointer(e.end)}},drawTree:function(e,i,r,a){var s,h,c,d,g,p,b,m,y=i.getFromEnv("chart"),x=i.getFromEnv("chartConfig"),C=x.trackerConfig||(x.trackerConfig=[]),w=i.getFromEnv("number-formatter"),k=i.getFromEnv("toolbarBtns"),I=r.horizontalPadding,P=r.verticalPadding,T=e.areaBaseCalculator(I,P),F=e.layoutManager.RowLayout,S=i.getFromEnv("smartLabel"),A=a.drawRect,E=a.drawText,_=a.drawHot,N=(0,t.iterator)(this).bf,R=i.conf,M=R.highlightParentsOnHover,B=t.context,O=i.conf.colorRange,V=t.mapColorManager(R,O),L=t.abstractEventRegisterer(e,i,r,a),H=L.click,D=L.mouseover,z=L.mouseout,j=y._intSR,G=t.visibilityController;for(m=(b=B.getInstance("ClickedState").get("VisibileRoot")||{}).node,b.node&&b.state&&(b.state.toLowerCase()===l?m instanceof Array?G.controlPreAnimVisibility(m[0].virginNode,m[1]):G.controlPreAnimVisibility(m.virginNode):G.displayAll(b.node.virginNode)),s=R.parentLabelLineHeight,c=t.initConfigurationForlabel({x:5,y:5},s,R),d=h=N.next(f=t.setMaxDepth(this.getDepth()+u));d.getParent();)d=d.getParent();!x.valuesset&&v(d),x.valuesset=!0,R.showNavigationBar?(k.home.hide(),k.back.hide()):d!=h?(k.home.show(),k.back.show()):(k.home.hide(),k.back.hide()),S.useEllipsesOnOverflow(y.config.useEllipsesWhenOverflow),S.setStyle(R._setStyle={fontSize:(R.labelFontSize||R.baseFontSize)+"px",fontFamily:R.labelFont||R.baseFont,lineHeight:1.2*(R.labelFontSize||R.baseFontSize)+"px"}),g=j.backToParent,p=j.resetTree,k.back&&k.back.attachEventHandlers({click:g.bind(h)}),k.home&&k.home.attachEventHandlers({click:p.bind(h)}),function W(t,e){var r,l,s,d,g,u,p,v,b,m,y,x,k,I,P,N,O,L,j,G={},Y=0,K={},U={},J={},X="";if(t&&t.value&&(L=w.yAxis(t.getValue()),j=w.sYAxis(t.getColorValue()),t.setPath(),(r=t.__initRect)&&(G.x=r.x,G.y=r.y,G.width=r.width,G.height=r.height),g=t.textRect||{},r=t.rect=t.__initRect={},t.textRect={},r.width=e.width,r.height=e.height,r.x=e.x,r.y=e.y,O=V(t,undefined,i.conf),(k=t.plotItem)&&a.graphicPool(!0,"plotItem",k,G),t.__props||(t.__props={}),t.__props.curr=Object.assign({},r),t.__props.node=Object.assign({},t),k=t.plotItem=A(r,Object.assign({},O,t.getColorValue()&&{fill:t.presentColor}||{}),G,t.overAttr,t),t.__props.prev=Object.assign({},r),t.cssConf=O,I=(N=c(t,r)).conf,K.textMargin=I.rectShiftY,u=t.textRect=I.textRect,P=S.getSmartText(I.label,u.width,u.height).text,(d=t.labelItem)?(l=t.highlightItem,a.graphicPool(!0,"labelItem",d,G),a.graphicPool(!0,"highlightItem",l,G)):g=g||{},v=E(P,u,{textAttrs:N.attr,highlightAttrs:N.highlight},g,t.overAttr,t),t.labelItem=v.label,t.highlightItem=v.highlightMask,t.plotItem=k,U.virginNode=t,U.plotItem=k,U.textItem=v,U.virginNode.dirtyNode=U,t.getColorValue()&&(X=R.tooltipSeparationCharacter+j),R.showTooltip?U.toolText=(0,n.parseTooltext)(R.plotToolText,[1,2,3,119,122],{label:t.getLabel(),formattedValue:L,formattedsValue:j},{value:t.getValue(),svalue:t.getColorValue()})||t.getLabel()+R.tooltipSeparationCharacter+L+X:U.toolText=n.BLANKSTRING,U.rect=r,J.hover=[function(t){var e,i,n,r,a;n=B.getInstance("hover"),i=this.virginNode,e=M&&!i.next?i.getParent()||i:this.virginNode,n.set("element",e),r=e.cssConf,a=(0,o.convertColor)(r.fill&&(0,o.getLightColor)(r.fill,80),60),t.attr({fill:a}),D(this)}.bind(U),function(t){var e,i;e=B.getInstance("hover").get("element").cssConf,i=(0,o.convertColor)(e.fill||"#fff",0),t.attr({fill:i}),z(this)}.bind(U)],J.tooltip=[U.toolText],J.click=[function(){H(this,h)}.bind(U)],(s=t.hotItem)&&a.graphicPool(!0,"hotItem",s,G),C.push({node:t,key:"hotItem",plotDetails:U,evtFns:J,callback:_}),p=f!==undefined&&t.getDepth()>=f?undefined:t.getChildren()))for(b=0,m=(y=T(p,function(t,e){var i,n,o,r,a=0,l=[];for(i=new F({width:t.effectiveRect.width,height:t.effectiveRect.height,x:t.effectiveRect.x,y:t.effectiveRect.y},e.getValue()),n=p.length;a++!==n;)o=p[a-1],!1===i.addNode(o)?(r=i.getNextLogicalDivision(),i=new F(r,e.getValue()-Y),a--):(Y+=parseFloat(o.getValue(),10),l.push(o));return l},K)).length;b<m;b++)W(x=y[b],x.rect)}(h,r)}}};var b=function(t){function e(){return a(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return r(e,t),e.getName=function(){return"TreeMaker"},e.prototype.order=function(t){var e=i[s],n=e.orderNodes;return n?n.apply(t,[e]):t},e}(p);function m(e,i,n){var o;return o=(h=new b(e,g,i)).get(),!1!==n&&(d=o),t.setVisibleRoot(o),o}function y(){var n,o=i[s];e.realTimeUpdate=x.apply(this,arguments),(n=Array.prototype.slice.call(arguments,0)).unshift(o),o.drawTree.apply(t.getVisibleRoot(),n)}function x(){var t,e,n=i[s];return(e=Array.prototype.slice.call(arguments,0)).unshift(n),t=e.slice(-1)[0],function(){var i=Array.prototype.slice.call(arguments,0),o=i.shift(),r=i.shift();c(d,function(t){n.drawTree.apply(t||d,e)},t,o)[r].apply(this,i)}}return e.init=function(e,n,o){return s=e,g=n,u=t.setMaxDepth(o),i[s]},e.plotOnCanvas=function(t,e){return d=m(t,e),y},e.applyShadeFiltering=function(t,e){var n,o,r=i[s];return o=r.applyShadeFiltering(h.getBucket(),t,e),function(t){(n=Array.prototype.slice.call(arguments,0)).unshift(t),o.apply(h.getBucket(),n)}},e.setTreeBase=function(t){return t&&(d=t)},e.realTimeUpdate=x,e.makeTree=m,e},c=function(t,e,i,n){var o;function r(e){var i,n=0,r=t;if(!e.length)return t;for(;r;){if(i=a.call(r,e[n]),n===e.length-1&&i)return o=i.getValue(),i;r=i,n+=1}}function a(t){var e,i,n,o=this.getChildren()||[],r=o.length,a=function(t){return t.toLowerCase().trim()};for(e=0;e<r;e+=1)if(a((n=o[e]).label)===a(t)){i=n;break}return i}return{deleteData:function(t,n){var a=r(t),l=(void 0).iterator(a).df,s=a&&a.getParent(),h=a&&a.getSiblingCount("left"),c=s&&s.getChildren(),d=(void 0).getVisibleRoot();if(a&&s){for(c.splice(h,1),a===d&&(d=a.getParent()||d);a;)i.disposeItems(a),a=l.next();for(;s;)s.setValue(-o,!0),s=s.getParent();n&&e(d)}},addData:function(t,i,o,a){for(var l,s,h,c,d=0,g=!0,u=(void 0).getVisibleRoot();t.length;)if(l=t.pop(),d=(s=(void 0).makeTree(l,n,!1)).getValue(),h=r(i||[]))for(h.getChildren()||(c=h.getValue(),g=!1),h.addChildren(s,a);h;)h.setValue(d,g),c&&(d-=c,c=undefined,g=!0),h=h.getParent();o&&e(u)}}},d=function(t,e){var i,o,r,s,h,c,d,g,u=!1,f=function(o,a){var c,d,g,u,f,p,b,y,x,C,k,I,P,T,F=s.colorRange,S=t.mapColorManager(s,F,!0),A={get:function(t,e,i){var n={y:t.startY,height:t.effectiveHeight},o=c[e],r=o.getParent();return I?(n._x=t.startX+t.effectiveWidth,n._width=0):(n._x=t.startX,n._width=t.effectiveWidth),n.x=I||(I=t.startX),I+=n.width=i?t.effectiveWidth*(o.getValue()/r.getValue()):t.effectiveWidth/d,n},resetAllocation:function(){I=undefined}},E=s.parentLabelLineHeight,_=t.initConfigurationForlabel({x:5,y:5},E,s),N=h.drawPolyPath,R=h.drawText,M=h.drawHot,B={navigationHistory:{path:"polyPathItem",label:"pathlabelItem",highlightItem:"pathhighlightItem",hotItem:"pathhotItem"}},O=i.getFromEnv("chart"),V=O.config.trackerConfig,L=i.getFromEnv("smartLabel"),H=function(i){return function(){var n=t.context,o=O.getFromEnv("animationManager"),r=n.getInstance("ClickedState").get("VisibileRoot")||{};V.length=0,r.state=l,r.node=[{virginNode:t.getVisibleRoot()},i],h.disposeChild(i),o.setAnimationState("drill"),O.setState("drill",!0),e.draw([i,i,i]),o.onAnimationComplete(function(){O.setState("drill",!1)}),O.resetSingleTracker()}},D=function(t){return s.showTooltip?t.getLabel():n.BLANKSTRING},z=s._setStyle,j=v.get().navigationBar,G=2*m("navigationBar"),W=j*r.effectiveHeight,Y=Math.min(W-(G+6),z.fontSize.replace(/\D+/g,"")),K=Y+"px";for(B.stacked={path:"stacked"+B.navigationHistory.path,label:"stacked"+B.navigationHistory.label,highlightItem:"stacked"+B.navigationHistory.highlightItem,hotItem:"stacked"+B.navigationHistory.hotItem},A.resetAllocation(),function(e){var i=t.getVisibleRoot();(c=e?i.getChildren():s.navigationBarNodes=i.getPath()||[].concat(i)).pop(),d=c.length}(a),L.setStyle({fontSize:K,lineHeight:K}),g=0;g<d;g+=1)p=c[g],u=(f=w(b=A.get(o,g,a),a?"both":(P=g,T=d,1===T?"both":0===P?"left":P<T-1?"no":"right"),undefined)).offset,p[B[a?"stacked":"navigationHistory"].path]=N(f,S(p,!0,s),p),(k=(x=(y=_(p,b,!0)).conf).textRect).width-=2*u,k.y=b.y+b.height/2,C=R(L.getSmartText(x.label,k.width,Math.max(Y,k.height)).text,k,{textAttrs:y.attr,highlightAttrs:y.highlight},{y:b.height/10,"font-size":s._setStyle.fontSize,"font-family":s._setStyle.fontFamily},(a?"stacked":"")+"path",p),p[B[a?"stacked":"navigationHistory"].label]=C.label,p[B[a?"stacked":"navigationHistory"].highlightItem]=C.highlightMask,V.push({node:p,key:B[a?"stacked":"navigationHistory"].hotItem,plotDetails:{rect:b},evtFns:{click:[H(p)],hover:[function(){},function(){}],tooltip:[D(p)]},callback:M})},p=function(t){return{treeMap:C,navigationBar:f,stackedNavigation:k}[t]},v=(d={treeMap:1,navigationBar:0,stackedNavigation:0},{set:function(t){var e,i=(0,n.pluckNumber)(s.navigationBarHeightRatio,s.navigationBarHeight/r.effectiveHeight,.15);e=(6+(s.labelFontSize?Math.max(s.labelFontSize,s.baseFontSize):s.baseFontSize)+2*m("navigationBar"))/r.effectiveHeight,(i=Math.max(e,i))<.1?i=.1:i>.15&&(i=.15),s.navigationBarHeightRatio=i,d=t?{treeMap:1-i,navigationBar:i,stackedNavigation:0}:{treeMap:1,navigationBar:0,stackedNavigation:0}},get:function(){return d}}),b=0,m=function(t){var e=s.verticalPadding,i=s.plotBorderThickness,n=s.navigationBarBorderThickness;return e+("navigationBar"===t?n:i)},y=function(t){var e=r.effectiveWidth,i=r.effectiveHeight,n=m(t),o=v.get()[t];return b>=1&&(b=0),b+=o,{effectiveHeight:Math.round(o*i*100)/100-n,effectiveWidth:e,startX:r.startX,startY:r.startY+n+Math.round((b-o)*i*100)/100}},x=function(){function t(){a(this,t)}return t.prototype.init=function(t,e){(this.conf||(this.conf={})).name=t.name,this.setDrawingArea(t.drawingAreaMeasurement),this.draw=this.draw(e)},t.prototype.setDrawingArea=function(t){this.conf.drawingAreaMeasurement=t},t.prototype.draw=function(t){return function(){var e=this.conf;e.drawingAreaMeasurement.effectiveHeight>0&&t(e.drawingAreaMeasurement)}},t.prototype.eventCallback=function(){},t}();function C(e){var n=s.plotBorderThickness;u&&(s.plotBorderThickness=0),o.apply(t.getVisibleRoot(),[i,{width:e.effectiveWidth,height:e.effectiveHeight,x:e.startX,y:e.startY,horizontalPadding:s.horizontalPadding,verticalPadding:s.verticalPadding},h]),s.plotBorderThickness=n}function w(t,e,i){var o=t.x,r=t.y,a=t.width,l=t.height,h=s.seperatorAngle/2,c=["M",o,r],d=(0,n.pluckNumber)(h?l/2*(1-Math.tan(h)):i,15),g=["M",t._x,r],u=function(t){return{both:["h",t,"v",l/2,"v",l/2,"h",-t,"v",-l/2,"v",-l/2],right:["h",t,"v",l/2,"v",l/2,"h",-t,"l",d,-l/2,"l",-d,-l/2],no:["h",t,"l",d,l/2,"l",-d,l/2,"h",-t,"l",d,-l/2,"l",-d,-l/2],left:["h",t,"l",d,l/2,"l",-d,l/2,"h",-t,"v",-l/2,"v",-l/2]}};return{path:c.concat(u(a)[e]),_path:g.concat(u(t._width).both),offset:d}}function k(){var t=Array.prototype.splice.call(arguments,0);t.push(!0),p("navigationBar").apply(this,t)}return g=[],c={get:function(){return g},set:function(t){var e;return t?((e=new x).init({name:t.type,drawingAreaMeasurement:t.drawingArea},t.drawFn),g.push(e)):g.length=0,g}},e.init=function(){var t,e=["navigationBar","treeMap","stackedNavigation"],n=Array.prototype.slice.call(arguments,0);for(i=n[0],r=n[1],s=i.conf,h=n[2],o=n[4],c.get().length>=e.length&&c.set();e.length;)t=e.shift(),c.set({type:t,drawFn:p(t),drawingArea:y(t)})},e.draw=function(i){var n,o,r,a=t.getVisibleRoot();for(h.disposeSelectedChildren(a,i?i[1]:a),i&&(a=i[1]),a.getParent()?s.showNavigationBar&&e.heightProportion.set(!0):e.heightProportion.set(!1),o=c.get(),n=0;n<o.length;n+=1)(r=o[n]).setDrawingArea(y(r.conf.name)),i&&t.setVisibleRoot(i[n]),r.draw();h.hideNodes()},e.heightProportion=v,e.remove=function(){var e=t.getVisibleRoot();e&&h.disposeChild(e)},e},g=function(t){return t?t.replace(/^#*/,"#"):"#"+u},u="E5E5E5",f=function(){function t(){a(this,t),this._b=[],this._css=undefined,this.rangeOurEffectApplyFn=n.stubFN,this.statePointerLow={value:undefined,index:undefined},this.statePointerHigh={value:undefined,index:undefined}}return t.prototype.resetPointers=function(){this.statePointerLow={value:undefined,index:undefined},this.statePointerHigh={value:undefined,index:undefined}},t.prototype.setRangeOutEffect=function(t,e){this._css=t,this.rangeOurEffectApplyFn=e},t.prototype.addInBucket=function(t){var e,i=this._b,n=t.getColorValue(),o=0,r=i.length-1;n&&(e=function(){for(var t,a;o<=r;)if(e=t=(o+r)/2|0,(a=i[t].getColorValue())<n)o=t+1;else{if(!(a>n))return t;r=t-1}return~r}(),i.splice(Math.abs(e),0,t))},t.prototype.moveLowerShadePointer=function(t){var e,i,n=this._b,o=this.statePointerLow,r=o.index,a=o.value,l=!1;if(e=r=r!==undefined?r:0,t!==(a=a!==undefined?a:Number.NEGATIVE_INFINITY)){if(a<=t){for(;!(t<((i=n[e++])?i.getColorValue():0))&&i;)l=!0,i.rangeOutEffect=this._css,this.rangeOurEffectApplyFn.call(i,this._css);e=l?e-2:e-1}else{for(;!(t>=((i=n[e--])?i.getColorValue():0))&&i;)i.cssConf=i.cssConf||{},l=!0,delete i.rangeOutEffect,i.cssConf.opacity=1,this.rangeOurEffectApplyFn.call(i,i.cssConf);e=l?e+2:e+1}o.index=e,o.value=t}},t.prototype.moveHigherShadePointer=function(t){var e,i,n=this._b,o=n.length,r=this.statePointerHigh,a=r.index,l=r.value,s=!1;if(e=a=a!==undefined?a:o-1,t!==(l=l!==undefined?l:Number.POSITIVE_INFINITY)){if(l>t){for(;!(t>=((i=n[e--])?i.getColorValue():0))&&i;)s=!0,i.rangeOutEffect=this._css,this.rangeOurEffectApplyFn.call(i,this._css);e=s?e+2:e+1}else{for(;!(t<((i=n[e++])?i.getColorValue():0))&&i;)i.cssConf=i.cssConf||{},s=!0,delete i.rangeOutEffect,i.cssConf.opacity=1,this.rangeOurEffectApplyFn.call(i,i.cssConf);e=s?e-2:e-1}r.index=e,r.value=t}},t}(),p=function(){function t(e,i,n){a(this,t),this.label=e,this.id=s++,this.value=parseFloat(i,10),this.colorValue=parseFloat(n,10),this.next=undefined,this.prev=undefined,this.meta={}}return t.prototype.getCSSconf=function(){return this.cssConf},t.prototype.getPath=function(){return this.path},t.prototype.setPath=function(){var t=this.getParent();this.path=(t?t.getPath():[]).concat(this)},t.prototype.addChild=function(e){return e instanceof t&&(this.next=this.next||[],[].push.call(this.next,e),e.setParent(this)),this.next},t.prototype.getChildren=function(){return this.next},t.prototype.addChildren=function(t,e){var i=this.getChildren()||(this.next=[]),n=i.length;e||(e=n-1),e=e>n-1?n-1:e<0?0:e,i.splice(e,0,t),t.setParent(this)},t.prototype.getDepth=function(){return this.meta.depth},t.prototype.isLeaf=function(t){return(!t||this.getDepth()<t)&&this.next},t.prototype.setParent=function(e){return e instanceof t&&(this.prev=e),this},t.prototype.getSiblingCount=function(e){var i,n=0,o=this;if(this instanceof t){if(i=this.getParent(),e){for(;o;)(o=o.getSibling(e))&&(n+=1);return n}return i?i.getChildren().length:void 0}},t.prototype.getParent=function(){return this.prev},t.prototype.getLabel=function(){return this.label},t.prototype.getValue=function(){return this.value},t.prototype.setValue=function(t,e){e?this.value+=t:this.value=t},t.prototype.getColorValue=function(){return this.colorValue},t.prototype.getSibling=function(t){var e,i,n=t.toLowerCase(),o=this.getParent(),r=this.getLabel();if(o)for(e=o.getChildren(),i=0;i<e.length;i++)if(e[i].getLabel()===r)switch(n){case"left":return e[i-1];case"right":return e[i+1]}},t.prototype.setMeta=function(t,e){this.meta[t]=e},t.prototype.setDepth=function(t){this.meta.depth=t},t.prototype.getMeta=function(t){return t?this.meta[t]:this.meta},t}();e["default"]=function(){var t={},e={};return{afAPI:function(t,e){var i,n,o,r,s,h,c,d,u,v=function(){function t(e,i,n){a(this,t),this.node=e,this.bucket=i?new f:undefined,this.cleansingFn=n}return t.prototype.get=function(){var t=this.order,e=this.bucket,i=this.cleansingFn;return function n(o,r){var a,l,s,h,c,d=["label","value","data","svalue"];if(o)for(c in a=new p(o.label,i(o.value),i(o.svalue)),0===(s=o.data||[]).length&&e&&e.addInBucket(a),a.setDepth(r),o)-1===d.indexOf(c)&&a.setMeta(c,o[c]);for(t&&(s=t(s)),l=0;l<s.length;l++)h=n(s[l],r+1),a.addChild(h);return a}(this.node,0)},t.prototype.getBucket=function(){return this.bucket},t.getMaxDepth=function(){return n},t}();function b(t){o=t}return i=function(t,e){var i={},n=e&&e.exception,o=function(){function t(e){a(this,t),this.iterAPI=e}return t.prototype.initWith=function(t){return this.iterAPI(t)},t}();return i.df=function(t){var e=t,i=[],o=!1;return i.push(e),{next:function(t){var e,r;if(!o){if(r=i.shift(),!n||r!==n||(r=i.shift()))return(e=t!==undefined&&r.getDepth()>=t?[]:r.getChildren())&&e.length&&[].unshift.apply(i,e),0===i.length&&(o=!0),r;o=!0}},reset:function(){o=!1,e=t,i.length=0,i.push(e)}}},i.bf=function(t){var e=t,i=[],n=[],o=!1;return i.push(e),n.push(e),{next:function(){var t,e;if(!o)return(t=(e=i.shift()).getChildren())&&t.length&&[].push.apply(i,t),0===i.length&&(o=!0),e},nextBatch:function(){var t;if(!o)return(t=n.shift().getChildren())&&t.length&&[].push.apply(n,t),0===i.length&&(o=!0),t},reset:function(){o=!1,e=t,i.length=0,i.push(e)}}},{df:new o(i.df).initWith(t),bf:new o(i.bf).initWith(t)}},s=function(){var t={};function e(){this.con={}}return e.prototype.constructor=e,e.prototype.get=function(t){return this.con[t]},e.prototype.set=function(t,e){this.con[t]=e},e.prototype["delete"]=function(t){return delete this.con[t]},{getInstance:function(i){return t[i]?t[i]:t[i]=new e}}}(),c=[],d=!1,u={visibility:"visible",opacity:1},r={controlPreAnimVisibility:function(t,e){var n,o,r,a;if(t){for(o=t;o=o.getParent();)n=o;for(r=i(n,{exception:t}).df;a=r.next();)(a.overAttr||(a.overAttr={})).visibility="hidden",c.push(a);return h=e||t.getParent(),d=!1,c}},displayAll:function(t){var e,n;if(t){for(e=i(t.getParent()||t).df;n=e.next();)(n.overAttr||(n.overAttr={})).visibility="visible";h=undefined,c.length=0,d=!1}},controlPostAnimVisibility:function(){var t,e,o,r;if(!d&&(d=!0,h)){for(o=i(h).df;r=o.next(n);)r.dirtyNode&&((e=r.dirtyNode)&&e.plotItem.attr(u),(t=e&&e.textItem)&&t.label&&t.label.attr(u),t&&t.label&&t.highlightMask.attr(u));h=undefined,c.length=0}}},t.AbstractTreeMaker=v,t.iterator=i,t.initConfigurationForlabel=function(t,e,i){var o=t.x,r=t.y,a=e/2,l=i.showParent?0:1,s=i.showChildLabels;return function(t,h,c){var d,u,f,p=!1,v={x:undefined,y:undefined,width:undefined,height:undefined},b={},m=0,y={};if(f=t.meta,t)return t.isLeaf(n)||(p=!0),b.label=t.getLabel(),v.width=h.width-2*o,v.x=h.x+h.width/2,u=h.height-2*r,!p&&u<e&&(v.height=-1),!c&&p?(v.height=s?v.height?v.height:h.height-2*r:-1,v.y=h.y+h.height/2):l?(v.y=-1,r=0,e=0,d="hidden"):(v.height=v.height?v.height:e,v.y=h.y+r+a),m+=2*r,m+=e,b.rectShiftY=m,b.textRect=v,i.labelGlow?(y["stroke-width"]=i.labelGlowRadius,y.opacity=i.labelGlowIntensity,y.stroke=i.labelGlowColor,y.visibility="hidden"===d?"hidden":"visible"):y.visibility="hidden",{conf:b,attr:{fontSize:i.labelFontSize||i.baseFontSize,fontFamily:i.labelFont||i.baseFont,fill:f&&f.fontcolor&&g(f.fontcolor)||i.labelFontColor||i.baseFontColor,fontWeight:i.labelFontBold&&"bold",fontStyle:i.labelFontItalic&&"italic",visibility:d},highlight:y}}},t.context=s,t.mapColorManager=function(t,e,i){var o=g(i?t.defaultNavigationBarBGColor:t.defaultParentBGColor);return function(i,r,a){var l,s,h,c={},d=i.cssConf,u=i.meta,f=u.fillcolor?g(u.fillcolor):undefined,p=i.getParent(),v=i.getColorValue();return t.isLegendEnabled=!0,t.isLegendEnabled&&v?e&&e.getColorByValue(v)?function(t,e){var i=t.range;return!i||i.min<=e&&e<=i.max}(a,v)?i.presentColor="#"+e.getColorByValue(v):i.presentColor=g(a.rangeOutBgColor):i.presentColor=g(e&&e.rangeOutsideColor):i.presentColor=undefined,f&&(i.presentColor=f),h=t.isLegendEnabled&&v?e&&e.getColorByValue(v)&&"#"+e.getColorByValue(v)||g(e&&e.rangeOutsideColor):undefined,i.isLeaf(n)?c.fill=f||h||o:(l=(s=(p||i).cssConf)&&s.fill,h=h||l,c.fill=f||h),c.stroke=r?t.navigationBarBorderColor:t.plotBorderColor,c.strokeWidth=r?t.navigationBarBorderThickness:t.plotBorderThickness,c["stroke-dasharray"]="none",r||d&&"--"===d["stroke-dasharray"]&&(c["stroke-dasharray"]=d["stroke-dasharray"],c.strokeWidth=d.strokeWidth),c}},t.abstractEventRegisterer=function(i,n,o,r){var a,s,h,c=n.getFromEnv("chart"),d=n.getFromEnv("toolbarBtns"),g=n.conf,u=i.drawTree,f=r.disposeChild,p=t.context,v=arguments,m={colorValue:"svalue",label:"name",value:"value",rect:"metrics"};function y(t){var e,i={};for(e in m)i[m[e]]=t[e];return i}return s=p.getInstance("ClickedState"),c._intSR={},c._intSR.backToParent=a=function(e){var s=this,d=s,p=d&&s.getParent(),b=t.context.getInstance("ClickedState").get("VisibileRoot")||{};c.config.trackerConfig.length=0,c.triggerKDTreePartioning(),e?c.fireChartInstanceEvent("beforedrillup",{node:s,withoutHead:!g.showParent},undefined,function(){p&&(b.state=l,b.node=[{virginNode:t.getVisibleRoot()},p],f(d),u.apply(p,v)),c.fireChartInstanceEvent(l,{node:s,withoutHead:!g.showParent,drillUp:a,drillUpToTop:h}),s=s&&s.getParent()},function(){c.fireChartInstanceEvent("drillupcancelled",{node:s,withoutHead:!g.showParent})}):(p&&(b.state=l,b.node=[{virginNode:t.getVisibleRoot()},p],f(d),u.apply(p,[i,n,o,r])),s=s&&s.getParent())},c._intSR.resetTree=h=function(e){var i,n=this,o=n&&n.getParent(),r=t.context.getInstance("ClickedState").get("VisibileRoot")||{};for(c.config.trackerConfig.length=0,c.triggerKDTreePartioning();o;)i=o,o=o.getParent();e?c.fireChartInstanceEvent("beforedrillup",{node:n,withoutHead:!g.showParent},undefined,function(){i&&(r.state=l,r.node=[{virginNode:t.getVisibleRoot()},i],f(i),u.apply(i,v),c.fireChartInstanceEvent(l,{node:n,sender:c.fusionCharts,withoutHead:!g.showParent,drillUp:a,drillUpToTop:h}))},function(){c.fireChartInstanceEvent("drillupcancelled",{node:n,withoutHead:!g.showParent})}):i&&(r.state=l,r.node=[{virginNode:t.getVisibleRoot()},i],f(i),u.apply(i,v))},{click:function(t,i){var n,o,u,p=t.virginNode,v=c.getFromEnv("animationManager");if(c.state="click",c.fireChartInstanceEvent("dataplotclick",y(t.virginNode)),o=p.getParent()){if(p===i)u=o,c.flushKDTree(),c.config.trackerConfig.length=0,n=l;else if(p.next)u=p,c.flushKDTree(),c.config.trackerConfig.length=0,n="drilldown";else{if(i===(u=o))return void(n=undefined);c.config.trackerConfig.length=0,n="drilldown"}n&&c.fireChartInstanceEvent("before"+n,{node:u,withoutHead:!g.showParent},undefined,function(){s.set("VisibileRoot",{node:t,state:n}),f.call(r,u),b(u),v.setAnimationState("drill"),c.setState("drill",!0),e.draw(),v.onAnimationComplete(function(){c.setState("drill",!1)}),c.fireChartInstanceEvent(n,{node:u,withoutHead:!g.showParent,drillUp:a,drillUpToTop:h})},function(){c.fireChartInstanceEvent(n+"cancelled",{node:u,withoutHead:!g.showParent})}),d.back&&d.back.attachEventHandlers({click:a.bind(u)}),d.home&&d.home.attachEventHandlers({click:h.bind(u)}),c.resetSingleTracker()}},mouseover:function(t){var e=y(t.virginNode);c.fireChartInstanceEvent("dataplotrollover",e,undefined,undefined,function(){c.fireChartInstanceEvent("dataplotrollovercancelled",e)})},mouseout:function(t){var e=y(t.virginNode);c.fireChartInstanceEvent("dataplotrollout",y(t.virginNode),undefined,undefined,function(){c.fireChartInstanceEvent("dataplotrolloutcancelled",e)})}}},t.setMaxDepth=function(t){return n=t},t.getVisibleRoot=function(){return o},t.setVisibleRoot=b,t.visibilityController=r,t}(t,e),algorithmFactory:h(t,{}),containerManager:d(t,e),treeOpt:c}}}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.treemap.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.vml.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.vml.js new file mode 100755 index 0000000000000000000000000000000000000000..f4c9ebe09429b6e79c653580bd9a8ba834d4a0a3 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.vml.js @@ -0,0 +1,13 @@ +!function(t){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=t:t()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[13],{722:function(t,e,r){"use strict";e.__esModule=!0;var i,n=r(723),a=(i=n)&&i.__esModule?i:{"default":i};e["default"]=a["default"]},723:function(t,e,r){"use strict";e.__esModule=!0;var i=a(r(724)),n=a(r(725));function a(t){return t&&t.__esModule?t:{"default":t}}e["default"]={extension:function(t){var e=t.getDep("redraphael","plugin");(0,i["default"])(e),(0,n["default"])(e)},name:"redraphaelVml",type:"plugin",requiresFusionCharts:!0}},724:function(t,e,r){"use strict";e.__esModule=!0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t}; +/**! +* RedRaphael 1.0.0 - JavaScript Vector Library VML Module +* Copyright (c) 2012-2013 FusionCharts Technologies <http://www.fusioncharts.com> +* +* Raphael 2.1.0 - JavaScript Vector Library VML Module +* Copyright (c) 2008-2012 Dmitry Baranovskiy <http://raphaeljs.com> +* Copyright © 2008-2012 Sencha Labs <http://sencha.com> +* +* Licensed under the MIT license. +*/e["default"]=function(t){if(t.vml){var e,r="hasOwnProperty",a=String,o=parseFloat,s=Math,l=s.round,c=s.max,p=s.min,h=s.sqrt,f=s.abs,d=/[, ]+/,u=t.eve,g=Array.prototype.shift,v=t._g.doc.createElement("div"),m=" ",_="",w={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},b=/([clmz]),?([^clmz]*)/gi,k=/-?[^,\s-]+/g,S="position:absolute;left:0;top:0;width:1px;height:1px",T=21600,R={path:1,rect:1,image:1},C={circle:1,ellipse:1},N=function(e,r,i){var n=t.matrix();return n.rotate(-e,.5,.5),{dx:n.x(r,i),dy:n.y(r,i)}},B=function(t,e,r,i,n,a){var o=t._,s=t.matrix,l=o.fillpos,c=t.node,p=c.style,h=1,d="",u=T/e,y=T/r;if(p.visibility="hidden",e&&r){if(c.coordsize=f(u)+m+f(y),p.rotation=a*(e*r<0?-1:1),a){var g=N(a,i,n);i=g.dx,n=g.dy}if(e<0&&(d+="x"),r<0&&(d+=" y")&&(h=-1),p.flip=d,c.coordorigin=i*-u+m+n*-y,l||o.fillsize){var v=c.getElementsByTagName("fill");(v=v&&v[0])&&(c.removeChild(v),l&&(g=N(a,s.x(l[0],l[1]),s.y(l[0],l[1])),v.position=g.dx*h+m+g.dy*h),o.fillsize&&(v.size=o.fillsize[0]*f(e)+m+o.fillsize[1]*f(r)),c.appendChild(v))}p.visibility="visible"}};v.innerHTML='<v:shape adj="1"/>',(e=v.firstChild).style.behavior="url(#default#VML)",e&&"object"==i(e.adj)||(t.type=_),v=null,t._url=_,t.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var z,L=function(t,e){for(var r in e)u("raphael.attr."+r+"."+t.id,t,e[r],r),t.ca[r]&&t.attr(r,e[r])},E=["font","line-height","font-family","font-weight","font-style","font-size"],M=t._setFillAndStroke=function(e,i){if(e.paper.canvas){e.attrs=e.attrs||{};var n,s=e.node,h=e.attrs,f=s.style,u=R[e.type]&&(i.x!=h.x||i.y!=h.y||i.width!=h.width||i.height!=h.height||i.cx!=h.cx||i.cy!=h.cy||i.rx!=h.rx||i.ry!=h.ry||i.r!=h.r),y=C[e.type]&&(h.cx!=i.cx||h.cy!=i.cy||h.r!=i.r||h.rx!=i.rx||h.ry!=i.ry),g="group"===e.type,v=e;for(var x in n=v.oriOp||(v.oriOp={}),i)""!==i[x]?i[r](x)&&(h[x]=i[x]):(s.removeAttribute(x),delete h[x],delete i[x]);if(u&&(h.path=t._getPath[e.type](e),e._.dirty=1),i.href&&(s.href=i.href),i.title&&(s.title=i.title),i.target&&(s.target=i.target),i.cursor&&(f.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||u)&&(s.path=function(e){var r=/[ahqstv]/gi,i=t._pathToAbsolute;if(a(e).match(r)&&(i=t._path2curve),r=/[clmz]/g,i==t._pathToAbsolute&&!a(e).match(r)){var n=a(e).replace(b,function(t,e,r){var i=[],n="m"==e.toLowerCase(),a=w[e];return r.replace(k,function(t){n&&2==i.length&&(a+=i+w["m"==e?"l":"L"],i=[]),i.push(l(t*T))}),a+i});return n||"m0,0"}var o,s,c=i(e);n=[];for(var p=0,h=c.length;p<h;p++){o=c[p],"z"==(s=c[p][0].toLowerCase())&&(s="x");for(var f=1,d=o.length;f<d;f++)s+=l(o[f]*T)+(f!=d-1?",":_);n.push(s)}return n.length?n.join(m):"m0,0"}(~a(h.path).toLowerCase().indexOf("r")?t._pathToAbsolute(h.path):h.path),"image"==e.type&&(e._.fillpos=[h.x,h.y],e._.fillsize=[h.width,h.height],B(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),"rotation"in i){var S=i.rotation;t.is(S,"array")?e.rotate.apply(e,S):e.rotate(S)}if("visibility"in i&&("hidden"===i.visibility?e.hide():e.show()),y){var N=+h.cx,L=+h.cy,M=+h.rx||+h.r||0,F=+h.ry||+h.r||0;s.path=t.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",l((N-M)*T),l((L-F)*T),l((N+M)*T),l((L+F)*T),l(N*T))}if("clip-rect"in i){var j=a(i["clip-rect"]).split(d);if(4==j.length){j[0]=+j[0],j[1]=+j[1],j[2]=+j[2]+j[0],j[3]=+j[3]+j[1];var H,W=g?s:s.clipRect||t._g.doc.createElement("div"),I=W.style;g?(e.clip=j.slice(),H=e.matrix.offset(),H=[o(H[0]),o(H[1])],j[0]-=H[0],j[1]-=H[1],j[2]-=H[0],j[3]-=H[1],I.width="1px",I.height="1px"):s.clipRect||(I.top="0",I.left="0",I.width=e.paper.width+"px",I.height=e.paper.height+"px",s.parentNode.insertBefore(W,s),W.appendChild(s),W.raphael=!0,W.raphaelid=s.raphaelid,s.clipRect=W),I.position="absolute",I.clip=t.format("rect({1}px {2}px {3}px {0}px)",j)}i["clip-rect"]||(g&&e.clip?(s.style.clip="rect(0px 10800px 10800px 0px)",delete e.clip):s.clipRect&&(s.clipRect.style.clip="rect(0px 10800px 10800px 0px)"))}if("shape-rendering"in i&&(s.style.antialias="crisp"!==i["shape-rendering"]),e.textpath||g){var O=g?s.style:e.textpath.style;i.font&&(O.font=i.font),i["font-family"]&&(O.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,_)+'"'),i["font-size"]&&(O.fontSize=i["font-size"]),i["font-weight"]&&(O.fontWeight=i["font-weight"]),i["font-style"]&&(O.fontStyle=i["font-style"])}if("arrow-start"in i&&t.addArrow&&t.addArrow(v,i["arrow-start"]),"arrow-end"in i&&t.addArrow&&t.addArrow(v,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var G,P=s.getElementsByTagName("fill"),V=-1;if(!(P=P&&P[0])&&(P=z("fill")),"image"==e.type&&i.src&&(!function(t,e){var r=e.src;t._.group,t.node;t._.RefImg||(t._.RefImg=new Image),e.src!==undefined&&(t._.RefImg.src=r)}(e,i),P.src=i.src),i.fill&&(P.on=!0),null!=P.on&&"none"!=i.fill&&null!==i.fill||(P.on=!1),P.on&&i.fill)if(a(i.fill).match(t._ISURL)){G=i.fill.split(t._ISURL),P.parentNode==s&&s.removeChild(P),P.rotate=!0,P.src=G[1],P.type="tile";var Y=e.getBBox(1);P.position=Y.x+m+Y.y,e._.fillpos=[Y.x,Y.y],t._preload(G[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else{var q=t.getRGB(i.fill);P.color=q.hex,P.src=_,P.type="solid",q.error&&(v.type in{circle:1,ellipse:1}||"r"!=a(i.fill).charAt())&&A(v,i.fill,P)?(h.fill="none",h.gradient=i.fill,P.rotate=!1):"opacity"in q&&!("fill-opacity"in i)&&(n.nonGradOpacity=V=q.opacity)}if(-1!==V||"fill-opacity"in i||"opacity"in i){var X=((+h["fill-opacity"]+1||2)-1)*((+h.opacity+1||2)-1);X=p(c(X,0),1),n.opacity=X,n.opacity1!==undefined?(P.opacity=n.opacity1*X,P["o:opacity2"]=n.opacity2*X):P.opacity=X*(n.nonGradOpacity===undefined?1:n.nonGradOpacity),P.src&&(P.color="none")}n.opacity=undefined,s.appendChild(P);var D=s.getElementsByTagName("stroke")&&s.getElementsByTagName("stroke")[0],U=!1;!D&&(U=D=z("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(D.on=!0),("none"==i.stroke||null===i.stroke||null==D.on||0==i.stroke||0==i["stroke-width"])&&(D.on=!1);var J=t.getRGB("stroke"in i?i.stroke:h.stroke);D.on&&i.stroke&&(D.color=J.hex),X=((+h["stroke-opacity"]+1||2)-1)*((+h.opacity+1||2)-1)*((+J.opacity+1||2)-1);var $=.75*(o(i["stroke-width"])||1);if(X=p(c(X,0),1),null==i["stroke-width"]&&($=h["stroke-width"]),i["stroke-width"]&&(D.weight=$),$&&$<1&&(X*=$)&&(D.weight=1),D.opacity="none"!==h.stroke?X:0,i["stroke-linejoin"]&&(D.joinstyle=i["stroke-linejoin"])||U&&(U.joinstyle="miter"),D.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(D.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),i["stroke-dasharray"]){var Z={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};D.dashstyle=Z[r](i["stroke-dasharray"])?Z[i["stroke-dasharray"]]:i["stroke-dasharray"].join&&i["stroke-dasharray"].join(" ")||_}U&&s.appendChild(D)}if("text"==v.type){v.paper.canvas.style.display=_;var K=v.paper.span,Q=100,tt=function(t){for(var e,r,i,n={},a=E.length;t.paper&&t.paper.canvas;){for(i=t.attrs,e=!0,r=0;r<a;r++)n[E[r]]||(n[E[r]]=i[E[r]],e=!1);if(e)break;t=t.parent}return n}(v),et=tt.font&&tt.font.match(/\d+(?:\.\d*)?(?=px)/),rt=tt["line-height"]&&(tt["line-height"]+_).match(/\d+(?:\.\d*)?(?=px)/);f=K.style,tt.font&&(f.font=tt.font),tt["font-family"]&&(f.fontFamily=tt["font-family"]),tt["font-weight"]&&(f.fontWeight=tt["font-weight"]),tt["font-style"]&&(f.fontStyle=tt["font-style"]),et=o(tt["font-size"]||et&&et[0])||10,f.fontSize=et*Q+"px",rt=o(tt["line-height"]||rt&&rt[0]||1.2*et)||12,f.lineHeight=rt*Q+"px",t.is(i.text,"array")&&(i.text=v.textpath.string=i.text.join("\n").replace(/<br\s*?\/?>/gi,"\n")),v.textpath.string&&(K.innerHTML=a(v.textpath.string).replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,"<br>"));var it=K.getBoundingClientRect();v.W=h.w=(it.right-it.left)/Q,v.H=h.h=(it.bottom-it.top)/Q,v.X=h.x,v.Y=h.y;switch(h["vertical-align"]){case"top":v.bby=v.H/2;break;case"bottom":v.bby=-v.H/2;break;default:v.bby=0}("x"in i||"y"in i||v.bby!==undefined)&&(v.path.v=t.format("m{0},{1}l{2},{1}",l(h.x*T),l((h.y+(v.bby||0))*T),l(h.x*T)+1));for(var nt=["x","y","text","font","font-family","font-weight","font-style","font-size","line-height"],at=0,ot=nt.length;at<ot;at++)if(nt[at]in i){v._.dirty=1;break}switch(h["text-anchor"]){case"start":v.textpath.style["v-text-align"]="left",v.bbx=v.W/2;break;case"end":v.textpath.style["v-text-align"]="right",v.bbx=-v.W/2;break;default:v.textpath.style["v-text-align"]="center",v.bbx=0}v.textpath.style["v-text-kern"]=!0}}},F=t._updateFollowers=function(){var t,e,r,i=(0,n.getArrayCopy)(arguments),a=g.call(i),o=g.call(i);for(t=0,e=a.followers.length;t<e;t++)(r=a.followers[t].el)[o].apply(r,i)},A=function(e,r,i){e.attrs=e.attrs||{};e.attrs;var n,s=Math.pow,l=e.oriOp,c="linear",p=".5 .5";if(e.attrs.gradient=r,r=(r=a(r).replace(t._radial_gradient,function(t,e){c="radial";(e=e&&e.split(",")||[])[0],e[1],e[2];var r=e[3],i=e[4];e[5];return r&&i&&(r=o(r),i=o(i),s(r-.5,2)+s(i-.5,2)>.25&&(i=h(.25-s(r-.5,2))*(2*(i>.5)-1)+.5),p=r+m+i),_})).split(/\s*\-\s*/),"linear"==c){var f=r.shift();if(f=-o(f),isNaN(f))return null}var d=t._parseDots(r);if(!d)return null;if(e=e.shape||e.node,d.length){i.parentNode==e&&e.removeChild(i),i.on=!0,i.method="none",i.color=d[0].color,i.color2=d[d.length-1].color;for(var u=[],y=1,g=d[0].opacity===undefined?1:d[0].opacity,v=0,x=d.length;v<x;v++)d[v].offset&&u.push(d[v].offset+m+d[v].color),d[v].opacity!==undefined&&(y=d[v].opacity);i.colors=u.length?u.join():"0% "+i.color,l.opacity1=y,l.opacity2=g,n=l.opacity===undefined?1:l.opacity,i.opacity=y*n,i["o:opacity2"]=g*n,"radial"==c?(i.type="gradientTitle",i.focus="100%",i.focussize="0 0",i.focusposition=p,i.angle=0):(i.type="gradient",i.angle=(270-f)%360),e.appendChild(i)}return 1},j=function(e,r,i){var n,a=this,o=i||r; +/*!dontAppend && */o.canvas&&o.canvas.appendChild(e),(n=z("skew")).on=!0,e.appendChild(n),a.skew=n,a.node=a[0]=e,e.raphael=!0,e.raphaelid=a.id=t._oid++,a.X=0,a.Y=0,a.attrs=a.attrs||{},a.followers=a.followers||[],a.paper=r,a.ca=a.customAttributes=a.customAttributes||new r._CustomAttributes,a.matrix=t.matrix(),a._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},a.parent=o,!o.bottom&&(o.bottom=a),a.prev=o.top,o.top&&(o.top.next=a),o.top=a,a.next=null},H=t.el;j.prototype=H,H.constructor=j,H.transform=function(e){if(null==e)return this._.transform;var r,i=this.paper._viewBoxShift,n=i?"s"+[i.scale,i.scale]+"-1-1t"+[i.dx,i.dy]:_;i&&(r=e=a(e).replace(/\.{3}|\u2026/g,this._.transform||_)),t._extractTransform(this,n+e);var o,s=this.matrix.clone(),l=this.skew,c=this.node,p=~a(this.attrs.fill).indexOf("-"),h=!a(this.attrs.fill).indexOf("url(");if(s.translate(-.5,-.5),h||p||"image"==this.type)if(l.matrix="1 0 0 1",l.offset="0 0",o=s.split(),p&&o.noRotation||!o.isSimple){c.style.filter=s.toFilter();var f=this.getBBox(),d=this.getBBox(1),u=f.x2&&d.x2?"x2":"x",y=f.y2&&d.y2?"y2":"y",g=f[u]-d[u],v=f[y]-d[y];c.coordorigin=g*-T+m+v*-T,B(this,1,1,g,v,0)}else c.style.filter=_,B(this,o.scalex,o.scaley,o.dx,o.dy,o.rotate);else c.style.filter=_,l.matrix=a(s),l.offset=s.offset();return r&&(this._.transform=r),this},H.rotate=function(t,e,r){var i=this;if(i.removed)return i;if(F(i,"rotate",t,e,r),null!=t){if((t=a(t).split(d)).length-1&&(e=o(t[1]),r=o(t[2])),t=o(t[0]),null==r&&(e=r),null==e||null==r){var n=i.getBBox(1);e=n.x+n.width/2,r=n.y+n.height/2}return i._.dirtyT=1,i.transform(i._.transform.concat([["r",t,e,r]])),i}},H.translate=function(t,e){var r=this;return r.removed?r:(F(r,"translate",t,e),(t=a(t).split(d)).length-1&&(e=o(t[1])),t=o(t[0])||0,e=+e||0,r._.bbox&&(r._.bbox.x+=t,r._.bbox.y+=e),r.transform(r._.transform.concat([["t",t,e]])),r)},H.scale=function(t,e,r,i){var n=this;if(n.removed)return n;if(F(n,"scale",t,e,r,i),(t=a(t).split(d)).length-1&&(e=o(t[1]),r=o(t[2]),i=o(t[3]),isNaN(r)&&(r=null),isNaN(i)&&(i=null)),t=o(t[0]),null==e&&(e=t),null==i&&(r=i),null==r||null==i)var s=n.getBBox(1);return r=null==r?s.x+s.width/2:r,i=null==i?s.y+s.height/2:i,n.transform(n._.transform.concat([["s",t,e,r,i]])),n._.dirtyT=1,n},H.hide=function(t){var e=this;return F(e,"hide",t),!e.removed&&(e.node.style.display="none"),e},H.show=function(t){var e=this;return F(e,"show",t),!e.removed&&(e.node.style.display=_),e},H._getBBox=function(){var t=this;return t.removed?{}:{x:t.X+(t.bbx||0)-t.W/2,y:t.Y+(t.bby||0)-t.H/2,width:t.W,height:t.H}},H.remove=function(){if(!this.removed&&this.parent.canvas){var e=this,r=t._engine.getNode(e),i=e.paper,n=e.shape;for(i.__set__&&i.__set__.exclude(e),u.unbind("raphael.*.*."+e.id),n&&n.parentNode.removeChild(n),r.parentNode&&r.parentNode.removeChild(r);a=e.followers.pop();)a.el.remove();for(;a=e.bottom;)a.remove();if(e._drag&&e.undrag(),e.events)for(;a=e.events.pop();)a.unbind();for(var a in e.removeData(),delete i._elementsById[e.id],t._tear(e,e.parent),e)e[a]="function"==typeof e[a]?t._removedFactory(a):null;e.removed=!0}},H.attr=function(e,i){if(this.removed)return this;if(null==e){var n={};for(var a in this.attrs)this.attrs[r](a)&&(n[a]=this.attrs[a]);return n.gradient&&"none"==n.fill&&(n.fill=n.gradient)&&delete n.gradient,n.transform=this._.transform,n.visibility="none"===this.node.style.display?"hidden":"visible",n}if(null==i&&t.is(e,"string")){if("fill"==e&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("visibility"==e)return"none"===this.node.style.display?"hidden":"visible";for(var o=e.split(d),s={},l=0,c=o.length;l<c;l++)(e=o[l])in this.attrs?s[e]=this.attrs[e]:t.is(this.ca[e],"function")?s[e]=this.ca[e].def:s[e]=t._availableAttrs[e];return c-1?s:s[o[0]]}if(this.attrs&&null==i&&t.is(e,"array")){for(s={},l=0,c=e.length;l<c;l++)s[e[l]]=this.attr(e[l]);return s}var p;if(null!=i&&((p={})[e]=i),null==i&&t.is(e,"object")&&(p=e),!t.stopPartialEventPropagation)for(var h in p)u("raphael.attr."+h+"."+this.id,this,p[h],h);if(p){var f,y={};for(h in this.ca)if(this.ca[h]&&p[r](h)&&t.is(this.ca[h],"function")&&!this.ca["_invoked"+h]){this.ca["_invoked"+h]=!0;var g=this.ca[h].apply(this,[].concat(p[h]));for(var v in delete this.ca["_invoked"+h],g)g[r](v)&&(p[v]=g[v]);this.attrs[h]=p[h],!1===g&&(y[h]=p[h],delete p[h])}"text"in p&&"text"==this.type&&(t.is(p.text,"array")&&(p.text=p.text.join("\n")),this.textpath.string=p.text.replace(/<br\s*?\/?>/gi,"\n")),M(this,p);for(l=0,c=this.followers.length;l<c;l++)(f=this.followers[l]).cb&&!f.cb.call(f.el,p,this)||f.el.attr(p);for(var v in y)p[v]=y[v]}return this},H.on=function(e,r,i){var n=this,a=r;if(n.removed)return n;switch(n._actualListners||(n._actualListners=[]),n._derivedListeners||(n._derivedListeners=[]),e){case"fc-dragstart":return n.drag(null,r),n;case"fc-dragmove":return n.drag(r),n;case"fc-dragend":return n.drag(null,null,r),n;case"fc-dbclick":return n.dbclick(r,i),n;case"fc-click":return n.fcclick(r,i),n}return e=e.replace(/fc-/,""),n._&&n._.RefImg&&("load"===e||"error"===e)?(node=n._.RefImg,r=function(t,e){return function(r){!t.removed&&e.call(t,r)}}(el,r)):node=n.node,node.attachEvent?a===r&&(a=function(t){r.call(i||n,t)}):a=function(){var e=t._g.win.event;e.target=e.srcElement,r(e)},n._actualListners.push(r),n._derivedListeners.push(a),node.attachEvent?node.attachEvent("on"+e,a):node["on"+e]=a,n},H.off=function(t,e){var r;if(this.removed)return this;switch(t){case"fc-dragstart":return this.undragstart(e),this;case"fc-dragmove":return this.undragmove(e),this;case"fc-dragend":return this.undragend(e),this;case"fc-dbclick":return this.undbclick(e),this;case"fc-click":return this.fcunclick(e),this}return t=t.replace(/fc-/,""),-1!==(r=this._actualListners.indexOf(e))&&(e=this._derivedListeners[r],this._actualListners.splice(r,1),this._derivedListeners.splice(r,1)),this.node.attachEvent?this.node.detachEvent("on"+t,e):this.node["on"+t]=null,this},t._engine.getNode=function(t){var e=t.node||t[0].node;return e.clipRect||e},t._engine.getLastNode=function(t){var e=t.node||t[t.length-1].node;return e.clipRect||e},t._engine.group=function(e,r,i){var n,a=t._g.doc.createElement("div"),o=e._HTMLClassName,s=new j(a,e,i);return a.style.cssText=S,s._id=r||_,r&&(n=a.className="raphael-group-"+s.id+"-"+r),o&&(a.className=n?n+" "+o:o),(i||e).canvas.appendChild(a),s.type="group",s.canvas=s.node,s.transform=t._engine.group.transform,s.top=null,s.bottom=null,s},t._engine.group.transform=function(e){if(null==e)return this._.transform;var r,i,n,s,l=this,c=l.node.style,p=l.clip,h=l.paper._viewBoxShift,f=h?"s"+[h.scale,h.scale]+"-1-1t"+[h.dx,h.dy]:_;return h&&(e=a(e).replace(/\.{3}|\u2026/g,l._.transform||_)),t._extractTransform(l,f+e),i=(r=l.matrix).offset(),n=o(i[0])||0,s=o(i[1])||0,c.left=n+"px",c.top=s+"px",c.zoom=(l._.tzoom=r.get(0))+_,p&&(c.clip=t.format("rect({1}px {2}px {3}px {0}px)",[p[0]-n,p[1]-s,p[2]-n,p[3]-s])),l},t._engine.path=function(t,e,r){var i=z("shape");i.style.cssText=S,i.coordsize=T+m+T,i.coordorigin=t.coordorigin;var n=new j(i,t,r);return n.type=e.type||"path",n.path=[],n.Path=_,e.type&&delete e.type,M(n,e),L(n,e),n},t._engine.rect=function(e,r,i){var n=t._rectPath(r.x,r.y,r.w,r.h,r.r);r.path=n,r.type="rect";var a=e.path(r,i),o=a.attrs;return a.X=o.x,a.Y=o.y,a.W=o.width,a.H=o.height,o.path=n,a},t._engine.ellipse=function(t,e,r){e.type="ellipse";var i=t.path(e,r),n=i.attrs;return i.X=n.x-n.rx,i.Y=n.y-n.ry,i.W=2*n.rx,i.H=2*n.ry,i},t._engine.circle=function(t,e,r){e.type="circle";var i=t.path(e,r),n=i.attrs;return i.X=n.x-n.r,i.Y=n.y-n.r,i.W=i.H=2*n.r,i},t._engine.image=function(e,r,i){r.w||(r.w=r.width),r.h||(r.h=r.height);var n=t._rectPath(r.x,r.y,r.w,r.h);r.path=n,r.type="image",r.stroke="none";var a=e.path(r,i),o=a.attrs,s=a.node,l=s.getElementsByTagName("fill")[0];return!a._.RefImg&&(a._.RefImg=new Image),o.src=r.src,a.X=o.x=r.x,a.Y=o.y=r.y,a.W=o.width=r.w,a.H=o.height=r.h,l.parentNode==s&&s.removeChild(l),l.rotate=!0,l.src=o.src,l.type="tile",a._.fillpos=[o.x,o.y],a._.fillsize=[o.w,o.h],s.appendChild(l),B(a,1,1,0,0,0),a},t._engine.text=function(e,r,i,n){var o=z("shape"),s=z("path"),c=z("textpath");x=r.x||0,y=r.y||0,text=r.text,s.v=t.format("m{0},{1}l{2},{1}",l(r.x*T),l(r.y*T),l(r.x*T)+1),s.textpathok=!0,c.string=a(r.text).replace(/<br\s*?\/?>/gi,"\n"),c.on=!0,o.style.cssText=S,o.coordsize=T+m+T,o.coordorigin="0 0";var p=new j(o,e,i);return p.shape=o,p.path=s,p.textpath=c,p.type="text",p.attrs.text=a(r.text||_),p.attrs.x=r.x,p.attrs.y=r.y,p.attrs.w=1,p.attrs.h=1,n&&p.css&&p.css(n,undefined,!0),M(p,r),L(p,r),o.appendChild(c),o.appendChild(s),p},t._engine.setSize=function(e,r){var i=this.canvas.style;return this.width=e,this.height=r,e==+e&&(e+="px"),r==+r&&(r+="px"),e&&(i.width=e),r&&(i.height=r),i.clip="rect(0 "+i.width+" "+i.height+" 0)",this._viewBox&&t._engine.setViewBox.apply(this,this._viewBox),this},t._engine.setViewBox=function(t,e,r,i,n){u("raphael.setViewBox",this,this._viewBox,[t,e,r,i,n]);var a,o,s=this.width,l=this.height,p=1/c(r/s,i/l);return n&&(o=s/r,r*(a=l/i)<s&&(t-=(s-r*a)/2/a),i*o<l&&(e-=(l-i*o)/2/o)),this._viewBox=[t,e,r,i,!!n],this._viewBoxShift={dx:-t,dy:-e,scale:p},this.forEach(function(t){t.transform("...")}),this},t._engine.initWin=function(e){var r=e.document;r.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!r.namespaces.rvml&&r.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),z=t._createNode=function(t,e){var i,n=r.createElement("<rvml:"+t+' class="rvml">');for(i in e)n[i]=a(e[i]);return n}}catch(i){z=t._createNode=function(t,e){var i,n=r.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');for(i in e)n[i]=a(e[i]);return n}}},t._engine.initWin(t._g.win),t._engine.create=function(){var e=t._getContainer.apply(0,arguments),r=e.container,i=e.height,n=e.width,a=e.x,o=e.y;if(!r)throw new Error("VML container not found.");var s=new t._Paper,l=s.canvas=t._g.doc.createElement("div"),c=l.style;return a=a||0,o=o||0,n=n||512,i=i||342,s.width=n,s.height=i,n==+n&&(n+="px"),i==+i&&(i+="px"),s.coordsize=216e5+m+216e5,s.coordorigin="0 0",l.id="raphael-paper-"+s.id,s.span=t._g.doc.createElement("span"),s.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",l.appendChild(s.span),c.cssText=t.format("top:0;left:0;width:{0};height:{1};display:inline-block;cursor:default;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",n,i),1==r?(t._g.doc.body.appendChild(l),c.left=a+"px",c.top=o+"px",c.position="absolute"):r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),s.renderfix=function(){},s},t.prototype.clear=function(){var e;for(u("raphael.clear",this);e=this.bottom;)e.remove();this.canvas.innerHTML=_,this.span=t._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},t.prototype.remove=function(){var e;for(u("raphael.remove",this);e=this.bottom;)e.remove();for(e in this.canvas.parentNode.removeChild(this.canvas),this)this[e]="function"==typeof this[e]?t._removedFactory(e):null;return!0},t.prototype.setHTMLClassName=function(t){this._HTMLClassName=t}}};var n=r(121)},725:function(t,e,r){"use strict";e.__esModule=!0,e["default"]=function(t){var e=t._availableAttrs,r='" id = "',n=/^matrix\(|\)$/g,a=/\,/g,o=/\n|<br\s*?\/?>/gi,s=/[^\d\.]/gi,l=/[\%\(\)\s,\xb0#]/g,c=/group/gi,p=/&/g,h=/"/g,f=/'/g,d=/</g,u=/>/g,y=0,g="userSpaceOnUse",v=Math,x=parseFloat,m=v.max,_=v.abs,w=v.pow,b=String,k=/[, ]+/,S={blur:function(){},transform:function(){},src:function(){var t=arguments[1],e=t.attrs.src;t.attrSTR+=' xlink:href="'+e+'"'},path:function(){var e=arguments[1],r=e.attrs.path;r=t._pathToAbsolute(r||""),e.attrSTR+=' d="'+(r.toString&&r.toString()||"").replace(a," ")+'"'},gradient:function(e,i,n){var a,o,s,c,p,h,f,d,u,y,k=e.attrs.gradient,S="linear",T=k,R=.5,C=.5,N="",B="",z="";if(!n[T=T.replace(l,"_")]){if(k=(k=b(k).replace(t._radial_gradient,function(t,e){var r,i,n,a,o,s,l,c;return e=e&&e.split(",")||[],S="radial",r=e[0],i=e[1],a=e[2],o=e[3],s=e[4],y=e[5],c=r&&i,a&&(u=/\%/.test(a)?a:x(a)),y===g?(c&&(R=r,C=i),o&&s&&(f=o,d=s,c||(R=f,C=d)),""):(c&&(R=x(r),n=2*((C=x(i))>.5)-1,(l=w(R-.5,2))+w(C-.5,2)>.25&&l<.25&&(C=v.sqrt(.25-l)*n+.5)&&.5!==C&&(C=C.toFixed(5)-1e-5*n)),o&&s&&(f=x(o),n=2*((d=x(s))>.5)-1,(l=w(f-.5,2))+w(d-.5,2)>.25&&l<.25&&(d=v.sqrt(.25-l)*n+.5)&&.5!==d&&(d=d.toFixed(5)-1e-5*n),c||(R=f,C=d)),"")})).split(/\s*\-\s*/),"linear"===S){if(a=k.shift(),a=-x(a),isNaN(a))return null;o=[0,0,v.cos(t.rad(a)),v.sin(t.rad(a))],s=1/(m(_(o[2]),_(o[3]))||1),o[2]*=s,o[3]*=s,o[2]<0&&(o[0]=-o[2],o[2]=0),o[3]<0&&(o[1]=-o[3],o[3]=0)}if(!(c=t._parseDots(k)))return null;for("radial"===S?(N='<radialGradient fx = "'+R+'" fy = "'+C+'" cy = "'+d+'" cx = "'+f+'" r = "'+u+'" gradientUnits = "'+y+r+T+'">',B="</radialGradient>"):(N='<linearGradient x1 = "'+o[0]+'" y1 = "'+o[1]+'" x2 = "'+o[2]+'" y2 = "'+o[3]+'" gradientTransform ="matrix('+e.matrix.invert()+")"+r+T+'">',B="</linearGradient>"),p=0,h=c.length;p<h;p++)z+='<stop offset="'+(c[p].offset?c[p].offset:p?"100%":"0%")+'" stop-color="'+(c[p].color||"#fff")+'" stop-opacity="'+(void 0===c[p].opacity?1:c[p].opacity)+'" />';n[T]=!0,n.str+=N+z+B}i.attrSTR+=" fill=\"url('#"+T+"')\""},fill:function(e,r){var i,n,a=r.attrs,o=a.fill;e.attrs.gradient||(n=(i=t.color(o)).opacity,"text"===e.type?r.styleSTR+="fill:"+i+"; stroke-opacity:0; ":(r.attrSTR+=' fill="'+i+'"',a["fill-opacity"]||!n&&0!==n||(r.attrSTR+=' fill-opacity="'+n+'"')))},stroke:function(e,r){var i,n,a=r.attrs,o=a.stroke;n=(i=t.color(o)).opacity,"text"!==e.type&&(r.attrSTR+=' stroke="'+i+'"',a["stroke-opacity"]||!n&&0!==n||(r.attrSTR+=' stroke-opacity="'+n+'"'))},"clip-rect":function(t,e,r){var i=e.attrs,a=b(i["clip-rect"]),o=a.split(k),s=a.replace(l,"_")+"__"+y++;4===o.length&&(r[s]||(r[s]=!0,r.str+='<clipPath id="'+s+'"><rect x="'+o[0]+'" y="'+o[1]+'" width="'+o[2]+'" height="'+o[3]+'" transform="matrix('+t.matrix.invert().toMatrixString().replace(n,"")+')"/></clipPath>'),e.attrSTR+=' clip-path="url(#'+s+')"')},cursor:function(){var t=arguments[1],e=t.attrs.cursor;e&&(t.styleSTR+="cursor:"+e+"; ")},font:function(){var t=arguments[1],e=t.attrs.font;t.styleSTR+="font:"+e.replace(/\"/gi," ")+"; "},"font-size":function(){var t=arguments[1],e=t.attrs,r=(0,i.pluck)(e["font-size"],"10");r&&r.replace&&(r=r.replace(s,"")),t.styleSTR+="font-size:"+r+"px; "},"font-weight":function(){var t=arguments[1],e=t.attrs["font-weight"];t.styleSTR+="font-weight:"+e+"; "},"font-family":function(){var t=arguments[1],e=t.attrs["font-family"];t.styleSTR+="font-family:"+e+"; "},"line-height":i.stubFN,"clip-path":i.stubFN,visibility:i.stubFN,"vertical-align":i.stubFN,"text-anchor":function(t,e){var r=e.attrs["text-anchor"]||"middle";"text"===t.type&&(e.attrSTR+=' text-anchor="'+r+'"')},title:i.stubFN,text:function(){var t,e,r,n,a,l,c,y,g=arguments[1],v=g.attrs,x=v.text,m=(0,i.pluck)(v["font-size"],v.font,"10"),_=(0,i.pluck)(v["line-height"]);for(m&&m.replace&&(m=m.replace(s,"")),m=(0,i.pluckNumber)(m),_&&_.replace&&(_=_.replace(s,"")),_=(0,i.pluckNumber)(_,m&&1.2*m),t=m?.85*m:.75*_,e=v.x,r=(0,i.pluck)(v["vertical-align"],"middle").toLowerCase(),l=(n=b(x).split(o)).length,a=0,c="top"===r?t:"bottom"===r?t-_*l:t-_*l*.5;a<l;a++)g.textSTR+="<tspan ",y=(n[a]||"").replace(p,"&").replace(h,""").replace(f,"'").replace(d,"<").replace(u,">"),g.textSTR+=a?'dy="'+_+'" x="'+e+'" ':'dy="'+c+'"',g.textSTR+=">"+y+"</tspan>"}};t.vml&&(t.fn.toSVG=function(t){var r="",i={str:""},a="";return r='<svg style="overflow: hidden; position: relative;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+this.width+'" version="1.1" height="'+this.height+'">',this.bottom&&(a=function o(t,r){var i,a,s,l="",p={attrSTR:"",styleSTR:"",textSTR:"",attrs:t.attr()},h=t.isShadow,f="",d="",u=p.attrs;if("none"===t.node.style.display||h)t.next&&(l+=o(t.next,r));else{for(i in u)"gradient"===i||void 0===e[i]&&!S[i]||void 0===u[i]||(S[i]?S[i](t,p,r):p.attrSTR+=" "+i+'="'+u[i]+'"');for(a in t.attrs.gradient&&S.gradient(t,p,r),"rect"===t.type&&u.r&&(p.attrSTR+=' rx="'+u.r+'" ry="'+u.r+'"'),t.styles)p.styleSTR+=a+":"+t.styles[a]+"; ";"image"===t.type&&(p.attrSTR+=' preserveAspectRatio="none"'),"text"!==t.type||u["text-anchor"]||S["text-anchor"](t,p),t.bottom&&(f=o(t.bottom,r)),t.next&&(d=o(t.next,r)),(s=t.type).match(c)&&(s="g"),l+="<"+s+' transform="matrix('+t.matrix.toMatrixString().replace(n,"")+')" style="'+p.styleSTR+'"'+p.attrSTR+">"+p.textSTR+f+"</"+s+">"+d}return l}(this.bottom,i)),r+="<defs>"+i.str+"</defs>"+a+"</svg>",t||(r=r.replace(/<image[^\>]*\>[^\>]*\>/gi,function(t){return t.match(/href=\"data\:image/i)?t:""})),r})};var i=r(118)}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.vml.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.widgets.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.widgets.js new file mode 100755 index 0000000000000000000000000000000000000000..450b39cf160747ada402c0ac8f73c589480433f0 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.widgets.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[4],{598:function(e,t,a){"use strict";t.__esModule=!0,t.Pyramid=t.Funnel=t.VerticalBullet=t.HorizontalBullet=t.RealTimeLineDY=t.RealTimeStackedColumn=t.RealTimeStackedArea=t.RealTimeLine=t.RealTimeColumn=t.RealTimeArea=t.SparkWinLoss=t.SparkColumn=t.SparkLine=t.Thermometer=t.Hlineargauge=t.Vled=t.Hled=t.Cylinder=t.Bulb=t.AngularGauge=undefined;var o=T(a(599)),r=T(a(605)),i=T(a(615)),n=T(a(626)),l=T(a(627)),s=T(a(633)),c=T(a(635)),u=T(a(638)),p=T(a(645)),h=T(a(642)),d=T(a(648)),g=T(a(649)),f=T(a(654)),m=T(a(656)),b=T(a(657)),v=T(a(658)),y=T(a(659)),k=T(a(660)),w=T(a(661)),C=T(a(668)),x=T(a(601));function T(e){return e&&e.__esModule?e:{"default":e}}t.AngularGauge=i["default"],t.Bulb=o["default"],t.Cylinder=r["default"],t.Hled=n["default"],t.Vled=l["default"],t.Hlineargauge=s["default"],t.Thermometer=c["default"],t.SparkLine=u["default"],t.SparkColumn=p["default"],t.SparkWinLoss=h["default"],t.RealTimeArea=d["default"],t.RealTimeColumn=g["default"],t.RealTimeLine=f["default"],t.RealTimeStackedArea=m["default"],t.RealTimeStackedColumn=b["default"],t.RealTimeLineDY=v["default"],t.HorizontalBullet=y["default"],t.VerticalBullet=k["default"],t.Funnel=w["default"],t.Pyramid=C["default"],t["default"]={name:"widgets",type:"package",requiresFusionCharts:!0,extension:function(e){e.addDep(x["default"]),e.addDep(i["default"]),e.addDep(o["default"]),e.addDep(r["default"]),e.addDep(n["default"]),e.addDep(l["default"]),e.addDep(s["default"]),e.addDep(c["default"]),e.addDep(u["default"]),e.addDep(p["default"]),e.addDep(h["default"]),e.addDep(d["default"]),e.addDep(g["default"]),e.addDep(f["default"]),e.addDep(m["default"]),e.addDep(b["default"]),e.addDep(v["default"]),e.addDep(y["default"]),e.addDep(k["default"]),e.addDep(w["default"]),e.addDep(C["default"])}}},599:function(e,t,a){"use strict";t.__esModule=!0;var o=s(a(600)),r=s(a(602)),i=a(118),n=s(a(581)),l=s(a(604));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.isRealTime=!0,a._drawCanvas=function(){},a.registerFactory("dataset",l["default"],["vCanvas"]),a}return c(t,e),t.getName=function(){return"Bulb"},t.prototype.getName=function(){return"Bulb"},t.prototype._clearChart=function(){},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t);var a=this.getFromEnv("dataSource").colorrange;(0,i.componentFactory)(this,n["default"],"colorRange",1,[{colorRange:a,numberFormatter:this.getFromEnv("number-formatter")}]),this.addToEnv("colorRange",this.getChildren("colorRange")[0])},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.showRTvalue=!1,t.canvasPadding=!1,t.defaultSeriesType="bulb",t.defaultPlotShadow=1,t.drawAnnotations=!0,t.charttopmargin=10,t.chartrightmargin=10,t.chartbottommargin=10,t.chartleftmargin=10,t.realtimeEnabled=!0,t.isRealTime=!0,t.friendlyName="Bulb Gauge",t.defaultDatasetType="bulb",t.placevaluesinside=0,t.hasgaugeoriginx=void 0,t.gaugeoriginx=void 0,t.hasgaugeoriginy=void 0,t.gaugeoriginy=void 0,t.hasgaugeradius=void 0,t.gaugeradius=void 0,t.valuepadding=2,t.showgaugeborder=0,t.showhovereffect=void 0,t.autoscale=1,t.skipCanvasDrawing=!0},t.prototype._spaceManager=function(){var e,a,o,r=this.config,n=this.getChildren("dataset")[0],l=n.config,s=this.config.is3D,c=this.getFromEnv("dataSource").chart,u=(0,i.pluckNumber)(c.showborder,s?0:1),p=r.minChartWidth,h=r.minChartHeight,d=r.borderWidth=u?(0,i.pluckNumber)(c.borderthickness,1):0;r.autoscale?l.scaleFactor=t._getScaleFactor(l.origW,l.origH,r.width,r.height):l.scaleFactor=1,r.canvasWidth-2*d<p&&(o=(r.canvasWidth-p)/2),r.canvasHeight-2*d<h&&(a=(r.canvasHeight-h)/2),this._allocateSpace({top:a||d,bottom:a||d,left:o||d,right:o||d}),this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*r.availableHeight)||{}),e=.7*r.canvasHeight,this._manageChartMenuBar(e),n._manageSpace&&this._allocateSpace(n._manageSpace(e))},t.prototype.allocatePosition=function(){var e,t=this.config,a=this.getDatasets()[0].config,o=t.canvasHeight,r=t.canvasWidth,i=t.canvasTop,n=t.canvasLeft,l=t.gaugeoriginx,s=t.gaugeoriginy,c=t.gaugeradius,u=t.hasgaugeoriginx,p=t.hasgaugeoriginy,h=t.hasgaugeradius;l=void 0!==u?l*a.scaleFactor:n+r/2,s=void 0!==p?s*a.scaleFactor:i+o/2,e=void 0!==h?c*a.scaleFactor:Math.min(r/2,o/2),t.gaugeStartX=l-e,t.gaugeEndX=l+e,t.gaugeStartY=s-e,t.gaugeEndY=s+e,t.gaugeCenterX=l,t.gaugeCenterY=s,t.gaugeRadius=e},t.prototype._getData=function(){var e,t,a=this.getChildren("dataset");if(a&&(t=a[0].components.data)&&t[0])return e=t[0].config,(0,i.pluckNumber)(e.setValue,e.itemValue)},t.prototype._postSpaceManagement=function(){},t.prototype.getDSdef=function(){return r["default"]},t._getScaleFactor=function(e,t,a,o){return t=(0,i.pluckNumber)(t,o),e=(0,i.pluckNumber)(e,a),t&&e?e/a==t/o?a/e:Math.min(a/e,o/t):1},t}(o["default"]);t["default"]=u},600:function(e,t,a){"use strict";t.__esModule=!0;var o=a(485),r=a(129),i=u(a(261)),n=a(118),l=u(a(330)),s=u(a(116)),c=u(a(601));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var h=(0,n.extend2)({},n.defaultGaugePaletteOptions),d=Math.max;s["default"].addDep(c["default"]);var g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.defaultPaletteOptions=h,a.multiValueGauge=!1,a.drawAnnotations=!0,a.includeColorRangeInLimits=!1,a.isWidget=!0,a._feedAxesRawData=a._feedAxesRawData||n.stubFN,a._setCategories=a._setCategories||n.stubFN,a.eiMethods=o.eiMethods,a.registerFactory("dataset",l["default"],["vCanvas"]),a.registerFactory("axis",n.stubFN,["vCanvas"]),a}return p(t,e),t.getName=function(){return"GaugeBase"},t.prototype.getName=function(){return"GaugeBase"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.valuefontbold=1,t.useScaleRecursively=!0,t.formatnumberscale=0},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t),this.config.drawTrendRegion=0},t.prototype.realTimeUpdate=function(e){var t,a,o,r=this.getChildren().dataset,i=e.dataset,n=e.categories&&e.categories.category||[],l=this.config.realTimeConfig=this.config.realTimeConfig||(this.config.realTimeConfig={});if(this.fireChartInstanceEvent("updateDataReceived",e),this.fireEvent("realtimeDataUpdate",e),this.config.cachedArrivedJSON||(this.config.cachedArrivedJSON={}),this.config.cachedArrivedJSON=e,r){for(o=0,a=(t=i[0].data).length;o<a;o++)t[o].label=n[o]&&n[o].label;r[0].maxminFlag&&(l.maxminFlag=r[0].maxminFlag)}},t.prototype._setData=function(e,t){var a=n.BLANKSTRING;(e&&e.toString||e===n.BLANKSTRING||0===e)&&(a="value="+e.toString()),(t&&t.toString||t===n.BLANKSTRING)&&(a=a+"&label="+t.toString()),a&&this.feedData(a)},t.prototype._getData=function(){var e,t,a,o,r,i=this.getChildren(),n=this.getDatasets(),l=i.xAxis&&i.xAxis[0]||i.scale,s=[],c=0;if(n){for(e=n.length,t=0;t<e;t++)c=d(c,n[t].components.data.length);for(t=0;t<c;t++)for((r=s[t]=[])[0]=l.getLabel(t).label,a=1;a<=e;a++)o=n[a-1].components.data[t],r[a]=o&&o.config.setValue;return s}},t.prototype._checkInvalidSpecificData=function(){},t.prototype.realTimeDraw=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(this.config.cachedArrivedJSON){var t,a,o,i,n,l,s=this,c=s.config,u=c.prevData,p=(l=[],s.iterateComponents(function(e){"dataset"===e.getType()&&l.push(e)}),l),h=c.cachedArrivedJSON,d=c.realTimeConfig||(c.realTimeConfig={}),g=d.showRTValue,f=[];if(s.__rtDrawStartAt=new Date,s.getFromEnv("animationManager").setAnimationState("realTimeUpdate"),p&&p.length){for(i=h.dataset[0].data,n=(f=Object.keys(p[0].config.dataById||p[0].config.idMap||{})).length,o=0;o<n;o++)h.hasOwnProperty(f[o])&&i.push({value:Number(h[f[o]]),id:f[o]});c.prevData=function(){var e,t,a=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[],o=a.length,r=[];for(e=0;e<o;++e)t=a[e],r.push(t.value);return[r]}(i),(t=h.dataset[0]).data[0]&&(t.data[0].label=h.categories&&h.categories.category&&h.categories.category[0]&&h.categories.category[0].label),p[0].updateData(t),p[0].maxminFlag&&(d.maxminFlag=p[0].maxminFlag),p[0].asyncDraw(),c.cachedArrivedJSON=undefined,s.rtManageSpace&&s._RTmanageSpace(),s.prepareAttributes&&s.prepareAttributes(),s._preDraw(),g&&s._drawRealTimeValue&&s.asyncRealTimeValueDraw()}c._eventArgs=e,e.prevData=u,s.__realtimeUpdateComplete||(s.__realtimeUpdateComplete=function(){a=new Date-s.__rtDrawStartAt,d.clear||(c._eventArgs.latency=a,c._eventArgs.updateObject=d.legacyUpdateObj),s.getChildren("dataStreamer")[0].addToEnv("realtimeDrawingLatency",a),s.fireChartInstanceEvent("realTimeUpdateComplete",c._eventArgs)}),s.addJob("realtimeupdatecomplete",s.__realtimeUpdateComplete,r.priorityList.postRender)}},t.prototype._setRTmenu=function(e,t){var a=this,o=a.getFromEnv("chartMenuTools"),r=o.set,i=o.update,n=!1;e&&r([{"Stop Update":{handler:function(){n?(a._restartUpdate(),i("Restart Update","Stop Update",a),n=!1):(a._stopUpdate(),i("Stop Update","Restart Update",a),n=!0)},action:"click"}}]),t&&r([{"Show Log":{handler:function(){a.getChildren("messageLogger")[0].show()},action:"click"}}])},t.prototype._createLayers=function(){var t,a=void 0;e.prototype._createLayers.call(this),a=this.getChildContainer("belowPlotGroup"),t=this.getChildContainer("axisBottomGroup"),a.insertBefore(t)},t.prototype._realTimeConfigure=function(){o._realTimeConfigure.call(this)},t.prototype._stopUpdate=function(e){o._stopUpdate.call(this,e)},t.prototype._restartUpdate=function(){o._restartUpdate.call(this)},t.prototype._isUpdateActive=function(){return o._isUpdateActive.call(this)},t.prototype.feedData=function(e){o.feedData.call(this,e)},t.prototype._linearDataParser=function(e){return o._linearDataParser.call(this,e)},t.prototype._clearChart=function(e){o._clearChart.call(this,e)},t}(i["default"]);t["default"]=g},601:function(e,t,a){"use strict";t.__esModule=!0;var o=n(a(166)),r=n(a(131)),i=a(118);function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s,c=void 0,u=function(e){e.registerFactory("dataStreamer",function(){var t=void 0;p&&e.config.realtimeEnabled&&((0,i.componentFactory)(e,p,"dataStreamer",1),(t=e.getChildren("dataStreamer")[0]).configure(),e.addToEnv("dataStreamer",t))})},p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a,o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o._handlerFn=(a=o,function(){var e=a.config;e&&(e.rtPreInit===c&&(e.rtPreInit=!1),e._rtPaused&&delete e._rtPaused,e.rtStateChanged||(e.rtStateChanged=!0,a.processRealtimeStateChange(arguments)))}),o._handlerStop=function(e){return function(){e._dispose()}}(o),o}return l(t,e),t.prototype.getType=function(){return"dataStreamer"},t.prototype.getName=function(){return"dataStreamer"},t.resetTimeout=function(e,t,a){return clearTimeout(a),setTimeout(e,t)},t.prototype.configure=function(){var e,t,a,o,r=this.config,i=this.getLinkedParent(),n=i.getFromEnv("dataSource")&&i.getFromEnv("dataSource").chart;a=i.getFromEnv("chartInstance"),o=i.config.realTimeConfig,r.clearMs=1e3*o.clearInterval,r.updateMs=t=1e3*o.updateInterval,r.refreshMs=e=1e3*o.refreshInterval,this.addEvents(),e<t&&(r.refreshMs=t),r.dataStamp=n.datastamp,this.config.chartObj=a,a.jsVars&&(a.jsVars._rtLastUpdatedData=null),this.updateIntervalHandler(0,!0),this.refreshVisualHandler(null,null,!0),this.initiateResetVisual(!0),r._rtAjaxLatencyStart=null,r._rtAjaxLatency=null,this.addToEnv("realtimeDrawingLatency",0)},t.prototype._dispose=function(){this.updateIntervalHandler(0,!0),this.refreshVisualHandler(null,null,!0),this.initiateResetVisual(!0),e.prototype._dispose.call(this)},t.prototype.processRealtimeStateChange=function(){var e,t=this,a=t.config,r=t.config.chartObj,i=r.__state,n=t.getLinkedParent(),l=n.config,s=l.realtimeEnabled,u=l.realTimeConfig.dataStreamURL;i.dataSetDuringConstruction&&!a.rtStateChanged&&a.rtPreInit===c&&(r.dataReady()?(a.rtStateChanged=!0,a.rtPreInit=!0):a.rtPreInit=!1),a.rtStateChanged&&(a.rtStateChanged=!1,n&&(e=a._rtAjaxObj,s&&(a._rtPaused===c&&(a._rtPaused=!1),a._rtDataUrl=u,t.initiateResetVisual(),(e=a._rtAjaxObj||(a._rtAjaxObj=new o["default"])).onSuccess||(e.onSuccess=function(){t.getFromEnv("chartConfig").realTimeConfig.dataStreamURL&&(t.setState("ajaxRequested",!0),t.responseTextHandler(arguments[0]),a._rtAjaxLatencyStart&&(a._rtAjaxLatency=new Date-a._rtAjaxLatencyStart||0),t.refreshVisualHandler({data:a.responseText,source:"XmlHttpRequest",url:a.url,networkLatency:a._rtAjaxLatency},a._rtAjaxLatency+(a._firstUpdate?new Date-a._firstUpdate:0),!t.getFromEnv("chartConfig").realTimeConfig.dataStreamURL),a._firstUpdate=undefined,a._rtPaused||a._rtAjaxLatency>=a.updateMs&&(a._rtAjaxLatency=a.updateMs-1),t.updateIntervalHandler(a._rtAjaxLatency,a._rtPaused))}),e.onError||(e.onError=function(){var e=arguments[0],o=arguments[1],i=arguments[3];a._rtAjaxLatencyStart&&(a._rtAjaxLatency=new Date-a._rtAjaxLatencyStart),n.fireChartInstanceEvent("realTimeUpdateError",{source:"XmlHttpRequest",url:i,xmlHttpRequestObject:o.xhr,error:e,httpStatus:o.xhr&&o.xhr.status?o.xhr.status:-1,networkLatency:a._rtAjaxLatency}),t.setState("ajaxRequested",!1),t.updateIntervalHandler(0,r.isActive())}),a._rtPaused||(t.updateIntervalHandler(0),a._firstUpdate=new Date))))},t.prototype.responseTextHandler=function(e){var t=this.config,a=this.getFromEnv("chart"),o=this.getFromEnv("chartConfig").realtimeEnabled,r=a.feedData,i=a._linearDataParser(e);t.responseText=e,this.getFromEnv("chartInstance").isActive()&&r&&o&&(t.dataStamp=i.dataStamp?i.dataStamp:null,a.realTimeUpdate(i))},t.prototype.initiateResetVisual=function(){var e=arguments.length>0&&arguments[0]!==undefined&&arguments[0];if(e)clearTimeout(this.config._toClearChart);else{var a=this.config,o=this.getFromEnv("chart");e||a.clearMs&&(a._toClearChart=t.resetTimeout(function r(){o._clearChart&&o._clearChart(),a.clearMs?a._toClearChart=t.resetTimeout(r,a.clearMs,a._toClearChart):clearTimeout(a._toClearChart)},a.clearMs,a._toClearChart))}},t.prototype.updateIntervalHandler=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0,a=arguments.length>1&&arguments[1]!==undefined&&arguments[1];if(a)clearTimeout(this.config._toRealtimeUpdate);else{var o=this,r=o.config,i=r._rtAjaxObj,n=void 0,l=r.updateMs;if(o.requestData||(o.requestData=function(){var e=o.getFromEnv("chartConfig").realTimeConfig.dataStreamURL,t=r.dataStamp,a=r._rtAjaxObj,i=e;i+=(-1===e.indexOf("?")?"?num=":"&num=")+Math.random(),t&&(i+="&dataStamp="+t),r.url=i,a.open&&a.abort(),e&&a.get(i),r._rtAjaxLatencyStart=new Date}),l<=0)return r._toRealtimeUpdate=clearTimeout(r._toRealtimeUpdate),void(i&&i.abort());l<10&&(l=10),a||(n=l-e,r._toRealtimeUpdate=t.resetTimeout(o.requestData,n,r._toRealtimeUpdate))}},t.prototype.refreshVisualHandler=function(e){var a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0,o=arguments.length>2&&arguments[2]!==undefined&&arguments[2];if(o)return clearTimeout(this.config._toRealtimeDraw),this._clearCachedData(),void(this.config.isAlive=!1);var r=this,i=r.config,n=i.refreshMs,l=r.getFromEnv("chart"),s=r.getFromEnv("chartConfig").realtimeEnabled,c=r.getFromEnv("chartInstance").isActive(),u=void 0,p=(new Date).getTime(),h=l.feedData;r.getState("ajaxRequested")&&i.lastRTDrawAt||(i.lastRTDrawAt=p),r.config.sourceInfo=e,r._rtDraw||(r._rtDraw=function(){i.isAlive=!1,i.lastRTDrawAt=(new Date).getTime(),l.realTimeDraw(r.config.sourceInfo)}),c&&h&&s&&!o&&!i.isAlive&&(i.isAlive=!0,u=n-(a+=p-i.lastRTDrawAt+r.getFromEnv("realtimeDrawingLatency"))>0?n-a:0,i._toRealtimeDraw=t.resetTimeout(r._rtDraw,u,i._toRealtimeDraw))},t.prototype._clearCachedData=function(){this.getFromEnv("chart").config.cachedArrivedJSON={}},t.prototype._stopUpdate=function(){var e=this.config;this.updateIntervalHandler(0,!0),this.refreshVisualHandler(null,null,!0),this.initiateResetVisual(!0),e._rtAjaxObj&&e._rtAjaxObj.abort(),e._rtPaused=!0,this.setState("ajaxRequested",!1)},t.prototype._restartUpdate=function(){var e=this.config;e._rtDataUrl&&e._rtPaused&&(e._rtPaused=!1,e.rtStateChanged=!0,this.processRealtimeStateChange())},t.prototype._isUpdateActive=function(){return!this.config._rtPaused},t.prototype.addEvents=function(){var e=this.getLinkedParent(),t=this.config;t.eventsAdded||(this.addExtEventListener("renderComplete",this._handlerFn,e.getFromEnv("chartInstance")),this.addExtEventListener("nodatatodisplay",this._handlerStop,e.getFromEnv("chartInstance"))),t.eventsAdded=!0},t}(r["default"]);s={extension:function(e){e.addEventListener("instantiated",function(e){var t=e.sender;"chartAPI"===t.getType()&&u(t)})},name:"DataStreamer",type:"extension",requiresFusionCharts:!0},t["default"]=s},602:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(131)),n=a(125),l=s(a(603));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.BLANK,p=o.preDefStr.POSITION_TOP,h=o.preDefStr.POSITION_MIDDLE,d=o.preDefStr.showHoverEffectStr,g=o.preDefStr.visibleStr,f=o.preDefStr.ROUND,m=Math.min,b=window,v=b.navigator.userAgent,y="rgba(192,192,192,"+(/msie/i.test(v)&&!b.opera?.002:1e-6)+")",k=function(e,t,a){return a.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,component:a,label:"group"})};(0,n.addDep)({name:"bulbAnimation",type:"animationRule",extension:l["default"]});var w=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.addData=function(){},a.removeData=function(){},a.components={},a}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"bulb"},t.prototype._manageSpace=function(e){var t,a,r,i=this.config,n=this.components.data,l=this.getFromEnv("chart").config,s=this.getFromEnv("smartLabel"),c=l.dataLabelStyle,p=(0,o.pluckNumber)(parseInt(c.lineHeight,10),12),h=e,d=l.valuepadding,g=0;return r=(t=n[0])&&t.config,s.useEllipsesOnOverflow(l.useEllipsesWhenOverflow),s.setStyle(c),r&&r.displayValue!==u&&!l.placevaluesinside&&i.showValue&&(a=s.getOriSize(r.displayValue),r.displayValue===o.BLANK&&(a={height:p}),a.height>0&&(g=a.height+d),g>h&&(g=h)),i.heightUsed=g,{top:0,bottom:g}},t.prototype.configureAttributes=function(e){if(!e)return!1;this.config.JSONData=e;var t,a=this.config.JSONData,r=(0,o.extend2)({},a),i=this.getFromEnv("chart"),n=this.config,l=i.config,s=i.getFromEnv("dataSource").chart;(0,o.parseConfiguration)(r,n,i.config,{data:!0}),n.origW=(0,o.pluckNumber)(s.origw,l.autoscale?i.config.origRenderWidth:l.width||i.config.origRenderWidth),n.origH=(0,o.pluckNumber)(s.origh,l.autoscale?i.config.origRenderHeight:l.height||i.config.origRenderHeight),n.setToolText=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(s.plottooltext,void 0))),n.useColorNameAsValue=(0,o.pluckNumber)(s.usecolornameasvalue,0),n.enableAnimation=t=(0,o.pluckNumber)(s.animation,s.defaultanimation,1),n.animation=!!t&&{duration:1e3*(0,o.pluckNumber)(s.animationduration,1)},n.showValue=(0,o.pluckNumber)(s.showvalue,1),this._setConfigure()},t.prototype._setConfigure=function(e){var t,a,i,n,l,s,c,u,p,h,d,g,f,m,b,v,y,k,w,C,x,T,S,A,E,N,O,F,D,L=this.getFromEnv("chart"),M=this.config,R=L.config,_=this.config.JSONData,P=e||_.data,V=P&&P.length,I=e&&e.data.length||V,G=L.getFromEnv("dataSource").chart,j=this.getFromEnv("color-manager"),B=(0,o.pluckNumber)(G.showtooltip,1),H=((0,o.parseUnsafeString)((0,o.pluck)(G.tooltipsepchar,o.COMMASPACE)),R.showhovereffect),W=this.components.data,z=(0,o.pluckNumber)(G.is3d,1),U=this.getFromEnv("number-formatter"),X=function(e,t,a){return a?{FCcolor:{cx:.4,cy:.4,r:"80%",color:(0,r.getLightColor)(e,65)+o.COMMASTRING+(0,r.getLightColor)(e,75)+o.COMMASTRING+(0,r.getDarkColor)(e,65),alpha:t+o.COMMASTRING+t+o.COMMASTRING+t,ratio:"0,30,70",radialGradient:!0}}:(0,r.convertColor)(e,t)};for(W||(W=this.components.data=[]),u=0;u<I;u++)i=e?e&&e.data[u]:P[u],s=(l=W[u])&&l.config,l||(l=W[u]={}),l.config||(s=W[u].config={}),s.setValue=n=U.getCleanValue(i.value)||0,t=U.dataLabels(n),c=(0,o.getValidValue)((0,o.parseUnsafeString)(i.displayvalue)),s.colorRangeGetter=p=this.getFromEnv("colorRange"),h=p.getColorObj(s.setValue),p.colorArr.length||(h=p.config.defaultObj),d=(0,o.pluckNumber)(G.gaugefillalpha,h.alpha,100),g=(0,o.parseUnsafeString)((0,o.pluck)(h.label,h.name)),f=(0,o.pluck)(h.bordercolor,G.gaugebordercolor,(0,r.getDarkColor)(h.code,70),"000000"),m=(0,o.pluckNumber)(h.borderalpha,G.gaugeborderalpha,"90")*d/100,f=(b=/\{/.test(f))?j.parseColorMix((0,o.pluck)(h.bordercolor,h.code),f)[0]:f,s.gaugeBorderColor=y=(0,r.convertColor)(f,m),s.gaugeBorderThickness=k=R.showgaugeborder?(0,o.pluckNumber)(G.gaugeborderthickness,1):0,s.fillColor=v=X(h.code,d,z),0!==H&&(H||G.gaugefillhovercolor||G.plotfillhovercolor||G.gaugefillhoveralpha||G.plotfillhoveralpha||0===G.gaugefillhoveralpha||G.is3donhover||0===G.is3donhover||G.showgaugeborderonhover||0===G.showgaugeborderonhover||G.gaugeborderhovercolor||G.gaugeborderhoveralpha||0===G.gaugeborderhoveralpha||G.gaugeborderhoverthickness||0===G.gaugeborderhoverthickness)&&(H=!0,w=(0,o.pluck)(G.gaugefillhovercolor,G.plotfillhovercolor,"{dark-10}"),C=(0,o.pluckNumber)(G.gaugefillhoveralpha,G.plotfillhoveralpha),void 0===(x=(0,o.pluckNumber)(G.showgaugeborderonhover))&&(x=G.gaugeborderhovercolor||G.gaugeborderhoveralpha||0===G.gaugeborderhoveralpha||G.gaugeborderhoverthickness||0===G.gaugeborderhoverthickness?1:R.showgaugeborder),T=(0,o.pluck)(G.gaugeborderhovercolor,"{dark-10}"),S=(0,o.pluckNumber)(G.gaugeborderhoveralpha),A=x?(0,o.pluckNumber)(G.gaugeborderhoverthickness,k||1):0,E=!!(0,o.pluckNumber)(G.is3donhover,z),F={},D={},k!==A&&(F["stroke-width"]=A,D["stroke-width"]=k),D.fill=(0,o.toRaphaelColor)(v),w=/\{/.test(w)?j.parseColorMix(h.code,w)[0]:(0,o.pluck)(w,h.code),F.fill=(0,o.toRaphaelColor)(X(w,(0,o.pluckNumber)(C,d),E)),A&&(D.stroke=y,N=/\{/.test(T),F.stroke=(0,r.convertColor)(N?j.parseColorMix(b?w:f,T)[0]:T,(0,o.pluckNumber)(S,m)))),s.setTooltext=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(i.tooltext,_.plottooltext,G.plottooltext))),a=!!B&&(void 0!==s.setTooltext?(0,o.parseTooltext)(s.setTooltext,[1,2],{formattedValue:t},i,G):M.useColorNameAsValue?g:null!==t&&t),O=void 0!==c?c:i.label||(M.useColorNameAsValue?g:t),s.toolText=a,s.displayValue=O,s.rolloverProperties={enabled:H,hoverAttr:F,hoverAnimAttr:void 0,outAttr:D}},t.prototype.updateData=function(e,t,a){this._setConfigure(e,t),a&&this.asynDraw()},t.prototype.draw=function(){var e,t,a,r,i,n,l,s,c,d,b,v,w,C,x,T,S=this.components.data,A=this.getFromEnv("chart"),E=this.getFromEnv("toolTipController"),N=this.config,O=A.config,F=O.canvasLeft,D=O.canvasTop,L=O.canvasHeight,M=O.canvasWidth,R=A.getChildContainer().plotGroup,_=this.getContainer("container"),P=this.getContainer("trackerContainer"),V=A.getChildContainer("trackerGroup"),I=S[0],G=I&&I.config,j=O.gaugeoriginx,B=O.gaugeoriginy,H=O.gaugeradius,W=O.hasgaugeoriginx,z=O.hasgaugeoriginy,U=O.hasgaugeradius,X=this.getFromEnv("smartLabel"),K=this.getFromEnv("animationManager"),Y=this.getContainer("dataLabelContainer"),J=A.config.dataLabelStyle,Z=A.getChildContainer("datalabelsGroup");X.setStyle(J),_||(_=this.addContainer("container",k("bulb",R,this))),P||(P=this.addContainer("trackerContainer",k("bulb-hot",V,this))),Y||(Y=this.addContainer("dataLabelContainer",K.setAnimation({el:"group",attr:{name:"datalabel"},label:"labelGroup",component:this}))),Z&&Z.appendChild(Y),T=I.trackerConfig={},e=G.setValue,a=G.toolText,T.eventArgs={value:e,displayValue:G.displayValue,toolText:a||""},I.graphics||(I.graphics={}),j=void 0!==W?j*N.scaleFactor:F+M/2,B=void 0!==z?B*N.scaleFactor:D+L/2,t={cx:n=j,cy:l=B,r:s=void 0!==U?H*N.scaleFactor:m(M/2,L/2),"stroke-linecap":f,stroke:(0,o.toRaphaelColor)(G.gaugeBorderColor),"stroke-width":G.gaugeBorderThickness,fill:(0,o.toRaphaelColor)(G.fillColor)},d=I.graphics.element,c=K.setAnimation({el:d||"circle",attr:t,container:_,component:this,animType:"easeOut",label:"circle"}),d||(I.graphics.element=c),T.attr={cx:n,cy:l,r:s,cursor:G.setLink?"pointer":o.BLANK,stroke:y,"stroke-width":G.plotBorderThickness,fill:y,visibility:g},w=(b=I.graphics).label,O.placevaluesinside?(C=l,x=h):(C=l+s+O.valuepadding,x=p),G.setValue!==u&&N.showValue&&(r=(i=X.getSmartText(G.displayValue,O.width-O.chartleftmargin-O.chartrightmargin,+O.height-C-O.chartbottommargin)).tooltext||u,t={text:i.text,"text-anchor":h,x:j,y:C,"vertical-align":x,fill:J.color,direction:G.textDirection,"text-bound":[J.backgroundColor,J.borderColor,J.borderThickness,J.borderPadding,J.borderRadius,J.borderDash]},b.label&&b.label.show(),v=K.setAnimation({el:w||"text",animType:"easeOut",attr:t,label:"text",container:Y,component:this}),w||(b.label=v),O.showToolTip?E.enableToolTip(v,r):E.disableToolTip(v)),this.drawTracker()},t.prototype.drawTracker=function(){var e,t,a,o,r,i,n,l,s=this,c=s.getFromEnv("chart"),u=s.getFromEnv("animationManager"),p=s.getFromEnv("toolTipController"),h=s.components.data,g=c.config.plothovereffect,f=s.getContainer("trackerContainer"),m=!1;t=(a=h[0])&&a.config,e=a.trackerConfig,o=a.graphics.element,n=e.attr,i=a.graphics.hotElement,n&&(r=u.setAnimation({el:i||"circle",attr:n,container:f,component:s,label:"tracker"}),i||(a.graphics.hotElement=r,m=!0),(r||o).data("eventArgs",e.eventArgs).data(d,g).data("setRolloverAttr",t.rolloverProperties.hoverAttr||{}).data("setRolloutAttr",t.rolloverProperties.outAttr||{}),p.enableToolTip(r||o,e.eventArgs.toolText),(m||t.elemCreated)&&(r||o).on("fc-click",function(e){c.plotEventHandler(this,e)}).hover((l=o,function(e){var t=this.getData(),a=t.setRolloverAttr;0!==t.showHoverEffect&&!0!==t.draged&&(a.fill&&(u.setAnimationState("mouseover"),u.setAnimation({el:l,attr:a,component:s})),c.plotEventHandler(this,e,"DataPlotRollOver"))}),function(e){return function(t){var a=this.getData(),o=a.setRolloutAttr;0!==a.showHoverEffect&&!0!==a.draged&&(o.fill&&(u.setAnimationState("mouseout"),u.setAnimation({el:e,attr:o,component:s})),c.plotEventHandler(this,t,"DataPlotRollOut"))}}(o)))},t}(i["default"]);t["default"]=w},603:function(e,t,a){"use strict";t.__esModule=!0,t["default"]={"initial.dataset.bulb":function(){return{"circle.appearing":function(e){return[{initialAttr:{cx:e.attr.cx,cy:e.attr.cy,r:0},slot:"plot"}]},"tracker.appearing":null,"circle.updating":function(e){return[{initialAttr:{cx:e.attr.cx,cy:e.attr.cy,r:e.attr.r},slot:"plot"}]},"labelGroup.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"}]},"*":null}}}},604:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t,a=e.getFromEnv("dataSource"),r=a.value,i=a.target,n=[],l={};n.push({value:r,target:i}),l.data=n,t=e.getDSdef(),(0,o.datasetFactory)(e,t,"dataset",1,[l])};var o=a(118)},605:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(606)),n=s(a(612)),l=s(a(604));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.preDefStr.colors.FFFFFF,p=o.preDefStr.gaugeFillColorStr,h=o.preDefStr.gaugeBorderColorStr,d=function(e){return void 0!==e&&null!==e},g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.defaultPaletteOptions=(0,o.extend2)((0,o.extend2)({},o.defaultGaugePaletteOptions),{gaugeBorderColor:["545454","60634E","415D6F","845001","68001B"],gaugeFillColor:["CCCCCC","ADB68F","E1F5FF","FDB548","FF7CA0"],periodColor:["EEEEEE","ECEEE6","E6ECF0","FFF4E6","FFF2F5"]},!1,!0),a.glasscolor=u,a.showRTvalue=!1,a.canvasPadding=!1,a.isHorizontal=!1,a.isAxisOpposite=!0,a.hasCanvas=!0,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isAxisReverse=!1,a.isRealTime=!0,a.registerFactory("dataset",l["default"],["vCanvas"]),a}return c(t,e),t.getName=function(){return"Cylinder"},t.prototype.getName=function(){return"Cylinder"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.alignCaptionWithCanvas=1,t.defaultDatasetType="cylinder",t.hasLegend=!1,t.skipCanvasDrawing=!0},t.prototype._parseSpecialConfig=function(){var e,t=this.config,a=this.getFromEnv("dataSource").chart,i=this.getFromEnv("number-formatter"),n=this.getFromEnv("color-manager");t.use3DLighting=(0,o.pluckNumber)(a.use3dlighting,1),t.gaugeOriginX=(0,o.pluckNumber)(a.thmoriginx,a.cyloriginx,a.gaugeoriginx),t.gaugeOriginY=(0,o.pluckNumber)(a.thmoriginy,a.cyloriginy,a.gaugeoriginy),t.gaugeRadius=(0,o.pluckNumber)(i.getCleanValue((0,o.pluckNumber)(a.thmbulbradius,a.cylradius,a.gaugeradius),!0)),t.gaugeHeight=(0,o.pluckNumber)(i.getCleanValue((0,o.pluckNumber)(a.thmheight,a.cylheight,a.gaugeheight),!0)),t.origW=(0,o.pluckNumber)(a.origw),t.origH=(0,o.pluckNumber)(a.origh),t.xDefined=d(t.gaugeOriginX),t.yDefined=d(t.gaugeOriginY),t.rDefined=d(t.gaugeRadius),t.hDefined=d(t.gaugeHeight),t.gaugeFillColor=(0,o.pluck)(a.gaugefillcolor,a.cylfillcolor,n.getColor(p)),t.gaugeFillAlpha=(0,o.pluckNumber)(a.gaugefillalpha,a.cylfillalpha,o.HUNDREDSTRING),t.gaugeYScale=(0,o.pluckNumber)(a.cylyscale,a.gaugeyscale,30),(t.gaugeYScale>50||t.gaugeYScale<0)&&(t.gaugeYScale=30),t.gaugeYScale=t.gaugeYScale/100,t.showGaugeBorder=(0,o.pluckNumber)(a.showgaugeborder,1),e=t.showGaugeBorder?(0,o.pluckNumber)(a.gaugeborderalpha,40):0,t.gaugeBorderColor=(0,r.convertColor)((0,o.pluck)(a.gaugebordercolor,n.getColor(h)),e),t.gaugeBorderThickness=(0,o.pluckNumber)(a.gaugeborderthickness,1),t.gaugeContainerColor=(0,o.pluck)(a.cylglasscolor,(0,r.getLightColor)(t.gaugeFillColor,30))},t.prototype.getDSdef=function(){return n["default"]},t.prototype._getData=function(){var e=this.getChildren("dataset");if(e&&e[0])return e[0].config.value},t}(i["default"]);t["default"]=g},606:function(e,t,a){"use strict";t.__esModule=!0;var o=n(a(607)),r=n(a(608)),i=a(118);function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.registerFactory("axis",r["default"]),a}return l(t,e),t.getName=function(){return"AxisGaugeBase"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this)},t.prototype.allocatePosition=function(){var e=this.config,t=e.canvasWidth,a=e.canvasHeight;e.gaugeStartX=e.canvasLeft,e.gaugeEndX=e.canvasLeft+t,e.gaugeStartY=e.canvasTop,e.gaugeEndY=e.canvasTop+a,e.gaugeCenterX=e.canvasLeft+t/2,e.gaugeCenterY=e.canvasTop+a/2},t.prototype._spaceManager=function(){var e,t,a,o,r=this.config,n=this.getChildren("dataset")[0],l=this.getChildren("scale")[0],s=this.config.is3D,c=this.getChildren("canvas")[0],u=this.getFromEnv("dataSource").chart,p=(0,i.pluckNumber)(u.showborder,s?0:1),h=this.isHorizontal,d=r.minChartWidth,g=r.minChartHeight,f=r.borderWidth=p?(0,i.pluckNumber)(u.borderthickness,1):0;r.canvasWidth-2*f<d&&(a=(r.canvasWidth-d)/2),r.canvasHeight-2*f<g&&(o=(r.canvasHeight-g)/2),this._allocateSpace({top:o||f,bottom:o||f,left:a||f,right:a||f}),e=.225*r.availableHeight,t=this._manageActionBarSpace&&this._manageActionBarSpace(e)||{},this._allocateSpace(t),h?this._allocateSpace(l.placeAxis(r.availableHeight)):this._allocateSpace(l.placeAxis(r.availableWidth)),this._manageChartMenuBar(.4*r.availableHeight),n._manageSpace&&this._allocateSpace(n._manageSpace(r.availableHeight)),l.setAxisConfig({drawPlotlines:this.drawPlotlines,drawPlotBands:this.drawPlotBands}),c.setDimension({top:r.canvasTop,left:r.canvasLeft,width:r.canvasWidth,height:r.canvasHeight})},t}(o["default"]);t["default"]=s},607:function(e,t,a){"use strict";t.__esModule=!0;var o=s(a(600)),r=s(a(157)),i=s(a(176)),n=s(a(116)),l=a(118);function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n["default"].addDep(r["default"]),n["default"].addDep(i["default"]),a.chartLeftMargin=15,a.chartRightMargin=15,a.chartTopMargin=10,a.chartBottomMargin=10,a.minChartHeight=10,a.minCanvasWidth=0,a}return c(t,e),t.prototype._feedAxesRawData=function(){var e,t,a=this.getFromEnv("color-manager"),o=this.getFromEnv("dataSource"),r=o.chart,i=l.chartPaletteStr.chart2D,n=(0,l.pluckNumber)(r.ticksbelowgauge),s=(0,l.pluckNumber)(r.ticksonright),c=(0,l.pluckNumber)(r.axisontop,void 0!==r.axisonleft?!(0,l.pluckNumber)(r.axisonleft):void 0,void 0!==n?!n:void 0,void 0!==s?s:void 0,this.isAxisOpposite),u=(0,l.pluckNumber)(r.reverseaxis,this.isAxisReverse),p=(0,l.pluckNumber)(r.showtickmarks,1),h=this.getFromEnv("number-formatter"),d=(0,l.pluckNumber)(r.showtickvalues);return t=!(!d&&void 0!==d)&&!(!p&&void 0===d),(e={isVertical:!this.isHorizontal,isReverse:this.isHorizontal?u:!u,isOpposit:c,outCanfontFamily:(0,l.pluck)(r.outcnvbasefont,r.basefont,"Verdana,sans"),outCanfontSize:(0,l.pluckFontSize)(r.outcnvbasefontsize,r.basefontsize,10),outCancolor:(0,l.pluck)(r.outcnvbasefontcolor,r.basefontcolor,a.getColor(i.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),useEllipsesWhenOverflow:r.useellipseswhenoverflow,divLineColor:(0,l.pluck)(r.vdivlinecolor,a.getColor(i.divLineColor)),divLineAlpha:(0,l.pluck)(r.vdivlinealpha,a.getColor("divLineAlpha")),divLineThickness:(0,l.pluckNumber)(r.vdivlinethickness,1),divLineIsDashed:Boolean((0,l.pluckNumber)(r.vdivlinedashed,r.vdivlineisdashed,0)),divLineDashLen:(0,l.pluckNumber)(r.vdivlinedashlen,4),divLineDashGap:(0,l.pluckNumber)(r.vdivlinedashgap,2),showAlternateGridColor:(0,l.pluckNumber)(r.showalternatevgridcolor,0),alternateGridColor:(0,l.pluck)(r.alternatevgridcolor,a.getColor("altVGridColor")),alternateGridAlpha:(0,l.pluck)(r.alternatevgridalpha,a.getColor("altVGridAlpha")),numDivLines:r.numvdivlines,labelFont:r.labelfont,labelFontSize:r.labelfontsize,labelFontColor:r.labelfontcolor,labelFontAlpha:r.labelalpha,labelFontBold:r.labelfontbold,labelFontItalic:r.labelfontitalic,axisName:r.xaxisname,axisMinValue:h.getCleanValue(r.lowerlimit),axisMaxValue:h.getCleanValue(r.upperlimit),setAdaptiveMin:r.setadaptivemin,adjustDiv:r.adjusttm,labelDisplay:r.labeldisplay,showLabels:r.showlabels,rotateLabels:r.rotatelabels,slantLabel:(0,l.pluckNumber)(r.slantlabels,r.slantlabel),labelStep:(0,l.pluckNumber)(r.labelstep,r.xaxisvaluesstep),showAxisValues:(0,l.pluckNumber)(r.showxaxisvalues,r.showxaxisvalue),showDivLineValues:(0,l.pluckNumber)(r.showvdivlinevalues,r.showvdivlinevalues),showZeroPlane:r.showvzeroplane,zeroPlaneColor:r.vzeroplanecolor,zeroPlaneThickness:r.vzeroplanethickness,zeroPlaneAlpha:r.vzeroplanealpha,showZeroPlaneValue:r.showvzeroplanevalue,trendlineColor:r.trendlinecolor,trendlineToolText:r.trendlinetooltext,trendlineThickness:r.trendlinethickness,trendlineAlpha:r.trendlinealpha,showTrendlinesOnTop:r.showtrendlinesontop,showAxisLine:(0,l.pluckNumber)(r.showxaxisline,r.showaxislines,r.drawAxisLines,0),axisLineThickness:(0,l.pluckNumber)(r.xaxislinethickness,r.axislinethickness,1),axisLineAlpha:(0,l.pluckNumber)(r.xaxislinealpha,r.axislinealpha,100),axisLineColor:(0,l.pluck)(r.xaxislinecolor,r.axislinecolor,"#000000"),majorTMNumber:r.majortmnumber,majorTMColor:r.majortmcolor,majorTMAlpha:r.majortmalpha,majorTMHeight:r.majortmheight,tickValueStep:r.tickvaluestep,showTickMarks:r.showtickmarks,connectTickMarks:r.connecttickmarks,showTickValues:r.showtickvalues,majorTMThickness:r.majortmthickness,reverseScale:r.reversescale,showLimits:r.showlimits||t,minorTMNumber:(0,l.pluckNumber)(r.minortmnumber,this.minorTMNumber,4),minorTMColor:r.minortmcolor,minorTMAlpha:r.minortmalpha,minorTMHeight:(0,l.pluckNumber)(r.minortmheight,r.minortmwidth),minorTMThickness:r.minortmthickness,tickMarkDistance:(0,l.pluckNumber)(r.tickmarkdistance,r.tickmarkgap),tickValueDistance:(0,l.pluckNumber)(r.tickvaluedistance,r.displayvaluedistance),placeTicksInside:r.placeticksinside,placeValuesInside:r.placevaluesinside,upperLimitDisplay:r.upperlimitdisplay,lowerLimitDisplay:r.lowerlimitdisplay,drawTickMarkConnector:this.isHorizontal?1:0}).vtrendlines=o.trendpoints,[e]},t.prototype._setAxisLimits=function(){var e,t=this.getFromEnv("dataSource").chart,a=this.getChildren("scale")[0];(e=this.getChildren("dataset")[0].getDataLimits()).max===-Infinity&&(e.max=0),e.min===Infinity&&(e.min=0),this.colorRange&&a.setAxisConfig({axisMinValue:(0,l.pluckNumber)(t.lowerlimit,e.forceMin?e.min:void 0),axisMaxValue:(0,l.pluckNumber)(t.upperlimit,e.forceMax?e.max:void 0)}),a.setDataLimit(e.max,e.min)},t.prototype._getDataJSON=function(){var e,t,a=0,o=[],r=[],i=[],n=this.getChildren("dataset")[0].components.data;for(e=n&&n.length?n.length:0;a<e;a+=1)t=n[a].config,o.push(t.itemValue),r.push(t.formatedVal||l.BLANK),i.push(t.toolText||l.BLANK);return{values:o,labels:r,toolTexts:i}},t.prototype._postSpaceManagement=function(){var e=this.config,t=this.getChildren("canvas")[0],a=this.getChildren("scale")[0],o=this.isHorizontal,r=t.config;o?a.setAxisDimention({axisLength:e.canvasWidth,y:r.canvasTop+(a.config.isOpposit?0:r.canvasHeight),x:r.canvasLeft}):a.setAxisDimention({axisLength:e.canvasHeight,x:r.canvasLeft+(a.config.isOpposit?r.canvasWidth:0),y:r.canvasTop})},t.prototype._clearChart=function(){},t}(o["default"]);t["default"]=u},608:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getChildren("canvas")[0];(0,n.componentFactory)(e,i["default"],"scale",1,e._feedAxesRawData()),e.getChildren("scale")[0].setLinkedItem("canvas",t),e.addToEnv("scale",e.getChildren("scale")[0])};var o,r=a(609),i=(o=r)&&o.__esModule?o:{"default":o},n=a(118)},609:function(e,t,a){"use strict";t.__esModule=!0;var o=u(a(610)),r=a(118),i=u(a(298)),n=a(125),l=u(a(611)),s=u(a(314)),c=a(301);function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}(0,n.addDep)({name:"gaugeAnimation",type:"animationRule",extension:l["default"]});var h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.config.scale=new s["default"],a.config.labelMap=[],a.config.prevIntervalArr=[],a.config.prevTicksMap=[],a}return p(t,e),t.prototype.getName=function(){return"gaugeAxis"},t.prototype.getLabelPos=function(e,t){var a=this.config,o=a.canvas,i=this.getFromEnv("chart").config,n=o.canvasTop||i.canvasTop,l=o.canvasBottom||i.canvasBottom,s=o.canvasLeft||i.canvasLeft,c=a.isVertical,u=(0,r.pluckNumber)(a.isOpposit),p=o.canvasRight||i.canvasRight,h=a.labelPadding,d={x:0,y:0};return c?(d.x=u?p+h:s-h,d.y=this.getPixel(e,t)):(d.x=this.getPixel(e,t),d.y=u?n-h:l+h),d},t.prototype._drawComponents=function(){var e=this.config;e.drawTick&&this._drawTick(),e.drawLabels&&this._drawLabel()},t.prototype._drawTick=function(){var e,t,a,o,n,l,s,c,u,p,h,d,g,f,m,b,v,y,k=this,w=k.config,C=w.axisRange,x=w.isVertical,T=(0,r.pluckNumber)(w.isOpposit),S=w.drawTick,A=w.drawTickMinor,E=(0,r.pluckNumber)(w.placeTicksInside),N=k.getLinkedItem("canvas").getEffectiveDimensions(),O=N.top,F=O+N.height,D=N.left,L=D+N.width,M=C.max,R=C.min,_=k.getFromEnv("animationManager"),P=w.ticks,V=P.length,I=w.axisAxisLineContainer,G=[],j=w.minorTicks,B=function(e,t,a){var o=k.getPixel(e,{wrtVisible:!0});return x?["M",t,o,"L",a,o]:["M",o,t,"L",o,a]};if(l={stroke:w.majorTMColor,"stroke-width":w.majorTMThickness,"stroke-linecap":"round",opacity:1},s={stroke:w.majorTMColor,"stroke-width":w.majorTMThickness,"stroke-linecap":"round"},n={stroke:w.minorTMColor,"stroke-width":w.minorTMThickness,"stroke-linecap":"round",opacity:1},w.lines.isDraw&&S){for(x?T?E?(u=(c=L-w.tickMarkDistance)-w.majorTMHeight,p=c-w.minorTMHeight):(u=(c=L+w.tickMarkDistance)+w.majorTMHeight,p=c+w.minorTMHeight):E?(u=(c=D+w.tickMarkDistance)+w.majorTMHeight,p=c+w.minorTMHeight):(u=(c=D-w.tickMarkDistance)-w.majorTMHeight,p=c-w.minorTMHeight):T?E?(u=(c=O+w.tickMarkDistance)+w.majorTMHeight,p=c+w.minorTMHeight):(u=(c=O-w.tickMarkDistance)-w.majorTMHeight,p=c-w.minorTMHeight):E?(u=(c=F-w.tickMarkDistance)-w.majorTMHeight,p=c-w.minorTMHeight):(u=(c=F+w.tickMarkDistance)+w.majorTMHeight,p=c+w.minorTMHeight),h=w.drawTickMarkConnector?x?["M",c,k.getPixel(R),"L",c,k.getPixel(M)]:["M",k.getPixel(R),c,"L",k.getPixel(M),c]:["M0,0"],s.path=h,e=!!(a=k.getGraphicalElement("axisLinePath")),a=_.setAnimation({el:a||"path",attr:s,container:I,component:k,label:"path"}),G.push("axisLinePath"),e||k.addGraphicalElement("axisLinePath",a),d=0;d<V;d+=1)t=B(f=P[d],c,u),l.path=t.toString(),G.push(f),e=!!(o=k.getGraphicalElement(f)),o=_.setAnimation({el:o||"path",data:{path:t.slice(),value:f},attr:l,container:I,component:k,label:"path"}),e||k.addGraphicalElement(f,o);if(A)for(g=0;g<j.length;g+=1)t=B(m=j[g],c,p),n.path=t.toString(),G.push(m),e=!!(o=k.getGraphicalElement(m)),o=_.setAnimation({el:o||"path",data:{path:t.slice(),value:m},attr:n,component:k,container:I,label:"path"}),e||k.addGraphicalElement(m,o)}for(d=0,y=(b=(0,i["default"])(w.prevTicksMap,G)).length;d<y;d++)(v=k.getGraphicalElement(b[d]))&&k.removeGraphicalElement(v);w.prevTicksMap=G},t.prototype.placeAxis=function(e){var t,a,o,i,n,l,s,c,u,p,h,d,g,f,m,b,v,y,k=this.getFromEnv("chart"),w=this.getScale(),C=k.getFromEnv("smartLabel"),x=this.config,T=x.axisRange,S=x.isVertical,A=(0,r.pluckNumber)(x.isOpposit),E=x.labels.style,N=T.tickInterval,O=(0,r.pluckNumber)(x.placeTicksInside),F=(0,r.pluckNumber)(x.placeValuesInside),D=T.max,L=T.min,M=0,R=0,_="",P=x.labels.style.lineHeight,V=this.getFromEnv("number-formatter");if(S?w.setRange([k.config.canvasTop,k.config.canvasBottom]):w.setRange([k.config.canvasLeft,k.config.canvasRight]),o={left:0,right:0,top:0,bottom:0},e<=0)return o;if(x.labels.isDraw=!0,x.labels.drawNumericVal=!0,x.labels.drawNormalVal=x.showTickValues,x.labels.drawLimitVal=x.showLimits,x.lines.isDraw=!0,x.labels.step=x.tickValueStep,x.labelPadding=0,C.useEllipsesOnOverflow(k.config.useEllipsesWhenOverflow),C.setStyle({fontSize:E.fontSize,fontFamily:E.fontFamily,lineHeight:E.lineHeight,fontWeight:E.fontWeight}),this.components||(this.components={},this.components.labels=[]),x.drawTick&&x.showTickMarks&&x.lines.isDraw?(e-=x.tickMarkDistance,R=Math.max(x.minorTMHeight,x.majorTMHeight),O?(s=e+x.tickMarkDistance,F&&(x.labelPadding=x.tickMarkDistance+R)):R>e?(x.lines.isDraw=!1,s=e+x.tickMarkDistance,s=e):(S?A?o.right+=R+x.tickMarkDistance:o.left+=R+x.tickMarkDistance:A?o.top+=R+x.tickMarkDistance:o.bottom+=R+x.tickMarkDistance,s=e-R,F||(x.labelPadding=x.tickMarkDistance+R))):(x.lines.isDraw=!1,s=e),s-=x.tickValueDistance,x.drawLabels&&(x.showTickValues||x.showLimits)){for(d=Math.abs(this.getPixel(L)-this.getPixel(L+N))/2,x.labelPadding+=x.tickValueDistance,s-=x.tickValueDistance,v=V.scale,n=L+N,l=0;n<D;n+=N)i=""+v.call(V,(0,r.toPrecision)(n,10)),p=C.getOriSize(i),this.components.labels[l]={config:{width:p.width,height:p.height,props:{label:{attr:{text:i}}}}},l++,i.length>M&&(_=i,M=i.length);if(p=C.getOriSize(_),S?p.width>s&&(x.labels.drawNumericVal=!1,!x.upperLimitDisplay&&!x.lowerLimitDisplay&&(x.labels.isDraw=!1),_="",p=C.getOriSize(_)):p.height>s&&(x.labels.drawNumericVal=!1,!x.upperLimitDisplay&&!x.lowerLimitDisplay&&(x.labels.isDraw=!1),_="",p=C.getOriSize(_)),c=S?s:d,u=S?d:s,x.showLimits?(f=v.call(V,D),m=v.call(V,L),t=x.upperLimitDisplay||""+f,a=x.lowerLimitDisplay||""+m,(y=C.getOriSize(t)).width>p.width&&(g=C.getSmartText(t,c,u),(t===f&&g.text===g.oriText||x.labels.drawNumericVal)&&(_=t,p=y)),C.getOriSize(a).width>p.width&&(g=C.getSmartText(a,c,u),(a===m&&g.text===g.oriText||x.labels.drawNumericVal)&&(_=a)),""===_&&(_=C.getOriSize(x.upperLimitDisplay).width>C.getOriSize(x.lowerLimitDisplay).width?t:a,p=C.getOriSize(_))):x.labels.drawLimitVal=!1,S)h=C.getSmartText(_,c,u);else for(n=L;n<=D&&""===(h=C.getSmartText(_,c,u)).text;n+=N)c+=d;h=C.getSmartText(_,c,u),x.labelMaxW=Math.max(h.width,p.width),x.labelMaxH=Math.max(h.height,p.height),!F&&x.labels.isDraw?S?(x.labelMaxW=Math.min(x.labelMaxW,s),A?o.right+=x.labelMaxW+x.tickValueDistance:o.left+=x.labelMaxW+x.tickValueDistance):(x.labelMaxH=Math.min(x.labelMaxH,s),A?o.top+=x.labelMaxH+x.tickValueDistance:o.bottom+=x.labelMaxH+x.tickValueDistance):x.labelPadding=-x.labelPadding,x.labels.drawLimitVal&&(P&&-1!==P.indexOf("px")&&(P=parseFloat(P.replace("px",""))),x.upperLimitDisplay?p=C.getSmartText(x.upperLimitDisplay,x.labelMaxW,x.labelMaxH+P/2):(i=""+v.call(V,(0,r.toPrecision)(D,10)),p=C.getOriSize(i)),this.components.labels[l]={config:{width:p.width,height:p.height,props:{label:{attr:{text:p.text}}}}},x.lowerLimitDisplay?p=C.getSmartText(x.lowerLimitDisplay,x.labelMaxW,x.labelMaxH+P/2):(i=""+v.call(V,(0,r.toPrecision)(L,10)),p=C.getOriSize(i)),b={config:{width:p.width,height:p.height,props:{label:{attr:{text:p.text}}}}},this.components.labels.unshift(b))}else x.labels.isDraw=!1;return x.spaceTaken=o,o},t.prototype.hide=function(){var e=this.config;e.axisContainer&&(e.axisLabelContainerTop.hide(),e.axisContainer.hide(),e.axisTrendLabelContainer.hide(),e.axisAxisLineContainer.hide())},t.prototype.show=function(){var e=this.config;e.axisContainer&&(e.axisLabelContainerTop.show(),e.axisContainer.show(),e.axisTrendLabelContainer.show(),e.axisAxisLineContainer.show())},t.prototype._computeTranslation=function(){if(this)return 0},t}(o["default"]);h.prototype.setAxisDimention=c.setAxisDimention,h.prototype.getPixel=c.getPixel,h.prototype._parseLabel=c._parseLabel,h.prototype._drawLabel=c._drawLabel,t["default"]=h},610:function(e,t,a){"use strict";t.__esModule=!0;var o=s(a(295)),r=a(118),i=a(122),n=a(301),l=s(a(320));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.majorTMNumber=-1,t.adjustDiv=1,t.majorTMHeight=6,t.showTickMarks=1,t.majorTMThickness=1,t.minorTMNumber=4,t.minorTMThickness=1,t.tickMarkDistance=3,t.placeTicksInside=0,t.placeValuesInside=0,t.forceZeroTick=!1},t.prototype.configureAttributes=function(t){var a,o=this.config,n=this.getFromEnv("color-manager");e.prototype.configureAttributes.call(this,t),a=o.rawAttr,o.majorTMColor=(0,i.convertColor)((0,r.pluck)(a.majorTMColor,n.getColor("tickColor")),(0,r.pluckNumber)(a.majorTMAlpha,100)),o.tickValueStep=(0,r.pluckNumber)(a.tickValueStep,1),o.tickValueStep=Math.round(o.tickValueStep),o.tickValueStep<=0&&(o.tickValueStep=1),o.connectTickMarks=o.showTickMarks?(0,r.pluckNumber)(a.connectTickMarks,1):0,o.showTickValues=(0,r.pluckNumber)(a.showTickValues,o.showTickMarks),o.reverseScale=1===(0,r.pluckNumber)(a.reverseScale,0),o.minorTMColor=(0,i.convertColor)((0,r.pluck)(a.minorTMColor,o.majorTMColor),(0,r.pluckNumber)(a.minorTMAlpha,o.majorTMAlpha,100)),o.minorTMHeight=o.showTickMarks?(0,r.pluckNumber)(a.minorTMHeight,Math.round(o.majorTMHeight/2)):0,o.tickValueDistance=(0,r.pluckNumber)(a.tickValueDistance,0)+2,o.upperLimitDisplay=(0,r.parseUnsafeString)(a.upperLimitDisplay)||"",o.lowerLimitDisplay=(0,r.parseUnsafeString)(a.lowerLimitDisplay)||"",o.drawTickMarkConnector=a.drawTickMarkConnector||0,o.numDivLines=o.majorTMNumber>=0?o.majorTMNumber:o.numDivLines+1},t.prototype._createContainer=function(){var e,t,a,o,r=this.config,i=this.getLinkedParent().getChildContainer(),n=i.axisBottomGroup,l=i.axisTopGroup;o=this.createContainer("axisTrendGroupBottom",{name:"dataset-Trend-group-bottom"},n),e=this.createContainer("axisLineGroup",{name:"axis-Line-group"},l),t=this.createContainer("axisTrendGroupTop",{name:"dataset-Trend-group-top"},l),a=this.createContainer("axisLabelGroupTop",{name:"dataset-Label-group"},l),r.axisLabelContainerTop=r.axisContainer=this.createGroup("axisLabelContainerTop",{name:"dataset-top-label"},a),r.axisAxisLineContainer=this.createGroup("axisAxisLineContainer",{name:"axis-line-tick"},e),r.axisTrendContainerTop=this.createGroup("axisTrendContainerTop",{name:"dataset-axis-trend-top"},t),r.axisTrendContainerBottom=this.createGroup("axisTrendContainerBottom",{name:"dataset-axis-trend-bottom"},o),r.axisTrendLabelContainer=this.createGroup("axisTrendLabelContainer",{name:"dataset-axis-trend-label"},t)},t.prototype.allocatePosition=function(){this.config.drawLabels&&this._parseLabel()},t.prototype.setVisibleConfig=function(e,t){var a,o=this.config,r=this.getScale();return!(e>=t||e<o.axisRange.min||t>o.axisRange.max)&&(a=r.setDomain([e,t]).getDomain(),o.visibleMin=a[0],o.visibleMax=a[1],this.fireEvent("visiblerangeset",{minValue:e,maxValue:t}),this.asyncDraw(),!0)},t.prototype._adjustNumberFormatter=function(){if(this)return 0},t.prototype.calculateTicksOnLabelMode=function(){if(this)return 0},t.prototype.generateMinorTicks=function(){var e=this.config,t=e.ticks,a=t.length,o=e.axisRange.tickInterval,r=[],i=e.minorTMNumber,n=void 0,l=void 0,s=void 0,c=void 0;for(e.minorTicks=r,c=0;c<a-1;++c)for(s=t[c],l=o/(Number(i)+1),n=1;n<=i;n+=1)r.push(s+l*n);return r},t.prototype._setAxisRange=function(e){var t=e.min,a=e.max,o=this.config,r=o.axisRange;t>a||((0,l["default"])(t,a,this.getScale(),o),o.minorTicks=this.generateMinorTicks(),this.setVisibleConfig(r.min,r.max))},t}(o["default"]);u.prototype.setDataLimit=n.setDataLimit,u.prototype.getTrendLineLimits=n.getTrendLineLimits,t["default"]=u},611:function(e,t,a){"use strict";t.__esModule=!0;var o=a(296);t["default"]={"initial.axis.gaugeAxis":{"text.appearing":o.appearingAxis,"path.appearing":o.appearingAxis},"update.axis.gaugeAxis":{"text.appearing":o.appearingFinal,"path.appearing":o.appearingFinal}}},612:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(613)),n=a(125),l=s(a(614));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u="A",p=Math,h=p.max,d=p.min,g=window,f=g.navigator.userAgent,m="Z",b="rgba(192,192,192,"+(/msie/i.test(f)&&!g.opera?.002:1e-6)+")",v="M",y="L",k=o.preDefStr.POSITION_TOP,w=o.preDefStr.POSITION_MIDDLE;(0,n.addDep)({name:"cylinderAnimation",type:"animationRule",extension:l["default"]});var C=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"cylinder"},t.prototype._manageSpace=function(){var e,t,a,r,i=this.getFromEnv("chart").config,n=i.width,l=i.height,s=i.canvasWidth,c=i.canvasHeight,u=i.canvasLeft,p=i.canvasTop,g=i.canvasRight,f=i.xDefined,m=i.yDefined,b=i.rDefined,v=i.hDefined,y=i.gaugeOriginX,k=i.gaugeOriginY,w=i.gaugeRadius,C=i.gaugeHeight,x=i.gaugeYScale,T=function(e,t,a,r){return t=(0,o.pluckNumber)(t,r),e=(0,o.pluckNumber)(e,a),t&&e?e/a==t/r?a/e:Math.min(a/e,r/t):1}(i.origW,i.origH,n,l),S=0,A=0,E=0,N=0;return c-=a=this._getLabelSpace(),A+=a,b?w*=T:w=h(d(s,1.2*c)/2,5),i.effectiveR=w,e=2*w,S+=t=w*x,p+=t,A+=t,c-=2*t,f?r=(y*=T)-w-u:(r=(g-u)/2-w)+e>s&&(r=s-e),u+=r,s-=r,m&&(k*=T),v?(C*=T,m?S+=k-C-p:k=p+C):m?C=k-p:k=p+(C=c),{top:S,bottom:(A+=p+c-k)+8,left:E+=r,right:N+=s-e}},t.prototype.draw=function(){var e,t,a,i,n,l,s,c=this,p=c.config,d=c.getFromEnv("smartLabel"),g=c.getFromEnv("chart"),f=c.getFromEnv("toolTipController"),C=g.getChildContainer("trackerGroup"),x=g.getChildContainer().plotGroup,T=c.getGraphicalElement("fluidTop"),S=c.getGraphicalElement("fluid"),A=c.getGraphicalElement("cylinterTop"),E=c.getGraphicalElement("frontLight1"),N=c.getGraphicalElement("frontLight"),O=c.getGraphicalElement("front"),F=c.getGraphicalElement("back"),D=c.getGraphicalElement("btnBorderLight"),L=c.getGraphicalElement("btnBorder1"),M=c.getGraphicalElement("btnBorder"),R=c.getGraphicalElement("label"),_=g.getChildContainer("datalabelsGroup"),P=c.getContainer("dataLabelContainer"),V=c.getContainer("trackerContainer"),I=c.getGraphicalElement("hotElement"),G=c.getFromEnv("scale"),j=g.config,B=j.canvasLeft,H=j.canvasTop,W=j.canvasHeight,z=j.effectiveR||40,U=(0,o.pluckNumber)(p.value,G.getLimit().min),X=G.getPixel(U),K=B+z,Y=H,J=W,Z=g.config.dataLabelStyle,q=p.gaugeFillColor,$=(0,r.getDarkColor)(q,70),Q=(0,r.getLightColor)(q,70),ee=(0,r.getDarkColor)($,90),te=j.gaugeFillAlpha,ae=p.gaugeContainerColor,oe=(0,r.getDarkColor)(ae,80),re=(0,r.getDarkColor)(ae,90),ie=(0,r.getLightColor)(ae,80),ne=j.gaugeYScale,le=c.getContainer("container"),se=c.getFromEnv("animationManager"),ce=Math.abs(j.width-j.canvasRight-B),ue=z*ne,pe=z-1.5,he=p.cylBase=Y+J,de=X,ge=K-z,fe=K+z,me=ge+1.5,be=fe-1.5,ve=ge-2,ye=fe+2,ke=z+2,we=ue+2,Ce=he+4,xe=Ce+.001,Te=.85*z,Se=K-Te,Ae=K+Te,Ee=Math.sqrt((1-Te*Te/(z*z))*ue*ue),Ne=Y+Ee,Oe=he+Ee,Fe=Y-1,De=j.use3DLighting,Le=void 0,Me=void 0,Re=p.showHoverEffect,_e=p.plotFillHoverAlpha,Pe=p.plotFillHoverColor,Ve=void 0,Ie=void 0,Ge=void 0,je=p.fluidAttr,Be=void 0,He=void 0,We=void 0,ze=(0,r.convertColor)(oe,50),Ue={"stroke-width":4},Xe={"stroke-width":4},Ke={"stroke-width":0},Ye={"stroke-width":1},Je={"stroke-width":2},Ze={"stroke-width":1},qe={"stroke-width":0},$e={"stroke-width":0},Qe={"stroke-width":2},et={stroke:b,fill:b},tt={};je||(je=p.fluidAttr={}),je["stroke-width"]=0,i={value:p.value,displayValue:p.displayValue,toolText:p.toolText},De?(Be=ie+o.COMMASTRING+oe+o.COMMASTRING+ie+o.COMMASTRING+oe+o.COMMASTRING+re+o.COMMASTRING+re+o.COMMASTRING+oe+o.COMMASTRING+ie,We=(0,o.toRaphaelColor)({FCcolor:{cx:.5,cy:0,r:"100%",color:Q+o.COMMASTRING+$,alpha:te+o.COMMASTRING+te,ratio:"0,100",radialGradient:!0}}),Le=(0,o.toRaphaelColor)({FCcolor:{cx:.5,cy:.7,r:"100%",color:Q+o.COMMASTRING+$,alpha:te+o.COMMASTRING+te,ratio:"0,100",radialGradient:!0}}),Me=(0,r.convertColor)(Q,te),He=ie+o.COMMASTRING+oe+o.COMMASTRING+ie+o.COMMASTRING+ie+o.COMMASTRING+oe+o.COMMASTRING+ie+o.COMMASTRING+oe+o.COMMASTRING+ie,qe.path=[v,ge,he,u,z,ue,1,0,0,Se,Oe,y,Se,Ne,u,z,ue,0,0,1,ge,Y,m],qe.fill=(0,o.toRaphaelColor)({FCcolor:{color:He,alpha:"40,0",ratio:"0,100",angle:0}}),$e.path=[v,Ae,Oe,u,z,ue,0,0,0,fe,he,y,fe,Y,u,z,ue,1,0,0,Ae,Ne,m],$e.fill=(0,o.toRaphaelColor)({FCcolor:{color:He,alpha:"40,0",ratio:"0,100",angle:180}})):(Be=ie+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+ie,Le=We=(0,r.convertColor)($,te),Me=(0,r.convertColor)(ee),He=oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe+o.COMMASTRING+oe),je.bodyOut={fill:We},je.topOut={stroke:Me,fill:Le},Re&&(Ve=(0,r.getDarkColor)(Pe,70),Ie=(0,r.getLightColor)(Pe,70),Ge=(0,r.getDarkColor)(Ve,90),De?(je.bodyHover={fill:(0,o.toRaphaelColor)({FCcolor:{cx:.5,cy:0,r:"100%",color:Ie+o.COMMASTRING+Ve,alpha:_e+o.COMMASTRING+_e,ratio:"0,100",radialGradient:!0}})},je.topHover={stroke:(0,r.convertColor)(Ie,_e),fill:(0,o.toRaphaelColor)({FCcolor:{cx:.5,cy:.7,r:"100%",color:Ie+o.COMMASTRING+Ve,alpha:_e+o.COMMASTRING+_e,ratio:"0,100",radialGradient:!0}})}):(je.bodyHover={fill:(0,r.convertColor)(Ve,_e)},je.topHover={stroke:(0,r.convertColor)(Ge),fill:(0,r.convertColor)(Ve,_e)})),je.fill=We,je.path=[v,ge,he,u,z,h(ue,1),0,0,0,fe,he,y,fe,de,u,z,h(ue,1),0,0,1,ge,de,m],Je.fill=Le,Je.stroke=Me,Je.path=[v,me,de,u,pe,ue,0,0,0,be,de,y,be,de,u,pe,ue,0,0,0,me,de,m],Ue.stroke=(0,r.convertColor)(oe,80),Ue.path=[v,ve,Ce,u,ke,we,0,0,0,ye,Ce,y,ye,xe,u,ke,we,0,0,0,ve,xe,m],Xe.stroke=ze,Xe.path=[v,ge,Ce,u,z,ue,0,0,0,fe,Ce,y,fe,xe,u,z,ue,0,0,0,ge,xe,m],Ke.path=[v,ge,he,u,z,ue,0,0,0,fe,he,u,z,ue,0,0,0,ge,he,m],Ke.fill=(0,o.toRaphaelColor)({FCcolor:{color:ie+o.COMMASTRING+oe+o.COMMASTRING+ie+o.COMMASTRING+ie+o.COMMASTRING+oe+o.COMMASTRING+$+o.COMMASTRING+oe+o.COMMASTRING+ie,alpha:"50,50,50,50,50,70,50,50",ratio:"0,15,0,12,0,15,43,15",angle:0}}),Ye.path=[v,ge,he,u,z,ue,0,0,0,fe,he,y,fe,Y,u,z,ue,0,0,0,ge,Y,m],Ye.stroke=ze,Ye.fill=(0,o.toRaphaelColor)({FCcolor:{color:Be,alpha:"30,30,30,30,30,30,30,30",ratio:"0,15,43,15,0,12,0,15",angle:0}}),Ze.path=[v,ge,he,u,z,ue,0,0,0,fe,he,y,fe,Y,u,z,ue,0,0,1,ge,Y,m],Ze.stroke=ze,Ze.fill=(0,o.toRaphaelColor)({FCcolor:{color:He,alpha:"30,30,30,30,30,30,30,30",ratio:"0,15,0,12,0,15,43,15",angle:0}}),Qe.stroke=(0,r.convertColor)(oe,40),Qe.path=[v,ge,Fe,u,z,ue,0,0,0,fe,Fe,y,fe,Fe,u,z,ue,0,0,0,ge,Fe,m],et.path=[v,ge,he,ge,Ce+4,u,z,ue,0,0,0,fe,Ce+4,y,fe,he,fe,Y,u,z,ue,0,0,0,ge,Y,m],tt.opacity=p.showValue?1:0,d.setStyle(Z),a=he+ue+(p.valuePadding||0)+8,n=(l=d.getSmartText(p.displayValue,j.width-j.marginLeft-j.marginRight-ce/2,+j.height-a-j.marginBottom)).tooltext||o.BLANKSTRING,s={text:l.text,x:K,y:a,"text-anchor":w,"vertical-align":k,fill:Z.color,"text-bound":[Z.backgroundColor,Z.borderColor,Z.borderThickness,Z.borderPadding,Z.borderRadius,Z.borderDash]},t=se.setAnimation({el:le||"group",attr:{name:"cylinder"},container:x,component:c,label:"group"}),M=se.setAnimation({el:M||"path",attr:Ue,container:t,component:c,label:"path"}),L=se.setAnimation({el:L||"path",attr:Xe,container:t,component:c,label:"path"}),D=se.setAnimation({el:D||"path",attr:Ke,container:t,component:c,label:"path"}),F=se.setAnimation({el:F||"path",attr:Ye,container:t,component:c,label:"path"}),S=se.setAnimation({el:S||"path",attr:je,container:t,component:c,label:"plotFluid"}),T=se.setAnimation({el:T||"path",attr:Je,container:t,component:c,label:"plotFluidTop"}),O=se.setAnimation({el:O||"path",attr:Ze,container:t,component:c,label:"path"}),N=se.setAnimation({el:N||"path",attr:qe,container:t,component:c,label:"path"}),E=se.setAnimation({el:E||"path",attr:$e,container:t,component:c,label:"path"}),A=se.setAnimation({el:A||"path",attr:Qe,container:t,component:c,label:"path"}),V=se.setAnimation({el:V||"group",attr:{name:"tracker-group"},container:C,component:c,label:"group"}),e=se.setAnimation({el:P||"group",attr:tt,container:_,component:c,label:"labelGroup"}),R=se.setAnimation({el:R||"text",attr:s,container:e,component:c,label:"text"}),I=se.setAnimation({el:I||"path",attr:et,container:V,component:c,label:"path"}),p.showTooltip?f.enableToolTip(R,n):f.disableToolTip(R),le||(I.on("fc-click",function(e){g.plotEventHandler(this,e)}).hover(function(e){p.showHoverEffect&&(c.getGraphicalElement("fluid")&&c.getGraphicalElement("fluid").attr(je.bodyHover),c.getGraphicalElement("fluidTop")&&c.getGraphicalElement("fluidTop").attr(je.topHover)),g.plotEventHandler(this,e,"DataPlotRollOver")},function(e){p.showHoverEffect&&(c.getGraphicalElement("fluid")&&c.getGraphicalElement("fluid").attr(je.bodyOut),c.getGraphicalElement("fluidTop")&&c.getGraphicalElement("fluidTop").attr(je.topOut)),g.plotEventHandler(this,e,"DataPlotRollOut")}),c.addContainer("container",t),c.addGraphicalElement("btnBorder",M),c.addGraphicalElement("btnBorder1",L),c.addGraphicalElement("btnBorderLight",D),c.addGraphicalElement("back",F),c.addGraphicalElement("fluid",S),c.addGraphicalElement("fluidTop",T),c.addGraphicalElement("front",O),c.addGraphicalElement("frontLight",N),c.addGraphicalElement("frontLight1",E),c.addGraphicalElement("cylinterTop",A),c.addContainer("trackerContainer",V),c.addGraphicalElement("hotElement",I)),P||(c.addContainer("dataLabelContainer",e),c.addGraphicalElement("label",R)),I.data("eventArgs",i),p.toolText?f.enableToolTip(I,p.toolText):f.disableToolTip(I)},t}(i["default"]);t["default"]=C},613:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(118),i=a(122),n=a(131),l=(o=n)&&o.__esModule?o:{"default":o};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=r.BLANK,u=r.preDefStr.gaugeFillColorStr,p=r.preDefStr.gaugeBorderColorStr,h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"cylinderThermometerBase"},t.prototype.setValue=function(e,t){if(e){var a,o=this.config,i=this.getFromEnv("chart").getFromEnv("dataSource").chart,n=this.getFromEnv("number-formatter"),l=e.value,s=e.tooltext||i.plottooltext;o.value=l=n.getCleanValue(l),null!==l?(a=o.formattedValue=n.dataLabels(o.value),o.showValue?o.displayValue=e.label||(0,r.getValidValue)(a,r.BLANK):o.displayValue=c,o.showTooltip?o.toolText=void 0!==s?(0,r.parseTooltext)((0,r.pluck)(e.tooltext,s),[1,2],{formattedValue:a,value:l},e,i):(0,r.pluck)(e.tooltext,null===a?c:a):o.toolText=c):(o.displayValue=c,o.toolText=c,o.formattedValue=null),t&&this.draw()}},t.prototype.configure=function(e){if(!e)return!1;this.setValue(e&&e.data&&e.data[0]);var t,a,o,n,l=this.getFromEnv("chart"),s=l.getFromEnv("dataSource"),c=s.chart,h=this.config||(this.config={}),d=this.getFromEnv("color-manager"),g=l.config,f=(0,r.pluckNumber)(c.showhovereffect);h.showValue=(0,r.pluckNumber)(c.showvalue,c.showvalues,1),h.showTooltip=(0,r.pluckNumber)(c.showtooltip,1),h.valuePadding=(0,r.pluckNumber)(c.valuepadding,2),h.tooltipSepChar=(0,r.pluck)(c.tooltipsepchar,r.COMMASTRING),h.pointerOnOpp=(0,r.pluckNumber)(c.pointerontop,0),h.axisPosition=(0,r.pluckNumber)(c.ticksbelowgauge,c.ticksbelowgraph,this.ticksbelowgauge,1)?3:1,h.valueAbovePointer=(0,r.pluckNumber)(c.valueabovepointer,1),h.labelStyle=g.dataLabelStyle,n=h.gaugeFillColor=(0,r.pluck)(c.gaugefillcolor,c.thmfillcolor,c.cylfillcolor,d.getColor(u)),o=h.gaugeFillAlpha=(0,r.pluckNumber)(c.gaugefillalpha,c.cylfillalpha,c.thmfillalpha,r.HUNDREDSTRING),h.showGaugeBorder=(0,r.pluckNumber)(c.showgaugeborder,1),t=h.showGaugeBorder?(0,r.pluckNumber)(c.gaugeborderalpha,40):0,h.gaugeBorderColor=(0,i.convertColor)((0,r.pluck)(c.gaugebordercolor,d.getColor(p)),t),h.gaugeBorderThickness=(0,r.pluckNumber)(c.gaugeborderthickness,1),h.gaugeContainerColor=(0,r.pluck)(c.thmglasscolor,c.cylglasscolor,l.glasscolor,(0,i.getLightColor)(n,30)),0!==f&&(f||c.plotfillhovercolor||c.plotfillhoveralpha||0===c.plotfillhoveralpha)&&(h.showHoverEffect=!0,a=(0,r.pluck)(c.plotfillhovercolor,c.cylfillhovercolor,c.thmfillhovercolor,"{dark-10}"),h.plotFillHoverAlpha=(0,r.pluckNumber)(c.plotfillhoveralpha,c.cylfillhoveralpha,c.thmfillhoveralpha,o),h.plotFillHoverColor=/\{/.test(a)?d.parseColorMix(n,a)[0]:a),this.setValue(s),l._parseSpecialConfig&&l._parseSpecialConfig()},t.prototype._getLabelSpace=function(){var e,t=this.config,a=this.getFromEnv("chart"),o=this.getFromEnv("smartLabel");return o.useEllipsesOnOverflow(a.config.useEllipsesWhenOverflow),o.setStyle(t.labelStyle),(e=o.getOriSize(t.displayValue!==r.BLANK?t.displayValue:"dummy")).height?e.height+t.valuePadding:0},t.prototype.getDataLimits=function(){var e,t,a=this.config;return t=e=a.value,a.maxValue=t,a.minValue=e,{forceMin:!0,forceMax:!0,max:t,min:e}},t.prototype.updateData=function(){var e=arguments[0],t=arguments[2],a=this.config,o=a.maxValue,r=a.prevMin,i=a.value,n=this.getFromEnv("chart"),l=this.groupManager||this,s=this.getFromEnv("scale");this.setValue(e.data[0]),a.maxValue=i,a.minValue=i,a.maxValue===o&&a.minValue===r||(this.config.maxminFlag=!0),t&&(n._setAxisLimits(),s.draw(),l.draw())},t.prototype.setJSONIndex=function(e){this.config.index=e},t.prototype.getJSONIndex=function(){return this.config.index||0},t}(l["default"]);t["default"]=h},614:function(e,t,a){"use strict";t.__esModule=!0;var o=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.cylinder":function(){var e=this.config;return{"plotFluid.appearing":function(e){var t=e.attr.path.slice(0);return t[13]=t[21]=t[2],[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:{path:t},finalAttr:{opacity:1},slot:"middle"}]},"plotFluid.updating":null,"plotFluidTop.appearing":function(t){var a=t.attr.path.slice(0);return a[2]=a[10]=a[13]=a[21]=e.cylBase,[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:{path:a},finalAttr:{opacity:1},slot:"middle"}]},"plotFluidTop.updating":null,"text.appearing":function(){return o[0].slot="final",o},"text.updating":null,"labelGroup.appearing":function(){return o[0].slot="final",o},"labelGroup.updating":null,"path.appearing":function(){return o[0].slot="initial",o},"path.updating":null}}}},615:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(616),i=c(a(581)),n=c(a(607)),l=c(a(617)),s=c(a(620));function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var p=Math,h=p.min,d=p.PI/180,g=function(e){return void 0!==e&&null!==e},f=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.isHorizontal=!0,a.isAxisOpposite=!1,a.isRealTime=!0,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isAxisReverse=!1,a.colorRange=!0,a.defaultPaletteOptions=(0,o.extend2)((0,o.extend2)({},o.defaultGaugePaletteOptions),{dialColor:["999999,ffffff,999999","ADB68F,F3F5DD,ADB68F","A2C4C8,EDFBFE,A2C4C8","FDB548,FFF5E8,FDB548","FF7CA0,FFD1DD,FF7CA0"],dialBorderColor:["999999","ADB68F","A2C4C8","FDB548","FF7CA0"],pivotColor:["999999,ffffff,999999","ADB68F,F3F5DD,ADB68F","A2C4C8,EDFBFE,A2C4C8","FDB548,FFF5E8,FDB548","FF7CA0,FFD1DD,FF7CA0"],pivotBorderColor:["999999","ADB68F","A2C4C8","FDB548","FF7CA0"]},!1,!0),a.rtParserModify=!0,a._setCategories=function(){},a.registerFactory("dataset",s["default"],["axis"]),a.registerFactory("axis",l["default"],["canvas"]),a}return u(t,e),t.getName=function(){return"AngularGauge"},t.prototype.getName=function(){return"AngularGauge"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Angular Gauge",t.hasLegend=!1,t.defaultDatasetType="angulargauge",t.animationeffect="easeOut",t.skipCanvasDrawing=!0},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t);var a=this.getFromEnv("dataSource").colorrange;a&&a.color&&a.color.length?((0,o.componentFactory)(this,i["default"],"colorRange",1,[{colorRange:a,numberFormatter:this.getFromEnv("number-formatter")}]),this.addToEnv("colorRange",this.getChildren("colorRange")[0])):this.deleteFromEnv("colorRange")},t.prototype._spaceManager=function(){var e,a,r,i,n,l,s,c,u,p,d,g=this.config,f=this.getChildren("dataset")[0],m=this.getFromEnv("scale"),b=m.config,v=f.components.data[0],y=this.getFromEnv("dataSource").chart,k=f.config,w=k.scaleFactor,C=0,x=0,T=k.pivotRadius,S=g.dataLabels.style.lineHeight,A=g.displayValueCount,E=g.borderWidth,N=g.minChartWidth,O=g.minChartHeight,F=0;g.canvasWidth-2*E<N&&(d=(g.canvasWidth-N)/2),g.canvasHeight-2*E<O&&(p=(g.canvasHeight-O)/2),this._allocateSpace({top:p||E,bottom:p||E,left:d||E,right:d||E}),g.autoScale?g.scaleFactor=w=t._getScaleFactor(k.origW,k.origH,g.width,g.height):g.scaleFactor=w=1,S=S.replace(/px/i,""),s=/^\d+\%$/.test(k.gaugeinnerradius)?parseInt(k.gaugeinnerradius,10)/100:.7,c=T=(0,o.pluckNumber)((0,o.getValidValue)(y.pivotradius)*w,5),k.pivotRadius=c,T=Math.max(T,k.rearExtension*w),v&&v.config&&v.config.rearextension&&(T=Math.max(T,v.config.rearextension*w)),k.compositPivotRadius=T,C=A*S+2+c,k.valueBelowPivot||(x=C,C=0),k.gaugeOuterRadius=(0,o.pluckNumber)(Math.abs((0,o.getValidValue)(y.gaugeouterradius)*w)),k.gaugeInnerRadius=(0,o.pluckNumber)(Math.abs((0,o.getValidValue)(y.gaugeinnerradius)*w),k.gaugeOuterRadius*s),e=.7*g.canvasWidth,a=.7*g.canvasHeight,u=m.placeAxis(h(e,a)),a=.7*g.canvasHeight,this._manageChartMenuBar(a),r=(l=t._angularGaugeSpaceManager(k.gaugeStartAngle,k.gaugeEndAngle,g.canvasWidth,g.canvasHeight,k.gaugeOuterRadius,(0,o.pluckNumber)((0,o.getValidValue)(y.gaugeoriginx)*w-g.canvasLeft),(0,o.pluckNumber)((0,o.getValidValue)(y.gaugeoriginy)*w-g.canvasTop),T+b.polarPadding,C,x)).radius=(0,o.pluckNumber)(l.radius,l.maxRadius),k.gaugeOriginX=l.centerX+g.canvasLeft,k.gaugeOriginY=l.centerY+g.canvasTop,i=l.centerX,n=l.centerY,F=u.left<u.top?i-u.left>=r-u.left&&n-u.top>=r-u.left?u.left:u.top:i-u.left>=r-u.top&&n-u.top>=r-u.top?u.top:u.left,F+=2*m.config.polarPadding,!k.gaugeOuterRadius&&(k.gaugeOuterRadius=l.radius-F),void 0===k.gaugeInnerRadius&&(k.gaugeInnerRadius=k.gaugeOuterRadius*s),m.setAxisConfig({centerX:k.gaugeOriginX,centerY:k.gaugeOriginY,radius:l.radius||k.gaugeOuterRadius,gaugeOuterRadius:k.gaugeOuterRadius,gaugeInnerRadius:k.gaugeInnerRadius,scaleFactor:w})},t.prototype.allocatePosition=function(){var e=this.config,t=this.getChildren("dataset")[0].config;e.gaugeStartX=e.canvasLeft,e.gaugeStartY=e.canvasTop,e.gaugeEndX=e.canvasRight,e.gaugeEndY=e.canvasBottom,e.gaugeCenterX=t.gaugeOriginX,e.gaugeCenterY=t.gaugeOriginY,e.gaugeStartAngle=t.gaugeStartAngle/d,e.gaugeEndAngle=t.gaugeEndAngle/d},t.prototype._feedAxesRawData=function(){var e,t=this.getFromEnv("color-manager"),a=this.getFromEnv("dataSource"),r=a.chart,i=this.getFromEnv("number-formatter"),n=o.chartPaletteStr.chart2D,l=(0,o.pluckNumber)(r.axisontop,r.axisonleft,void 0!==r.ticksbelowgauge?!r.ticksbelowgauge:void 0,this.isAxisOpposite),s=(0,o.pluckNumber)(r.reverseaxis,this.isAxisReverse);return(e={isVertical:!this.isHorizontal,isReverse:s,isOpposit:l,outCanfontFamily:(0,o.pluck)(r.outcnvbasefont,r.basefont,"Verdana,sans"),outCanfontSize:(0,o.pluckFontSize)(r.outcnvbasefontsize,r.basefontsize,10),outCancolor:(0,o.pluck)(r.outcnvbasefontcolor,r.basefontcolor,t.getColor(n.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),useEllipsesWhenOverflow:r.useellipseswhenoverflow,divLineColor:(0,o.pluck)(r.vdivlinecolor,t.getColor(n.divLineColor)),divLineAlpha:(0,o.pluck)(r.vdivlinealpha,t.getColor("divLineAlpha")),divLineThickness:(0,o.pluckNumber)(r.vdivlinethickness,1),divLineIsDashed:Boolean((0,o.pluckNumber)(r.vdivlinedashed,r.vdivlineisdashed,0)),divLineDashLen:(0,o.pluckNumber)(r.vdivlinedashlen,4),divLineDashGap:(0,o.pluckNumber)(r.vdivlinedashgap,2),showAlternateGridColor:(0,o.pluckNumber)(r.showalternatevgridcolor,0),alternateGridColor:(0,o.pluck)(r.alternatevgridcolor,t.getColor("altVGridColor")),alternateGridAlpha:(0,o.pluck)(r.alternatevgridalpha,t.getColor("altVGridAlpha")),numDivLines:r.numvdivlines,labelFont:r.labelfont,labelFontSize:r.labelfontsize,labelFontColor:r.labelfontcolor,labelFontAlpha:r.labelalpha,labelFontBold:r.labelfontbold,labelFontItalic:r.labelfontitalic,axisName:r.xaxisname,axisMinValue:i.getCleanValue(r.lowerlimit),axisMaxValue:i.getCleanValue(r.upperlimit),setAdaptiveMin:r.setadaptivemin,adjustDiv:r.adjusttm,labelDisplay:r.labeldisplay,showLabels:r.showlabels,rotateLabels:r.rotatelabels,slantLabel:(0,o.pluckNumber)(r.slantlabels,r.slantlabel),labelStep:(0,o.pluckNumber)(r.labelstep,r.xaxisvaluesstep),showAxisValues:(0,o.pluckNumber)(r.showxaxisvalues,r.showxaxisvalue),showDivLineValues:(0,o.pluckNumber)(r.showvdivlinevalues,r.showvdivlinevalues),showZeroPlane:r.showvzeroplane,zeroPlaneColor:r.vzeroplanecolor,zeroPlaneThickness:r.vzeroplanethickness,zeroPlaneAlpha:r.vzeroplanealpha,showZeroPlaneValue:r.showvzeroplanevalue,trendlineColor:r.trendlinecolor,trendlineToolText:r.trendlinetooltext,trendlineThickness:r.trendlinethickness,trendlineAlpha:r.trendlinealpha,showTrendlinesOnTop:r.showtrendlinesontop,showAxisLine:(0,o.pluckNumber)(r.showxaxisline,r.showaxislines,r.drawAxisLines,0),axisLineThickness:(0,o.pluckNumber)(r.xaxislinethickness,r.axislinethickness,1),axisLineAlpha:(0,o.pluckNumber)(r.xaxislinealpha,r.axislinealpha,100),axisLineColor:(0,o.pluck)(r.xaxislinecolor,r.axislinecolor,"#000000"),majorTMNumber:r.majortmnumber,majorTMColor:r.majortmcolor,majorTMAlpha:r.majortmalpha,majorTMHeight:r.majortmheight,tickValueStep:r.tickvaluestep,showTickMarks:r.showtickmarks,connectTickMarks:r.connecttickmarks,showTickValues:r.showtickvalues,majorTMThickness:r.majortmthickness,reverseScale:r.reversescale,showLimits:r.showlimits,minorTMNumber:r.minortmnumber,minorTMColor:r.minortmcolor,minorTMAlpha:r.minortmalpha,minorTMHeight:(0,o.pluckNumber)(r.minortmheight,r.minortmwidth),minorTMThickness:r.minortmthickness,tickMarkDistance:(0,o.pluckNumber)(r.tickmarkdistance,r.tickmarkgap),tickValueDistance:(0,o.pluckNumber)(r.tickvaluedistance,r.displayvaluedistance),placeTicksInside:r.placeticksinside,placeValuesInside:r.placevaluesinside,upperLimitDisplay:r.upperlimitdisplay,lowerLimitDisplay:r.lowerlimitdisplay,ticksBelowGauge:r.ticksbelowgauge,ticksBelowGraph:r.ticksbelowgraph,trendValueDistance:r.trendvaluedistance}).trendPoints=a.trendpoints,[e]},t._angularGaugeSpaceManager=function(e,t,a,o,r,i,n,l,s,c){var u,p,h,d,f,m,b,v,y,k,w,C,x,T,S=g(r),A=g(i),E=g(n),N=2*Math.PI,O=Math.PI,F=Math.PI/2,D=O+F,L={radius:r,centerX:i,centerY:n},M=!1,R=e%N;return R<0&&(R+=N),(l=l||0)&&l<a/2&&l<o/2&&(M=!0),s>o/2&&(s=o/2),c>o/2&&(c=o/2),m=Math.cos(e),b=Math.sin(e),v=Math.cos(t),y=Math.sin(t),p=Math.min(m,v,0),d=Math.max(m,v,0),h=Math.min(b,y,0),f=Math.max(b,y,0),S&&A&&E||(((w=R+(T=t-e))>N||w<0)&&(d=1),T>0?((R<F&&w>F||w>N+F)&&(f=1),(R<O&&w>O||w>N+O)&&(p=-1),(R<D&&w>D||w>N+D)&&(h=-1)):((R>F&&w<F||w<-D)&&(f=1),(R>O&&w<O||w<-O)&&(p=-1),(R>D&&w<D||w<-F)&&(h=-1)),A?S||(C=a-i,x=-i,u=p?Math.min(C/d,x/p):C/d):(i=-(k=a/(d-p))*p,u=k,M&&(a-i<l?(C=a-(i=a-l),x=-i,u=p?Math.min(C/d,x/p):C/d):i<l&&(C=a-(i=l),x=-i,u=p?Math.min(C/d,x/p):C/d)),L.centerX=i),E?S||(C=o-n,x=-n,u=Math.min(u,h?Math.min(C/f,x/h):C/f)):(n=-(k=o/(f-h))*h,M&&(o-n<l?(C=o-(n=o-l),x=-n,u=Math.min(u,h?Math.min(C/f,x/h):C/f)):n<l&&(C=o-(n=l),x=-n,u=Math.min(u,h?Math.min(C/f,x/h):C/f))),o-n<s?(C=o-(n=o-s),x=-n,u=Math.min(u,h?Math.min(C/f,x/h):C/f)):n<c&&(C=o-(n=c),x=-n,u=Math.min(u,h?Math.min(C/f,x/h):C/f)),u=Math.min(u,k),L.centerY=n),L.maxRadius=u,L.maxRadius<=0&&(L.maxRadius=Math.min(a/2,o/2))),L},t._getScaleFactor=function(e,t,a,r){return t=(0,o.pluckNumber)(t,r),e=(0,o.pluckNumber)(e,a),t&&e?e/a==t/r?a/e:Math.min(a/e,r/t):1},t.prototype._getData=function(e,t){return r._getData.call(this,e,t)},t.prototype._setData=function(e,t){r._setData.call(this,e,t)},t.prototype._getDataForId=function(e,t){return r._getDataForId.call(this,e,t)},t.prototype._setDataForId=function(e,t){r._setDataForId.call(this,e,t)},t}(n["default"]);t["default"]=f},616:function(e,t,a){"use strict";t.__esModule=!0,t._setDataForId=t._getDataForId=t._setData=t._getData=undefined;var o=a(118),r=a(129),i=void 0;t._getData=function(e,t){var a,i,n=this.getChildren().dataset,l=function(){return(i=n[0].components.data)&&i[--e]?(a=i[e].config,(0,o.pluckNumber)(a.setValue,a.itemValue)):null};if(n){if("function"!=typeof t)return l();this.addJob("eiMethods",function(){t(l())},r.priorityList.postRender)}},t._setData=function(e,t){var a,r="value=";if(e!==i&&t!==i){for(a=1;a<Number(e);a++)r+=o.COMMASTRING;t.toString&&(r+=t.toString()),r&&this.feedData(r)}},t._getDataForId=function(e,t){var a=this.getChildren("dataset")[0].config.idMap;if("function"!=typeof t)return a&&a[e]&&a[e].config.itemValue||null;this.addJob("eiMethods",function(){t(a&&a[e]&&a[e].config.itemValue||null)},r.priorityList.postRender)},t._setDataForId=function(e,t){var a=this.getChildren("dataset")[0].config.idMap;return a&&a[e]&&this._setData(a[e].index+1,t)}},617:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){(0,n.componentFactory)(e,i["default"],"scale",1,e._feedAxesRawData()),e.addToEnv("scale",e.getChildren("scale")[0])};var o,r=a(618),i=(o=r)&&o.__esModule?o:{"default":o},n=a(118)},618:function(e,t,a){"use strict";t.__esModule=!0;var o=p(a(610)),r=a(118),i=a(122),n=a(589),l=p(a(298)),s=a(125),c=p(a(619)),u=p(a(314));function p(e){return e&&e.__esModule?e:{"default":e}}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var d=r.preDefStr.POSITION_MIDDLE,g=r.preDefStr.POSITION_START,f=r.preDefStr.POSITION_TOP,m=r.preDefStr.POSITION_BOTTOM,b=r.preDefStr.POSITION_END,v=Math,y=2*v.PI,k="_tick";(0,s.addDep)({name:"polarNumericAnimation",type:"animationRule",extension:c["default"]});var w=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.config.scale=new u["default"],a.config.prevTickMarks=[],a.config.prevIntervalArrLabel=[],a.config.prevIntervalArrTrendLine=[],a}return h(t,e),t.prototype.getName=function(){return"polarNumeric"},t.prototype.setAxisDimention=function(){var e,t=this.getScale(),a=this.config,o=a.startAngle||y/2,r=o+(a.totalAngle||y/2),i=a.axisDimention||(a.axisDimention={});i.centerX=a.centerX,i.centerY=a.centerY,i.axisLength=y,e=[o,r],t.setRange(e)},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.trendPoints=void 0,t.ticksBelowGauge=void 0,t.ticksBelowGraph=void 0,t.trendValueDistance=void 0},t.prototype.configureAttributes=function(t){var a,o=this.config;e.prototype.configureAttributes.call(this,t),a=o.rawAttr,o.upperLimitDisplay=a.upperLimitDisplay||"",o.lowerLimitDisplay=a.lowerLimitDisplay||"",o.polarPadding=4},t.prototype._drawComponents=function(){var e=this.config;e.drawTick&&this._drawTick(),e.drawLabels&&this._drawLabel(),e.drawTrendLines&&this._drawTrendLine()},t.prototype.getAngle=function(e){return this.getScale().getRangeValue(e)},t.prototype.placeAxis=function(e){var t,a,o,i,n,l,s,c,u,p=this.config,h=this.getFromEnv("chart"),d=h.getFromEnv("smartLabel"),g=p.axisRange,f=p.labels.style,m=g.tickInterval||1,b=p.upperLimitDisplay,v=p.lowerLimitDisplay,y=g.max,k=g.min,w=0,C=h.getFromEnv("number-formatter");if(c={left:0,right:0,top:0,bottom:0},d.useEllipsesOnOverflow(h.config.useEllipsesWhenOverflow),d.setStyle({fontSize:f.fontSize,fontFamily:f.fontFamily,lineHeight:f.lineHeight,fontWeight:f.fontWeight}),this.components||(this.components={},this.components.labels=[]),p.labels.isDraw=1,p.labels.drawNormalVal=1,p.labels.drawLimitVal=1,p.lines.isDraw=1,p.labels.step=p.tickValueStep,p.labelPadding=0,u=e,p.drawLabels&&p.showTickValues&&u>0){for(p.labelPadding+=p.tickValueDistance,u-=p.tickValueDistance,n=C.scale,a=k,o=0;a<=y;a+=m)i=""+n.call(C,(0,r.toPrecision)(a,10)),s=d.getOriSize(i,!0),this.components.labels[o]={config:{width:s.width,height:s.height,props:{label:{attr:{}}}}},o++,i.length>w&&(t=i,w=i.length);if((s=d.getOriSize(t,!0)).width>e/2)return p.labels.isDraw=!1,c;p.showLimits?(b||v)&&((l=d.getOriSize(b,!0)).width>s.width&&(t=b,w=l.width,s=l),(l=d.getOriSize(v,!0)).width>s.width&&(t=v,w=l.width,s=l)):p.labels.drawLimitVal=!1,s=d.getOriSize(t),p.labelMaxW=s.width,p.labelMaxW>e/2&&(p.labelMaxW=e/2),p.labelMaxH=s.height,p.placeValuesInside?p.labelPadding=-p.labelPadding:(c.right+=p.labelMaxW+p.tickValueDistance,c.left+=p.labelMaxW+p.tickValueDistance,c.top+=p.labelMaxH+p.tickValueDistance,c.bottom+=p.labelMaxH+p.tickValueDistance)}else p.labels.isDraw=!1;return c},t.prototype._parseLabel=function(){var e,t,a,o,i,l,s,c,u,p,h,v,y,k=this.config,w=this.getFromEnv("chart"),C=k.axisRange,x=this.getScale(),T=w.getFromEnv("smartLabel"),S=k.labels.style,A=k.labelPadding||0,E=k.radius,N=(0,r.pluckNumber)(k.gaugeOuterRadius,E),O=(0,r.pluckNumber)(k.gaugeInnerRadius,E),F=k.centerX,D=k.centerY,L=k.placeValuesInside,M=k.labelMaxH,R=k.labelMaxW,_=C.max,P=C.min,V=k.ticks,I=V.length,G=w.getFromEnv("number-formatter");if(S.lineHeight&&-1!==(p=S.lineHeight).indexOf("px")&&(p=p.replace("px",""),p=parseFloat(p)),T.useEllipsesOnOverflow(w.config.useEllipsesWhenOverflow),T.setStyle({fontSize:S.fontSize,fontFamily:S.fontFamily,lineHeight:S.lineHeight,fontWeight:S.fontWeight}),k.labels.isDraw){for(e=this.components.labels,c=k.labels.step,u=function(a){o=V[a],l=x.getRangeValue(o),(k.labels.drawNormalVal||k.labels.drawLimitVal&&(o===P||o===_))&&(k.labels.drawNormalVal||o===P||o===_)&&(k.labels.drawLimitVal||o!==P&&o!==_)&&(0===k.showZeroPlaneValue&&0===k.showZeroPlane&&0===o||(h=G.scale,o===P&&k.lowerLimitDisplay?(i=T.getSmartText(k.lowerLimitDisplay,R,M),s=i.text):o===_&&k.upperLimitDisplay?(i=T.getSmartText(k.upperLimitDisplay,R,M),s=i.text):s=h.call(G,(0,r.toPrecision)(o,10)),(y=L?(0,n.polarToCartesian)(O+A-k.polarPadding,l):(0,n.polarToCartesian)(N+A+k.polarPadding,l)).x+=F,y.y+=D,v={fill:S.color,"line-height":p,text:s,x:y.x,y:y.y},y.x>F-10&&y.x<F+10&&y.y<D?(v["text-anchor"]=d,v["text-valign"]=L?f:m):y.x>F-10&&y.x<F+10&&y.y<D?(v["text-anchor"]=d,v["text-valign"]=L?m:f):y.x<F?(v["text-anchor"]=L?g:b,v["text-valign"]="center"):(v["text-anchor"]=L?b:g,v["text-valign"]="center"),(t=e[a]=e[a]||{config:{props:{label:{attr:{}}}}}).config.props.label.attr=Object.assign(t.config.props.label.attr,v)))},a=0;a<I;a+=c)u(a);(I-1)%c!=0&&u(I-1)}},t.prototype._drawLabel=function(){var e,t,a,o,r,i,n,s,c,u,p=this,h=p.config,d=p.getFromEnv("chart"),g=h.axisRange,f=h.labels.style,m=g.max,b=g.min,v=h.axisLabelContainerTop,y=d.getFromEnv("animationManager"),k={fontFamily:f.fontFamily,fontSize:f.fontSize,fontWeight:f.fontWeight,fontStyle:f.fontStyle,lineHeight:f.lineHeight},w=h.ticks,C=w.length,x=[];if(v.show(),v.css(k),h.labels.isDraw){for(n=h.labels.step,s=function(e){t=w[e],(h.labels.drawNormalVal||h.labels.drawLimitVal&&(t===b||t===m))&&(h.labels.drawNormalVal||t===b||t===m)&&(h.labels.drawLimitVal||t!==b&&t!==m)&&(0===h.showZeroPlaneValue&&0===h.showZeroPlane&&0===t||(x.push(t),u=p.getGraphicalElement(t+"_label"),o=p.components.labels[e].config.props.label.attr,a=y.setAnimation({el:u||"text",attr:o,container:v,component:p,label:"text"}),u||p.addGraphicalElement(t+"_label",a)))},e=0;e<C;e+=n)s(e);(C-1)%n!=0&&s(C-1)}for(i=(0,l["default"])(h.prevIntervalArrLabel,x),t=0,r=i.length;t<r;t++)(c=p.getGraphicalElement(i[t]+"_label"))&&p.removeGraphicalElement(c);h.prevIntervalArrLabel=x},t.prototype._drawTick=function(){var e,t,a,o,i,s,c,u,p,h,d,g,f,m,b,v,y,w,C,x=this.config,T=x.drawTick,S=this.getScale(),A=x.drawTickMinor,E=this.getFromEnv("chart").getFromEnv("animationManager"),N=x.radius,O=x.centerX,F=x.centerY,D=(0,r.pluckNumber)(x.gaugeOuterRadius,N),L=(0,r.pluckNumber)(x.gaugeInnerRadius,N),M=x.ticks,R=x.minorTicks;if(d=x.axisAxisLineContainer,i={stroke:x.majorTMColor,"stroke-width":x.majorTMThickness,"stroke-linecap":"round"},o={stroke:x.minorTMColor,"stroke-width":x.minorTMThickness,"stroke-linecap":"round"},d.show(),v=x.prevTickMarks,x.prevTickMarks=[],x.lines.isDraw&&T&&x.showTickMarks){for(x.prevTickMarks=M.slice(),p=0;p<M.length;p++)m=M[p],e=S.getRangeValue(m),x.placeTicksInside?(s=(0,n.polarToCartesian)(L,e),c=(0,n.polarToCartesian)(L+x.majorTMHeight,e)):(s=(0,n.polarToCartesian)(D,e),c=(0,n.polarToCartesian)(D-x.majorTMHeight,e)),s.x+=O,s.y+=F,c.x+=O,c.y+=F,i.path="M"+s.x+" "+s.y+"L"+c.x+" "+c.y,f=Object.assign({},i),b=this.getGraphicalElement(""+M[p]+k),a=E.setAnimation({el:b||"path",attr:f,container:d,component:this,label:"path"}),b||this.addGraphicalElement(""+M[p]+k,a);if(A)for(x.prevTickMarks=x.prevTickMarks.concat(R),p=0;p<R.length;p+=1)h=R[p],t=S.getRangeValue(h),x.placeTicksInside?(s=(0,n.polarToCartesian)(L,t),u=(0,n.polarToCartesian)(L+x.minorTMHeight,t)):(s=(0,n.polarToCartesian)(D,t),u=(0,n.polarToCartesian)(D-x.minorTMHeight,t)),s.x+=O,s.y+=F,u.x+=O,u.y+=F,o.path="M"+s.x+" "+s.y+"L"+u.x+" "+u.y,f=Object.assign({},o),y=this.getGraphicalElement(""+R[p]+k),a=E.setAnimation({el:y||"path",attr:f,container:d,component:this,label:"path"}),y||this.addGraphicalElement(""+R[p]+k,a)}for(p=0,C=(g=(0,l["default"])(v,x.prevTickMarks)).length;p<C;p++)(w=this.getGraphicalElement(""+g[p]+k))&&this.removeGraphicalElement(w)},t.prototype._drawTrendLine=function(){var e,t,a,o,s,c,u,p,h,m,y,k,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W,z,U,X,K,Y,J=this.config,Z=J.axisRange,q=this.getFromEnv("toolTipController"),$=Z.max,Q=this.getScale(),ee=Z.min,te=J.canvas,ae=this.getFromEnv("chart"),oe=ae.config,re=ae.getFromEnv("smartLabel"),ie=ae.getFromEnv("color-manager"),ne=ae.getFromEnv("animationManager"),le=J.scaleFactor,se=J.centerX||0,ce=J.centerY||0,ue=te.canvasWidth||oe.canvasWidth,pe=J.trend.trendStyle,he=J.axisTrendContainerTop,de=J.axisTrendContainerBottom,ge=J.axisTrendLabelContainer,fe={fontFamily:pe.fontFamily,fontSize:pe.fontSize,lineHeight:pe.lineHeight,fontWeight:pe.fontWeight,fontStyle:pe.fontStyle},me=ae.getFromEnv("number-formatter"),be=J.trendPoints,ve=be&&be.point,ye=v.PI/180,ke={},we=ve&&ve.length,Ce={},xe={},Te={},Se=[];for(re.useEllipsesOnOverflow(oe.useEllipsesWhenOverflow),re.setStyle(fe),t=0;t<we;t+=1)p=be.point[t],Se.push(p.startvalue+"_"+p.endvalue+"_"+t);for(t=0,Y=(z=(0,l["default"])(J.prevIntervalArrTrendLine,Se)).length;t<Y;t++)U=this.getGraphicalElement(z[t]+"_trendLine"),X=this.getGraphicalElement(z[t]+"_trendLabel"),K=this.getGraphicalElement(z[t]+"_marker"),U&&this.removeGraphicalElement(U),X&&this.removeGraphicalElement(X),K&&this.removeGraphicalElement(K);for(J.prevIntervalArrTrendLine=Se.slice(),t=0;t<we;t+=1)W=(p=be.point[t]).startvalue+"_"+p.endvalue+"_"+t,h=(0,r.pluckNumber)(p.startvalue,p.value),m=(0,r.pluckNumber)(p.endvalue,h),e=Q.getRangeValue(h),u=h!==m,h<=$&&h>=ee&&m<=$&&m>=ee&&(y={startValue:h,endValue:m,tooltext:(0,r.getValidValue)((0,r.parseUnsafeString)(p.markertooltext)),displayValue:(0,r.getValidValue)((0,r.parseUnsafeString)(p.displayvalue),u?"":me.scale(h)),showOnTop:(0,r.pluckNumber)(p.showontop,J.ticksBelowGauge,J.ticksBelowGraph,1),color:(0,r.pluck)(p.color,ie.getColor("trendLightColor")),alpha:(0,r.pluckNumber)(p.alpha,99),thickness:(0,r.pluckNumber)(p.thickness,1),dashStyle:p.dashed?(0,r.getDashStyle)(p.dashlen||2,p.dashgap||2):"",useMarker:(0,r.pluckNumber)(p.usemarker,0),markerColor:(0,i.convertColor)((0,r.pluck)(p.markercolor,p.color,ie.getColor("trendLightColor")),100),markerBorderColor:(0,i.convertColor)((0,r.pluck)(p.markerbordercolor,p.bordercolor,ie.getColor("trendDarkColor")),100),markerRadius:(0,r.pluckNumber)((0,r.pluckNumber)(p.markerradius)*le,5),markerToolText:(0,r.getFirstValue)(p.markertooltext),trendValueDistance:(0,r.pluckNumber)((0,r.pluckNumber)(p.trendvaluedistance,J.trendValueDistance)*le,J.tickValueDistance),isTrendZone:u,valueInside:(0,r.pluckNumber)(p.valueinside,J.placeValuesInside,0),showBorder:(0,r.pluckNumber)(p.showborder,1),borderColor:(0,i.convertColor)((0,r.pluck)(p.bordercolor,p.color,ie.getColor("trendDarkColor")),(0,r.pluckNumber)(p.borderalpha,p.alpha,100)),radius:(0,r.pluckNumber)((0,r.pluckNumber)(p.radius)*le),innerRadius:(0,r.pluckNumber)((0,r.pluckNumber)(p.innerradius)*le)},k=3,C=-(w=Math.cos(89.99*ye)),x=(0,r.pluckNumber)(y.radius,J.gaugeOuterRadius),T=(0,r.pluckNumber)(y.innerRadius,u?Math.max(J.gaugeInnerRadius-15,0):J.gaugeInnerRadius),S=(0,n.polarToCartesian)(x,e),A=(0,n.polarToCartesian)(T,e),S.x+=se,S.y+=ce,A.x+=se,A.y+=ce,E=S.x,N=S.y,O=A.x,F=A.y,D=this.getAngle(m),L=this.getAngle(h),u?(L>D&&(L+=D,L-=D=L-D),Ce={fill:(0,i.convertColor)(y.color,y.alpha),"stroke-width":y.showBorder?y.thickness:0,stroke:y.borderColor,"stroke-dasharray":y.dashStyle,ringpath:[se,ce,x,T,L,D]}):Ce={"stroke-width":y.showBorder?y.thickness:0,stroke:y.borderColor,"stroke-linecap":"round","stroke-dasharray":y.dashStyle,path:["M",E,N,"L",O,F]},xe=y.useMarker?{fill:y.markerColor,"stroke-width":1,stroke:y.markerBorderColor,polypath:[k,E,N,y.markerRadius,(-L+Math.PI)/ye,0]}:{},""!==y.displayValue?(M=(y.endValue+y.startValue)/2,D=this.getAngle(M),R=Math.cos(D),_=Math.sin(D),P=re.getOriSize(y.displayValue).width,y.valueInside?(V=T-2-y.trendValueDistance,I=R>w?b:R<C?g:d):(V=x+2+y.trendValueDistance,I=R>w?g:R<C?b:d),E=se+V*R,N=ce+V*_,G=re.getOriSize(y.displayValue).height,ke=re.getSmartText(y.displayValue,ue,G),E=ue<E+P?ue-P-5:E<P?P+5:E,P>ue&&(E=ue/2),Te={fill:(0,i.convertColor)(p.color,y.alpha)||pe.color,text:ke.text,"text-anchor":I,"vertical-align":f,"text-bound":[pe.backgroundColor,pe.borderColor,pe.borderThickness,pe.borderPadding,pe.borderRadius,pe.borderDash],x:E,y:N},j=ke.height,R>w||R<C?N+=-j/2+.4*j*_*(y.valueInside?-1:1):y.valueInside?N+=-(_<0?0:j):N+=-(_>0?0:j),Te.y=N):Te={text:""},o=this.getGraphicalElement(W+"_trendLine"),s=this.getGraphicalElement(W+"_trendLabel"),H=this.getGraphicalElement(W+"_marker"),(a=u?ne.setAnimation({el:o||"ringpath",attr:Ce,container:de,component:this,label:"ringpath"}):ne.setAnimation({el:o||"path",attr:Ce,container:he,component:this,label:"path"})).show(),a.data("label",u?"ringPath":"path"),(c=ne.setAnimation({el:s||"text",attr:Te,container:ge,component:this,label:"text"})).css(fe),c.show(),(B=ne.setAnimation({el:H||"polypath",attr:xe,container:he,component:this,label:"polypath"})).show(),J.showTooltip&&(ke.oriText?q.enableToolTip(c,ke.oriText):q.disableToolTip(c),y.markerToolText?q.enableToolTip(B,y.markerToolText):q.disableToolTip(B)),o||this.addGraphicalElement(W+"_trendLine",a),o||this.addGraphicalElement(W+"_trendLabel",c),H||this.addGraphicalElement(W+"_marker",B))},t}(o["default"]);t["default"]=w},619:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(593),i=(o=r)&&o.__esModule?o:{"default":o};t["default"]={"initial.axis.polarNumeric":function(){return{"path.appearing":i["default"],"text.appearing":i["default"],"polypath.appearing":i["default"],"ringpath.appearing":i["default"],"*":null}}}},620:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.getFromEnv("dataSource"),a=t.pointers||t.dials;a||(t.dials=a={dial:[{value:0}]}),(0,r.datasetFactory)(e,n["default"],"dataset",1,[a])};var o,r=a(118),i=a(621),n=(o=i)&&o.__esModule?o:{"default":o}},621:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=u(a(622)),n=a(125),l=u(a(624)),s=u(a(211)),c=u(a(625));function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var h=(0,n.getDep)("redraphael","plugin"),d=Math,g=d.abs,f=d.atan2,m=d.PI,b=2*m,v=d.max,y=m/180,k=void 0!==window.document.documentElement.ontouchstart,w=function(e){return"string"==typeof e},C=function(e){return void 0!==e&&null!==e};(0,n.addDep)({name:"angularAnimation",type:"animationRule",extension:l["default"]}),(0,s["default"])(h),(0,c["default"])(h);var x=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.components=a.components||{},a.config.idMap={},a}return p(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"angularGauge"},t.prototype.configure=function(e){if(!e)return!1;this.trimData(e),this.config.pointerArr=e;var t,a,i,n,l,s,c,u,p,h,d,g=this.getFromEnv("chart"),f=g.config,m=g.getFromEnv("dataSource"),b=m.chart,v=m.pointers||m.dials,k=v.pointer||v.dial||[],w=this.components.data||(this.components.data=[]),x=this.getFromEnv("scale"),T=this.getFromEnv("color-manager"),S=this.config||(this.config={}),A=(0,o.pluckNumber)(b.gaugescaleangle,180),E=(0,o.pluckNumber)(b.gaugestartangle),N=(0,o.pluckNumber)(b.gaugeendangle),O=C(E),F=o.hasSVG?.001:.01,D=C(N);for(f.displayValueCount=0,p=0,d=k.length;p<d;p+=1)w[p]=w[p]||(w[p]={}),(h=w[p].config||(w[p].config={})).basewidth=k[p].basewidth,h.color=k[p].color,h.alpha=k[p].alpha,h.bgcolor=k[p].bgcolor,h.borderalpha=k[p].borderalpha,h.bordercolor=k[p].bordercolor,h.borderthickness=k[p].borderthickness,h.editmode=k[p].editmode,h.id=(0,o.pluck)(k[p].id,"dial"+p),h.link=k[p].link,h.radius=k[p].radius,h.rearextension=k[p].rearextension,h.showvalue=k[p].showvalue,h.tooltext=k[p].tooltext,h.topwidth=k[p].topwidth,h.value=k[p].value,h.valuex=k[p].valuex,h.valuey=k[p].valuey,h.baseradius=k[p].baseradius,h.displayvalue=k[p].displayvalue,n=S.showValue=(0,o.pluckNumber)(b.showvalue,b.showrealtimevalue,0),l=(0,o.pluckNumber)(h.showvalue,n),s=(0,o.pluckNumber)((0,o.getValidValue)(h.valuey)),l&&!C(s)&&(f.displayValueCount+=1);(A>360||A<-360)&&(A=A>0?360:-360),(N>360||N<-360)&&(N%=360),(E>360||E<-360)&&(E%=360),O&&D?((A=E-N)>360||A<-360)&&(N=E-(A%=360)):O?((N=E-A)>360||N<-360)&&(E+=(N%=360)>0?-360:360):D?((E=N+A)>360||E<-360)&&(N+=(E%=360)>0?-360:360):360===A?(E=180,N=-180):-360===A?(E=-180,N=-180):N=(E=90+A/2)-A,360===Math.abs(A)&&(N=E-(A+=A>0?-F:F)),N=360-N,A=-A,((E=360-E)>360||N>360)&&(E-=360,N-=360),S.gaugeStartAngle=E*=y,S.gaugeEndAngle=N*=y,S.gaugeScaleAngle=A*=y,S.upperLimit=(0,o.pluckNumber)(b.upperlimit),S.lowerLimit=(0,o.pluckNumber)(b.lowerlimit),x.setAxisConfig({startAngle:E,totalAngle:-A}),i=(0,o.pluckNumber)(b.scaleonresize,1),S.origW=(0,o.pluckNumber)(b.origw,i?g.config.origRenderWidth:f.width),S.origH=(0,o.pluckNumber)(b.origh,i?g.config.origRenderHeight:f.height),f.showtooltip=(0,o.pluckNumber)(b.showtooltip,1),f.autoScale=(0,o.pluckNumber)(b.autoscale,1),S.rearExtension=(0,o.pluckNumber)(v.rearextension,0),S.gaugeinnerradius=b.gaugeinnerradius,S.valueBelowPivot=(0,o.pluckNumber)(b.valuebelowpivot,0),S.showShadow=(0,o.pluckNumber)(b.showshadow,1),t=(0,o.pluckNumber)(b.showgaugeborder,1),S.gaugeFillMix=(0,o.getFirstDefinedValue)(b.colorrangefillmix,b.gaugefillmix,g.colorRangeFillMix,"{light-10},{light-70},{dark-10}"),S.gaugeFillRatio=(0,o.getFirstDefinedValue)(b.colorrangefillratio,b.gaugefillratio,g.colorRangeFillRatio,b.gaugefillratio),void 0===S.gaugeFillRatio?S.gaugeFillRatio=",6":S.gaugeFillRatio!==o.BLANK&&(S.gaugeFillRatio=o.COMMASTRING+S.gaugeFillRatio),S.gaugeBorderColor=(0,o.pluck)(b.gaugebordercolor,"{dark-20}"),S.gaugeBorderThickness=t?(0,o.pluckNumber)(b.gaugeborderthickness,1):0,S.gaugeBorderAlpha=(0,o.pluckNumber)(b.gaugeborderalpha,100),a=T.parseColorMix((0,o.pluck)(b.pivotfillcolor,b.pivotcolor,b.pivotbgcolor,T.getColor("pivotColor")),(0,o.pluck)(b.pivotfillmix,"{light-10},{light-30},{dark-20}")),S.pivotFillAlpha=T.parseAlphaList((0,o.pluck)(b.pivotfillalpha,o.HUNDREDSTRING),a.length),S.pivotFillRatio=T.parseRatioList((0,o.pluck)(b.pivotfillratio,o.ZEROSTRING),a.length),S.pivotFillColor=a.join(),S.pivotFillAngle=(0,o.pluckNumber)(b.pivotfillangle,0),S.isRadialGradient="radial"==(0,o.pluck)(b.pivotfilltype,"radial").toLowerCase(),S.showPivotBorder=(0,o.pluckNumber)(b.showpivotborder,0),S.pivotBorderThickness=(0,o.pluckNumber)(b.pivotborderthickness,1),S.pivotBorderColor=(0,r.convertColor)((0,o.pluck)(b.pivotbordercolor,T.getColor("pivotBorderColor")),1==S.showPivotBorder?(0,o.pluck)(b.pivotborderalpha,o.HUNDREDSTRING):o.ZEROSTRING),f.dataLabels=f.dataLabels||{},u=(u=(0,o.getFirstValue)(b.valuebordercolor,""))?(0,r.convertColor)(u,(0,o.pluckNumber)(b.valueborderalpha,b.valuealpha,100)):"",c=f.dataLabels.style={fontFamily:(0,o.pluck)(b.valuefont,f.style.inCanfontFamily),fontSize:(0,o.pluck)(b.valuefontsize,parseInt(f.style.inCanfontSize,10))+"px",color:(0,r.convertColor)((0,o.pluck)(b.valuefontcolor,f.style.inCancolor),(0,o.pluckNumber)(b.valuefontalpha,b.valuealpha,100)),fontWeight:(0,o.pluckNumber)(b.valuefontbold)?"bold":"normal",fontStyle:(0,o.pluckNumber)(b.valuefontitalic)?"italic":"normal",border:u||b.valuebgcolor?(0,o.pluckNumber)(b.valueborderthickness,1)+"px solid":void 0,borderColor:u,borderThickness:(0,o.pluckNumber)(b.valueborderthickness,1),borderPadding:(0,o.pluckNumber)(b.valueborderpadding,2),borderRadius:(0,o.pluckNumber)(b.valueborderradius,0),backgroundColor:b.valuebgcolor?(0,r.convertColor)(b.valuebgcolor,(0,o.pluckNumber)(b.valuebgalpha,b.valuealpha,100)):"",borderDash:(0,o.pluckNumber)(b.valueborderdashed,0)?(0,o.getDashStyle)((0,o.pluckNumber)(b.valueborderdashlen,4),(0,o.pluckNumber)(b.valueborderdashgap,2)):o.BLANK},(0,o.setLineHeight)(c)},t.prototype.trimData=function(e){var t,a;(t=this.components.data&&this.components.data.length)>(a=e.dial&&e.dial.length||0)&&this.removeData(t-a)},t.prototype._drawBackground=function(){var e,t,a,i,n,l,s,c,u,p,h,d,g,f,m,b,y=this.getFromEnv("chart"),k=y.getChildren("canvas")[0],w=this.config,C=this.getFromEnv("scale"),x=this.getFromEnv("color-manager"),T=C.config.axisRange,S=this.getFromEnv("colorRange"),A=y.getChildContainer("plotGroup"),E=y.getChildContainer("defaultShadowGroup"),N=y.getChildContainer("datalabelsGroup"),O=this.getFromEnv("animationManager"),F=w.gaugeOuterRadius,D=w.gaugeInnerRadius,L=w.gaugeFillRatio,M=w.gaugeBorderColor,R=w.gaugeBorderThickness,_=w.gaugeBorderAlpha,P=w.gaugeFillMix,V=w.gaugeOriginX,I=w.gaugeOriginY,G=w.gaugeStartAngle,j=w.showShadow,B=T.min,H=T.max,W=S?S.getColorRangeArr(B,H):[],z=0,U=W.length,X=G,K=this.getContainer("bandGroup"),Y=this.getContainer("pointGroup"),J=0,Z=function(){this.hide()},q=function(){this.show()};for(h=O.setAnimation({el:K||"group",attr:{name:"bandGroup"},container:A,component:this,label:"group"}),K||(h=this.addContainer("bandGroup",h)),d=O.setAnimation({el:Y||"group",attr:{name:"pointGroup",transform:"t"+V+o.COMMASTRING+I},container:N,component:this,label:"group"}),Y||this.addContainer("pointGroup",d);z<U;z+=1)e=W[z],t=C.getAngle(Math.min(e.maxvalue,H)),i=x.parseColorMix(e.code,P),n=x.parseAlphaList(e.alpha,i.length),l=x.parseRatioList(D/F*100+L,i.length),c=e.bordercolor,u=(0,o.pluckNumber)(e.borderAlpha,_),c=c&&-1==c.indexOf("{")?(0,r.convertColor)(c,u):x.parseColorMix(e.code,(0,o.pluck)(c,M))[0],c=(0,r.convertColor)(c,u),s=n.split(o.COMMASTRING),s=v.apply(Math,s),s=j?v(u||0,s):0,a=t,X>t&&(X+=t,X-=t=X-t),e._startAngle=X,e._endAngle=t,m=k.getGraphicalElement("bands")&&k.getGraphicalElement("bands")[z],b=O.setAnimation({el:m||"ringpath",attr:{ringpath:[V,I,F,D,X,t],fill:(0,o.toRaphaelColor)({FCcolor:{cx:V,cy:I,r:F,gradientUnits:"userSpaceOnUse",color:i.join(),alpha:n,ratio:l,radialGradient:!0}}),"stroke-width":R,stroke:c},container:h,callback:q,component:this,label:"plotBackground"}),m||(k.addGraphicalElement("bands",b,!0),b.shadow({apply:j,opacity:s/100})),X=a,J+=1;for(U=k.getGraphicalElement("bands")&&k.getGraphicalElement("bands").length,z=J;z<U;z++)(e=W[z]||w.oldColorArr[z])&&O.setAnimation({el:k.getGraphicalElement("bands")[z],attr:{ringpath:[V,I,F,D,e._startAngle,e._startAngle]},component:this,callback:Z,label:"plotBackground"});w.oldColorArr=W,p=w.isRadialGradient?{color:w.pivotFillColor,alpha:w.pivotFillAlpha,ratio:w.pivotFillRatio,radialGradient:!0,angle:w.pivotFillAngle,cx:.5,cy:.5,r:"50%"}:{color:w.pivotFillColor,alpha:w.pivotFillAlpha,ratio:w.pivotFillRatio,radialGradient:!1,angle:w.pivotFillAngle},f=this.getGraphicalElement("pivot"),g=O.setAnimation({el:f||"circle",attr:{cx:V,cy:I,r:w.pivotRadius,fill:(0,o.toRaphaelColor)({FCcolor:p}),"stroke-width":w.pivotBorderThickness,stroke:w.pivotBorderColor},container:N,component:this,label:"pivot"}),f||(g=this.addGraphicalElement("pivot",g)).shadow({apply:j},E)},t.prototype.removeData=function(e){var t,a=this.getFromEnv("animationManager"),o=function(){this.remove()},r=this.components.data;for(t=0;t<e;t++)r[t].graphics.pointersPath&&a.setAnimation({el:r[t].graphics.pointersPath,attr:{opacity:0},callback:o,component:this}),r[t].graphics.pointersTpath&&a.setAnimation({el:r[t].graphics.pointersTpath,attr:{opacity:0},callback:o,component:this}),r[t].graphics.dataLabel&&a.setAnimation({el:r[t].graphics.dataLabel,attr:{opacity:0},callback:o,component:this});this.removeDataArr||(this.removeDataArr=[]),this.removeDataArr=this.removeDataArr.concat(r.splice(0,e))},t.prototype.draw=function(e){this._drawBackground();var t,a,i,n,l,s,c,u,p,d,m,v,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W,z,U,X,K,Y,J,Z,q,$,Q,ee,te,ae,oe,re,ie,ne,le,se,ce,ue,pe,he,de,ge,fe,me,be,ve,ye,ke,we=this,Ce=we.getFromEnv("chart"),xe=we.getFromEnv("toolTipController"),Te=we.config.idMap,Se=Ce.config,Ae=Ce.getFromEnv("dataSource").chart,Ee=we.components.data,Ne=we.config,Oe=Ne,Fe=we.getFromEnv("number-formatter"),De=we.getFromEnv("color-manager"),Le=we.getFromEnv("scale"),Me=we.getFromEnv("animationManager"),Re=Number(Ne.gaugeOriginX),_e=Number(Ne.gaugeOriginY),Pe=Ne.gaugeStartAngle,Ve=Ne.gaugeEndAngle,Ie=Ne.showShadow,Ge=Se.showtooltip,je=Le.config.axisRange,Be=je.min,He=je.max,We=we.getContainer("pointGroup"),ze=we.getLinkedParent().getChildContainer("datalabelsGroup"),Ue=He-Be||1,Xe=Ve-Pe,Ke=Ue/Xe,Ye=Ae.plottooltext,Je=(0,o.pluckNumber)(Ae.showhovereffect),Ze=we.showValue=(0,o.pluckNumber)(Ae.showvalue,Ae.showrealtimevalue,0),qe=0,$e=Se.dataLabels.style,Qe={fontFamily:$e.fontFamily,fontSize:$e.fontSize,lineHeight:$e.lineHeight,fontWeight:$e.fontWeight,fontStyle:$e.fontStyle},et=Se.scaleFactor,tt=(0,o.pluckNumber)(parseInt($e.lineHeight,10),12),at=Ne.valueBelowPivot,ot=0,rt=Ee&&Ee.length,it={pageX:0,pageY:0},nt=function(e,t,a){var r,i,n,l=this,s=this._Attr,c=h.vml?-1.5:0,u=h.vml?-1.5:0;if(s||(s=l._Attr={}),w(e)&&C(t)&&(r=e,(e={})[r]=t),w(e)||void 0===e)l="angle"==e?l._Attr[e]:l._attr(e);else for(r in e)i=e[r],"angle"===r?(s[r]=i,n=i*y,s.tooltipPos[0]=s.cx+s.toolTipRadius*Math.cos(n),s.tooltipPos[1]=s.cy+s.toolTipRadius*Math.sin(n),s.prevValue=i,a&&a.duration?l.animate({transform:"R"+i+o.COMMASTRING+c+o.COMMASTRING+u},a.duration,"linear"):l.attr({transform:"R"+i+o.COMMASTRING+c+o.COMMASTRING+u})):l._attr(r,i);return l},lt=function(e,t,a,o){return f(t-a[1]-o.top,e-a[0]-o.left)},st=function(e){var t=Ee[this.pos].config||{},a=e.data[0],r=e.data[1];t.editMode&&(Re=Number(Ne.gaugeOriginX),_e=Number(Ne.gaugeOriginY),A=(0,o.getPosition)(Ce.getFromEnv("chart-container")),Se.rotationStartAngle=lt(a,r,[Re,_e],A),t.dragStartY=t.value,S=Ce._getDataJSON())},ct=function(){var e,t=Ee[this.pos],a=t.config,o=Ce.getFromEnv("chartInstance");if(t.config.editMode){(e=o&&o.jsVars)&&(e._rtLastUpdatedData=Ce._getDataJSON()),Ce.fireChartInstanceEvent("RealTimeUpdateComplete",{data:"&value="+a.updatedValStr,updateObject:{values:[a.updatedValStr]},prevData:S.values,source:"editMode",url:null});try{window.FC_ChartUpdated&&window.FC_ChartUpdated(o.id)}catch(r){setTimeout(function(){throw r},1)}}},ut=function(e){var t,a,r,i,n,l,s,c,u,p=Ee[this.pos],h=k&&function(e){return k&&e.sourceEvent&&e.sourceEvent.touches&&e.sourceEvent.touches[0]||e}(e)||it,d=Le.config.axisRange,f=e.data[2],m=e.data[3];if(p.config.editMode){for(Se.fromDrag=!0,Re=Number(Ne.gaugeOriginX),_e=Number(Ne.gaugeOriginY),Be=d.min,He=d.max,Pe=Ne.gaugeStartAngle,Ve=Ne.gaugeEndAngle,Ke=(Ue=He-Be)/(Xe=Ve-Pe),t=lt(f,m,[Re,_e],A),r=(a=Se.rotationStartAngle-t)<0?b+a:a-b,i=p.config.dragStartY-a*Ke,n=p.config.dragStartY-r*Ke,(i<Be||i>He)&&n>=Be&&n<=He&&(i=n),i<Be?i=g(n-He)<g(i-Be)?He:Be:i>He&&(i=g(i-He)<g(n-Be)?He:Be),p.config.updatedValStr=i+o.BLANK,l=[],c=[],s=0,u=p.config.index;s<u;s+=1)l.push(o.BLANK),c.push(o.BLANK);l.push({value:i,animation:{duration:0,transposeAnimDuration:0,initAnimDuration:0}}),c.push(i),p.config.y!==i&&we.updateData({data:l})&&(p.config.updatedValStr=c.join("|"),p.config.dragStartX=Re||e.pageX||h.pageX)}},pt=we.getFromEnv("smartLabel"),ht=h.vml?-1.5:0,dt=h.vml?-1.5:0;for(le=se=Ne.pivotRadius,void 0===Oe.dataById&&(Oe.dataById={}),e&&0===e.duration&&Ce.getFromEnv("animationManager").setAnimationState("dialDrag"),V=function(e){Se.fromDrag?Se.fromDrag=!1:Ce.plotEventHandler(this,e)},rt||(rt=0),pt.setStyle(Qe),0!==Je&&(Je||Ae.dialborderhovercolor||Ae.dialborderhoveralpha||0===Ae.dialborderhoveralpha||Ae.dialborderhoverthickness||0===Ae.dialborderhoverthickness||Ae.dialbghovercolor||Ae.plotfillhovercolor||Ae.dialbghoveralpha||Ae.plotfillhoveralpha||0===Ae.dialbghoveralpha)&&(Je=1),fe=function(e){var t,a=this.data("rolloverProperties");Ce.plotEventHandler(this,e,"DataPlotRollOver"),a.enabled&&(t=this.attr("transform"),this.attr("transform",o.BLANK),this.attr(a.hoverAttr),this.attr("transform",t))},me=function(e){var t,a=this.data("rolloverProperties");Ce.plotEventHandler(this,e,"DataPlotRollOut"),a.enabled&&(t=this.attr("transform"),this.attr("transform",o.BLANK),this.attr(a.outAttr),this.attr("transform",t))};qe<rt;qe+=1)(l=Ee[qe]).config=l.config||{},I=l.config,l.config.index=qe,Te[I.id]={index:qe,config:l.config},ke=!1,void 0!==I.id&&(Oe.dataById[I.id]={index:qe,point:l}),ye=Ee[qe].graphics||(Ee[qe].graphics={}),G=Fe.getCleanValue(I.value),G=Number((0,o.toPrecision)(G,10)),d=(0,o.pluckNumber)(I.rearextension,0)*et,le=Math.max(le,d*et),j=Fe.dataLabels(G),B=(0,o.getValidValue)(I.displayvalue,j,""),z=(0,o.pluckNumber)(I.showvalue,Ze),U=(0,o.pluckNumber)((0,o.getValidValue)(I.valuey)*et),ce=(0,o.pluckNumber)((0,o.getValidValue)(I.valuex)*et),I.itemValue=G,I.formatedVal=j,X=(X=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(I.tooltext,l.hovertext,Ye))))?(0,o.parseTooltext)(X,[1,2],{formattedValue:j},l.config,Ae):B,K=(0,o.pluck)(I.color,I.bgcolor,De.getColor("dialColor")),Y=(0,o.pluckNumber)(I.alpha,l.bgalpha,100),J=(0,o.toRaphaelColor)({FCcolor:{color:K,alpha:Y,angle:90}}),Z=(0,o.pluck)(I.bordercolor,De.getColor("dialBorderColor")),q=(0,o.pluckNumber)(I.borderalpha,100),$=(0,r.convertColor)(Z,q),Q=(0,o.pluckNumber)(I.borderthickness,1),s=(0,o.pluckNumber)(I.radius)*et,c=(0,o.pluckNumber)((0,o.pluckNumber)(I.basewidth*et,1.6*se)),u=(0,o.pluckNumber)(I.topwidth,0)*et,p=(0,o.pluckNumber)(I.baseradius,0),t=(0,o.pluckNumber)(I.editmode,Ae.editmode,0),E=(0,o.pluck)(I.link,""),ue=X,I.toolText=ue,pe=(0,o.pluck)(B,""),B=z?(0,o.pluck)(B,o.BLANK):"",0!==(ee=(0,o.pluckNumber)(l.showhovereffect,Je))&&(ee||l.borderhovercolor||l.borderhoveralpha||0===l.borderhoveralpha||l.borderhoverthickness||0===l.borderhoverthickness||l.bghovercolor||l.bghoveralpha||0===l.bghoveralpha)&&(ee=!0,n={},i={},te=(0,o.pluck)(l.borderhovercolor,Ae.dialborderhovercolor,"{dark-10}"),ae=(0,o.pluckNumber)(l.borderhoveralpha,Ae.dialborderhoveralpha,q),(oe=(0,o.pluckNumber)(l.borderhoverthickness,Ae.dialborderhoverthickness,Q))&&(n.stroke=$,re=/\{/.test(te),i.stroke=(0,r.convertColor)(re?De.parseColorMix(Z,te)[0]:te,ae)),oe!==Q&&(i["stroke-width"]=oe,n["stroke-width"]=Q),ie=(0,o.pluck)(l.bghovercolor,Ae.dialbghovercolor,Ae.plotfillhovercolor,"{dark-10}"),ne=(0,o.pluckNumber)(l.bghoveralpha,Ae.dialbghoveralpha,Ae.plotfillhoveralpha,Y),n.fill=J,a={FCcolor:{color:ie=/\{/.test(ie)?De.parseColorMix(K,ie).join():ie,alpha:ne,angle:90}},i.fill=(0,o.toRaphaelColor)(a)),O=I.rolloverProperties={enabled:ee,hasHoverSizeChange:void 0,hoverRadius:(0,o.pluckNumber)(D*et),baseHoverWidth:(0,o.pluckNumber)(L*et,1.6*se),topHoverWidth:(0,o.pluckNumber)(R*et),rearHoverExtension:(0,o.pluckNumber)(P*et),hoverFill:a,hoverAttr:i,outAttr:n},s=(0,o.pluckNumber)(s,(Number(Ne.gaugeOuterRadius)+Number(Ne.gaugeInnerRadius))/2),m=c/2,v=u/2,I.tooltipPos=[Re,_e],E=I.editMode?void 0:I.link,F=["M",s,-v,"L",s,v,-d,m,-d,-m,"Z"],O.hasHoverSizeChange&&(O.outAttr.path=F,D=(0,o.pluckNumber)(O.hoverRadius,s),M=(L=O.baseHoverWidth)/2,_=(R=O.topHoverWidth)/2,P=O.rearHoverExtension,O.hoverAttr.path=["M",D,-_,"L",D,_,-P,M,-P,-M,"Z"]),N={link:I.link,value:G,displayValue:pe,toolText:ue},G>=Be&&G<=He&&(x=(Pe+(G-Be)/Ue*Xe)/y),ye.pointersTpath?u?(Me.setAnimation({el:ye.pointersPath,attr:{path:F,transform:"R"+x+o.COMMASTRING+ht+o.COMMASTRING+dt},component:we,label:"dialPath"}),ye.pointersTpath._attr({trianglepath:[0,0,0,0,0,0,0,0,0]})):(Me.setAnimation({el:ye.pointersTpath,attr:{trianglepath:[s,v,-d,m,-d,-m,0,p,p],transform:"R"+x+o.COMMASTRING+ht+o.COMMASTRING+dt},component:we,label:"trianglepath"}),ye.pointersPath._attr({path:"M0,0"})):(u?(ve=F,be=[0,0,0,0,0,0,0,0,0]):(ve=["M",0,0],be=[s,v,-d,m,-d,-m,0,p,p]),ye.pointersPath=Me.setAnimation({el:"path",attr:{path:ve,transform:"R"+x+o.COMMASTRING+ht+o.COMMASTRING+dt},container:We,component:we,label:"dialPath"}),ye.pointersTpath=Me.setAnimation({el:"trianglepath",attr:{trianglepath:be,transform:"R"+x+o.COMMASTRING+ht+o.COMMASTRING+dt},container:We,component:we,label:"dialPath"}),T=u?ye.pointersPath:ye.pointersTpath,(c||u||Q)&&T.shadow({apply:Ie}),ke=!0),T=u?ye.pointersPath:ye.pointersTpath,ye.pointersPath._attr||(ye.pointersPath._attr=ye.pointersPath.attr,ye.pointersPath.attr=nt),ye.pointersTpath._attr||(ye.pointersTpath._attr=ye.pointersTpath.attr,ye.pointersTpath.attr=nt),T._attr({fill:J,stroke:$,"stroke-width":Q}).data("eventArgs",N).data("rolloverProperties",O),T._Attr={tooltipPos:I.tooltipPos,cx:Re,cy:_e,toolTipRadius:s-d,color:I.color},ke&&(x=Pe/y,T.hover(fe,me)),I.index=qe,I.editMode=t,T.css({cursor:t||E?"pointer":"default",_cursor:t?"hand":"default"}),ye.pointersPath.pos=qe,ye.pointersTpath.pos=qe,ke&&(ye.pointersPath.on("fc-dragstart",st),ye.pointersPath.on("fc-dragmove",ut),ye.pointersPath.on("fc-dragend",ct),ye.pointersTpath.on("fc-dragstart",st),ye.pointersTpath.on("fc-dragmove",ut),ye.pointersTpath.on("fc-dragend",ct),ye.pointersPath.on("fc-click",V),ye.pointersTpath.on("fc-click",V)),I.y=G,Ge&&ue!==o.BLANK?xe.enableToolTip(T,ue):xe.disableToolTip(T),C(B)&&B!==o.BLANK?(he=_e+(at?tt/2+se+2:-tt/2-se-2),de=U,ge=(0,o.pluckNumber)(ce,Re),C(de)||(de=at?he+tt*ot:he-tt*ot),B=(H=pt.getSmartText(B,Ne.gaugeInnerRadius,Ne.gaugeInnerRadius/2)).text,W=H.tooltext||"",ye.dataLabel=Me.setAnimation({el:ye.dataLabel||"text",attr:{x:ge,y:de,direction:Se.textDirection,text:B,title:l.originalText||o.BLANK,fill:$e.color,"text-bound":[$e.backgroundColor,$e.borderColor,$e.borderThickness,$e.borderPadding,$e.borderRadius,$e.borderDash]},css:Qe,container:ze,component:we,label:"text"}),ye.dataLabel.show(),ot+=1,Ge?xe.enableToolTip(ye.dataLabel,W):xe.disableToolTip(ye.dataLabel)):(ye.dataLabel&&ye.dataLabel.hide(),ye.dataLabel&&xe.disableToolTip(ye.dataLabel))},t.prototype.updateData=function(e){var t,a,r,i,n,l,s,c,u,p,h,d,g,f,m={};if(e===this.config.lastUpdatedObj)return!1;for(this,t=this.getFromEnv("chart"),a=this.components.data,s=(l=this.components.data)&&l.length||0,h=(e=e.data).length,c=0;c<h;c++)(u=e[c].id)&&(m[u]=e[c]);if(p=Object.keys(m).length,s){for(;s--;)u=(r=a[s].config).id,d=void 0,d=p?m[u]:e[s],d&&(f=d.animation||t.get("config","animationObj"),g=d.value,n=d.tooltext,i=d.label,r.value=(0,o.pluckNumber)(g,r.value,0),r.tooltext=(0,o.pluck)(n,r.value),r.displayvalue=i);return this.config.lastUpdatedObj=e,this.draw(f),!0}},t}(i["default"]);t["default"]=x},622:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(131)),n=s(a(623)),l=a(125);function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.BLANK,p=o.preDefStr.configStr,h=o.preDefStr.animationObjStr,d=o.preDefStr.POSITION_TOP,g=o.preDefStr.POSITION_BOTTOM,f=o.preDefStr.POSITION_MIDDLE,m=o.preDefStr.POSITION_START,b=o.preDefStr.POSITION_END,v=window,y=void 0!==v.document.documentElement.ontouchstart,k=Math,w=k.max,C=k.min,x={right:b,left:m,middle:f,start:m,end:b,center:f,undefined:o.BLANK,BLANK:o.BLANK};(0,l.addDep)({name:"hlineargaugeAnimation",type:"animationRule",extension:n["default"]});var T=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.config.idMap={},a}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"hlineargauge"},t.prototype._drawBackground=function(){var e,t,a,i,n,l,s,c,u,p,h,f,m,b,v,y,k,C,x,T,S,A,E,N,O=this.getFromEnv("chart"),F=O.getFromEnv(),D=O.config,L=O.getChildContainer().plotGroup,M=O.getFromEnv("toolTipController"),R=D.canvasWidth,_=D.canvasHeight,P=D.canvasTop,V=D.canvasLeft,I=F.scale,G=I.config.axisRange.min,j=I.config.axisRange.max,B=O.getFromEnv("dataSource"),H=B.chart,W=B.trendpoints&&B.trendpoints.point,z=(0,o.pluckNumber)(H.showgaugeborder,1),U=(0,o.getFirstDefinedValue)(H.colorrangefillmix,H.gaugefillmix,"{light-10},{dark-20},{light-50},{light-85}"),X=(0,o.getFirstDefinedValue)(H.colorrangefillratio,H.gaugefillratio,H.gaugefillratio,"0,8,84,8"),K=(0,o.pluck)(H.colorrangebordercolor,H.gaugebordercolor,"{dark-20}"),Y=(0,o.pluckNumber)(H.colorrangeborderalpha,H.gaugeborderalpha,100),J=z?(0,o.pluckNumber)(H.colorrangeborderthickness,H.gaugeborderthickness,1):0,Z=B.colorrange&&F.colorRange&&F.colorRange.getColorRangeArr(G,j),q=(0,o.pluckNumber)(H.showshadow,1),$=O.getChildren("canvas")[0],Q=$.getGraphicalElement("linear"),ee=$.getGraphicalElement("outerRect"),te=F.animationManager,ae=F["color-manager"],oe={top:1,bottom:3},re=0,ie=0,ne=0;for(te.setAnimation({el:L,state:"initial",attr:{transform:["T",V,P]},component:this,container:O.getContainer("parentgroup"),label:"parentgroup"}),Q=te.setAnimation({el:Q||"group",attr:{name:"colorrange"},component:this,container:L,label:"background"}),ee=te.setAnimation({el:ee||"rect",attr:{x:0,y:0,width:R,height:_,stroke:"none",r:0},component:this,container:L}),$.getGraphicalElement("linear")||(Q=$.addGraphicalElement("linear",Q),$.addGraphicalElement("outerRect",ee)),l=function(e,t){return{x:e*R/(j-G),y:0,width:(t-e)*R/(j-G),height:_}},s=270,e=0,a=Z&&Z.length;e<a;e+=1)h=l((u=Z[e]).minvalue-G,u.maxvalue-G),u.x=h.x,u.y=h.y,u.width=h.width,u.height=h.height,c=u.code,p=(0,r.convertColor)((0,o.getColorCodeString)((0,o.pluck)(u.bordercolor,c),K),(0,o.pluckNumber)(u.borderalpha,Y)),C=ae.parseColorMix(u.code,U),x=ae.parseAlphaList(u.alpha,C.length),T=(0,o.pluckNumber)(u.borderAlpha,Y),S=x.split(o.COMMASTRING),S=w.apply(Math,S),S=w(J&&T||0,S),N={x:h.x,y:h.y,width:h.width,height:h.height,r:0,"stroke-width":J,stroke:p,fill:(0,o.toRaphaelColor)({FCcolor:{color:C.toString(),ratio:X,alpha:x,angle:s}})},E=$.getGraphicalElement("colorRangeElems")&&$.getGraphicalElement("colorRangeElems")[e],E=te.setAnimation({el:E||"rect",attr:N,component:this,container:Q}),$.getGraphicalElement("colorRangeElems")&&$.getGraphicalElement("colorRangeElems")[e]||(E=$.addGraphicalElement("colorRangeElems",E,!0,e)).shadow({apply:q,opacity:S/100}),E.show();if(!h&&$.getGraphicalElement("colorRangeElems")&&$.getGraphicalElement("colorRangeElems").length>0&&(h=$.getGraphicalElement("colorRangeElems")[$.getGraphicalElement("colorRangeElems").length-1].attr()),$.getGraphicalElement("colorRangeElems"))for(;$.getGraphicalElement("colorRangeElems")[e];)$.getGraphicalElement("colorRangeElems")[e].shadow(!1),$.getGraphicalElement("colorRangeElems")[e].hide(),e++;if(W)for(e=0,a=(f=D.trendPointConfig).length;e<a;e+=1)h=l((k=f[e]).startValue-G,k.endValue-G),k.isTrendZone?(m=$.getGraphicalElement("trendZoneElems")&&$.getGraphicalElement("trendZoneElems")[re],m=te.setAnimation({el:m||"rect",attr:{x:h.x,y:h.y,width:h.width>0?h.width:0,height:h.height>0?h.height:0,r:0,"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:k.color,alpha:k.alpha}})},component:this,container:Q,label:"final"}),$.getGraphicalElement("trendZoneElems")&&$.getGraphicalElement("trendZoneElems")[re]||(m=$.addGraphicalElement("trendZoneElems",m,!0,re)),m.show(),M.enableToolTip(m,k.tooltext),re++):(v=$.getGraphicalElement("trendObjElems")&&$.getGraphicalElement("trendObjElems")[ie],m=te.setAnimation({el:v||"path",attr:{stroke:(0,r.convertColor)(k.color,k.alpha),"stroke-dasharray":k.dashStyle,"stroke-width":k.thickness,path:["M",h.x,h.y,"L",h.x,h.y+h.height]},component:this,container:Q,label:"final"}),v||(v=$.addGraphicalElement("trendObjElems",m,!0,ie)),v.show(),M.enableToolTip(v,k.tooltext),ie++),k.useMarker&&(k.showOnTop?(n=g,t=0):(n=d,t=_),A=90*oe[n],i=$.getGraphicalElement("marker")&&$.getGraphicalElement("marker")[ne],i=te.setAnimation({el:i||"polypath",attr:{fill:k.markerColor,stroke:k.markerBorderColor,polypath:[3,h.x,t,k.markerRadius,A,0],"stroke-width":1},component:this,container:Q,label:"final"}),$.getGraphicalElement("marker")&&$.getGraphicalElement("marker")[ne]||(i=$.addGraphicalElement("marker",i,!0,ne)).shadow({apply:q}),M.enableToolTip(i,k.tooltext),i.show(),ne++);if(y=$.getGraphicalElement("trendObjElems"))for(;y[ie];)y[ie].hide(),ie++;if(b=$.getGraphicalElement("trendZoneElems"))for(;b[re];)b[re].hide(),re++;if(i=$.getGraphicalElement("marker"))for(;i[ne];)i[ne].hide(),i[ne].shadow(!1),ne++},t.prototype.configureAttributes=function(e){this.trimData(e),this.config.pointerArr=e;var t,a,i,n,l,s,c,p,h,f,m,b,v,y,k,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W,z,U,X,K=this.getFromEnv("chart"),Y=K.getFromEnv("dataSource"),J=Y.chart,Z=this.getFromEnv("number-formatter"),q=this.getFromEnv("color-manager"),$=J.plottooltext,Q=this.config||(this.config={}),ee=this.components||(this.components={}),te=Y.pointers&&Y.pointers.pointer,ae=te&&te.length||0,oe=K.config.style;for(Q.valuePadding=(0,o.pluckNumber)(J.valuepadding,2),Q.tooltipSepChar=(0,o.pluck)(J.tooltipsepchar,o.COMMASTRING),H=(0,o.pluckNumber)(J.ticksbelowgauge,J.ticksbelowgraph,1),Q.axisPosition=H?3:1,Q.pointerOnOpp=b=Number(!(0,o.pluckNumber)(J.pointerontop,H,1)),Q.valueabovepointer=w=(0,o.pluckNumber)(J.valueabovepointer,!b,1),Q.valueInsideGauge=w===b?1:0,Q.showPointerShadow=(0,o.pluckNumber)(J.showpointershadow,J.showshadow,1),Q.showTooltip=(0,o.pluckNumber)(J.showtooltip,1),Q.textDirection="1"===J.hasrtltext?"rtl":o.BLANK,Q.showGaugeLabels=(0,o.pluckNumber)(J.showgaugelabels,1),Q.colorRangeStyle={fontFamily:oe.inCanfontFamily,fontSize:oe.inCanfontSize,lineHeight:oe.inCanLineHeight,color:oe.inCancolor.replace(/^#?/,"#")},Q.showValue=(0,o.pluckNumber)(J.showvalue,1),Q.editMode=(0,o.pluckNumber)(J.editmode,0),Q.pointerSides=W=(0,o.pluckNumber)(J.pointersides,3),Q.pointerBorderThickness=U=(0,o.pluckNumber)(J.pointerborderthickness),Q.showHoverEffect=z=(0,o.pluckNumber)(J.showhovereffect,J.plothovereffect),Q.upperLimit=(0,o.pluckNumber)(J.upperlimit),Q.lowerLimit=(0,o.pluckNumber)(J.lowerlimit),m=b?d:g,Q.startAngle=90*{top:1,right:0,left:2,bottom:3}[m],f=ee.data||(ee.data=[]),l=0;l<ae;l++)i=(a=f[l]||(ee.data[l]={})).config||(a.config={}),t=te&&te[l]||{},i.value=t.value,i.itemValue=n=Z.getCleanValue(t.value),i.formatedVal=c=Z.dataLabels(n),i.setDisplayValue=p=(0,o.getValidValue)((0,o.parseUnsafeString)(t.displayvalue)),i.setToolText=s=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(t.tooltext,$))),i.id=(0,o.pluck)(t.id,"pointer_"+l),i.showHoverEffect=L=(0,o.pluckNumber)(t.showhovereffect,z),i.showBorder=j=(0,o.pluckNumber)(t.showborder,J.showplotborder,1),i.borderWidth=D=j?(0,o.pluckNumber)(t.borderthickness,U):0,i.showValue=X=(0,o.pluckNumber)(t.showvalue,Q.showValue),X?void 0!==p?(i.displayValue=p,i.isLabelString=!0):i.displayValue=(0,o.getValidValue)(c,o.BLANK):i.displayValue=u,i.sides=h=(0,o.pluckNumber)(t.sides,W),h<3&&(i.sides=3),i.radius=x=(0,o.pluckNumber)(t.radius,J.pointerradius,10),void 0!==s?(i.toolText=(0,o.parseTooltext)(s,[1,2],{formattedValue:c},t,J),i.isTooltextString=!0):i.toolText=null!==c&&c,i.tempToolText=i.toolText,i.bgAlpha=k=(0,o.pluckNumber)(t.alpha,t.bgalpha,J.pointerbgalpha,100),i.bgColor=C=(0,o.pluck)(t.color,t.bgcolor,J.pointerbgcolor,J.pointercolor,q.getColor("pointerBgColor")),i.fillColor=B=(0,r.convertColor)(C,k),i.showBorder=(0,o.pluckNumber)(t.showborder,J.showplotborder,1),i.borderAlpha=y=(0,o.pluckNumber)(t.borderalpha,J.pointerborderalpha,100),i.borderColor=v=(0,o.pluck)(t.bordercolor,J.pointerbordercolor,q.getColor("pointerBorderColor")),i.pointerBorderColor=T=(0,r.convertColor)(v,y),i.dataLink=(0,o.getValidValue)(t.link),i.editMode=(0,o.pluckNumber)(t.editmode,Q.editMode),0!==L&&(L||t.bghovercolor||J.pointerbghovercolor||J.plotfillhovercolor||t.bghoveralpha||J.pointerbghoveralpha||J.plotfillhoveralpha||0===t.bghoveralpha||0===J.pointerbghoveralpha||t.showborderonhover||J.showborderonhover||0===t.showborderonhover||0===J.showborderonhover||t.borderhoverthickness||J.pointerborderhoverthickness||0===t.borderhoverthickness||0===J.pointerborderhoverthickness||t.borderhovercolor||J.pointerborderhovercolor||t.borderhoveralpha||J.pointerborderhoveralpha||0===t.borderhoveralpha||0===J.pointerborderhoveralpha||t.hoverradius||J.pointerhoverradius||0===t.hoverradius||0===J.pointerhoverradius)&&(L=!0,E=(0,o.pluck)(t.bghovercolor,J.pointerbghovercolor,J.plotfillhovercolor,"{dark-10}"),A=(0,o.pluckNumber)(t.bghoveralpha,J.pointerbghoveralpha,J.plotfillhoveralpha),void 0===(R=(0,o.pluckNumber)(t.showborderonhover,J.showborderonhover))&&(R=t.borderhoverthickness||0===t.borderhoverthickness||t.borderhovercolor||t.borderhoveralpha||0===t.borderhoveralpha?1:j),N=(0,o.pluck)(t.borderhovercolor,J.pointerborderhovercolor,"{dark-10}"),S=(0,o.pluckNumber)(t.borderhoveralpha,J.pointerborderhoveralpha),O=R?(0,o.pluckNumber)(t.borderhoverthickness,J.pointerborderhoverthickness,D||1):0,F=(0,o.pluckNumber)(t.hoverradius,J.pointerhoverradius,x+2),_=!!(0,o.pluckNumber)(t.showhoveranimation,J.showhoveranimation,1),i.hoverAttr=M={},i.outAttr=P={},D!==O&&(M["stroke-width"]=O,P["stroke-width"]=D),P.fill=B,E=/\{/.test(E)?q.parseColorMix(C,E)[0]:E,M.fill=(0,r.convertColor)(E,(0,o.pluckNumber)(A,k)),O&&(P.stroke=T,V=/\{/.test(N),M.stroke=(0,r.convertColor)(V?q.parseColorMix(v,N)[0]:N,(0,o.pluckNumber)(S,y))),F&&(_?(I={r:F},G={r:x}):(M.r=F,P.r=x))),i.rolloverProperties={enabled:L,hoverAttr:M,hoverAnimAttr:I,outAttr:P,outAnimAttr:G}},t.prototype.trimData=function(e){var t,a;(t=this.config.pointerArr&&this.config.pointerArr.pointer&&this.config.pointerArr.pointer.length)>(a=e&&e.pointer&&e.pointer.length||0)&&this.removeData(t-a)},t.prototype._manageSpace=function(e){var t,a,r,i,n,l,s,c=this.getFromEnv("chart"),p=this.components,h=c.config,d=this.config,g=this.getFromEnv("smartLabel"),f=h.canvasWidth,m=h.dataLabelStyle,b=h.style.trendStyle,v=c.getFromEnv("dataSource"),y=v.trendpoints&&v.trendpoints.point,k=(0,o.pluckNumber)(parseInt(m.lineHeight,10),12),w=e,C=d.valuePadding,x=d.valueInsideGauge,T=0,S=0,A=0,E=0,N=0,O=0,F=0,D=this.getFromEnv("scale").config.spaceTaken,L=0,M=this.config.pointerArr&&this.config.pointerArr.pointer&&this.config.pointerArr.pointer.length,R=d.pointerOnOpp,_=p.data;for(y&&c._configueTrendPoints(),g.useEllipsesOnOverflow(h.useEllipsesWhenOverflow),g.setStyle(m);L<M;L+=1)r=C+(s=_[L].config).radius*(s.sides<=3?.5:s.sides%2?1.1-1/s.sides:1),E=Math.max(E,r),s.showValue&&s.displayValue!==u&&(s.isLabelString?(t=g.getSmartText(s.displayValue,f,w-E),s.displayValue=t.text,t.tooltext&&(s.originalText=t.tooltext)):t=g.getOriSize(s.displayValue),s.displayValue===o.BLANK&&(t={height:k})),(T=t&&t.height>0&&!x?t.height+r:r)>w&&(r=(a=T-w)<r?r-a:0,T=w),R?(3===d.axisPosition&&(O=Math.max(D.bottom,O),T=Math.max(D.bottom,T)),S=Math.max(S,T)):(1===d.axisPosition&&(F=Math.max(D.top,F),T=Math.max(D.top,T)),A=Math.max(T,A)),d.align=o.POSITION_CENTER;if(d.currentValuePadding=E,g.setStyle(b),y){for(L=0,M=(i=h.trendPointConfig).length;L<M;L+=1)(n=i[L])&&n.displayValue!==u&&(l=C+.5*n.markerRadius,N=Math.max(l,N),(t=g.getOriSize(n.displayValue)).height>0&&(T=t.height+l),T>w&&(l=(a=T-w)<l?l-a:0,T=w),n.showOnTop?(1===d.axisPosition&&(F=Math.max(D.top,F),T=Math.max(D.top,T)),A=Math.max(A,T)):(3===d.axisPosition&&(O=Math.max(D.bottom,O),T=Math.max(D.bottom,T)),S=Math.max(T,S)));d.currentTrendPadding=N}return{top:A-F,bottom:S-O}},t.prototype.draw=function(e,t){var a,r,i,n,l,s,c,u,p,h,d,g,f,m=this,b=m.config.idMap,k=m.getFromEnv("chart"),w=k.config,C=k.getChildContainer("datalabelsGroup"),x=m.getFromEnv("toolTipController"),T=m.getGraphicalElement("tempGroup"),S=m.getFromEnv("scale"),A=m.getFromEnv("animationManager"),E=m.config.pointerArr&&m.config.pointerArr.pointer,N=w.canvasWidth,O=w.canvasHeight,F=m.config,D=m.getFromEnv("number-formatter"),L=F.pointerOnOpp?O:0,M=F.showPointerShadow,R=F.showTooltip,_=S.config.axisRange.min,P=S.config.axisRange.max,V=(P-_)/N,I=E&&E.length||0,G=m.components.data,j={pageX:0,pageY:0},B=function(e){var t=e.data[0];!1!==this.editMode&&(i=k._getDataJSON(),this.dragStartX=t)},H=function(){var e,t=this.config,a=k.getFromEnv("chartInstance");if(!1!==this.config.editMode){(e=a&&a.jsVars)&&(e._rtLastUpdatedData=k._getDataJSON()),k.fireChartInstanceEvent("RealTimeUpdateComplete",{data:"&value="+t.updatedValStr,updateObject:{values:[t.updatedValStr]},prevData:i.values,source:"editMode",url:null});try{v.FC_ChartUpdated&&v.FC_ChartUpdated(a.id)}catch(o){setTimeout(function(){throw o},1)}F.showTooltip?x.enableToolTip(s,t.toolText):x.disableToolTip(s)}},W=function(e){var t=e.data[2],a=y&&function(e){return y&&e.sourceEvent&&e.sourceEvent.touches&&e.sourceEvent.touches[0]||e}(e)||j,r=S.getLimit(),i=r.min,n=r.max,l=(0,o.pluckNumber)(this.itemValue,i),s=l-(this.dragStartX-t)*V,c=0,u=[],p=[];if(!1!==this.editMode){for(this.drag=!0,s<i?s=i:s>n&&(s=n);c<this.index;c+=1)u.push(o.BLANK),p.push(o.BLANK);u.push({value:s}),p.push(s),l!==s&&m.updateData({data:u},{duration:0})&&(this.updatedValStr=p.join("|"),this.dragStartX=t||e.pageX||a.pageX)}};for(e&&0===e.duration&&(k.state="noAnim"),T||(T=m.addGraphicalElement("tempGroup",A.setAnimation({el:"group",state:k.state,attr:{opacity:1,name:"tempGroup"},container:C,component:m}))),d=function(e){var t=this.data("eventArgs").index,a=G[t].config;!0!==a.drag?k.plotEventHandler(this,e):a.drag=!1},g=function(e){var t=this.data("rolloverProperties");t.enabled&&(this.attr(t.hoverAttr),t.hoverAnimAttr&&this.animate(t.hoverAnimAttr,100,"easeIn")),k.plotEventHandler(this,e,"DataPlotRollOver")},f=function(e){var t=this.data("rolloverProperties");t.enabled&&(this.attr(t.outAttr),t.outAnimAttr&&this.animate(t.outAnimAttr,100,"easeIn")),k.plotEventHandler(this,e,"DataPlotRollOut")};I--;)G[I]&&(r=G[I].config,a=D.getCleanValue(r.value),a=Number((0,o.toPrecision)(a,10)),r.itemValue=a,c=G[I].graphics||(G[I].graphics={}),p=r.rolloverProperties||{},l=F.startAngle,b[r.id]={index:I,config:r},l+=.2,n=!!M&&{opacity:Math.max(r.bgAlpha,r.borderAlpha)/100},h={index:I,link:u=r.dataLink,value:r.itemValue,displayValue:r.displayValue,toolText:r.toolText},s=c.pointer,s=A.setAnimation({el:s||"polypath",attr:{polypath:[r.sides,N*((0,o.pluckNumber)(r.itemValue,_)-_)/(P-_),L||0,r.radius,l,0],r:r.radius,fill:r.fillColor,stroke:r.pointerBorderColor,"stroke-width":r.borderWidth},css:u||r.editMode?{cursor:"pointer",_cursor:"hand"}:{cursor:o.BLANK,_cursor:o.BLANK},label:"pointers",container:T,component:m}).show(),c.pointer||(c.pointer=s.on("fc-click",d).shadow(!!n,n&&n.opacity).hover(g,f),s.show()),t||(s.data("eventArgs",h).data("rolloverProperties",p),r._startAngle=l,r.editMode?(r.index=I,r.editMode=!0):r.editMode=!1,s.undrag(),r.editMode&&s.drag(W,B,H,r,r,G[I])),R?x.enableToolTip(s,r.toolText):x.disableToolTip(s));m._drawBackground(),t?m.drawPointerValues(e):m._drawWidgetLabel(e)},t.prototype.removeData=function(e){var t,a,o=this.components.data,r=function(){this.hide()};this.removeDataArr||(this.removeDataArr=[]);for(var i=0;i<e;i++)(a=o[i])&&((t=a.graphics).pointer&&this.getFromEnv("animationManager").setAnimation({el:t.pointer,callback:r,component:this}),t.pointerValue&&this.getFromEnv("animationManager").setAnimation({el:t.pointerValue,callback:r,component:this}),t.pointerValueCont&&this.getFromEnv("animationManager").setAnimation({el:t.pointerValueCont,callback:r,component:this}));this.removeDataArr=this.removeDataArr.concat(o.splice(0,e))},t.prototype._drawWidgetLabel=function(e){var t,a,i,n,l,s,c,p,h,d,g,m,b,v,y,k,w,C,T,S,A,E,N,O,F,D,L=this.getFromEnv("chart"),M=this.getFromEnv("toolTipController"),R=L.config,_=this.getFromEnv("number-formatter"),P=this.getFromEnv("scale"),V=this.getFromEnv("animationManager"),I=L.getChildren("canvas")[0],G=L.getChildContainer("datalabelsGroup"),j=I.getGraphicalElement("dataLabelContainer"),B=P.config.axisRange.min,H=P.config.axisRange.max,W=this.config,z=W.textDirection,U=this.getFromEnv("colorRange"),X=L.getFromEnv("dataSource").colorrange&&U&&U.getColorRangeArr(B,H),K=W.colorRangeStyle||{},Y=W.showvalue,J=L.getFromEnv("dataSource").trendpoints&&L.getFromEnv("dataSource").trendpoints.point,Z=R.trendPointConfig,q=R.canvasWidth,$=R.canvasHeight,Q=R.marginRight,ee=W.pointerOnOpp,te=W.valueInsideGauge,ae=W.showGaugeLabels,oe=R.dataLabelStyle,re=!1,ie=this.getFromEnv("smartLabel"),ne=(0,o.pluckNumber)(parseInt(oe.fontHeight,10),parseInt(oe.lineHeight,10),12),le=W.currentValuePadding+.5*ne,se=W.currentTrendPadding+.5*ne,ce=W.currentTrendPadding,ue={fontFamily:oe.fontFamily,fontSize:oe.fontSize,lineHeight:oe.lineHeight,fontWeight:oe.fontWeight,fontStyle:oe.fontStyle},pe=this.config.pointerArr&&this.config.pointerArr.pointer,he=this.components.data;if(j=V.setAnimation({el:j||"group",attr:{name:"label-container"},container:G,component:this}),G=V.setAnimation({el:G||"group",state:"initial",attr:{transform:["T",R.canvasLeft,R.canvasTop]},label:"datalabel",component:this}),!I.getGraphicalElement("dataLabelContainer")&&(j=I.addGraphicalElement("dataLabelContainer",j)),le=te===ee?le-ne/4:le+ne/4,ie.useEllipsesOnOverflow(R.useEllipsesWhenOverflow),ie.setStyle(ue),T=ie.getOriSize("W...").width,K.fontWeight="normal",c=this.getPointerLabelXY=function(e,t,a,o,r){var i;return i=a?t?$-o-le:$+le:t?le:-(le+o),(S=(e-B)*q/(H-B))+r>q+Q&&(S=q-r+Q),{x:S,y:i,align:f}},p=function(e,t){return{x:(e-B+(t-e)/2)*q/(H-B),y:$/2,width:(t-e)*q/(H-B),height:$}},pe&&pe.length)for(l=pe.length;l--;)if(he[l]&&(N=he[l].config,0!==Y&&N.displayValue!==u&&(C=ie.getOriSize(N.displayValue),N.setWidth&&(C=ie.getSmartText(N.displayValue,N.setWidth,C.height,!0)),h=this.getPointerLabelXY(N.itemValue,te,ee,C.height/2,C.width/2),N.isLabelString))){for(re=!1,y=1;!re&&(d=pe[l+y]);)d.isLabelString?re=!0:y+=1;d&&(g=ie.getOriSize(d.displayValue),v=(b=c(d.y,te,ee,g.height/2)).x-g.width/2-(h.x+C.width/2),i=b.x-h.x,v<0&&((n=C.width+v)>i&&(N.setWidth=n=i),n>T?N.setWidth&&N.setWidth<=n?(m=ie.getSmartText(N.displayValue,N.setWidth,C.height,!0),N.displayValue=m.text,m.tooltext&&(N.originalText=m.tooltext)):(m=ie.getSmartText(N.displayValue,n,C.height,!0),N.displayValue=m.text,m.tooltext&&(N.originalText=m.tooltext)):(m=ie.getSmartText(N.displayValue,T,C.height,!0),N.displayValue=m.text,m.tooltext&&(N.originalText=m.tooltext),v=2*v+T-4),N.setWidth=null,n=g.width+v-4,d.setWidth=n>i?i:n>T?n:T)),N.setWidth&&(m=ie.getSmartText(N.displayValue,N.setWidth,C.height,!0),N.displayValue=m.text,m.tooltext&&(N.originalText=m.tooltext),N.setWidth=null)}if(this.drawPointerValues(e),ie.setStyle(K),X&&ae)for(l=0,s=X.length;l<s;l+=1)t=X[l],a=(0,o.pluck)(t.label,t.name),C=(h=p(t.minvalue,t.maxvalue)).width-4>T&&h.height-4>ne?ie.getSmartText(a,h.width-4,h.height-4):ie.getSmartText(a,h.width,h.height),A={"text-anchor":f,"vertical-align":f,x:h.x,y:h.y,direction:z,fill:K.color,text:C.text},F=I.getGraphicalElement("colorRangeLabelsCont")&&I.getGraphicalElement("colorRangeLabelsCont")[l],F=V.setAnimation({el:F||"group",attr:{name:"color-range-label"},component:this,container:j,label:"final"}),O=I.getGraphicalElement("colorRangeLabels")&&I.getGraphicalElement("colorRangeLabels")[l],O=V.setAnimation({el:O||"text",attr:A,css:K,component:this,container:F,label:"final"}),I.getGraphicalElement("colorRangeLabels")&&I.getGraphicalElement("colorRangeLabels")[l]?(O.show(),M.enableToolTip(O,C.tooltext)):(F=I.addGraphicalElement("colorRangeLabelsCont",F,!0,l),O=I.addGraphicalElement("colorRangeLabels",O,!0,l));else l=0;for(;I.getGraphicalElement("colorRangeLabelsCont")&&I.getGraphicalElement("colorRangeLabelsCont")[l];)I.getGraphicalElement("colorRangeLabelsCont")[l].hide(),l++;if(J)for(l=0,s=Z.length;l<s;l+=1){for((E=Z[l]).displayValue=(0,o.pluck)(E.displayValue,_.dataLabels(E.startValue)),ie.setStyle(E.style),ne=ie.getOriSize("Wg").height,C=ie.getOriSize(E.displayValue),h=c(E.startValue,0,!E.showOnTop),E.setWidth&&(C=ie.getSmartText(E.displayValue,E.setWidth,C.height,!0)),re=!1,y=1;!re&&(d=J[l+y]);)d.showOnTop===E.showOnTop?re=!0:y+=1;d&&(g=ie.getOriSize(d.displayValue),(v=(b=c(d.startValue,0,!d.showOnTop)).x-g.width/2-(h.x+C.width/2))<0&&(i=b.x-h.x,(n=C.width+v)>i&&(E.setWidth=n=i),n>T?E.setWidth&&E.setWidth<=n?(C=ie.getSmartText(E.displayValue,E.setWidth,C.height,!0),E.displayValue=C.text,C.tooltext&&(E.originalText=C.tooltext)):(C=ie.getSmartText(E.displayValue,C.width+v-4,C.height,!0),E.displayValue=C.text,C.tooltext&&(E.originalText=C.tooltext)):(C=ie.getSmartText(E.displayValue,T,C.height,!0),E.displayValue=C.text,C.tooltext&&(E.originalText=C.tooltext),v=2*v+T-4),E.setWidth=null,n=g.width+v-4,d.setWidth=n>i?i:n>T?n:T)),E.setWidth&&(C=ie.getSmartText(E.displayValue,E.setWidth,C.height,!0),E.displayValue=C.text,C.tooltext&&(E.originalText=C.tooltext),E.setWidth=null),w=E.showOnTop?-(ce+C.height/2):$+se,k=E.isTrendZone?p(E.startValue,E.endValue).x:h.x,D=I.getGraphicalElement("trendTextElems")&&I.getGraphicalElement("trendTextElems")[l],D=V.setAnimation({el:D||"text",attr:{x:k,y:w,text:E.displayValue,"text-anchor":x[h.align],fill:(0,r.convertColor)(E.textColor||K.color),"font-weight":"normal",direction:z,opacity:1,title:E.originalText||o.BLANK},container:j,component:this,label:"final"}),I.getGraphicalElement("trendTextElems")&&I.getGraphicalElement("trendTextElems")[l]||(D=I.addGraphicalElement("trendTextElems",D,!0,l)),D.show()}else l=0;for(;I.getGraphicalElement("trendTextElems")&&I.getGraphicalElement("trendTextElems")[l];)I.getGraphicalElement("trendTextElems")[l].hide(),l++},t.prototype.drawPointerValues=function(){var e,t,a,r,i,n,l,s,c,p,h,d,g=this.getFromEnv("chart"),f=g.getChildContainer("datalabelsGroup"),m=this.components.data,b=this.config,v=b.showTooltip,y=this.getFromEnv("toolTipController"),k=b.pointerOnOpp,w=b.valueInsideGauge,C=b.textDirection,T=this.getFromEnv("animationManager"),S=this.getFromEnv("smartLabel"),A=this.config.pointerArr&&this.config.pointerArr.pointer,E=g.config.dataLabelStyle,N=A&&A.length,O=g.config,F=O.marginLeft,D={fontFamily:E.fontFamily,fontSize:E.fontSize,lineHeight:E.lineHeight,fontWeight:E.fontWeight,fontStyle:E.fontStyle},L=this.pool;for("initial"===g.state&&T.setAnimation({state:"initial",el:f,attr:{opacity:1},component:this}),S.setStyle(E);N--;)m[N]&&(d=!1,c=m[N].graphics,i=(t=m[N].config).displayValue,0!==t.showValue&&i!==u?(s=(p=S.getOriSize(i)).height,(l=(p=S.getSmartText(i,O.width,s)).width/2)>F+(n=this.getPointerLabelXY(t.itemValue,w,k,.5*s,l)).x&&(n.x=l-F),e=p.tooltext||u,h={x:n.x,y:n.y,"text-anchor":x[n.align],title:t.originalText||o.BLANK,text:p.text,fill:E.color,direction:C,"text-bound":[E.backgroundColor,E.borderColor,E.borderThickness,E.borderPadding,E.borderRadius,E.borderDash]},r=T.setAnimation({el:c.pointerValueCont||L&&L.pointerValueCont[0]||"group",attr:{name:"label-group"},container:f,component:this,label:"labelGroup"}).show(),a=T.setAnimation({el:c.pointerValue||L&&L.pointerValue[0]||"text",attr:h,css:D,container:r,component:this,label:"pointerValues"}).show(),v?y.enableToolTip(a,e):y.disableToolTip(a),c.pointerValue||(L&&L.pointerValue[0]?(L.pointerValue.splice(0,1),L.pointerValueCont.splice(0,1)):d=!0),c.pointerValue=a,c.pointerValueCont=r,d||a.show()):(c.pointerValue&&c.pointerValue.hide(),c.pointerValueCont&&c.pointerValueCont.hide(),c.pointerValue&&y.disableToolTip(c.pointerValue)))},t.prototype.getDataLimits=function(){var e,t,a,r,i,n,l=this.config,s=this.getFromEnv("chart").getFromEnv("dataSource"),c=this.components.data||this.config.pointerArr&&this.config.pointerArr.pointer||s.dials&&s.dials.dial,u=s.colorrange,p=u&&u.color,h=c&&c.length,d=l.upperLimit,g=l.lowerLimit,f=-Infinity,m=+Infinity;for(e=0;e<h;e++)(r=c[e].config.value)!==o.BLANK&&(a=f=w(f,Number(r)),t=m=C(m,Number(r)));for(h=p&&p.length,e=0;e<h;e++)i=Number(p[e].maxvalue),n=Number(p[e].minvalue),d&&i>d&&(i=d),g&&n<g&&(n=g),m=(0,o.safeMin)([m,n]),f=(0,o.safeMax)([f,i]);return{forceMin:t!==m,forceMax:a!==f,max:f,min:m}},t.prototype.updateData=function(e,t){if(e===this.config.lastUpdatedObj)return!1;var a,r,i,n,l,s,c,d,g,f,m,b,v,y=this.getFromEnv("chart"),k=this.getFromEnv("number-formatter"),w=this.components.data,C=this.components.data,x=C&&C.length||0,T={},S=null,A=[],E=this.getFromEnv("chart-attrib").plottooltext;for(e=e.data,b=t||y.get(p,h),c=e.length,n=0;n<c;n++)(l=e[n].id)&&(T[l]=e[n]);if(s=Object.keys(T).length,x){for(;x--;)d={},v={},l=(g=w[x].config).id,f=void 0,f=s?T[l]:e[x],f&&(m=f.value,r=f.tooltext,a=f.label,i=f.showlabel,void 0!==m&&m!==o.BLANK?(d.value=v.value=m,S=v.displayvalue=v.tooltext=k.dataLabels(v.value),v.hasNewData=!0):v.value=g.formatedVal,a&&(v.displayvalue=a,v.hasNewData=!0),"0"==i&&(v.displayvalue=u,v.hasNewData=!0),r&&(v.hasNewData=!0),r=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(r,E))),v.hasNewData&&(A[x]=v,g.value=v.value,g.displayValue=g.displayValue||"1"==i?v.displayvalue:u,g.toolText=void 0!==r?(0,o.parseTooltext)(r,[1,2],{formattedValue:S},d):S));return A.length&&(this.config.lastUpdatedObj=e,this.draw(b,!0)),Boolean(A.length)}},t}(i["default"]);t["default"]=T},623:function(e,t,a){"use strict";t.__esModule=!0;var o=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.hlineargauge":function(){return{"parentgroup.initial":function(e){return[{initialAttr:{transform:e.attr.transform},finalAttr:{transform:e.attr.transform},slot:"initial"}]},"datalabel.initial":function(e){return[{initialAttr:{transform:e.attr.transform},finalAttr:{transform:e.attr.transform}}]},"background.appearing":function(){return o[0].slot="initial",o},"background.updating":null,"final.appearing":function(){return o[0].slot="final",o},"final.updating":null,"pointers.appearing":function(e){var t=e.attr.polypath.slice(0);return t[1]=0,[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:{polypath:t},finalAttr:{opacity:1},slot:"middle"}]},"pointers.updating":null,"pointerValues.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:{x:0},finalAttr:{opacity:1},slot:"middle"}]},"pointerValues.updating":null,"*":null}}}},624:function(e,t,a){"use strict";t.__esModule=!0;var o=a(125),r=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.angularGauge":function(){var e=this.config,t=(0,o.getDep)("redraphael","plugin"),a=Math.PI/180,i=t.vml?-1.5:0,n=t.vml?-1.5:0;return{"dialPath.appearing":function(){return[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:{transform:"R"+e.gaugeStartAngle/a+","+i+","+n},finalAttr:{opacity:1},slot:"middle"}]},"dialPath.updating":null,"text.appearing":function(){return r[0].slot="final",r},"text.updating":null,"pivot.appearing":function(){return r[0].slot="initial",r},"pivot.updating":null,"plotBackground.appearing":function(){return r[0].slot="initial",r},"plotBackground.updating":null}}}},625:function(e,t,a){"use strict";t.__esModule=!0,t["default"]=function(e){var t=Math,a=t.pow,o=t.tan,r=t.acos,i=t.min,n=t.sqrt,l="L",s=e._cacher(function(e,t,o,r){return n(a(o-e,2)+a(r-t,2))}),c=e._cacher(function(e,t,a,o,r){var i,n=a-e,l=o-t;return{x:e+(n/=i=s(e,t,a,o))*r,y:t+(l/=i)*r}});e.define&&e.define([{name:"trianglepath",trianglepath:function(){var t=arguments,a=e._lastArgIfGroup(t);return this.path(a).attr("trianglepath",[t[0],t[1],t[2],t[3],t[4],t[5],t[6]||0,t[7]||0,t[8]||0])},fn:{sides:function(){var e=this._args;return[s(e[0],e[1],e[2],e[3]),s(e[2],e[3],e[4],e[5]),s(e[4],e[5],e[0],e[1])]},enclosedAngles:function(){var e=this._sides;return[r((a(e[0],2)+a(e[2],2)-a(e[1],2))/(2*e[0]*e[2])),r((a(e[0],2)+a(e[1],2)-a(e[2],2))/(2*e[0]*e[1])),r((a(e[2],2)+a(e[1],2)-a(e[0],2))/(2*e[2]*e[1]))]},semiperimeter:function(){var e=this._sides||this.sides();return(e[0]+e[1]+e[2])/2}},ca:{trianglepath:function(e,t,a,r,s,u,p,h,d){if(p||h||d){this._args=arguments,this._sides=this.sides();var g,f,m,b=this.enclosedAngles(),v=this.semiperimeter();m=n(v*(v-this._sides[0])*(v-this._sides[1])*(v-this._sides[2]))/v,g=[i(p,m)/o(b[0]/2),i(h,m)/o(b[1]/2),i(d,m)/o(b[2]/2)],f=[c(e,t,s,u,g[0]),c(e,t,a,r,g[0]),c(a,r,e,t,g[1]),c(a,r,s,u,g[1]),c(s,u,a,r,g[2]),c(s,u,e,t,g[2])],this.attr({path:["M",f[0].x,f[0].y,"Q",e,t,f[1].x,f[1].y,l,f[2].x,f[2].y,"Q",a,r,f[3].x,f[3].y,l,f[4].x,f[4].y,"Q",s,u,f[5].x,f[5].y,l,f[0].x,f[0].y]})}else this.attr({path:["M",e,t,l,a,r,s,u,"Z"]})}}}])}},626:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(627);function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var n=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.defaultSeriesType="led",a.defaultPlotShadow=1,a.realtimeEnabled=!0,a.chartleftmargin=15,a.chartrightmargin=15,a.charttopmargin=10,a.chartbottommargin=10,a.showTooltip=0,a.connectTickMarks=0,a.isHorizontal=!0,a.isAxisOpposite=!1,a}return i(t,e),t.getName=function(){return"Hled"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.friendlyName="Vertical LED Gauge"},t.prototype.getName=function(){return"Hled"},t}(((o=r)&&o.__esModule?o:{"default":o})["default"]);t["default"]=n},627:function(e,t,a){"use strict";t.__esModule=!0;var o=a(628),r=l(a(606)),i=l(a(629)),n=l(a(604));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.showRTvalue=!1,a.canvasPadding=!1,a.defaultSeriesType="led",a.defaultPlotShadow=1,a.realtimeEnabled=!0,a.chartleftmargin=15,a.chartrightmargin=15,a.charttopmargin=10,a.chartbottommargin=10,a.showTooltip=0,a.connectTickMarks=0,a.isHorizontal=!1,a.isAxisOpposite=!0,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isAxisReverse=!1,a.isRealTime=!0,a.colorRange=!0,a.registerFactory("dataset",n["default"],["vCanvas"]),a}return s(t,e),t.getName=function(){return"Vled"},t.prototype.getName=function(){return"Vled"},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t),o.configureAttributes.call(this)},t.prototype._getData=function(){return o._getData.call(this)},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Vertical LED Gauge",t.hasLegend=!1,t.defaultDatasetType="led",t.skipCanvasDrawing=!0,t.majorTMNumber=-1,t.majorTMHeight=6,t.showTickMarks=1,t.majorTMThickness=1,t.minorTMNumber=4,t.minorTMThickness=1,t.tickMarkDistance=3,t.placeTicksInside=0,t.placeValuesInside=0},t.prototype.getDSdef=function(){return i["default"]},t}(r["default"]);t["default"]=c},628:function(e,t,a){"use strict";t.__esModule=!0,t._getData=t.configureAttributes=undefined;var o,r=a(118),i=a(581),n=(o=i)&&o.__esModule?o:{"default":o};t.configureAttributes=function(){var e=this.getFromEnv("dataSource").colorrange;e&&e.color&&e.color.length?((0,r.componentFactory)(this,n["default"],"colorRange",1,[{colorRange:e,numberFormatter:this.getFromEnv("number-formatter")}]),this.addToEnv("colorRange",this.getChildren("colorRange")&&this.getChildren("colorRange")[0])):this.deleteFromEnv("colorRange")},t._getData=function(){var e,t,a=this.getDatasets();if(a&&(t=a[0].components.data)&&t[0])return e=t[0].config,(0,r.pluckNumber)(e.setValue,e.itemValue)}},629:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(630)),n=a(125),l=s(a(632));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.BLANK,p=o.preDefStr.colors.c000000,h=o.preDefStr.showHoverEffectStr,d=o.preDefStr.POSITION_MIDDLE,g=window,f=g.navigator.userAgent,m="rgba(192,192,192,"+(/msie/i.test(f)&&!g.opera?.002:1e-6)+")",b=Math,v=b.round,y=b.max,k=o.regex.dropHash;(0,n.addDep)({name:"ledAnimation",type:"animationRule",extension:l["default"]});var w=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"led"},t.prototype.draw=function(){var e,t,a,i,n,l,s,c,u,d,g,f,b,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W,z,U,X,K,Y,J,Z,q,$,Q,ee,te,ae,oe,re,ie,ne=this.getFromEnv("chart"),le=this.config,se=ne.getFromEnv("dataSource").chart,ce=ne.config,ue=ne.getChildren("canvas")[0],pe=ue.getGraphicalElement(),he=ue.config,de=pe.canvasBorderElement,ge=pe.colorRangeElems,fe=pe.canvasElementPath,me=pe.canvasHotElement,be=ce.canvasLeft,ve=ce.canvasRight,ye=ce.canvasTop,ke=ce.canvasBottom,we=ce.canvasWidth,Ce=ce.canvasHeight,xe=ne.getChildContainer().plotGroup,Te=this.getFromEnv("scale"),Se=Te.getLimit().min,Ae=Te.getLimit().max,Ee=(0,o.pluckNumber)(ne.getFromEnv("dataSource").chart.reverseaxis,ne.isAxisReverse),Ne=ne.isHorizontal,Oe=this.getFromEnv("color-manager"),Fe=this.getFromEnv("number-formatter"),De=ne.getFromEnv("animationManager"),Le=le.showHoverEffect,Me=[],Re=[],_e=this.getContainer("trackerContainer"),Pe=ne.getChildContainer("trackerGroup"),Ve=0,Ie=!1;if(_e||(_e=this.addContainer("trackerContainer",De.setAnimation({el:"group",attr:{name:"led-hot"},container:Pe,component:this}))),s=(0,o.pluckNumber)(se.showgaugeborder,1),i=(0,o.pluck)(se.gaugebordercolor,ne.gaugeBorderColor,"333333"),s?(0,o.pluckNumber)(se.gaugeborderthickness,ne.gaugeBorderThickness,2):0,(0,o.pluck)(se.gaugeborderalpha,o.HUNDREDSTRING),he.gaugeFillColor=F=(0,o.pluck)(se.gaugefillcolor,se.ledbgcolor,p),A=(0,o.pluckNumber)(se.usesamefillcolor,0),E=(0,o.pluckNumber)(se.usesamefillbgcolor,A),le.ledGap=N=(0,o.pluckNumber)(se.ledgap,2),le.ledSize=O=(0,o.pluckNumber)(se.ledsize,2),he.colorRangeFillMix=e=(0,o.getFirstDefinedValue)(se.colorrangefillmix,se.gaugefillmix,ne.colorRangeFillMix,"{light-10},{dark-10},{light-10},{dark-10}"),he.colorRangeFillRatio=t=(0,o.getFirstDefinedValue)(se.colorrangefillratio,se.gaugefillratio,ne.colorRangeFillRatio,se.gaugefillratio,"0,10,80,10"),he.colorRangeGetter=W=this.getFromEnv("colorRange"),he.colorArray=a=W&&W.getColorRangeArr(Se,Ae),i=(0,o.pluck)(i,p).replace(k,o.HASHSTRING),n=(0,o.pluckNumber)(se.colorrangeborderalpha,se.gaugeborderalpha,100),l=(0,o.pluckNumber)(se.showshadow,1),s=(0,o.pluckNumber)(se.showgaugeborder,1),he.colorRangeBorderThickness=c=s?(0,o.pluckNumber)(se.colorrangeborderthickness,se.gaugeborderthickness,2):0,M=Ae-Se,_=be-(R=c/2),P=ye-R,V=be+we+R,I=ye+Ce+R,O+=(L=(Ne?we:Ce)-O)%(D=N+O||1)/(G=parseInt(L/D,10)+1),le.sizeGapSum=D=O+N,le.perLEDValueLength=q=M/G,j=be,B=ye,J=(0,o.pluck)(se.clickurl),X=Fe.getCleanValue(ne.getFromEnv("dataSource").value),A||E)for(d=0,g=a.length;d<g;d+=1)if(X>=a[d].minvalue&&X<=a[d].maxvalue){z=a[d].code||Oe.getPlotColor(d),K=d;break}for(a&&a.length>0&&(U=a[0].code||Oe.getPlotColor(0)),$=Ee?ve:be,Q=Ee?ye:ke,d=0,g=a&&a.length;d<g;d+=1)u=a[d],re=u.minvalue-Se,ie=u.maxvalue-Se,f=Ee&&!Ne?{x:be,y:ye+re*Ce/(Ae-Se),width:we,height:(ie-re)*Ce/(Ae-Se)}:Ee||Ne?Ee&&Ne?{x:be+(we-ie*we/(Ae-Se)),y:ye,width:(ie-re)*we/(Ae-Se),height:Ce}:!Ee&&Ne?{x:be+re*we/(Ae-Se),y:ye,width:(ie-re)*we/(Ae-Se),height:Ce}:void 0:{x:be,y:ye+(Ce-ie*Ce/(Ae-Se)),width:we,height:(ie-re)*Ce/(Ae-Se)},ae=(ee=v((u.maxvalue-Se)/q))-Ve,Ve=ee,te=ae*D,Ne||Ee?!Ne&&Ee?(f.height=te-N,f.y=Q,Q+=te):Ne&&!Ee?(f.width=te-N,f.x=$,$+=te):Ne&&Ee&&(f.width=te-N,f.x=$-f.width,$-=te):(f.height=te-N,f.y=Q-f.height,Q-=te),u.x=f.x,u.y=f.y,u.width=f.width,u.height=f.height,b=A?z:E&&d>K?U:U=u.code||Oe.getPlotColor(d),w=(0,r.convertColor)((0,o.getColorCodeString)((0,o.pluck)(u.bordercolor,b),i),(0,o.pluckNumber)(u.borderalpha,n)),C=Oe.parseColorMix(u.code,e),x=Oe.parseAlphaList(u.alpha,C.length),T=(0,o.pluckNumber)(u.borderAlpha,n),S=x.split(o.COMMASTRING),S=y.apply(Math,S),S=y(c&&T||0,S),oe={x:f.x,y:f.y,width:f.width<0?0:f.width,height:f.height<0?0:f.height,r:0,"stroke-width":0,stroke:w,fill:(0,o.toRaphaelColor)({FCcolor:{color:b,ratio:t,alpha:x,angle:180}})},Y=De.setAnimation({el:ge&&ge[d]||"rect",attr:oe,container:xe,component:this,label:"plotBackground"}).toBack(),ge&&ge[d]||(ue.addGraphicalElement("colorRangeElems",Y,!0),Y.shadow({apply:l,opacity:S/100})),Me.push({"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:(0,r.getDarkColor)((0,o.pluck)(b,p),80)+o.COMMASTRING+(0,r.getLightColor)((0,o.pluck)(b,p),80),alpha:(0,o.pluckNumber)(u.alpha,100),angle:Ne?90:0}})}),Re.push({"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:(0,o.pluck)(b,p),alpha:(0,o.pluckNumber)(u.alpha,100)}})});for(g=(ge=ue.getGraphicalElement("colorRangeElems")||[]).length-1;g>=d;)ue.removeGraphicalElement(ge[g]),g--;for(Z={link:J,value:X},oe={x:be,y:ye,width:we,height:Ce,"stroke-width":0,fill:m},me?De.setAnimation({el:me,attr:oe,container:_e,component:this}):(me=pe.canvasHotElement=De.setAnimation({el:"rect",attr:oe,container:_e,component:this}),Ie=!0),me.data("eventArgs",Z).data(h,Le).data("setRolloverAttr",Me).data("setRolloutAttr",Re),Ie&&(J&&me.on("fc-click",function(e){ne.plotEventHandler(this,e)}),me.hover(function(e){var t,a,o=0;return function(){if(0!==(a=this).data(h))for(o=0,t=e.length;o<t;o+=1)e[o].attr(a.data("setRolloverAttr")[o])}}(ge),function(e){var t,a,o=0;return function(){if(0!==(a=this).data(h))for(o=0,t=e.length;o<t;o+=1)e[o].attr(a.data("setRolloutAttr")[o])}}(ge))),Ne?j+=D-N/2:B+=D-N/2,H=[],oe={path:["M",_,P,"L",V,P,V,I,_,I,"Z"],stroke:(0,r.convertColor)(i,n),"stroke-width":c,"stroke-linecap":"butt"},de?De.setAnimation({el:de,attr:oe,component:this}):pe.canvasBorderElement=De.setAnimation({el:"path",attr:oe,container:xe,component:this,label:"plotBackground"}).shadow({apply:l}).toBack(),d=1;d<G;d+=1)Ne?(H.push("M",j,B,"L",j,B+Ce),j+=D):(H.push("M",j,B,"L",j+we,B),B+=D);oe={path:H,stroke:(0,r.convertColor)(F,100),"stroke-width":N,"stroke-linecap":"butt"},fe?De.setAnimation({el:fe,attr:oe,component:this}):(fe=De.setAnimation({el:"path",attr:oe,container:xe,component:this,label:"plotBackground"}),ue.addGraphicalElement("canvasElementPath",fe)),this.drawShade()},t.prototype.drawShade=function(){var e,t,a,i,n,l,s,c,p,h,g,f,m,b,y,k=this.config,w=this.components.data,C=this.getFromEnv("chart"),x=C.getChildren("caption")[0],T=C.getChildren("subCaption")[0],S=x&&x.config.text&&x.config.height||0,A=x&&x.config.text&&x.config.captionPadding||0,E=T&&T.config.text&&T.config.height||0,N=C.getFromEnv("dataSource").chart,O=C.getFromEnv("animationManager"),F=this.getFromEnv("toolTipController"),D=this.getFromEnv("smartLabel"),L=C.config,M=L.canvasLeft,R=L.canvasTop,_=L.canvasHeight,P=L.canvasWidth,V=C.getChildContainer().plotGroup,I=this.getContainer("container"),G=this.getFromEnv("number-formatter"),j=k.isAxisReverse=(0,o.pluckNumber)(N.reverseaxis,C.isaxisreverse),B=k.isHorizontal=C.isHorizontal,H=w[0],W=H.graphics,z=H&&H.config,U=this.getContainer("dataLabelContainer"),X=C.getChildContainer("datalabelsGroup"),K=C.getChildren("canvas")[0],Y=C.config.dataLabelStyle,J=k.heightUsed,Z=this.getFromEnv("scale").getLimit().min;D.setStyle(Y),i=C.getChildren("canvas")[0].config.gaugeFillColor,I||(I=this.addContainer("container",O.setAnimation({el:"group",attr:{name:"shade"},container:V,component:this}))),U||(U=this.addContainer("dataLabelContainer",O.setAnimation({el:"group",attr:{name:"datalabel"},container:X,component:this,label:"labelGroup"}))),n=G.getCleanValue(z.setValue),H.graphics||(H.graphics={}),f=(n-Z)/k.perLEDValueLength,m=v(f)*k.sizeGapSum-k.ledGap,b=Math.ceil(_-m),y=Math.ceil(P-m),j&&!B?s={x:M,y:R+m,width:P,height:b,r:0,"stroke-width":0,fill:(0,r.convertColor)(i,50)}:j||B?!j&&B?s={x:M+m,y:R,width:y,height:_,r:0,"stroke-width":0,fill:(0,r.convertColor)(i,50)}:j&&B&&(s={x:M,y:R,width:y,height:_,r:0,"stroke-width":0,fill:(0,r.convertColor)(i,50)}):s={x:M,y:R,width:P,height:b,r:0,"stroke-width":0,fill:(0,r.convertColor)(i,50)},H.graphics.element=O.setAnimation({el:H.graphics.element||"rect",attr:s,container:I,component:this,label:"plotRect"}),g=z.setTooltext===o.BLANK||void 0===z.setTooltext?z.toolTipValue:z.setTooltext,k.showTooltip?F.enableToolTip(K._graphics.canvasHotElement,g):F.disableToolTip(K._graphics.canvasHotElement),l=(c=parseInt(Y.lineHeight,10))>J?L.height-L.marginBottom-J+c/2:L.height-L.marginBottom-c/2,l-=L.borderWidth,l-=(C._manageActionBarSpace&&C._manageActionBarSpace(.225*z.availableHeight)||{}).bottom,0===x.config.isOnTop&&(l-=S+E+A),W=H.graphics,z.displayValue!==u&&void 0!==z.displayValue&&k.showValue?(a=(e=D.getSmartText(z.displayValue,L.width,k.heightUsed)).text,t=e.tooltext||u,s={text:a,"text-anchor":d,x:P/2+M,y:l,"vertical-align":d,fill:Y.color,direction:z.textDirection,"text-bound":[Y.backgroundColor,Y.borderColor,Y.borderThickness,Y.borderPadding,Y.borderRadius,Y.borderDash]},W.label=O.setAnimation({el:W.label||"text",attr:s,container:U,component:this,label:"text"}),k.showTooltip?F.enableToolTip(W.label,t):F.disableToolTip(W.label),(p=W.label.getBBox()).x+L.marginLeft<0&&(h=p.width-L.marginLeft,L.width<h&&(h=L.width-L.marginLeft),s={x:h/2},O.setAnimation({el:W.label,attr:s,component:this,label:"text"}))):(W.label&&F.disableToolTip(W.label),W.label=W.label&&O.setAnimation({el:W.label,component:this}))},t}(i["default"]);t["default"]=w},630:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=a(125),n=s(a(131)),l=s(a(631));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=(0,i.getDep)("redraphael","plugin"),p=o.BLANK,h=o.preDefStr.showHoverEffectStr,d=o.preDefStr.ROUND,g=o.preDefStr.miterStr,f=o.preDefStr.colors,m=Math,b=m.max,v=m.min,y=m.abs,k=f.FFFFFF,w=void 0!==window.document.documentElement.ontouchstart,C={"true":void 0,"false":"crisp"},x=o.preDefStr.POSITION_START,T=o.preDefStr.POSITION_MIDDLE,S=o.preDefStr.PLOTFILLCOLOR_STR,A=w?o.TOUCH_THRESHOLD_PIXELS:o.CLICK_THRESHOLD_PIXELS;(0,i.addDep)({name:"bulletAnimation",type:"animationRule",extension:l["default"]});var E=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.addData=function(){},a.removeData=function(){},a.components={},a}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"bullet"},t.prototype.configure=function(e){if(!e)return!1;this.config.JSONData=e;var t,a,i,n,l,s,c,u,p,h=this.getFromEnv("chart"),g=this.config,f=this.config.JSONData,m=h.getFromEnv("dataSource").chart,v=this.getFromEnv("color-manager"),y=g.plotColor=v.getColor(S),w=(0,o.pluckNumber)(f.dashed,m.plotborderdashed),C=this.components.data,x=h.isBar,T=h.config.is3D,A=h.isStacked;this.setState("visible",1===(0,o.pluckNumber)(f.visible,1)),g.targetCapStyle=p=(0,o.pluck)(m.targetcapstyle,d).toLowerCase(),"butt"!==p&&p!==d&&"square"!==p&&"inherit"!==p&&(g.targetCapStyle=d),g.upperLimit=(0,o.pluckNumber)(m.upperlimit),g.lowerLimit=(0,o.pluckNumber)(m.lowerlimit),g.initAnimation=!0,t=g.showplotborder=(0,o.pluckNumber)(m.showplotborder,0),g.plotDashLen=a=(0,o.pluckNumber)(m.plotborderdashlen,5),g.plotDashGap=i=(0,o.pluckNumber)(m.plotborderdashgap,4),g.plotfillAngle=(0,o.pluckNumber)(360-m.plotfillangle,x?180:90),g.plotFillAlpha=l=(0,o.pluck)(f.alpha,m.plotfillalpha,o.HUNDREDSTRING),g.plotColor=y=(0,o.pluck)(m.plotfillcolor,y),g.isRoundEdges=n=(0,o.pluckNumber)(m.useroundedges,0),g.plotRadius=(0,o.pluckNumber)(m.useRoundEdges,g.isRoundEdges?1:0),g.plotFillRatio=(0,o.pluck)(f.ratio,m.plotfillratio),g.plotgradientcolor=(0,o.getDefinedColor)(m.plotgradientcolor,v.getColor("plotGradientColor")),g.showPlotBorderOnHover=(0,o.pluckNumber)(m.showplotborderonhover,0),g.plotBorderAlpha=(0,o.pluck)(m.plotborderalpha,l,o.HUNDREDSTRING),g.plotBorderColor=(0,o.pluck)(m.plotbordercolor,T?k:v.getColor("plotBorderColor")),g.plotBorderThickness=t?(0,o.pluckNumber)(m.plotborderthickness,0):0,g.plotBorderDashStyle=w?(0,o.getDashStyle)(a,i):"none",g.showValue=(0,o.pluckNumber)(f.showvalue,m.showvalue,1),g.valuePadding=(0,o.pluckNumber)(m.valuepadding,2),g.showShadow=n||T?(0,o.pluckNumber)(m.showshadow,1):(0,o.pluckNumber)(m.showshadow,v.getColor("showShadow")),g.showHoverEffect=(0,o.pluckNumber)(m.plothovereffect,m.showhovereffect,0),g.showTooltip=(0,o.pluckNumber)(m.showtooltip,1),g.stack100Percent=s=(0,o.pluckNumber)(h.stack100percent,m.stack100percent,0),g.definedGroupPadding=b((0,o.pluckNumber)(m.plotspacepercent),0),g.plotSpacePercent=b((0,o.pluckNumber)(m.plotspacepercent,20)%100,0),g.maxColWidth=(0,o.pluckNumber)(x?m.maxbarheight:m.maxcolwidth,50),g.showPercentValues=(0,o.pluckNumber)(m.showpercentvalues,A&&s?1:0),g.showPercentInToolTip=(0,o.pluckNumber)(m.showpercentintooltip,A&&s?1:0),g.plotPaddingPercent=(0,o.pluckNumber)(m.plotpaddingpercent),g.rotateValues=(0,o.pluckNumber)(m.rotatevalues)?270:0,g.placeValuesInside=(0,o.pluckNumber)(m.placevaluesinside,0),g.use3DLighting=(0,o.pluckNumber)(m.use3dlighting,1),C||(C=this.components.data=[]),g.plotAsDot=u=(0,o.pluckNumber)(m.plotasdot,0),g.plotFillPercent=(0,o.pluckNumber)(m.plotfillpercent,u?25:40),g.targetFillPercent=(0,o.pluckNumber)(m.targetfillpercent,60),g.targetThickness=(0,o.pluckNumber)(m.targetthickness,3),c=g.targetalpha=(0,o.pluckNumber)(m.targetalpha,100),g.targetColor=(0,r.convertColor)((0,o.pluck)(m.targetcolor,v.getColor(S)),c),this._setConfigure()},t.prototype._setConfigure=function(e){var t,a,i,n,l,s,c,u,p,h,d,g,f,m,y,k,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W,z,U=this.getFromEnv("chart"),X=this.config,K=this.config.JSONData,Y=e||K.data,J=Y&&Y.length,Z=e&&e.data.length||J,q=U.getFromEnv("dataSource").chart,$=this.getFromEnv("color-manager"),Q=X.showplotborder,ee=X.showPlotBorderOnHover,te=X.plotColor,ae=(0,o.parseUnsafeString)((0,o.pluck)(q.tooltipsepchar,o.COMMASPACE)),oe=(0,o.pluckNumber)(q.seriesnameintooltip,1),re=X.plotBorderThickness,ie=X.isRoundEdges,ne=X.showHoverEffect,le=X.plotFillAngle,se=X.plotBorderAlpha,ce=X.plotBorderDashStyle,ue=this.components.data,pe=U.isBar,he=U.config.is3D,de=-Infinity,ge=Infinity,fe=this.getFromEnv("number-formatter"),me=function(e){var r;return X.showTooltip?null===t?r=!1:void 0!==e?(l=[1,2,3,4,5,6,7,26,27],a={formattedValue:t,targetValue:f.target,targetDataValue:f.toolTipValueTarget},r=(0,o.parseTooltext)(e,l,a,h,q,K)):(oe&&(n=(0,o.getFirstValue)(K&&K.seriesname)),r=n?n+ae:o.BLANK,r+=f.toolTipValue?f.toolTipValue:o.BLANK):r=!1,r};for(ue||(ue=this.components.data=[]),P=0;P<Z;P++)h=e?e&&e.data[P]:Y[P],g=ue[P],f=g&&g.config,g||(g=ue[P]={}),g.config||(f=ue[P].config={}),f.showValue=(0,o.pluckNumber)(h.showvalue,X.showValues),f.valuePadding=(0,o.pluckNumber)(q.valuepadding,2),f.setValue=d=fe.getCleanValue(h.value),f.target=V=fe.getCleanValue(h.target),f.setLink=(0,o.pluck)(h.link),f.toolTipValue=D=fe.dataLabels(d),f.toolTipValueTarget=fe.dataLabels(V),f.setDisplayValue=L=(0,o.parseUnsafeString)(h.displayvalue),f.displayValue=(0,o.pluck)(h.label,L,D),M=(0,o.pluckNumber)(h.dashed),R=(0,o.pluckNumber)(h.dashlen,void 0),_=c=(0,o.pluckNumber)(h.dashgap,c),de=b(de,d,V),ge=v(ge,d,V),f.plotBorderDashStyle=p=1===M?(0,o.getDashStyle)(R,_):0===M?"none":ce,te=(0,o.pluck)(h.color,X.plotColor),u=(0,o.pluck)(h.alpha,X.plotFillAlpha),d<0&&!ie&&(s=le,le=pe?180-le:360-le),f.colorArr=m=(0,r.getColumnColor)(te,u,void 0,le,ie,X.plotBorderColor,se.toString(),pe?1:0,!!he),0!==ne&&(y=(0,o.pluck)(h.hovercolor,K.hovercolor,q.plotfillhovercolor,q.columnhovercolor,te),k=(0,o.pluck)(h.hoveralpha,K.hoveralpha,q.plotfillhoveralpha,q.columnhoveralpha,u),!(0,o.pluck)(h.hovergradientcolor,K.hovergradientcolor,q.plothovergradientcolor,X.plotgradientcolor)&&o.BLANK,w=(0,o.pluck)(h.hoverratio,K.hoverratio,q.plothoverratio,void 0),C=(0,o.pluckNumber)(360-h.hoverangle,360-K.hoverangle,360-q.plothoverangle,le),x=(0,o.pluck)(h.borderhovercolor,K.borderhovercolor,q.plotborderhovercolor,q.plotfillhovercolor,X.plotBorderColor),T=(0,o.pluck)(h.borderhoveralpha,K.borderhoveralpha,q.plotborderhoveralpha,se,u),S=(0,o.pluckNumber)(h.borderhoverthickness,K.borderhoverthickness,q.plotborderhoverthickness,re),A=(0,o.pluckNumber)(h.borderhoverdashed,K.borderhoverdashed,q.plotborderhoverdashed),E=(0,o.pluckNumber)(h.borderhoverdashgap,K.borderhoverdashgap,q.plotborderhoverdashgap,void 0),N=(0,o.pluckNumber)(h.borderhoverdashlen,K.borderhoverdashlen,q.plotborderhoverdashlen,c),O=A?(0,o.getDashStyle)(N,E):p,1==ne&&y===te&&(y=(0,r.getDarkColor)(y,90)),F=(0,r.getColumnColor)(y,k,w,C,ie,x,T.toString(),pe?1:0,!1),f.setPlotRolloutAttr={fill:he?[(0,o.toRaphaelColor)(m[0]),!X.use3DLighting]:(0,o.toRaphaelColor)(m[0]),stroke:Q&&(0,o.toRaphaelColor)(m[1]),"stroke-width":re,"stroke-dasharray":p},f.setPlotRolloverAttr={fill:he?[(0,o.toRaphaelColor)(F[0]),!X.use3DLighting]:(0,o.toRaphaelColor)(F[0]),stroke:(0,o.toRaphaelColor)(F[1]),"stroke-width":ee?S||1:S,"stroke-dasharray":O}),0!==ne&&(ne||q.targethovercolor||q.targethoveralpha||0===q.targethoveralpha||q.targethoverthickness||0===q.targethoverthickness)&&(ne=!0,I={},G={},j=(0,o.pluckNumber)(q.targethoverthickness,X.targetThickness+2),X.targetThickness!==j&&(I["stroke-width"]=j,G["stroke-width"]=X.targetThickness),B=(0,o.pluck)(q.targethovercolor,"{dark-10}"),H=(0,o.pluckNumber)(q.targethoveralpha,X.targetalpha),j&&(G.stroke=X.targetColor,W=/\{/.test(B),I.stroke=(0,r.convertColor)(W?$.parseColorMix((0,o.pluck)(q.targetcolor,te),B)[0]:B,H)),f.tagetHoverAttr=I,f.targetOutAttr=G),t=f.toolTipValue,i=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(h.tooltext,K.plottooltext,q.plottooltext))),f.toolText=me(i),f.setTooltext=f.toolText,s&&(le=s),z=(0,o.getValidValue)((0,o.parseUnsafeString)((0,o.pluck)(h.tooltexttarget,K.targettooltext,q.targettooltext))),f.toolTextTarget=me(z);X.maxValue=de,X.minValue=ge},t.prototype._manageSpace=function(e){var t,a,r,i=this.config,n=this.components.data,l=this.getFromEnv("chart"),s=l.config,c=l.getFromEnv("smartLabel"),u=s.dataLabelStyle,p=(0,o.pluckNumber)(parseInt(u.lineHeight,10),12),h=e,d=i.valuePadding,g=0,f=0;for(r=(t=n[f])&&t.config,c.useEllipsesOnOverflow(s.useEllipsesWhenOverflow),c.setStyle(u);f<1;f+=1)i.showValue&&(a=c.getOriSize(r.toolTipValue),r.toolTipValue===o.BLANK&&(a={height:p}),a.height>0&&(g=a.height+d),g>h&&(g=h));return i.heightUsed=g,{top:0,bottom:g}},t.prototype._manageSpaceHorizontal=function(e){var t,a,r,i=this.config,n=this.components.data,l=this.getFromEnv("chart"),s=l.config,c=l.getFromEnv("smartLabel"),u=s.dataLabelStyle,h=(0,o.pluckNumber)(parseInt(u.lineHeight,10),12),d=e,g=i.valuePadding,f=0,m=0;for(r=(t=n[m])&&t.config,c.useEllipsesOnOverflow(s.useEllipsesWhenOverflow),c.setStyle(u);m<1;m+=1)r&&r.displayValue!==p&&void 0!==r.displayValue&&i.showValue&&(a=c.getOriSize(r.displayValue),r.displayValue===o.BLANK&&(a={height:h}),a.height>0&&(f=a.width+g+2),f>d&&(f=d));return i.widthUsed=f,{top:0,right:f}},t.prototype.updateData=function(e,t,a){var o=this.config,r=o.maxValue,i=o.prevMin,n=this.getFromEnv("chart"),l=this.groupManager||this,s=this.getFromEnv("scale");this._setConfigure(e,t),this.setMaxMin(),o.maxValue===r&&o.minValue===i||(this.config.maxminFlag=!0),a&&(n._setAxisLimits(),s.draw(),l.draw())},t.prototype.setMaxMin=function(){var e,t,a=this.components.data,o=this.config,r=a.length,i=-Infinity,n=+Infinity;for(e=0;e<r;e++)a[e]&&(t=a[e].config,i=b(i,t.setValue,t.target),n=v(n,t.setValue,t.target));o.maxValue=i,o.minValue=n},t.prototype.draw=function(){var e,t,a,i,n,l,s,c,u,p,h,d,g,f,m,v,y,k,w,C,x,T,S,A,E,N=this.getFromEnv("chart"),O=N.getFromEnv("dataSource").chart,F=N.config,D=N.getChildren("canvas")[0],L=D.config,M=this.getGraphicalElement("backgroundRect")||[],R=F.canvasLeft,_=F.canvasTop,P=F.canvasWidth,V=F.canvasHeight,I=D.getContainer("canvasGroup"),G=this.getFromEnv("scale"),j=G.getLimit().min,B=G.getLimit().max,H=N.isHorizontal,W=this.getFromEnv("color-manager"),z=N.getFromEnv("animationManager");for(t=H?270:180,L.colorRangeFillMix=a=(0,o.getFirstDefinedValue)(O.colorrangefillmix,O.gaugefillmix,N.colorRangeFillMix,"{light-10},{dark-10},{light-10},{dark-10}"),L.colorRangeFillRatio=i=(0,o.getFirstDefinedValue)(O.colorrangefillratio,O.gaugefillratio,N.colorRangeFillRatio,O.gaugefillratio,"0,10,80,10"),L.colorRangeGetter=n=N.getFromEnv("colorRange"),L.colorArray=l=n&&n.getColorRangeArr(j,B),s=(0,o.pluck)(O.colorrangebordercolor,O.gaugebordercolor,"{dark-20}"),c=(0,o.pluckNumber)(O.colorrangeborderalpha,O.gaugeborderalpha,100),u=(0,o.pluckNumber)(O.showshadow,1),p=(0,o.pluckNumber)(O.showgaugeborder,O.showcolorrangeborder,0),L.colorRangeBorderThickness=h=p?(0,o.pluckNumber)(O.colorrangeborderthickness,O.gaugeborderthickness,2):0,m=N.getFromEnv("dataSource").colorrange&&l&&l.length||0,g=0,f=0;g<m;g+=1)d=l[g],A=d.minvalue-j,E=d.maxvalue-j,v=H?H?{x:R+A*P/(B-j),y:_,width:(E-A)*P/(B-j),height:V}:void 0:{x:R,y:_+(V-E*V/(B-j)),width:P,height:(E-A)*V/(B-j)},d.x=v.x,d.y=v.y,d.width=v.width,d.height=v.height,y=d.code,k=(0,r.convertColor)((0,o.getColorCodeString)((0,o.pluck)(d.bordercolor,y),s),(0,o.pluckNumber)(d.borderalpha,c)),w=W.parseColorMix(d.code,a),C=W.parseAlphaList(d.alpha,w.length),x=(0,o.pluckNumber)(d.borderAlpha,c),T=C.split(o.COMMASTRING),T=b.apply(Math,T),T=b(h&&x||0,T),e={x:v.x,y:v.y,width:v.width,height:v.height,r:0,"stroke-width":h,stroke:k,fill:(0,o.toRaphaelColor)({FCcolor:{color:w.toString(),ratio:i,alpha:C,angle:t}})},S=z.setAnimation({el:M[g]||"rect",attr:e,container:I,component:this,doNotRemove:!0,label:"backgroundRect"}),!M[g]&&this.addGraphicalElement("backgroundRect",S,!0),S.show(),S.shadow({apply:u,opacity:T/100}),f++;for(m=M&&M.length;m>f;)M&&M[m-1]&&this.removeGraphicalElement(M[m-1]),m--;this.drawPlot()},t.prototype.drawPlot=function(){var e,t,a,r,i,n,l,s,c,d,f,m,b,v,k,w,S,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W,z,U,X,K,Y=this.config,J=this.getState("visible"),Z=this.getFromEnv("chart"),q=Z.getChildren("caption")[0],$=Z.getChildren("subCaption")[0],Q=q&&q.config.text&&q.config.height||0,ee=q&&q.config.text&&q.config.captionPadding||0,te=$&&$.config.text&&$.config.height||0,ae=this.getFromEnv("toolTipController"),oe=Z.config,re=oe.canvasLeft,ie=oe.canvasRight,ne=oe.canvasTop,le=oe.canvasBottom,se=oe.canvasHeight,ce=oe.canvasWidth,ue=this.getFromEnv("smartLabel"),pe=this.getFromEnv("scale"),he=Z.getChildContainer().plotGroup,de=u,ge=Y.showTooltip,fe=this.components.data,me=Y.showShadow,be=Y.plotBorderThickness,ve=Y.plotRadius,ye=this.getContainer("container"),ke=this.getContainer("targetContainer"),we=this.getContainer("dataLabelContainer"),Ce=this.getContainer("shadowContainer"),xe=this.getContainer("shadowTargetContainer"),Te=!1,Se=Z.getChildContainer("datalabelsGroup"),Ae=Z.config.dataLabelStyle,Ee=Z.getFromEnv("animationManager"),Ne=Y.heightUsed,Oe=Y.lowerLimit,Fe=Y.showHoverEffect,De=function(e){Z.plotEventHandler(this,e)},Le=function(e){return function(t){0!==this.data(h)&&e.attr(this.data("setRolloverAttr")),Z.plotEventHandler(this,t,"DataPlotRollOver")}},Me=function(e){return function(t){0!==this.data(h)&&e.attr(this.data("setRolloutAttr")),Z.plotEventHandler(this,t,"DataPlotRollOut")}},Re=function(){this.hide()};for(S=Ee.setAnimation({el:ye||"group",attr:{name:"bar"},component:this,container:he,doNotRemove:!0,label:"group"}),ye||(S=this.addContainer("container",S)),N=Ee.setAnimation({el:we||"group",attr:{name:"datalabel"},component:this,container:Se,doNotRemove:!0,label:"labelGroup"}),we||(N=this.addContainer("dataLabelContainer",N)),E=Ee.setAnimation({el:ke||"group",attr:{name:"target"},container:he,doNotRemove:!0,component:this,label:"group"}),ke||(E=this.addContainer("targetContainer",E)),O=Ee.setAnimation({el:Ce||"group",attr:{name:"shadow"},component:this,container:he,doNotRemove:!0,label:"group"}),Ce||(O=this.addContainer("shadowContainer",O.toBack()),J||O.hide()),F=Ee.setAnimation({el:xe||"group",attr:{name:"shadow"},component:this,container:he,doNotRemove:!0,label:"group"}),xe||(F=this.addContainer("shadowTargetContainer",F.toBack()),J||F.hide()),ue.setStyle(Ae),t=0;t<1;t++)(v=(w=(f=fe[t])&&f.config).setValue)<0&&(Te=!0),b=w.setLink,D=w.colorArr,W=!1,f.graphics||(fe[t].graphics={}),k=w.displayValue,Z.isHorizontal?(c=Y.plotFillPercent/100*se,r=y(ne+le)/2-c/2,Y.plotAsDot?(a=pe.getPixel(v)-c/2,G=c):(z=Oe&&Oe<=v&&pe.config.axisRange.min>=0?Oe:0,a=Te?pe.getPixel(v):pe.getPixel(z),G=Te?pe.getPixel(0)-pe.getPixel(v):pe.getPixel(v)-pe.getPixel(z)),a=(i=de.crispBound(a,r,G,c,be)).x,r=i.y,s=i.width,c=i.height,d=w.toolText===o.BLANK?w.toolTipValue:w.toolText,L=w.plotBorderDashStyle,e={x:a,y:r,width:s||1,height:c,r:ve,fill:(0,o.toRaphaelColor)(D[0]),stroke:(0,o.toRaphaelColor)(D[1]),"stroke-width":be,"stroke-dasharray":L,"stroke-linejoin":g,visibility:J},null!==v&&(f.graphics.element&&f.graphics.element.show(),(b||ge)&&c<A&&(r-=(A-c)/2,c=A)),w.elemCreated=void 0!==f.graphics.element,v?m=f.graphics.element=Ee.setAnimation({el:f.graphics.element||"rect",attr:e,container:S,component:this,label:"plotRect"}):f.graphics.element&&Ee.setAnimation({el:f.graphics.element,component:this,doNotRemove:!0,callback:Re,label:"plotRect"}),m&&m.shadow({opacity:me},O).data("BBox",i),w.target&&(d=w.toolTipValueTarget,R=Y.targetFillPercent/100*se,M=["M",_=P=pe.getPixel(w.target),V=(ne+le)/2-R/2,"L",P,I=V+R],X={stroke:Y.targetColor,"stroke-width":Y.targetThickness,"stroke-linecap":Y.targetCapStyle,path:M,"shape-rendering":C[!1]},f.graphics.targetElement&&f.graphics.targetElement.show()),W=void 0===f.graphics.targetElement,K=f.graphics.targetElement=Ee.setAnimation({el:f.graphics.targetElement||"path",attr:X,container:E,component:this,doNotRemove:!0,callback:w.target?o.stubFN:Re,label:"path"}),w.target&&(m=f.graphics.targetElement),j=parseInt(Ae.lineHeight,10),r=.5*(ne+se),k!==p&&void 0!==k&&Y.showValue&&(k=(l=ue.getSmartText(k,Y.widthUsed,oe.height)).text,n=l.tooltext,U={text:k,"text-anchor":x,x:ie+Y.valuePadding+2,y:r,"vertical-align":o.POSITION_TOP,fill:Ae.color,direction:w.textDirection,"text-bound":[Ae.backgroundColor,Ae.borderColor,Ae.borderThickness,Ae.borderPadding,Ae.borderRadius,Ae.borderDash]},f.graphics.label&&f.graphics.label.show()),f.graphics.label=Ee.setAnimation({el:f.graphics.label||"text",attr:U,component:this,container:N,doNotRemove:!0,callback:k&&Y.showValue?o.stubFN:Re,label:"text"}),(B=f.graphics.label.getBBox()).x+oe.marginLeft<0&&(H=B.width-oe.marginLeft,oe.width<H&&(H=oe.width-oe.marginLeft),U.x=H/2,Ee.setAnimation({el:f.graphics.label,attr:U,component:this,doNotRemove:!0,callback:k&&Y.showValue?o.stubFN:Re,label:"text"}))):(G=Y.plotFillPercent/100*ce,a=y(re+ie)/2-G/2,Y.plotAsDot?(r=pe.getPixel(v)-G/2,c=G):(Y.base=z=Oe&&Oe<=v&&pe.config.axisRange.min>=0?Oe:0,r=Te?pe.getPixel(0):pe.getPixel(v),c=Te?pe.getPixel(v)-pe.getPixel(0):pe.getPixel(Oe&&Oe<=v&&pe.config.axisRange.min>=0?Oe:0)-r),a=(i=de.crispBound(a,r,G,c,be)).x,r=i.y,s=i.width,c=i.height,d=w.toolText===o.BLANK?w.toolTipValue:w.toolText,L=w.plotBorderDashStyle,e={x:a,y:r,width:s,height:c||1,r:ve,fill:(0,o.toRaphaelColor)(D[0]),stroke:(0,o.toRaphaelColor)(D[1]),"stroke-width":be,"stroke-dasharray":L,"stroke-linejoin":g,visibility:J},f._xPos=a,f._yPos=r+c,f._height=c,f._width=s,null!==v&&(f.graphics.element&&f.graphics.element.show(),(b||ge)&&c<A&&(r-=(A-c)/2,c=A)),w.elemCreated=void 0!==f.graphics.element,v?m=f.graphics.element=Ee.setAnimation({el:f.graphics.element||"rect",attr:e,container:S,component:this,label:"plotRect"}):f.graphics.element&&Ee.setAnimation({el:f.graphics.element,label:"plotRect",doNotRemove:!0,callback:Re,component:this}),m&&m.shadow({opacity:me},O).data("BBox",i),w.target&&(d=w.toolTipValueTarget,P=(_=(re+ie)/2-(R=Y.targetFillPercent/100*ce)/2)+R,M=["M",_,V=I=pe.getPixel(w.target),"L",P,I],X={stroke:Y.targetColor,"stroke-width":Y.targetThickness,"stroke-linecap":Y.targetCapStyle,path:M,"shape-rendering":C[!1]},f.graphics.targetElement&&f.graphics.targetElement.show()),W=void 0===f.graphics.targetElement,K=f.graphics.targetElement=Ee.setAnimation({el:f.graphics.targetElement||"path",attr:X,container:E,component:this,doNotRemove:!0,callback:w.target?o.stubFN:Re,label:"path"}),r=(j=parseInt(Ae.lineHeight,10))>Ne?oe.height-oe.marginBottom-Ne+j/2:oe.height-oe.marginBottom-j/2,r-=oe.borderWidth,r-=(Z._manageActionBarSpace&&Z._manageActionBarSpace(.225*w.availableHeight)||{}).bottom,0===q.config.isOnTop&&(r-=Q+te+ee),k!==p&&void 0!==k&&Y.showValue&&(k=(l=ue.getSmartText(k,oe.width,Ne)).text,n=l.tooltext||p,U={text:k,"text-anchor":T,x:ce/2+re,y:r,"vertical-align":T,fill:Ae.color,direction:w.textDirection,"text-bound":[Ae.backgroundColor,Ae.borderColor,Ae.borderThickness,Ae.borderPadding,Ae.borderRadius,Ae.borderDash]},f.graphics.label&&f.graphics.label.show()),f.graphics.label=Ee.setAnimation({el:f.graphics.label||"text",attr:U,component:this,container:N,doNotRemove:!0,callback:k&&Y.showValue?o.stubFN:Re,label:"text"}),(B=f.graphics.label.getBBox()).x+oe.marginLeft<0&&(H=B.width-oe.marginLeft,oe.width<H&&(H=oe.width-oe.marginLeft),U.x=H/2,Ee.setAnimation({el:f.graphics.label,attr:U,component:this,doNotRemove:!0,callback:k&&Y.showValue?o.stubFN:Re,label:"text"}))),f.graphics.element&&(f.graphics.element.data(h,Fe).data("setRolloverAttr",w.setPlotRolloverAttr||{}).data("setRolloutAttr",w.setPlotRolloutAttr||{}),w.elemCreated||f.graphics.element.on("fc-click",De).hover(Le(f.graphics.element),Me(f.graphics.element)),ge?(ae.enableToolTip(K,d),ae.enableToolTip(f.graphics.element,w.toolText),ae.enableToolTip(f.graphics.label,n)):(ae.disableToolTip(K),ae.disableToolTip(f.graphics.element),ae.disableToolTip(f.graphics.label))),W&&K.on("fc-click",De).hover(Le(K),Me(K)),K.shadow({opacity:me},O).data("BBox",i).data("eventArgs",void 0).data("groupId",void 0).data(h,Fe).data("setRolloverAttr",w.tagetHoverAttr).data("setRolloutAttr",w.targetOutAttr)},t.prototype.getDataLimits=function(){var e,t,a,o=this.config,r=this.pointerArr&&this.pointerArr.pointer,i=this.getFromEnv("chart").getFromEnv("dataSource").colorrange,n=i&&i.color,l=r&&r.length,s=o.upperLimit,c=o.lowerLimit,u=o.maxValue,p=o.minValue;for(l=n&&n.length,e=0;e<l;e++)t=Number(n[e].maxvalue),a=Number(n[e].minvalue),s&&t>s&&(t=s),c&&a<c&&(a=c),u=b(u,t),p=v(p,a);return{forceMin:!0,forceMax:!0,max:u,min:p}},t}(n["default"]);t["default"]=E},631:function(e,t,a){"use strict";t.__esModule=!0;var o=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.bullet":function(){var e=this.config,t=this.getFromEnv("chart"),a=this.getFromEnv("scale"),r=a.max,i=a.min,n=r<=0&&i<0?r:r>0&&i>=0?i:0,l=a.yBasePos=a.getPixel(n);return{"plotRect.appearing":function(){var o,r=t.isHorizontal;return e.plotAsDot||(l=a.getPixel(e.base)),o=r?{width:0}:{height:0,y:l},[{initialAttr:function(){return o},slot:"middle"}]},"plotRect.updating":null,"path.appearing":function(){return o[0].slot="middle",o},"path.updating":null,"text.appearing":function(){return o[0].slot="final",o},"text.updating":null,"labelGroup.appearing":function(){return o[0].slot="final",o},"labelGroup.updating":null,"backgroundRect.appearing":function(){return o[0].slot="initial",o},"backgroundRect.updating":null}}}},632:function(e,t,a){"use strict";t.__esModule=!0;var o=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.led":function(){var e=this.config,t=this.getFromEnv("chart").config,a=t.canvasLeft,r=t.canvasTop,i=t.canvasHeight,n=t.canvasWidth;return{"plotRect.appearing":function(){var t,o=e.isAxisReverse,l=e.isHorizontal;return o&&!l?t={y:r,height:i}:o||l?!o&&l?t={x:a,width:n}:o&&l&&(t={width:n}):t={height:i},[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:t,finalAttr:{opacity:1},slot:"middle"}]},"plotRect.updating":null,"text.appearing":function(){return o[0].slot="final",o},"text.updating":null,"plotBackground.appearing":function(){return[Object.assign({},o[0],{slot:"initial"})]},"plotBackground.updating":null}}}},633:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=c(a(634)),n=c(a(606)),l=c(a(622)),s=a(616);function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var p=o.BLANK,h=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.showRTvalue=!1,a.canvasPadding=!1,a.isHorizontal=!0,a.isAxisOpposite=!1,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isAxisReverse=!1,a.minorTMNumber=4,a.isRealTime=!0,a.colorRange=!0,a.rtParserModify=!0,a.registerFactory("dataset",function(e){var t=e.getFromEnv("dataSource").pointers;(0,o.datasetFactory)(e,l["default"],"dataset",1,[t])},["vCanvas"]),a}return u(t,e),t.getName=function(){return"Hlineargauge"},t.prototype.getName=function(){return"Hlineargauge"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Horizontal Linear Gauge",t.hasLegend=!1,t.defaultDatasetType="hlineargauge",t.skipCanvasDrawing=!0},t.prototype.configure=function(t){e.prototype.configure.call(this,t);var a=this.getFromEnv("dataSource").colorrange;a&&a.color&&a.color.length?((0,o.componentFactory)(this,i["default"],"colorRange",1,[{colorRange:a,numberFormatter:this.getFromEnv("number-formatter")}]),this.addToEnv("colorRange",this.getChildren("colorRange")[0])):this.deleteFromEnv("colorRange")},t.prototype._configueTrendPoints=function(){var e,t,a,i,n,l=this.getFromEnv("dataSource"),s=this.config,c=s.style,u=l.trendpoints&&l.trendpoints.point,h=this.getFromEnv("scale").config,d=h.axisRange,g=d.max,f=d.min,m=h.scaleFactor||1,b=this.getFromEnv("color-manager"),v=s.trendPointConfig=[],y=l.chart,k=u.length;for(c.trendStyle={fontFamily:c.outCanfontFamily,color:c.outCancolor,fontSize:c.outCanfontSize},t=0;t<k;t++)e=u[t],n=(a=(0,o.pluckNumber)(e.startvalue,e.value))!==(i=(0,o.pluckNumber)(e.endvalue,a)),a<=g&&a>=f&&i<=g&&i>=f&&v.push({startValue:a,endValue:i,tooltext:(0,o.getValidValue)((0,o.parseUnsafeString)(e.markertooltext)),displayValue:(0,o.getValidValue)((0,o.parseUnsafeString)(e.displayvalue),n?p:this.getFromEnv("number-formatter").scale(a)),showOnTop:(0,o.pluckNumber)(e.showontop,y.ticksbelowgauge,1),color:(0,o.pluck)(e.color,b.getColor("trendLightColor")),textColor:e.color,alpha:(0,o.pluckNumber)(e.alpha,99),thickness:(0,o.pluckNumber)(e.thickness,1),dashStyle:Number(e.dashed)?(0,o.getDashStyle)(e.dashlen||2,e.dashgap||2):o.BLANK,useMarker:(0,o.pluckNumber)(e.usemarker,0),markerColor:(0,r.convertColor)((0,o.pluck)(e.markercolor,e.color,b.getColor("trendLightColor")),100),markerBorderColor:(0,r.convertColor)((0,o.pluck)(e.markerbordercolor,e.bordercolor,b.getColor("trendDarkColor")),100),markerRadius:(0,o.pluckNumber)((0,o.pluckNumber)(e.markerradius)*m,5),markerToolText:(0,o.getFirstValue)(e.markertooltext),trendValueDistance:(0,o.pluckNumber)((0,o.pluckNumber)(e.trendvaluedistance)*m,d.tickInterval),isTrendZone:n});o.stableSort&&(0,o.stableSort)(s.trendPointConfig,function(e,t){return e.startValue-t.startValue})},t.prototype._getData=function(e,t){return s._getData.call(this,e,t)},t.prototype._setData=function(e,t){s._setData.call(this,e,t)},t.prototype._getDataForId=function(e,t){return s._getDataForId.call(this,e,t)},t.prototype._setDataForId=function(e,t){s._setDataForId.call(this,e,t)},t}(n["default"]);t["default"]=h},634:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(118),i=a(582),n=a(131),l=(o=n)&&o.__esModule?o:{"default":o};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=(0,r.getComparatorFN)(!0,"minvalue"),u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.prototype.getType=function(){return"colorComponent"},t.prototype.getName=function(){return"colorGradient"},t.prototype.configure=function(e){var t,a,o,n,l,s,u,p,h,d,g=this,f=g.colorArr,m=g.getFromEnv("color-manager"),b=g.getFromEnv("number-formatter"),v=e.colorRange&&(0,r.extend2)({},e.colorRange).color,y=m.getColor("paletteColors");if(delete g.defaultAsigned,y instanceof Array||(y=m.getPlotColor(0)),v&&v.length>0){for(n=l=v.length-1;n>=0;n-=1)(a=v[n])&&(a.minvalue=b.getCleanValue(a.minvalue),a.maxvalue=b.getCleanValue(a.maxvalue),null===a.minvalue&&(null!==a.maxvalue?a.minvalue=a.maxvalue:n!==l&&v.splice(n,1)),void 0!==a.label&&(a.label=(0,r.parseUnsafeString)(a.label)),void 0!==a.name&&(a.name=(0,r.parseUnsafeString)(a.name)),null!==a.maxvalue&&a.minvalue>a.maxvalue&&(s=a.minvalue,a.minvalue=a.maxvalue,a.maxvalue=s));for(v.sort(c),v[0].code||(v[0].code=y[0]),void 0===(0,r.getValidValue)(v[0].alpha)&&(v[0].alpha=i.HUNDREDSTRING),n=0,l=v.length-1;n<l;n+=1)if(d=n+1,a=v[n],(o=v[d]).code||(o.code=y[d]),void 0===(0,r.getValidValue)(o.alpha)&&(o.alpha=i.HUNDREDSTRING),null===a.maxvalue&&(a.maxvalue=o.minvalue),a.maxvalue>o.minvalue){if(a.maxvalue>o.maxvalue){for((u=(0,r.extend2)(a)).maxvalue=a.maxvalue,h=u.minvalue=o.maxvalue,p=n+2;p<l&&v[p].minvalue<h;)p+=1;v.splice(p,0,u),l+=1}a.maxvalue=o.minvalue}null===(a=v[n]).maxvalue&&(a.maxvalue=a.minvalue)}v&&v.length||(t||(t={code:"CCCCCC",alpha:"100",bordercolor:"000000",borderalpha:"100"}),v=[t],g.defaultAsigned=!0),g.colorArr=v||f},t.prototype.getColorObj=function(e){for(var t,a,o=this.colorArr,r=0,i=o.length,n={};r<i;r+=1){if(n.index=r,t=o[r],a=o[r+1],e<t.minvalue)return n.nextObj=t,n;if(e>=t.minvalue&&e<=t.maxvalue)return n.colorObj=t,a&&e==a.minvalue&&(n.nextObj=a,n.isOnMeetPoint=!0),n;n.prevObj=t}return n.index=r-1,n},t.prototype.getColorRangeArr=function(e,t){var a,o,i,n,l,s,c,u,p=this.colorArr,h=[];if(!this.defaultAsigned&&(e>t&&(a=e,e=t,t=a),e<t&&(n=this.getColorObj(e),s=this.getColorObj(t),n&&s))){for(l=e,o=n.index,i=s.index;o<=i;o+=1)(c=(0,r.extend2)({},p[o])).minvalue!==l&&(c.minvalue=l),h.push(c),u=c,l=c.maxvalue;u.maxvalue=t}return h},t}(l["default"]);t["default"]=u},635:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(636)),n=s(a(604)),l=s(a(606));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.preDefStr.gaugeFillColorStr,p=o.preDefStr.gaugeBorderColorStr,h=function(e){return void 0!==e&&null!==e},d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.showRTvalue=!1,a.canvasPadding=!1,a.defaultPaletteOptions=(0,o.extend2)((0,o.extend2)({},o.defaultGaugePaletteOptions),{gaugeBorderColor:["545454","60634E","415D6F","845001","68001B"],gaugeFillColor:["999999","ADB68F","A2C4C8","FDB548","FF7CA0"],periodColor:["EEEEEE","ECEEE6","E6ECF0","FFF4E6","FFF2F5"]},!1,!0),a.isHorizontal=!1,a.isAxisOpposite=!0,a.hasCanvas=!0,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isAxisReverse=!1,a.isRealTime=!0,a.registerFactory("dataset",n["default"],["vCanvas"]),a}return c(t,e),t.getName=function(){return"Thermometer"},t.prototype.getName=function(){return"Thermometer"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.alignCaptionWithCanvas=1,t.friendlyName="Horizontal Linear Gauge",t.hasLegend=!1,t.defaultDatasetType="thermometer",t.animationeffect="easeOut",t.skipCanvasDrawing=!0},t.prototype._getData=function(){var e=this.getChildren("dataset");if(e&&e[0])return e[0].config.value},t.prototype._parseSpecialConfig=function(){var e,t=this.config,a=this.getFromEnv("dataSource").chart,i=this.getFromEnv("number-formatter"),n=this.getFromEnv("color-manager");t.use3DLighting=(0,o.pluckNumber)(a.use3dlighting,1),t.thmOriginX=(0,o.pluckNumber)(a.thmoriginx,a.gaugeoriginx),t.thmOriginY=(0,o.pluckNumber)(a.thmoriginy,a.gaugeoriginy),t.thmBulbRadius=(0,o.pluckNumber)(i.getCleanValue(a.thmbulbradius,!0)),t.thmHeight=(0,o.pluckNumber)(i.getCleanValue((0,o.pluckNumber)(a.thmheight,a.gaugeheight),!0)),t.origW=(0,o.pluckNumber)(a.origw),t.origH=(0,o.pluckNumber)(a.origh),t.xDefined=h(t.thmOriginX),t.yDefined=h(t.thmOriginY),t.rDefined=h(t.thmBulbRadius),t.hDefined=h(t.thmHeight),t.gaugeFillColor=(0,o.pluck)(a.gaugefillcolor,a.thmfillcolor,n.getColor(u)),t.gaugeFillAlpha=(0,o.pluckNumber)(a.gaugefillalpha,a.thmfillalpha,o.HUNDREDSTRING),t.showGaugeBorder=(0,o.pluckNumber)(a.showgaugeborder,1),e=t.showGaugeBorder?(0,o.pluckNumber)(a.gaugeborderalpha,40):0,t.gaugeBorderColor=(0,r.convertColor)((0,o.pluck)(a.gaugebordercolor,n.getColor(p)),e),t.gaugeBorderThickness=(0,o.pluckNumber)(a.gaugeborderthickness,1),t.gaugeContainerColor=(0,o.pluck)(a.thmglasscolor,(0,r.getLightColor)(t.gaugeFillColor,30))},t.prototype.allocatePosition=function(){var e=this.config,t=e.canvasLeft,a=e.canvasRight,o=e.canvasTop,r=e.canvasWidth,i=e.canvasHeight,n=e.canvasBottom;e.gaugeStartX=t,e.gaugeEndX=a,e.gaugeStartY=o,e.gaugeEndY=n,e.gaugeCenterX=t+.5*r,e.gaugeCenterY=o+.5*i,e.gaugeRadius=.5*r},t.prototype.getDSdef=function(){return i["default"]},t}(l["default"]);t["default"]=d},636:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=a(125),n=s(a(637)),l=s(a(613));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.preDefStr.configStr,p=o.preDefStr.POSITION_TOP,h=o.preDefStr.POSITION_MIDDLE,d="M",g="A",f="L",m="Z",b=window,v=b.navigator.userAgent,y="rgba(192,192,192,"+(/msie/i.test(v)&&!b.opera?.002:1e-6)+")";(0,i.addDep)({name:"thermometerAnimation",type:"animationRule",extension:n["default"]});var k=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.addData=function(){},a.removeData=function(){},a}return c(t,e),t.prototype.getName=function(){return"thermometer"},t.prototype.getType=function(){return"dataset"},t.prototype._manageSpace=function(){var e,t,a,r,i,n=this.getFromEnv("chart").config,l=n.width,s=n.height,c=n.canvasWidth,u=n.canvasHeight,p=n.canvasLeft,h=n.canvasRight,d=n.canvasTop,g=n.xDefined,f=n.yDefined,m=n.rDefined,b=n.hDefined,v=n.thmOriginX,y=n.thmOriginY,k=n.thmBulbRadius,w=n.thmHeight,C=function(e,t,a,r){return t=(0,o.pluckNumber)(t,r),e=(0,o.pluckNumber)(e,a),t&&e?e/a==t/r?a/e:Math.min(a/e,r/t):1}(n.origW,n.origH,l,s),x=0,T=0,S=0,A=0;return u-=r=this._getLabelSpace(),T+=r,m?k*=C:(k=Math.min(c/2,.13*(0,o.pluckNumber)(w,u)),m=!0),n.effectiveR=k,t=2*(e=.643*k),a=1.766*k,x+=e,d+=e,u-=e,g?i=(v*=C)-e-p:(i=(h-p)/2-e)+t>c&&(i=c-t),S+=i,p+=i,A+=(c-=i)-t,f&&(y*=C),b?(w*=C,f?x+=y-w-d:y=d+w):f?w=y-d:y=d+(w=Math.max(u-a,3*k)),{top:x,bottom:T+=d+u-y,left:S,right:A}},t.prototype.draw=function(){var e,t,a,i,n,l,s,c,b,v,k,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V,I,G,j,B,H,W=this,z=W.config,U=W.getFromEnv("smartLabel"),X=W.getFromEnv("chart"),K=X.getChildContainer("datalabelsGroup"),Y=X.getChildContainer("trackerGroup"),J=W.getFromEnv("toolTipController"),Z=W.getFromEnv("scale"),q=X.getChildContainer().plotGroup,$=X.get(u),Q=$.canvasLeft,ee=$.canvasTop,te=$.canvasHeight,ae=$.effectiveR||10,oe=.643*ae,re=$.use3DLighting,ie=Q+oe,ne=ee-oe,le=te,se=Math.abs($.width-$.canvasRight-Q),ce=ne+oe,ue=ce+le,pe=ue+.766*ae,he=(0,o.pluckNumber)(z.value,Z.getLimit().min),de=.33*oe,ge=ne+de,fe=Z.getPixel(he),me=.9*oe,be=oe-de,ve=ae+me-oe,ye=ie-oe,ke=ie+oe,we=ie-be,Ce=ie+be,xe=ie-me,Te=ie+me,Se=parseInt(ie-.6*oe,10),Ae=ie+oe/2,Ee=z.thmBaseY=pe-Math.abs(Math.sqrt(ve*ve-me*me)),Ne=W.getContainer("container"),Oe=W.getGraphicalElement("fluid"),Fe=W.getGraphicalElement("topLightGlow"),De=W.getGraphicalElement("topLight"),Le=W.getGraphicalElement("label"),Me=W.getContainer("dataLabelContainer"),Re=W.getGraphicalElement("canvasBorderElement"),_e=W.getGraphicalElement("bulbBorderLight"),Pe=W.getGraphicalElement("bulbTopLight"),Ve=W.getGraphicalElement("bulbCenterLight"),Ie=W.getContainer("trackerContainer"),Ge=W.getGraphicalElement("cylLeftLight"),je=W.getGraphicalElement("cylRightLight"),Be=W.getGraphicalElement("cylLeftLight1"),He=W.getGraphicalElement("cylRightLight1"),We=W.getGraphicalElement("hotElement"),ze=(0,r.getDarkColor)(z.gaugeFillColor,re?70:80),Ue=z.gaugeFillAlpha,Xe=z.gaugeContainerColor,Ke=(0,r.getDarkColor)(Xe,80),Ye=(0,r.getLightColor)(Xe,80),Je=z.gaugeBorderThickness,Ze=z.gaugeBorderColor,qe=z.showHoverEffect,$e=z.plotFillHoverAlpha,Qe=z.plotFillHoverColor,et=W.getFromEnv("animationManager"),tt=X.config.dataLabelStyle,at=z.fluidAttr;at||(at=z.fluidAttr={}),qe&&(at.hover={fill:(0,r.convertColor)((0,r.getDarkColor)(Qe,re?70:80),$e)}),at.out={fill:(0,r.convertColor)(ze,Ue)},O=[d,we,ne,g,de,de,0,0,0,ye,ge,f,ye,ue,g,ae,ae,0,1,0,ke,ue,f,ke,ge,g,de,de,0,0,0,Ce,ne,m],D={value:z.value,displayValue:z.displayValue,toolText:z.toolText},at.out.path=[d,xe,Ee,g,ve,ve,0,1,0,Te,Ee,f,Te,fe,xe,fe,m],at.out["stroke-width"]=0,L={"stroke-width":Je,stroke:Ze,path:O},M={path:[d,xe,ce,f,Te,ce],stroke:(0,r.convertColor)(ze,40)},R={path:O},n=et.setAnimation({el:Ne||"group",attr:{name:"thermometer"},container:q,component:W,label:"group"}),!Ne&&W.addContainer("container",n),v=et.setAnimation({el:Re||"path",attr:L,container:n,component:W,label:"path"}),!Re&&W.addGraphicalElement("canvasBorderElement",v),l=et.setAnimation({el:Oe||"path",attr:at.out,container:n,component:W,label:"plot"}),!Oe&&W.addGraphicalElement("fluid",l),c=et.setAnimation({el:De||"path",attr:M,container:n,component:W,label:"path"}),!De&&W.addGraphicalElement("topLight",c),re?(_={path:[d,xe,ce,f,Te,ce,Te,ge,xe,ge,m],"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:ze+o.COMMASTRING+ze,alpha:"40,0",ratio:"0,80",radialGradient:!0,cx:.5,cy:1,r:"70%"}})},s=et.setAnimation({el:Fe||"path",attr:_,container:n,component:W,label:"path"}),!Fe&&W.addGraphicalElement("topLightGlow",s),P={path:F=[d,ye,ue,g,ae,ae,0,0,1,ke,ue,g,ae,ae,0,0,0,ye,ue,g,ae,ae,0,1,0,ke,ue,m],"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{cx:.5,cy:.5,r:"50%",color:Ke+o.COMMASTRING+Ye,alpha:"0,50",ratio:"78,30",radialGradient:!0}})},k=et.setAnimation({el:_e||"path",attr:P,container:n,component:W,label:"path"}),!_e&&W.addGraphicalElement("bulbBorderLight",k),V={path:F,"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{cx:.3,cy:.1,r:"100%",color:Ye+o.COMMASTRING+Ke,alpha:"60,0",ratio:"0,30",radialGradient:!0}})},w=et.setAnimation({el:Pe||"path",attr:V,container:n,component:W,label:"path"}),!Pe&&W.addGraphicalElement("bulbTopLight",w),I={path:F,"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{cx:.25,cy:.7,r:"100%",color:Ye+o.COMMASTRING+Ke,alpha:"80,0",ratio:"0,70",radialGradient:!0}})},C=et.setAnimation({el:Ve||"path",attr:I,container:n,component:W,label:"path"}),!Ve&&W.addGraphicalElement("bulbCenterLight",C),G={path:[d,ie,ne,f,we,ne,g,de,de,0,0,0,ye,ge,f,ye,ue,ie,ue,m],"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:Ye+o.COMMASTRING+Ke,alpha:"50,0",ratio:"0,80",angle:0}})},T=et.setAnimation({el:Ge||"path",attr:G,container:n,component:W,label:"path"}),!Ge&&W.addGraphicalElement("cylLeftLight",T),j={path:[d,ye,ne,f,Ce,ne,g,de,de,0,0,1,ke,ge,f,ke,ue,ye,ue,m],"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:Ye+o.COMMASTRING+Ke+o.COMMASTRING+Ke,alpha:"50,0,0",ratio:"0,40,60",angle:180}})},S=et.setAnimation({el:je||"path",attr:j,container:n,component:W,label:"path"}),!je&&W.addGraphicalElement("cylRightLight",S),B={path:[d,Se,ge,f,ye,ge,ye,ue,Se,ue,m],"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:Ye+o.COMMASTRING+Ke,alpha:"60,0",ratio:"0,100",angle:180}})},A=et.setAnimation({el:Be||"path",attr:B,container:n,component:W,label:"path"}),!Be&&W.addGraphicalElement("cylLeftLight1",A),H={path:[d,Se-.01,ge,f,Ae,ge,Ae,ue,Se-.01,ue,m],"stroke-width":0,fill:(0,o.toRaphaelColor)({FCcolor:{color:Ye+o.COMMASTRING+Ke,alpha:"60,0",ratio:"0,100",angle:0}})},E=et.setAnimation({el:He||"path",attr:H,container:n,component:W,label:"path"}),!He&&W.addGraphicalElement("cylRightLight1",E)):(W.removeGraphicalElement(Fe),W.removeGraphicalElement(_e),W.removeGraphicalElement(Pe),W.removeGraphicalElement(Ve),W.removeGraphicalElement(Ge),W.removeGraphicalElement(je),W.removeGraphicalElement(Be),W.removeGraphicalElement(He)),x=et.setAnimation({el:Ie||"group",attr:{name:"col-hot"},container:Y,component:W,label:"group"}),!Ie&&W.addContainer("trackerContainer",x),R.stroke=R.fill=y,N=et.setAnimation({el:We||"path",attr:R,container:x,component:W,label:"path"}),We||(W.addGraphicalElement("hotElement",N),N.on("fc-click",function(e){X.plotEventHandler(this,e)}).hover(function(e){z.showHoverEffect&&W.getGraphicalElement("fluid")&&W.getGraphicalElement("fluid").attr(at.hover),X.plotEventHandler(this,e,"DataPlotRollOver")},function(e){z.showHoverEffect&&W.getGraphicalElement("fluid")&&W.getGraphicalElement("fluid").attr(at.out),X.plotEventHandler(this,e,"DataPlotRollOut")})),z.toolText?J.enableToolTip(N,z.toolText):J.disableToolTip(N),N.data("eventArgs",D),b=et.setAnimation({el:Me||"group",attr:{name:"datalabel"},container:K,component:W,label:"labelGroup"}),U.setStyle(tt),Me||W.addContainer("dataLabelContainer",b),z.showValue&&(e=pe+ae+(z.valuePadding||0),a=(i=U.getSmartText(z.displayValue,$.width-$.marginLeft-$.marginRight-se/2,$.height-e-$.marginBottom)).tooltext||o.BLANKSTRING,t=et.setAnimation({el:Le||"text",attr:{text:i.text,x:ie,y:e,"text-anchor":h,"vertical-align":p,fill:tt.color,"text-bound":[tt.backgroundColor,tt.borderColor,tt.borderThickness,tt.borderPadding,tt.borderRadius,tt.borderDash]},container:b,component:W,label:"text"}),z.showTooltip?J.enableToolTip(t,a):J.disableToolTip(t),Le||W.addGraphicalElement("label",t),t.show())},t}(l["default"]);t["default"]=k},637:function(e,t,a){"use strict";t.__esModule=!0;var o=[{initialAttr:function(){return{opacity:0}},finalAttr:function(){return{opacity:1}}}];t["default"]={"initial.dataset.thermometer":function(){var e=this.config;return{"plot.appearing":function(t){var a=t.attr.path.slice(0);return a[13]=a[15]=e.thmBaseY,[{initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"initial"},{initialAttr:{path:a},finalAttr:{opacity:1},slot:"middle"}]},"plot.updating":null,"text.appearing":function(){return o[0].slot="final",o},"text.updating":null,"labelGroup.appearing":function(){return o[0].slot="final",o},"labelGroup.updating":null,"path.appearing":function(){return o[0].slot="initial",o},"path.updating":null}}}},638:function(e,t,a){"use strict";t.__esModule=!0;var o=n(a(639)),r=n(a(640)),i=a(642);function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.showValues=0,a._parseCanvasCosmetics=i._parseCanvasCosmetics,a._placeOpenCloseValues=i._placeOpenCloseValues,a.defaultPlotShadow=0,a.axisPaddingLeft=0,a.axisPaddingRight=0,a}return l(t,e),t.getName=function(){return"SparkLine"},t.prototype.getName=function(){return"SparkLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="SparkLine Chart",t.singleseries=!0,t.defaultDatasetType="sparkline",t.showvalues=0,t.enablemousetracking=!0},t.prototype.getDSdef=function(){return r["default"]},t}(o["default"]);t["default"]=s},639:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(118),i=a(258),n=(o=i)&&o.__esModule?o:{"default":o};function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=Math,c=s.min,u=s.max,p=s.ceil,h=(0,r.extend2)({},r.defaultGaugePaletteOptions),d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.showBorder=0,a.chartTopMargin=3,a.chartRightMargin=3,a.chartBottomMargin=3,a.chartLeftMargin=3,a.canvasborderthickness=0,a.subTitleFontSizeExtender=0,a.subTitleFontWeight=0,a.defaultPaletteOptions=(0,r.extend2)((0,r.extend2)({},h),{paletteColors:[["555555","A6A6A6","CCCCCC","E1E1E1","F0F0F0"],["A7AA95","C4C6B7","DEDFD7","F2F2EE"],["04C2E3","66E7FD","9CEFFE","CEF8FF"],["FA9101","FEB654","FED7A0","FFEDD5"],["FF2B60","FF6C92","FFB9CB","FFE8EE"]],bgColor:["FFFFFF","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["100","60,50","40,20","20,10","30,30"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:[r.BLANKSTRING,r.BLANKSTRING,r.BLANKSTRING,r.BLANKSTRING,r.BLANKSTRING],canvasBorderColor:["BCBCBC","BEC5A7","93ADBF","C97901","FF97B1"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["333333","60634E","025B6A","A15E01","68001B"],trendColor:["666666","60634E","415D6F","845001","68001B"],plotFillColor:["666666","A5AE84","93ADBF","C97901","FF97B1"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],periodColor:["EEEEEE","ECEEE6","E6ECF0","FFF4E6","FFF2F5"],winColor:["666666","60634E","025B6A","A15E01","FF97B1"],lossColor:["CC0000","CC0000","CC0000","CC0000","CC0000"],drawColor:["666666","A5AE84","93ADBF","C97901","FF97B1"],scorelessColor:["FF0000","FF0000","FF0000","FF0000","FF0000"]},!1,!0),a}return l(t,e),t.getName=function(){return"SparkChartBase"},t.prototype.getName=function(){return"SparkChartBase"},t.prototype._fetchCaptionPos=function(){return this.getChildren("caption")[0].config.isOnLeft,-1},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t);var a=this.getFromEnv("dataSource").chart,o=this.config;o.origCanvasLeftMargin=(0,r.pluckNumber)(a.canvasleftmargin),o.origCanvasRightMargin=(0,r.pluckNumber)(a.canvasrightmargin),o.origCanvasTopMargin=(0,r.pluckNumber)(a.canvastopmargin),o.origCanvasBottomMargin=(0,r.pluckNumber)(a.canvasbottommargin),o.showBorder=(0,r.pluckNumber)(a.showborder,0)},t.prototype._spaceManager=function(){var e,t,a,o,r,i,n,l,s,c,p=this.config,h=p.canvasBaseDepth,d=this.getChildren("canvas")[0],g=d.config.canvasBorderWidth,f=p.borderWidth,m=p.canvasMarginTop,b=p.canvasMarginBottom,v=p.canvasMarginLeft,y=p.canvasMarginRight,k=p.minCanvasHeight,w=p.minCanvasWidth,C=p.height,x=p.width,T=!1,S=!1,A=p.origCanvasTopMargin,E=p.origCanvasBottomMargin,N=p.origCanvasLeftMargin,O=p.origCanvasRightMargin;this._allocateSpace({top:f,bottom:f,left:f,right:f}),t=.325*p.availableHeight,this._getDSspace&&this._allocateSpace(this._getDSspace(t)),this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*p.availableHeight)||{}),p.availableWidth=p.width,e=(e=.75*p.availableWidth)-p.origMarginLeft-p.origMarginRight-2*p.borderWidth,e=u(.1*p.availableWidth,e),this._manageChartMenuBar(e),e=.75*(p.availableWidth-2*p.borderWidth),this._placeOpenCloseValues&&this._allocateSpace(this._placeOpenCloseValues(e)),this._allocateSpace({top:g,bottom:g,left:g,right:g}),this._allocateSpace({bottom:h}),k>C-m-b&&(T=!0,a=p.canvasHeight-k,c=m+b,m=p.canvasMarginTop=a*m/c,b=p.canvasMarginBottom=a*b/c),w>x-v-y&&(S=!0,a=p.canvasWidth-w,c=v+y,v=p.canvasMarginLeft=a*v/c,y=p.canvasMarginRight=a*y/c),o=m>p.canvasTop?m-p.canvasTop:0,r=b>C-p.canvasBottom?b+p.canvasBottom-C:0,i=v>p.canvasLeft?v-p.canvasLeft:0,n=y>x-p.canvasRight?y+p.canvasRight-x:0,this._allocateSpace({top:o,bottom:r,left:i,right:n}),T&&(c=A+E,(l=p.canvasHeight)>k&&(o=(a=l-k)*A/c,r=a*E/c),this._allocateSpace({top:o,bottom:r})),S&&(c=N+O,(s=p.canvasWidth)>w&&(i=(a=s-w)*N/c,n=a*O/c),this._allocateSpace({left:i,right:n})),void 0!==p.origCanvasLeftMargin&&(p.canvasWidth=u(p.canvasWidth+p.canvasLeft-p.origCanvasLeftMargin,.2*p.availableWidth),p.canvasLeft=p.origCanvasLeftMargin),d.setDimension({top:p.canvasTop,left:p.canvasLeft,width:p.canvasWidth,height:p.canvasHeight})},t.prototype._manageCaptionSpacing=function(e){var t,a,o,i,n,l=this.config,s=this.getChildren(),h=s.caption&&s.caption[0],d=s.subCaption&&s.subCaption[0],g=h.config,f=d.config,m=h.components,b=this.getFromEnv("dataSource").chart,v=this.getFromEnv("smartLabel"),y=(0,r.parseUnsafeString)(b.caption),k=(0,r.parseUnsafeString)(b.subcaption),w=g.captionPadding=(0,r.pluckNumber)(b.captionpadding,2),C=s.chartMenuBar,x=C&&C.getLogicalSpace(),T=l.height-(x&&x.height||0),S=0,A=0,E=u(s.canvas&&s.canvas[0].config.canvasBorderThickness,0),N=0,O=e,F={};return.7*T>3&&(w<E&&(w=E+2),g.captionPadding=f.captionPadding=w,y!==r.BLANKSTRING&&(i=g.style,S=g.captionLineHeight=p(parseFloat((0,r.pluck)(i.fontHeight,i.lineHeight),10),12)),k!==r.BLANKSTRING&&(n=f.style,A=p(parseInt((0,r.pluck)(n.lineHeight,n.fontHeight),10),12)),v.useEllipsesOnOverflow(l.useEllipsesWhenOverflow),(S>0||A>0)&&(v.setStyle(i),(a=v.getSmartText(y,O,T)).width>0&&(a.width+=2,N=a.height),v.setStyle(n),(o=v.getSmartText(k,O,T-N)).width>0&&(o.width+=2),g.captionSubCaptionGap=a.height+0+.2*A,t=Math.max(a.width,o.width),g.height=N=a.height,g.width=a.width,g.tooltext&&(m.originalText=a.tooltext),f.height=N=o.height,f.width=o.width,f.tooltext&&(m.originalText=o.tooltext),t=Math.max(a.width,o.width),g.captionPadding=w=c(e-t,w),t>0&&(t=c(e,t+w)),g.maxCaptionWidth=f.maxCaptionWidth=t,g.isOnLeft?F.left=t:F.right=t)),F},t.prototype._manageCaptionPosition=function(){var e=this.config,t=this.getChildren("caption")[0],a=this.getChildren("subCaption")[0],o=t.config,i=a.config,n=o.captionPosition,l=u(o.width,i.width),s=e.borderWidth||0,c=e.height,p=(e.sparkValues||{}).openValueWidth||0,h=o.captionPadding,d=o.captionSubCaptionGap;switch(n){case r.POSITION_MIDDLE:o.y=(c-(o.height+i.height))/2+.5*(o._offsetHeight||0);break;case r.POSITION_BOTTOM:o.y=c-(o.height+i.height)-e.marginBottom-s;break;default:o.y=e.marginTop+s+(o._offsetHeight||0)}i.y=o.y+d,o.isOnLeft?(o.align=i.align=r.POSITION_END,o.x=i.x=e.canvasLeft-(s+p+2+h)+e.borderWidth):(o.align=i.align=r.POSITION_START,o.x=i.x=e.width-e.marginRight-l-s)},t.prototype._feedAxesRawData=function(){var t=e.prototype._feedAxesRawData.call(this),a=t.xAxisConf[0],o=t.yAxisConf[0],i=this.getFromEnv("chart-attrib"),n=this.getFromEnv("color-manager"),l=(0,r.pluckNumber)(i.periodlength,0);return a.lines=o.lines=a.band=o.band={isDraw:0},l&&(a.alternateGridColor=(0,r.pluck)(i.periodcolor,n.getColor("periodColor")),a.alternateGridAlpha=(0,r.pluck)(i.periodalpha,100),a.showAlternateGridColor=!0,a.categoryDivLinesFromZero=0,a.periodLength=l,a.band={isDraw:1}),t},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource").dataset;if(!(e&&e.length&&e[0].data&&e[0].data.length))return!0},t}(n["default"]);t["default"]=d},640:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(346)),n=a(125),l=s(a(641));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}(0,n.addDep)({name:"sparklineAnimation",type:"animationRule",extension:l["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"sparkLine"},t.prototype.parseAttributes=function(){e.prototype.parseAttributes.call(this);var t=this.getFromEnv("chart"),a=this.config,r=this.config.JSONData,i=t.getFromEnv("chart-attrib");a.showValues=(0,o.pluckNumber)(r.showvalues,i.showvalues,0),a.linethickness=(0,o.pluckNumber)(r.linethickness,i.linethickness,1)},t.prototype._setConfigure=function(t){e.prototype._setConfigure.call(this);var a,i,n,l,s,c,u,p,h,d,g,f,m,b,v,y,k,w=this.getFromEnv("chart"),C=this.config,x=this.config.JSONData,T=w.getFromEnv("dataSource").chart,S=t||x.data,A=this.getFromEnv("xAxis"),E=t&&t.data.length||A.getTicksLen(),N=this.getFromEnv("color-manager"),O=w.config,F=(0,r.parseColor)((0,o.pluck)(T.opencolor,"0099FF")),D=(0,r.parseColor)((0,o.pluck)(T.closecolor,"0099FF")),L=(0,r.parseColor)((0,o.pluck)(T.highcolor,"00CC00")),M=(0,r.parseColor)((0,o.pluck)(T.lowcolor,"CC0000")),R=(0,r.parseColor)((0,o.pluck)(T.anchorcolor,N.getColor("plotFillColor"))),_=(0,o.pluckNumber)(T.showopenanchor,T.drawanchors,T.showanchors,1),P=(0,o.pluckNumber)(T.showcloseanchor,T.drawanchors,T.showanchors,1),V=(0,o.pluckNumber)(T.showhighanchor,T.drawanchors,T.showanchors,1),I=(0,o.pluckNumber)(T.showlowanchor,T.drawanchors,T.showanchors,1),G=(0,o.pluckNumber)(T.anchoralpha,100),j=(0,o.pluckNumber)(T.drawanchors,T.showanchors,0)?(0,o.pluckNumber)(T.anchoralpha,100):0,B=(0,o.pluck)(T.linecolor,N.getColor("plotFillColor"));for(n=this.components.data,p=C.maxValue,h=C.minValue,C.shadow={opacity:(0,o.pluckNumber)(T.showshadow,0)?C.alpha/100:0},(l=(i=n[0]).config).anchorProps.bgColor=(0,o.pluck)(i.anchorbgcolor,F),l.anchorProps.enabled=!!_,l.anchorProps.bgAlpha=_?d:0,l.anchorProps.enabled&&l.hoverEffects&&(l.hoverEffects.anchorColor=(0,o.pluck)(T.openhovercolor,T.anchorhovercolor,T.plotfillhovercolor,(0,r.getLightColor)(F,70)),l.hoverEffects.anchorBgAlpha=(0,o.pluckNumber)(T.openhoveralpha,T.anchorhoveralpha,T.plotfillhoveralpha,100)),m=l.displayValue,(l=(i=n[E-1]).config).anchorProps.bgColor=(0,o.pluck)(i.anchorbgcolor,D),l.anchorProps.enabled=!!P,l.anchorProps.bgAlpha=P?d:0,l.anchorProps.enabled&&l.hoverEffects&&(l.hoverEffects.anchorColor=(0,o.pluck)(T.closehovercolor,T.anchorhovercolor,T.plotfillhovercolor,(0,r.getLightColor)(D,70)),l.hoverEffects.anchorBgAlpha=(0,o.pluckNumber)(T.closehoveralpha,T.anchorhoveralpha,T.plotfillhoveralpha,100)),y=l.displayValue,s=0;s<E;s++)l=(i=n[s]).config,a=S[s],d=(0,o.pluckNumber)(a.anchorbgalpha,G),C.maxRadius=-Infinity,0!==s&&s!==E-1&&(l.anchorProps.bgColor=(0,o.pluck)(a.anchorbgcolor,R),l.anchorProps.bgAlpha=(0,o.pluckNumber)(a.anchorbgalpha,j),l.hoverEffects.anchorColor=(0,r.parseColor)((0,o.pluck)(T.anchorhovercolor,T.plotfillhovercolor,(0,r.getLightColor)(B,70))),l.hoverEffects.anchorBgAlpha=(0,o.pluckNumber)(T.lowhoveralpha,T.anchorhoveralpha,T.plotfillhoveralpha,100)),l.anchorProps.radius=(0,o.pluckNumber)(T.anchorradius,a.anchorradius,2),l.anchorProps.borderThickness=0,l.hoverEffects.anchorBorderThickness=0,l.hoverEffects.anchorRadius=(0,o.pluckNumber)(T.anchorhoverradius,T.anchorradius,a.anchorradius,3),C.maxRadius=Math.max(l.anchorProps.radius+l.anchorProps.borderThickness/2,C.maxRadius),l.setValue===h&&(l.anchorProps.bgColor=(0,o.pluck)(a.anchorbgcolor,M),l.hoverEffects.anchorColor=(0,o.pluck)(T.lowhovercolor,T.anchorhovercolor,T.plotfillhovercolor,(0,r.getLightColor)(M,70)),l.hoverEffects.anchorBgAlpha=(0,o.pluckNumber)(T.lowhoveralpha,T.anchorhoveralpha,T.plotfillhoveralpha,100),l.anchorProps.enabled=!!I,l.anchorProps.bgAlpha=I?d:0,f=l.displayValue),l.setValue===p&&(l.anchorProps.bgColor=(0,o.pluck)(a.anchorbgcolor,L),l.hoverEffects.anchorColor=(0,o.pluck)(T.highhovercolor,T.anchorhovercolor,T.plotfillhovercolor,(0,r.getLightColor)(L,70)),l.hoverEffects.anchorBgAlpha=(0,o.pluckNumber)(T.highhoveralpha,T.anchorhoveralpha,T.plotfillhoveralpha,100),l.anchorProps.enabled=!!V,l.anchorProps.bgAlpha=V?d:0,g=l.displayValue),void 0!==(k=l.setValue)&&null!==k&&(u=1),l._x=s,l._y=l.setValue;for(c=O.sparkValues={openValue:{color:F},closeValue:{color:D},highValue:{color:L},lowValue:{color:M},highLowValue:{}},u&&(c.openValue.label=(0,o.pluckNumber)(T.showopenvalue,1)?m:o.BLANKSTRING,c.closeValue.label=(0,o.pluckNumber)(T.showclosevalue,1)?y:o.BLANKSTRING,(0,o.pluckNumber)(T.showhighlowvalue,1)&&(c.highLowValue.label="["+g+" | "+f+"]",c.highValue.label=g,c.lowValue.label=f)),s=0;s<E;s++){var H=n[s].config;void 0!==H.setTooltext&&(b=[54,55,56,57,58,59,60,61],v={openValue:c.openValue.label,openDataValue:c.openValue.label,closeValue:c.closeValue.label,closeDataValue:c.closeValue.label,highValue:c.highValue.label,highDataValue:c.highValue.label,lowValue:c.lowValue.label,lowDataValue:c.lowValue.label},H.toolText=(0,o.parseTooltext)(H.setTooltext,b,v,a,T,x),H.finalTooltext=H.setTooltext=H.toolText)}},t.prototype.draw=function(){e.prototype.draw.call(this),this._drawSparkValues()},t.prototype._drawSparkValues=function(){(function(){var e,t,a,r,i,n,l,s=this.getFromEnv("chart"),c=s.config,u=c.dataLabelStyle,p=c.valuepadding+2,h=this.getContainer("labelGroup"),d=this.getFromEnv("animationManager"),g=this.getGraphicalElement("closeValue"),f=this.getGraphicalElement("openValue"),m=this.getGraphicalElement("startBraces"),b=this.getGraphicalElement("highValue"),v=this.getGraphicalElement("separator"),y=this.getGraphicalElement("lowValue"),k=this.getGraphicalElement("endBraces"),w=c.sparkValues||(c.sparkValues={}),C=this.getFromEnv("smartLabel"),x="[",T="]",S="|",A={"class":"fusioncharts-label","text-anchor":o.POSITION_END,fill:u.color,"font-size":u.fontSize,"font-weight":u.fontWeight,"font-style":u.fontStyle,"font-family":u.fontFamily,visibility:"visible"},E={x:0,y:0};s.getChildContainer("datalabelsGroup").attr({"clip-rect":null}),E.y=.5*c.canvasHeight+c.canvasTop,E.x=c.canvasLeft-p,(w.openValue&&w.openValue.label||t)&&(t=d.setAnimation({el:f||"text",state:"appearing",container:h,attr:{text:w.openValue.label,x:E.x,y:E.y,fill:w.openValue.color||A.fill,"text-anchor":o.POSITION_END,"line-height":u.lineHeight,"text-bound":[u.backgroundColor,u.borderColor,u.borderThickness,u.borderPadding,u.borderRadius,u.borderDash],visibility:"visible"},label:"label",component:this}),f||this.addGraphicalElement("openValue",t)),A["text-anchor"]=o.POSITION_START,E.x=c.canvasWidth+c.canvasLeft+p,(w.closeValue&&w.closeValue.label||e)&&(e=d.setAnimation({el:g||"text",container:h,state:"appearing",attr:{text:w.closeValue.label,x:E.x,y:E.y,fill:w.closeValue.color||A.fill,"text-anchor":o.POSITION_START,"line-height":u.lineHeight,"text-bound":[u.backgroundColor,u.borderColor,u.borderThickness,u.borderPadding,u.borderRadius,u.borderDash],visibility:"visible"},label:"label",component:this}),g||this.addGraphicalElement("closeValue",e),E.x+=w.closeValue.smartObj&&w.closeValue.smartObj.width+2+p||0),(w.highLowValue&&w.highLowValue.label||r)&&(w.highLowValue&&w.highLowValue.label===o.BLANKSTRING&&(S=x=T=o.BLANKSTRING),C.useEllipsesOnOverflow(c.useEllipsesWhenOverflow),C.setStyle(u),a=d.setAnimation({el:m||"text",state:"appearing",container:h,attr:{text:x,x:E.x,y:E.y,"text-anchor":o.POSITION_START,visibility:"visible"},label:"label",component:this}),m||this.addGraphicalElement("startBraces",a),E.x+=C.getSmartText(x).width,r=d.setAnimation({el:b||"text",state:"appearing",container:h,attr:{text:w.highValue.label,x:E.x,y:E.y,"text-anchor":o.POSITION_START,fill:w.highValue.color||A.fill,visibility:"visible"},label:"label",component:this}),b||this.addGraphicalElement("highValue",r),E.x+=C.getSmartText(w.highValue.label).width,i=d.setAnimation({el:v||"text",state:"appearing",container:h,attr:{text:S,x:E.x,y:E.y,"text-anchor":o.POSITION_START,visibility:"visible"},label:"label",component:this}),v||this.addGraphicalElement("separator",i),E.x+=C.getSmartText(S).width,n=d.setAnimation({el:y||"text",container:h,state:"appearing",attr:{text:w.lowValue.label,x:E.x,y:E.y,"text-anchor":o.POSITION_START,fill:w.lowValue.color||A.fill,visibility:"visible"},label:"label",component:this}),y||this.addGraphicalElement("lowValue",n),E.x+=C.getSmartText(w.lowValue.label).width,l=d.setAnimation({el:k||"text",state:"appearing",container:h,attr:{text:T,x:E.x,y:E.y,"text-anchor":o.POSITION_START,visibility:"visible"},label:"label",component:this}),k||this.addGraphicalElement("endBraces",l)),this.labelDrawn=!0}).call(this)},t}(i["default"]);t["default"]=u},641:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(349),i=(o=r)&&o.__esModule?o:{"default":o};t["default"]={"*.dataset.sparkLine":i["default"]["*.dataset.line"]}},642:function(e,t,a){"use strict";t.__esModule=!0,t._parseCanvasCosmetics=t._placeOpenCloseValues=undefined;var o=a(118),r=a(122),i=l(a(639)),n=l(a(643));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=2,u=Math.min;function p(e){var t,a=this.config,r=this.getFromEnv("smartLabel"),i=a.dataLabelStyle,n=(0,o.pluckNumber)(i.borderThickness,0),l=this.config.valuepadding+c+n,s=0,p=0,h=a.sparkValues||{};return r.useEllipsesOnOverflow(a.useEllipsesWhenOverflow),r.setStyle(i),h.openValue&&h.openValue.label&&(h.openValue.smartObj=r.getSmartText(h.openValue.label),s=h.openValue.smartObj.width+l),h.closeValue&&h.closeValue.label&&(h.closeValue.smartObj=r.getSmartText(h.closeValue.label),p+=h.closeValue.smartObj.width+l),h.highValue&&h.highValue.label&&(h.highValue.smartObj=r.getSmartText(h.highValue.label)),h.lowValue&&h.lowValue.label&&(h.lowValue.smartObj=r.getSmartText(h.lowValue.label)),h.highLowValue&&h.highLowValue.label&&(h.highLowValue.smartObj=r.getSmartText(h.highLowValue.label),p+=h.highLowValue.smartObj.width+l),{left:t=h.openValueWidth=u(s,e),right:h.closeValueWidth=u(p,e-t)}}function h(){var e,t,a,i={},n=this.getFromEnv("dataSource").chart,l=this.getFromEnv("color-manager");return i.canvasBorderRadius=0,e=i.canvasBorderThickness=0,t=i.showCanvasBorder=0,i.canvasBorderWidth=t?e:0,i.canvasBorderColor=(0,r.convertColor)((0,o.pluck)(n.canvasbordercolor,l.getColor("canvasBorderColor"))),i.canBGColor={FCcolor:{color:"ffffff",alpha:0,angle:0,ratio:undefined}},a=i.shadow=0,i.shadowOnCanvasFill=a&&a.enabled,i.origCanvasTopPad=(0,o.pluckNumber)(n.canvastoppadding,0),i.origCanvasBottomPad=(0,o.pluckNumber)(n.canvasbottompadding,0),i.origCanvasLeftPad=(0,o.pluckNumber)(n.canvasleftpadding,0),i.origCanvasRightPad=(0,o.pluckNumber)(n.canvasrightpadding,0),i.canvasPadding=0,i}var d=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.canvasBorderThickness=0,a._placeOpenCloseValues=p,a._parseCanvasCosmetics=h,a}return s(t,e),t.getName=function(){return"SparkWinLoss"},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t),this.config.drawTrendRegion=0},t.prototype.getName=function(){return"SparkWinLoss"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="sparkwinloss Chart",t.singleseries=!0,t.defaultDatasetType="sparkwinloss",t.enablemousetracking=!0,t.yRangeMin=-1,t.yRangeMax=1},t.prototype.getDSdef=function(){return n["default"]},t}(i["default"]);t["default"]=d,t._placeOpenCloseValues=p,t._parseCanvasCosmetics=h},643:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=s(a(331)),n=a(125),l=s(a(644));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=Math,p=u.min,h=u.max,d=function(){var e=this.getFromEnv("chart"),t=e.config,a=t.dataLabelStyle,r=t.valuepadding+2,i=this.getContainer("labelGroup"),n=t.sparkValues||(t.sparkValues={}),l=this.getGraphicalElement("closeValue"),s=this.getFromEnv("animationManager"),c={"class":"fusioncharts-label","text-anchor":o.POSITION_END,fill:a.color,"font-size":a.fontSize,"font-weight":a.fontWeight,"font-style":a.fontStyle,"font-family":a.fontFamily,visibility:"visible"},u={x:0,y:0};e.getChildContainer("datalabelsGroup").attr({"clip-rect":null}),u.y=.5*t.canvasHeight+t.canvasTop,c["text-anchor"]=o.POSITION_START,u.x=t.canvasWidth+t.canvasLeft+r,n.closeValue&&n.closeValue.label&&(this.addGraphicalElement("closeValue",s.setAnimation({el:l||"text",attr:{text:n.closeValue.label,x:u.x,y:u.y,fill:n.closeValue.color||c.fill,"text-anchor":o.POSITION_START,"line-height":a.lineHeight,"text-bound":[a.backgroundColor,a.borderColor,a.borderThickness,a.borderPadding,a.borderRadius,a.borderDash],visibility:"visible"},container:i,component:this,label:"text"})),u.x+=n.closeValue.smartObj&&n.closeValue.smartObj.width+2+r||0),this.labelDrawn=!0};(0,n.addDep)({name:"sparkwinlossAnimation",type:"animationRule",extension:l["default"]});var g=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.drawLabel=d,a}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"sparkWinLoss"},t.prototype._setConfigure=function(t,a){var i,n,l,s,c,u,d,g,f,m,b,v,y,k,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_,P,V=this.getFromEnv("chart"),I=V.config,G=this.config,j=this.config.JSONData,B=t||j.data,H=B&&B.length,W=this.getFromEnv("xAxis"),z=W.getTicksLen(),U=t&&t.data.length||p(z,H),X=V.getFromEnv("dataSource").chart,K=this.getFromEnv("color-manager"),Y=this.index||this.positionIndex,J=I.showplotborder,Z=G.plotColor=K.getPlotColor(Y),q=(0,o.pluck)(X.plotfillcolor,K.getColor("plotFillColor")),$=(0,o.pluck)(X.wincolor,K.getColor("winColor")),Q=(0,o.pluck)(X.losscolor,K.getColor("lossColor")),ee=(0,o.pluck)(X.drawcolor,K.getColor("drawColor")),te=(0,o.pluck)(X.scorelesscolor,K.getColor("scorelessColor")),ae=X.winhovercolor,oe=X.losshovercolor,re=X.drawhovercolor,ie=X.scorelesshovercolor,ne=0,le=0,se=0,ce=I.plotborderthickness,ue=I.isroundedges,pe=I.plothovereffect,he=G.plotfillangle,de=G.plotBorderDashStyle,ge=this.components.data,fe=V.isBar,me=V.is3D,be=G.maxValue||-Infinity,ve=G.minValue||+Infinity;for(ge||(ge=this.components.data=[]),e.prototype._setConfigure.call(this),G.plotgradientcolor="",_=G.showPlotBorder=(0,o.pluckNumber)(X.showplotborder,0),G.plotborderalpha=c=_?(0,o.pluck)(X.plotborderalpha,l,o.HUNDREDSTRING):0,G.showTooltip=0,I.showtooltip=0,R=0;R<U;R++){switch(t?(d=t&&t.data[R],f=void 0!==a?ge[P=a+R]:ge[P=ge.length-U+R]):(f=ge[R],d=B[R]),m=f&&f.config,f||(f=ge[R]={}),f.config||(m=ge[R].config={}),(d.value||"").toLowerCase()){case"w":Z=(0,o.pluck)(d.color,$,q),v=(0,o.pluck)(d.hovercolor,ae,Z),m.setValue=g=1,ne+=1;break;case"l":Z=(0,o.pluck)(d.color,Q,q),v=(0,o.pluck)(d.hovercolor,oe,Z),m.setValue=g=-1,le+=1;break;case"d":Z=(0,o.pluck)(d.color,ee,q),v=(0,o.pluck)(d.hovercolor,re,Z),m.setValue=g=.1,se+=1;break;default:m.setValue=g=null}1==d.scoreless&&(Z=(0,o.pluck)(d.color,te,q),v=(0,o.pluck)(d.hovercolor,ie,d.color,te,v)),m.toolText=!1,m.setLink=(0,o.pluck)(d.link),m.setDisplayValue=(0,o.parseUnsafeString)(d.displayvalue),D=(0,o.pluckNumber)(d.dashed),L=(0,o.pluckNumber)(d.dashlen,void 0),M=n=(0,o.pluckNumber)(d.dashgap,G.plotDashGap),null!==g&&(be=h(be,g),ve=p(ve,g)),m.plotBorderDashStyle=u=1===D?(0,o.getDashStyle)(L,M):0===D?"none":de,l=(0,o.pluck)(d.alpha,G.plotfillalpha),c=(0,o.pluck)(d.alpha,G.plotborderalpha,l).toString(),g<0&&!ue&&(i=G.plotfillAngle,he=fe?180-he:360-he),m.colorArr=b=(0,r.getColumnColor)(Z+","+G.plotgradientcolor,l,s=G.plotfillratio,he,ue,G.plotbordercolor,c,fe?1:0,!!me),m.label=(0,o.getValidValue)((0,o.parseUnsafeString)(W.getLabel((0,o.pluckNumber)(P-U,R)).label)),0!==pe&&(v=(0,o.pluck)(d.hovercolor,j.hovercolor,X.plotfillhovercolor,X.columnhovercolor,Z),y=(0,o.pluck)(d.hoveralpha,j.hoveralpha,X.plotfillhoveralpha,X.columnhoveralpha,l),!(k=(0,o.pluck)(d.hovergradientcolor,j.hovergradientcolor,X.plothovergradientcolor,G.plotgradientcolor))&&(k=""),w=(0,o.pluck)(d.hoverratio,j.hoverratio,X.plothoverratio,s),C=(0,o.pluckNumber)(360-d.hoverangle,360-j.hoverangle,360-X.plothoverangle,he),x=(0,o.pluck)(d.borderhovercolor,j.borderhovercolor,X.plotborderhovercolor,G.plotbordercolor),T=(0,o.pluck)(d.borderhoveralpha,j.borderhoveralpha,X.plotborderhoveralpha,c,l),S=(0,o.pluckNumber)(d.borderhoverthickness,j.borderhoverthickness,X.plotborderhoverthickness,ce),A=(0,o.pluckNumber)(d.borderhoverdashed,j.borderhoverdashed,X.plotborderhoverdashed),E=(0,o.pluckNumber)(d.borderhoverdashgap,j.borderhoverdashgap,X.plotborderhoverdashgap,void 0),N=(0,o.pluckNumber)(d.borderhoverdashlen,j.borderhoverdashlen,X.plotborderhoverdashlen,n),O=A?(0,o.getDashStyle)(N,E):u,1==pe&&v===Z&&(v=(0,r.getLightColor)(v,70)),F=(0,r.getColumnColor)(v+","+k,y,w,C,ue,x,T.toString(),fe?1:0,!!me),m.setRolloutAttr={fill:me?[(0,o.toRaphaelColor)(b[0]),!I.use3dlighting]:(0,o.toRaphaelColor)(b[0]),stroke:J&&(0,o.toRaphaelColor)(b[1]),"stroke-width":ce,"stroke-dasharray":u},m.setRolloverAttr={fill:me?[(0,o.toRaphaelColor)(F[0]),!I.use3dlighting]:(0,o.toRaphaelColor)(F[0]),stroke:J&&(0,o.toRaphaelColor)(F[1]),"stroke-width":S,"stroke-dasharray":O}),i&&(he=i),P++,m._x=R,m._y=g}G.maxValue=1,G.minValue=-1,1==(0,o.pluckNumber)(X.showvalue,1)?(I.sparkValues={closeValue:{}},I.sparkValues.closeValue.label=ne+"-"+le+(se>0?"-"+se:o.BLANKSTRING)):I.sparkValues=void 0},t}(i["default"]);t["default"]=g},644:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(332),i=(o=r)&&o.__esModule?o:{"default":o};t["default"]={"initial.dataset.sparkWinLoss":i["default"]["initial.dataset.column"]}},645:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=l(a(639)),n=l(a(646));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=Math.max,u=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.canvasborderthickness=1,a}return s(t,e),t.getName=function(){return"SparkColumn"},t.prototype.getName=function(){return"SparkColumn"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="sparkcolumn Chart",t.singleseries=!1,t.defaultDatasetType="sparkcolumn",t.showplotborder=0,t.enablemousetracking=!0},t.prototype.getDSdef=function(){return n["default"]},t.prototype._parseCanvasCosmetics=function(){var e,t,a,i,n,l={},s=this.getFromEnv("dataSource").chart,u=this.getFromEnv("color-manager"),p=this.config.is3D?o.chartPaletteStr.chart3D:o.chartPaletteStr.chart2D,h=l.isRoundEdges=(0,o.pluckNumber)(s.useroundedges,0),d=(0,o.pluckNumber)(s.showxaxisline,s.showyaxisline,0)?0:1;return l.canvasBorderRadius=(0,o.pluckNumber)(s.plotborderradius,h?2:0),a=l.showCanvasBorder=Boolean((0,o.pluckNumber)(s.showcanvasborder,d,e,h?0:1)),n=l.oriCanvasBorderThickness=c((0,o.pluckNumber)(s.canvasborderthickness,h?0:(0,o.pluckNumber)(this.canvasborderthickness,1),0)),e=l.canvasBorderWidth=this.is3D?0:a?n:0,l.canvasBorderColor=(0,r.convertColor)((0,o.pluck)(s.canvasbordercolor,u.getColor("canvasBorderColor")),(0,o.pluck)(s.canvasborderalpha,u.getColor("canvasBorderAlpha"))),t=l.canBGAlpha=(0,o.pluck)(s.canvasbgalpha,u.getColor("canvasBgAlpha")),l.canBGColor={FCcolor:{color:(0,o.pluck)(s.canvasbgcolor,u.getColor(p.canvasBgColor)),alpha:(0,o.pluck)(s.canvasbgalpha,100),angle:(0,o.pluck)(s.canvasbgangle,0),ratio:(0,o.pluck)(s.canvasbgratio)}},i=l.shadow=(0,o.pluckNumber)(s.showshadow,h,0)&&h?{enabled:!0,opacity:t/100}:0,l.shadowOnCanvasFill=i&&i.enabled,l.canvasPadding=(0,o.pluckNumber)(s.canvaspadding,0),l.origCanvasTopPad=(0,o.pluckNumber)(s.canvastoppadding,0),l.origCanvasBottomPad=(0,o.pluckNumber)(s.canvasbottompadding,0),l.origCanvasLeftPad=(0,o.pluckNumber)(s.canvasleftpadding,0),l.origCanvasRightPad=(0,o.pluckNumber)(s.canvasrightpadding,0),l},t}(i["default"]);t["default"]=u},646:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=a(122),i=a(125),n=s(a(331)),l=s(a(647));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=Math.min;(0,i.addDep)({name:"sparkcolumnAnimation",type:"animationRule",extension:l["default"]});var p=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return c(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"sparkColumn"},t.prototype.parseAttributes=function(){e.prototype.parseAttributes.call(this);var t=this.getFromEnv("chart"),a=this.config,r=this.config.JSONData,i=t.getFromEnv("chart-attrib");a.showValues=(0,o.pluckNumber)(r.showvalues,i.showvalues,0)},t.prototype._setConfigure=function(t){var a,i,n,l,s,c,p,h,d,g,f,m,b,v,y,k,w,C,x,T,S,A,E,N,O,F,D,L,M,R,_=this.getFromEnv("chart"),P=_.getFromEnv("dataSource").chart,V=this.config,I=_.config,G=this.config.JSONData,j=t||G.data,B=j&&j.length,H=this.getFromEnv("xAxis").getTicksLen(),W=t&&t.data.length||u(H,B),z=I.plothovereffect,U=this.getFromEnv("color-manager"),X=I.useroundedges;for(V.plotgradientcolor=o.BLANKSTRING,V.showvalues=(0,o.pluckNumber)(G.showvalues,P.showvalues,0),V.showShadow=(0,o.pluckNumber)(P.showshadow,0),e.prototype._setConfigure.call(this),L=this.components.data,M=V.maxValue,R=V.minValue,a=(0,o.pluck)(P.plotfillcolor,U.getColor("plotFillColor")),g=(0,o.pluck)(P.plotfillalpha,o.HUNDREDSTRING),f=(0,o.pluck)(P.plotborderalpha,o.HUNDREDSTRING),m=(0,o.pluck)(P.plotbordercolor,a),b=(0,o.pluck)(P.highcolor,"000000"),v=(0,o.pluck)(P.lowcolor,"000000"),y=(0,o.pluck)(P.highbordercolor,P.plotbordercolor,b),k=(0,o.pluck)(P.lowbordercolor,P.plotbordercolor,v),O=0;O<W;O++){if(S=j[O],E=null,i=a,n=m,(d=(A=L[O]).config).setValue==M&&(i=b,n=y,w=d.displayValue),A.config.setValue==R&&(i=v,n=k,C=d.displayValue),d.colorArr=E=(0,r.getColumnColor)(i+o.COMMASTRING+V.plotgradientcolor,g,"0","90",X,n,f,0,0),0!==z&&E){for(l=s=void 0,d.setValue==M&&(l=P.highhovercolor,s=P.highhoveralpha),A.config.setValue==R&&(l=P.lowhovercolor,s=P.lowhoveralpha),F=(l=(l=(0,o.pluck)(S.hovercolor,G.hovercolor,l,P.plotfillhovercolor,P.columnhovercolor,E[0].FCcolor.color)).split(/\s{0,},\s{0,}/)).length,D=0;D<F;D++)l[D]=(0,r.getLightColor)(l[D],70);l=l.join(","),s=(0,o.pluck)(S.hoveralpha,G.hoveralpha,s,P.plotfillhoveralpha,P.columnhoveralpha,g),!(c=(0,o.pluck)(S.hovergradientcolor,G.hovergradientcolor,P.plothovergradientcolor,V.plotgradientcolor))&&(c=o.BLANKSTRING),p=(0,o.pluck)(S.borderhovercolor,G.borderhovercolor,P.plotborderhovercolor,V.plotbordercolor),h=(0,o.pluck)(S.borderhoveralpha,G.borderhoveralpha,P.plotborderhoveralpha,P.plotfillhoveralpha,f,g),1==z&&l===E[0].FCcolor.color&&(l=(0,r.getLightColor)(l,70)),N=(0,r.getColumnColor)(l+o.COMMASTRING+c,s,"0","90",X,p,h.toString(),0,0),d.setRolloutAttr={fill:(0,o.toRaphaelColor)(E[0]),stroke:void 0,"stroke-width":void 0},d.setRolloverAttr={fill:(0,o.toRaphaelColor)(N[0]),stroke:void 0,"stroke-width":void 0}}d._x=O,d._y=d.setValue}for(O=0;O<W;O++){var K=L[O].config;void 0!==K.setTooltext&&(x=[56,57,60,61],T={highValue:w,highDataValue:w,lowValue:C,lowDataValue:C},K.toolText=(0,o.parseTooltext)(K.setTooltext,x,T,S,P,G),K.finalTooltext=K.setTooltext=K.toolText)}},t}(n["default"]);t["default"]=p},647:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(332),i=(o=r)&&o.__esModule?o:{"default":o};t["default"]={"initial.dataset.sparkColumn":i["default"]["initial.dataset.column"]}},648:function(e,t,a){"use strict";t.__esModule=!0;var o=a(428),r=n(a(649)),i=n(a(653));function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.axisPaddingLeft=0,a.axisPaddingRight=0,a}return l(t,e),t.getName=function(){return"RealtimeArea"},t.prototype.getName=function(){return"RealtimeArea"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),o._setDefaultConfig.call(this);var t=this.config;t.defaultDatasetType="realtimearea",t.enablemousetracking=!0},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSGroupdef=function(){},t}(r["default"]);t["default"]=s},649:function(e,t,a){"use strict";t.__esModule=!0;var o=m(a(354)),r=a(118),i=a(122),n=m(a(650)),l=m(a(402)),s=m(a(157)),c=m(a(176)),u=m(a(116)),p=a(125),h=m(a(652)),d=a(485),g=a(129),f=m(a(601));function m(e){return e&&e.__esModule?e:{"default":e}}function b(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var v=r.preDefStr.visibleStr;function y(e,t){var a=r.BLANKSTRING;(e&&e.toString||e===r.BLANKSTRING||0===e)&&(a="value="+e.toString()),(t&&t.toString||t===r.BLANKSTRING)&&(a=a+"&label="+t.toString()),a&&this.feedData(a)}(0,p.addDep)({name:"realtimeColumnChartAnimation",type:"animationRule",extension:h["default"]}),u["default"].addDep(f["default"]);var k=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this)),o=a;return u["default"].addDep(s["default"]),u["default"].addDep(c["default"]),a.showRTvalue=!0,a.canvasPadding=!0,a.isRealTime=!0,a.rtManageSpace=!0,a.transposeAxis=!0,a._setData=y,a.eiMethods=d.eiMethods,a._drawRTValue=function(){o._drawRealTimeValue()},a}return b(t,e),t.getName=function(){return"RealtimeColumn"},t.prototype.getName=function(){return"RealtimeColumn"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.defaultDatasetType="realtimecolumn",t.enablemousetracking=!0},t.prototype.asyncRealTimeValueDraw=function(){this.addJob("realtimevaluedraw",this._drawRTValue,g.priorityList&&g.priorityList.draw)},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t),this.config.drawTrendRegion=0},t.prototype._setCategories=function(){var e,t=this.getChildren("xAxis")[0],a=[],o=this.config.realTimeConfig,r=o&&o.clear?void 0:this.getFromEnv("dataSource").categories&&this.getFromEnv("dataSource").categories[0]&&this.getFromEnv("dataSource").categories[0].category,i=r&&Array.isArray(r)&&r.filter(function(e){return!e.vline}).length||0,n=o.numDisplaySets;i<n?(a.length=n-i,e=r?a.concat(r):a):e=i>n&&n>=0?n?r.slice(-n):[]:r.slice(0),t.setTickValues(e)},t.prototype._realTimeValuePositioning=function(e){var t,a,o=this.getChildren(),n=this.getFromEnv("smartLabel"),l=this.config,s=l.realTimeConfig||(l.realTimeConfig={}),c=s.realTimeValuePadding,u=o.xAxis[0].config,p=u.trend.trendStyle,h=s.style={color:(0,i.convertColor)((0,r.pluck)(s.realtimeValueFontColor,p.color),(0,r.pluck)(u.trendlineAlpha,99)),fontFamily:(0,r.pluck)(s.realtimeValueFont,p.fontFamily),fontSize:(0,r.pluck)(s.realtimeValueFontSize,p.fontSize),fontWeight:(0,r.pluck)(s.fontWeight,p.fontWeight),lineHeight:(0,r.pluckNumber)(p.lineHeight)};return n.useEllipsesOnOverflow(l.useEllipsesWhenOverflow),n.setStyle(h),s.height=t=n.getOriSize(r.TESTSTR).height,s.canvasBottom=l.canvasBottom,(a=t+c)>e&&(a=e),{bottom:a}},t.prototype.draw=function(){e.prototype.draw.call(this),this.showRTvalue&&this.config.realTimeConfig.showRTValue&&this._drawRealTimeValue()},t.prototype._drawRealTimeValue=function(){var e,t,a,o,i,n,l,s=this.getFromEnv("chart"),c=this.config,u=s.getDatasets(),p=s.getFromEnv("animationManager"),h=this.getFromEnv("smartLabel"),d=c.realTimeConfig,g=d.realtimeValueSeparator,f=u.length,m=r.BLANKSTRING,b=d.canvasBottom,y=d.height,k=c.canvasLeft,w=c.canvasRight,C=d.style||{},x=this.getGraphicalElement("realTimeValue"),T=this.getChildContainer(),S=s.getContainer().parentGroup,A=T.realTimeValueGroup;if(this.removeJob("realtimevaluedraw"),d.clear&&e&&p.setAnimation({el:e,attr:{text:r.BLANKSTRING},component:this,label:"label"}),A){for(l=0;l<f;l++)m+=(n=(i=(a=u[l].components.data)[a.length-1])&&i.config.displayValue)?void 0===n?r.BLANKSTRING:n+g:r.BLANKSTRING;m=m.substring(0,m.length-g.length),h.useEllipsesOnOverflow(c.useEllipsesWhenOverflow),h.setStyle(C),t={x:(k+w)/2||0,y:b-y/2||0,"font-size":C.fontSize,"font-weight":C.fontWeight,"font-family":C.fontFamily,"line-height":C.lineHeight,text:m,fill:C.color,visibility:v},e=p.setAnimation({el:x||"text",attr:t,container:A,label:"rtValue",component:s}),o=!0,x||this.addGraphicalElement("realTimeValue",e),e&&!o&&e.show()}else A=s.addChildContainer("realTimeValueGroup",p.setAnimation({el:"group",attr:{name:"realTimeValue"},container:S,label:"group",component:s}).insertBefore(T.datalabelsGroup))},t.prototype._hideRealTimeValue=function(){var e=this.getGraphicalElement("realTimeValue");e&&e.hide()},t.prototype._setRTmenu=function(e,t){var a=this,o=a.getFromEnv("chartMenuTools"),r=o.set,i=o.update,n=!1;e&&r([{"Clear Chart":{handler:function(){a._clearChart()},action:"click"}},{"Stop Update":{handler:function(){n?(a._restartUpdate(),i("Restart Update","Stop Update",a),n=!1):(a._stopUpdate(),i("Stop Update","Restart Update",a),n=!0)},action:"click"}}]),t&&r([{"Show Log":{handler:function(){a.getChildren("messageLogger")[0].show()},action:"click"}}])},t.prototype._getDataJSON=function(){return this.config.realTimeConfig.legacyUpdateObj||{values:[]}},t.prototype._checkInvalidSpecificData=function(){var e=this.getFromEnv("dataSource").dataset,t=this.getChildren("dataStreamer")&&this.getChildren("dataStreamer")[0];if(!e)return t&&t._stopUpdate(),!0},t.prototype._checkInvalidData=function(){var e=this.getFromEnv("dataSource"),t=this.getChildren("dataStreamer")&&this.getChildren("dataStreamer")[0];if(e==={})return t&&t._stopUpdate(),!0},t.prototype.getDSGroupdef=function(){return l["default"]},t.prototype.getDSdef=function(){return n["default"]},t.prototype._realTimeConfigure=function(){d._realTimeConfigure.call(this)},t.prototype._stopUpdate=function(e){d._stopUpdate.call(this,e)},t.prototype._restartUpdate=function(){d._restartUpdate.call(this)},t.prototype._isUpdateActive=function(){return d._isUpdateActive.call(this)},t.prototype._getData=function(){return d._getData.call(this)},t.prototype.realTimeUpdate=function(e){d.realTimeUpdate.call(this,e)},t.prototype._RTmanageSpace=function(){d._RTmanageSpace.call(this)},t.prototype.realTimeDraw=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};d.realTimeDraw.call(this,e)},t.prototype.feedData=function(e){return d.feedData.call(this,e)},t.prototype._linearDataParser=function(e){return d._linearDataParser.call(this,e)},t.prototype._clearChart=function(e){d._clearChart.call(this,e)},t}(o["default"]);t["default"]=k},650:function(e,t,a){"use strict";t.__esModule=!0,t.resetCatPos=t._realTimeConfigure=undefined;var o=n(a(331)),r=a(125),i=n(a(651));function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}(0,r.addDep)({name:"realtimeColumnAnimation",type:"animationRule",extension:i["default"]});var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype._realTimeConfigure=function(e){var t,a=this.getFromEnv("chart"),o=this.components.data,r=[],i=a.config.realTimeConfig.numDisplaySets;(t=e?0:Math.min(this.getFromEnv("xAxis").getTicksLen(),o&&o.length))<i?(r.length=i-t,this.components.data=r.concat(o)):t>i&&this.components.data.splice(i,t-i),this.resetCatPos&&this.resetCatPos()},t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"realtimeColumn"},t.prototype.resetCatPos=function(){var e=this.components.data,t=e.length,a=void 0;if(e&&t)for(a=0;a<t;a++)e[a]&&e[a].config&&(e[a].config._x=a)},t}(o["default"]),c=s.prototype._realTimeConfigure,u=s.prototype.resetCatPos;t._realTimeConfigure=c,t.resetCatPos=u,t["default"]=s},651:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(332),i=(o=r)&&o.__esModule?o:{"default":o};t["default"]={"initial.dataset.realtimeColumn":i["default"]["initial.dataset.column"]}},652:function(e,t,a){"use strict";t.__esModule=!0,t["default"]={"initial.chartAPI.RealtimeColumn":function(){return{"*":null}}}},653:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(347),i=(o=r)&&o.__esModule?o:{"default":o},n=a(650);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype._realTimeConfigure=function(e){n._realTimeConfigure.call(this,e)},t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"realTimeArea"},t}(i["default"]);s.prototype.resetCatPos=n.resetCatPos,t["default"]=s},654:function(e,t,a){"use strict";t.__esModule=!0;var o=a(428),r=n(a(649)),i=n(a(655));function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.axisPaddingLeft=0,a.axisPaddingRight=0,a}return l(t,e),t.getName=function(){return"RealtimeLine"},t.prototype.getName=function(){return"RealtimeLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),o._setDefaultConfig.call(this);var t=this.config;t.defaultDatasetType="realtimeline",t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSGroupdef=function(){},t}(r["default"]);t["default"]=s},655:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(346),i=(o=r)&&o.__esModule?o:{"default":o},n=a(650);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype._realTimeConfigure=function(e){n._realTimeConfigure.call(this,e)},t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"realtimeLine"},t}(i["default"]);s.prototype.resetCatPos=n.resetCatPos,t["default"]=s},656:function(e,t,a){"use strict";t.__esModule=!0;var o=a(428),r=l(a(648)),i=l(a(653)),n=l(a(409));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return s(t,e),t.getName=function(){return"RealtimeStackedArea"},t.prototype.getName=function(){return"RealtimeStackedArea"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),o._setDefaultConfig.call(this);var t=this.config;t.defaultDatasetType="realtimearea",t.isstacked=!0,t.enablemousetracking=!0},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSGroupdef=function(){return n["default"]},t}(r["default"]);t["default"]=c},657:function(e,t,a){"use strict";t.__esModule=!0;var o=i(a(649)),r=i(a(409));function i(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var l=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return n(t,e),t.getName=function(){return"RealtimeStackedColumn"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.isstacked=!0,t.enablemousetracking=!0},t.prototype.getName=function(){return"RealtimeStackedColumn"},t.prototype.getDSGroupdef=function(){return r["default"]},t}(o["default"]);t["default"]=l},658:function(e,t,a){"use strict";t.__esModule=!0;var o=a(428),r=c(a(649)),i=c(a(655)),n=a(383),l=c(a(384)),s=c(a(385));function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.isRealTime=!0,a.axisPaddingLeft=0,a.isDual=!0,a.axisPaddingRight=0,a.getSpecificxAxisConf=n.getSpecificxAxisConf,a.getSpecificyAxisConf=n.getSpecificyAxisConf,a.registerFactory("axis",l["default"],["canvas"]),a.registerFactory("dataset",s["default"],["vCanvas"]),a}return u(t,e),t.getName=function(){return"RealtimeLineDy"},t.prototype.getName=function(){return"RealtimeLineDy"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),o._setDefaultConfig.call(this);var t=this.config;t.defaultDatasetType="RealtimeLine",t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.isdual=!0,t.syncaxislimits=0},t.prototype._feedAxesRawData=function(){return n._feedAxesRawData.call(this)},t.prototype.getDSdef=function(){return i["default"]},t.prototype.getDSType=function(){return"RealtimeLine"},t.prototype.getDSGroupdef=function(){},t}(r["default"]);p.prototype.setAxisDimention=n.setAxisDimention,t["default"]=p},659:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=s(a(606)),i=a(628),n=s(a(630)),l=s(a(604));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u=o.BLANK,p=o.preDefStr.POSITION_START,h=o.preDefStr.POSITION_END,d=o.preDefStr.POSITION_BOTTOM,g=o.preDefStr.POSITION_MIDDLE,f=Math,m=f.ceil,b=f.max,v="0,100",y=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.defaultSeriesType="hbullet",a.gaugeType=1,a.defaultCaptionPadding=5,a.rendererId="hbullet",a.isHorizontal=!0,a.isAxisOpposite=!0,a.rtManageSpace=!0,a.ticksOnRight=0,a.hasCanvas=!0,a.isAxisReverse=!1,a.defaultPaletteOptions={paletteColors:[["A6A6A6","CCCCCC","E1E1E1","F0F0F0"],["A7AA95","C4C6B7","DEDFD7","F2F2EE"],["04C2E3","66E7FD","9CEFFE","CEF8FF"],["FA9101","FEB654","FED7A0","FFEDD5"],["FF2B60","FF6C92","FFB9CB","FFE8EE"]],bgColor:["FFFFFF","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:[v,v,v,v,v],bgAlpha:["100","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["333333","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendColor:["545454","60634E","415D6F","845001","68001B"],plotFillColor:["545454","60634E","415D6F","845001","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50]},a.showRTvalue=!1,a.canvasPadding=!1,a.defaultPlotShadow=1,a.realtimeEnabled=!0,a.chartleftmargin=15,a.chartrightmargin=15,a.charttopmargin=10,a.chartbottommargin=10,a.showTooltip=0,a.connectTickMarks=0,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isRealTime=!0,a.colorRange=!0,a.registerFactory("dataset",l["default"],["vCanvas"]),a}return c(t,e),t.getName=function(){return"Hbullet"},t.prototype.getName=function(){return"HbulletBase"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Horizontal Bullet Gauge",t.defaultDatasetType="bullet",t.singleseries=!0,t.skipCanvasDrawing=!0},t.prototype._RTmanageSpace=function(){var e,t,a=this.config,o=this.getChildren("scale")[0];e=(t=this.getChildren("dataset")[0]._manageSpaceHorizontal(.7*a.oriCanvasWidth)).right-a.labelSpace.right,this._allocateSpace({right:e}),o.setAxisDimention({axisLength:a.canvasWidth}),a.labelSpace=t},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t),i.configureAttributes.call(this)},t.prototype._getData=function(){return i._getData.call(this)},t.prototype._spaceManager=function(){var e,t,a,r,i,n=this.config,l=this.getChildren("canvas")[0],s=this.getChildren("dataset")[0],c=this.getChildren("scale")[0],u=this.config.is3D,p=this.getFromEnv("dataSource").chart,h=(0,o.pluckNumber)(p.showborder,u?0:1),d=n.minChartWidth,g=n.minChartHeight,f=n.borderWidth=h?(0,o.pluckNumber)(p.borderthickness,1):0;n.canvasWidth-2*f<d&&(i=(n.canvasWidth-d)/2),n.canvasHeight-2*f<g&&(r=(n.canvasHeight-g)/2),this._allocateSpace({top:r||f,bottom:r||f,left:i||f,right:i||f}),e=.7*n.canvasWidth,this._allocateSpace(c.placeAxis(n.availableHeight)),this._allocateSpace(this._manageActionBarSpace&&this._manageActionBarSpace(.225*n.availableHeight)||{}),n.oriCanvasWidth=n.canvasWidth,t=.225*n.canvasHeight,this._manageChartMenuBar(t),a=b(this.getChildren("subCaption")[0].config.width||0,this.getChildren("caption")[0].config.width||0),n.labelSpace=s._manageSpaceHorizontal(e-.7*a),s._manageSpace&&this._allocateSpace(n.labelSpace),n.oriCanvasWidth-=a,t=.325*n.canvasHeight,l.setDimension({top:n.canvasTop,left:n.canvasLeft,width:n.canvasWidth,height:n.canvasHeight})},t.prototype._manageCaptionSpacing=function(){var e,t,a,r,i,n=this.config,l=this.getChildren("caption")[0],s=this.getChildren("subCaption")[0],c=l.config,d=s.config,g=this.getFromEnv("dataSource").chart,f=this.getFromEnv("smartLabel"),b=(0,o.parseUnsafeString)(g.caption),v=(0,o.parseUnsafeString)(g.subcaption),y=(0,o.pluckNumber)(g.captionpadding,2),k=n.height,w=0,C=0,x=0,T=.3*n.width,S={};return.3*k>3&&(c.captionPadding=d.captionPadding=y,b!==u&&(r=c.style,w=c.captionLineHeight=m(parseFloat((0,o.pluck)(r.fontHeight,r.lineHeight),10),12)),v!==u&&(i=d.style,C=m(parseInt((0,o.pluck)(i.lineHeight,i.fontHeight),10),12)),(w>0||C>0)&&(f.useEllipsesOnOverflow(n.useEllipsesWhenOverflow),f.setStyle(r),(t=f.getSmartText(b,T,k)).width>0&&(t.width+=2,x=t.height),f.setStyle(i),(a=f.getSmartText(v,T,k-x)).width>0&&(a.width+=2),c.captionSubCaptionGap=t.height+0+.2*C,e=Math.max(t.width,a.width),c.text=t.text,c.height=x=t.height,c.width=t.width,c.tooltext&&(c.originalText=t.tooltext),d.text=a.text,d.height=x=a.height,d.width=a.width,d.tooltext&&(c.originalText=a.tooltext),(e=Math.max(t.width,a.width))>0&&(e+=y),c.maxCaptionWidth=d.maxCaptionWidth=e,c.isOnLeft?S.left=e:S.right=e)),c.isOnLeft?c.align=d.align=h:c.align=d.align=p,S},t.prototype._manageCaptionPosition=function(){var e=this.config,t=this.getChildren("caption")[0],a=this.getChildren("subCaption")[0],o=t.config,r=a.config,i=o.captionPosition,n=b(o.width,r.width),l=e.borderWidth||0,s=o.captionSubCaptionGap;switch(i){case g:o.y=.5*(e.canvasTop+e.canvasHeight);break;case d:o.y=e.canvasBottom-(o.height+r.height);break;default:o.y=e.canvasTop}r.y=o.y+s,o.isOnLeft?o.x=r.x=e.marginLeft+n+l:o.x=r.x=e.width-e.marginRight-n-l},t.prototype._feedAxesRawData=function(){var e=this.getFromEnv("color-manager"),t=this.getFromEnv("number-formatter"),a=this.getFromEnv("dataSource").chart,r=o.chartPaletteStr.chart2D,i=(0,o.pluckNumber)(a.ticksbelowgraph,1),n=(0,o.pluckNumber)(a.ticksonright,a.axisontop,void 0!==a.axisonleft?!(0,o.pluckNumber)(a.axisonleft):void 0,!i,this.isAxisOpposite);return[{isVertical:!this.isHorizontal,isReverse:!1,isOpposit:n,outCanfontFamily:(0,o.pluck)(a.outcnvbasefont,a.basefont,"Verdana,sans"),outCanfontSize:(0,o.pluckFontSize)(a.outcnvbasefontsize,a.basefontsize,10),outCancolor:(0,o.pluck)(a.outcnvbasefontcolor,a.basefontcolor,e.getColor(r.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),useEllipsesWhenOverflow:a.useellipseswhenoverflow,divLineColor:(0,o.pluck)(a.vdivlinecolor,e.getColor(r.divLineColor)),divLineAlpha:(0,o.pluck)(a.vdivlinealpha,e.getColor("divLineAlpha")),divLineThickness:(0,o.pluckNumber)(a.vdivlinethickness,1),divLineIsDashed:Boolean((0,o.pluckNumber)(a.vdivlinedashed,a.vdivlineisdashed,0)),divLineDashLen:(0,o.pluckNumber)(a.vdivlinedashlen,4),divLineDashGap:(0,o.pluckNumber)(a.vdivlinedashgap,2),showAlternateGridColor:(0,o.pluckNumber)(a.showalternatevgridcolor,0),alternateGridColor:(0,o.pluck)(a.alternatevgridcolor,e.getColor("altVGridColor")),alternateGridAlpha:(0,o.pluck)(a.alternatevgridalpha,e.getColor("altVGridAlpha")),numDivLines:a.numvdivlines,labelFont:a.labelfont,labelFontSize:a.labelfontsize,labelFontColor:a.labelfontcolor,labelFontAlpha:a.labelalpha,labelFontBold:a.labelfontbold,labelFontItalic:a.labelfontitalic,axisName:a.xaxisname,axisMinValue:t.getCleanValue(a.lowerlimit),axisMaxValue:t.getCleanValue(a.upperlimit),setAdaptiveMin:a.setadaptivexmin,adjustDiv:a.adjusttm,labelDisplay:a.labeldisplay,showLabels:a.showlabels,rotateLabels:a.rotatelabels,slantLabel:(0,o.pluckNumber)(a.slantlabels,a.slantlabel),labelStep:(0,o.pluckNumber)(a.labelstep,a.xaxisvaluesstep),showAxisValues:(0,o.pluckNumber)(a.showxaxisvalues,a.showxaxisvalue),showDivLineValues:(0,o.pluckNumber)(a.showvdivlinevalues,a.showvdivlinevalues),showZeroPlane:a.showvzeroplane,zeroPlaneColor:a.vzeroplanecolor,zeroPlaneThickness:a.vzeroplanethickness,zeroPlaneAlpha:a.vzeroplanealpha,showZeroPlaneValue:a.showvzeroplanevalue,trendlineColor:a.trendlinecolor,trendlineToolText:a.trendlinetooltext,trendlineThickness:a.trendlinethickness,trendlineAlpha:a.trendlinealpha,showTrendlinesOnTop:a.showtrendlinesontop,showAxisLine:(0,o.pluckNumber)(a.showxaxisline,a.showaxislines,a.drawAxisLines,0),axisLineThickness:(0,o.pluckNumber)(a.xaxislinethickness,a.axislinethickness,1),axisLineAlpha:(0,o.pluckNumber)(a.xaxislinealpha,a.axislinealpha,100),axisLineColor:(0,o.pluck)(a.xaxislinecolor,a.axislinecolor,"#000000"),majorTMNumber:a.majortmnumber,majorTMColor:a.majortmcolor,majorTMAlpha:a.majortmalpha,majorTMHeight:a.majortmheight,tickValueStep:a.tickvaluestep,showTickMarks:a.showtickmarks,connectTickMarks:a.connecttickmarks,showTickValues:a.showtickvalues,majorTMThickness:a.majortmthickness,reverseScale:a.reversescale,showLimits:(0,o.pluckNumber)(a.showlimits,a.showtickmarks),minorTMNumber:(0,o.pluckNumber)(a.minortmnumber,0),minorTMColor:a.minortmcolor,minorTMAlpha:a.minortmalpha,minorTMHeight:(0,o.pluckNumber)(a.minortmheight,a.minortmwidth),minorTMThickness:a.minortmthickness,tickMarkDistance:(0,o.pluckNumber)(a.tickmarkdistance,a.tickmarkgap),tickValueDistance:(0,o.pluckNumber)(a.tickvaluedistance,a.displayvaluedistance),placeTicksInside:a.placeticksinside,placeValuesInside:a.placevaluesinside,upperLimitDisplay:a.upperlimitdisplay,lowerLimitDisplay:a.lowerlimitdisplay}]},t.prototype.getDSdef=function(){return n["default"]},t.prototype._fetchCaptionPos=function(){return this.getChildren("caption")[0].config.align===h?0:-1},t}(r["default"]);t["default"]=y},660:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=s(a(606)),i=a(628),n=s(a(630)),l=s(a(604));function s(e){return e&&e.__esModule?e:{"default":e}}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var u="0,100",p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.defaultSeriesType="bullet",a.gaugeType=4,a.ticksOnRight=0,a.hasCanvas=!0,a.isHorizontal=!1,a.isAxisOpposite=!1,a.isAxisReverse=!1,a.defaultPaletteOptions={paletteColors:[["A6A6A6","CCCCCC","E1E1E1","F0F0F0"],["A7AA95","C4C6B7","DEDFD7","F2F2EE"],["04C2E3","66E7FD","9CEFFE","CEF8FF"],["FA9101","FEB654","FED7A0","FFEDD5"],["FF2B60","FF6C92","FFB9CB","FFE8EE"]],bgColor:["FFFFFF","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:[u,u,u,u,u],bgAlpha:["100","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["333333","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendColor:["545454","60634E","415D6F","845001","68001B"],plotFillColor:["545454","60634E","415D6F","845001","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50]},a.showRTvalue=!1,a.canvasPadding=!1,a.defaultPlotShadow=1,a.realtimeEnabled=!0,a.chartleftmargin=15,a.chartrightmargin=15,a.charttopmargin=10,a.chartbottommargin=10,a.showTooltip=0,a.connectTickMarks=0,a.drawPlotlines=!1,a.drawPlotBands=!1,a.isRealTime=!0,a.colorRange=!0,a.registerFactory("dataset",l["default"],["vCanvas"]),a}return c(t,e),t.getName=function(){return"Vbullet"},t.prototype.getName=function(){return"Vbullet"},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t),i.configureAttributes.call(this)},t.prototype._getData=function(){return i._getData.call(this)},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Vertical Bullet Gauge",t.defaultDatasetType="bullet",t.singleseries=!0,t.skipCanvasDrawing=!0},t.prototype.getDSdef=function(){return n["default"]},t.prototype._feedAxesRawData=function(){var e=this.getFromEnv("color-manager"),t=this.getFromEnv("dataSource").chart,a=this.getFromEnv("number-formatter"),r=o.chartPaletteStr.chart2D,i=(0,o.pluckNumber)(t.ticksbelowgraph,1),n=(0,o.pluckNumber)(t.ticksonright,t.axisontop,void 0!==t.axisonleft?!(0,o.pluckNumber)(t.axisonleft):void 0,!i,this.isAxisOpposite);return[{isVertical:!this.isHorizontal,isReverse:!0,isOpposit:n,outCanfontFamily:(0,o.pluck)(t.outcnvbasefont,t.basefont,"Verdana,sans"),outCanfontSize:(0,o.pluckFontSize)(t.outcnvbasefontsize,t.basefontsize,10),outCancolor:(0,o.pluck)(t.outcnvbasefontcolor,t.basefontcolor,e.getColor(r.baseFontColor)).replace(/^#?([a-f0-9]+)/gi,"#$1"),useEllipsesWhenOverflow:t.useellipseswhenoverflow,divLineColor:(0,o.pluck)(t.vdivlinecolor,e.getColor(r.divLineColor)),divLineAlpha:(0,o.pluck)(t.vdivlinealpha,e.getColor("divLineAlpha")),divLineThickness:(0,o.pluckNumber)(t.vdivlinethickness,1),divLineIsDashed:Boolean((0,o.pluckNumber)(t.vdivlinedashed,t.vdivlineisdashed,0)),divLineDashLen:(0,o.pluckNumber)(t.vdivlinedashlen,4),divLineDashGap:(0,o.pluckNumber)(t.vdivlinedashgap,2),showAlternateGridColor:(0,o.pluckNumber)(t.showalternatevgridcolor,0),alternateGridColor:(0,o.pluck)(t.alternatevgridcolor,e.getColor("altVGridColor")),alternateGridAlpha:(0,o.pluck)(t.alternatevgridalpha,e.getColor("altVGridAlpha")),numDivLines:t.numvdivlines,labelFont:t.labelfont,labelFontSize:t.labelfontsize,labelFontColor:t.labelfontcolor,labelFontAlpha:t.labelalpha,labelFontBold:t.labelfontbold,labelFontItalic:t.labelfontitalic,axisName:t.xaxisname,axisMinValue:a.getCleanValue(t.lowerlimit),axisMaxValue:a.getCleanValue(t.upperlimit),setAdaptiveMin:t.setadaptivexmin,adjustDiv:t.adjusttm,labelDisplay:t.labeldisplay,showLabels:t.showlabels,rotateLabels:t.rotatelabels,slantLabel:(0,o.pluckNumber)(t.slantlabels,t.slantlabel),labelStep:(0,o.pluckNumber)(t.labelstep,t.xaxisvaluesstep),showAxisValues:(0,o.pluckNumber)(t.showxaxisvalues,t.showxaxisvalue),showDivLineValues:(0,o.pluckNumber)(t.showvdivlinevalues,t.showvdivlinevalues),showZeroPlane:t.showvzeroplane,zeroPlaneColor:t.vzeroplanecolor,zeroPlaneThickness:t.vzeroplanethickness,zeroPlaneAlpha:t.vzeroplanealpha,showZeroPlaneValue:t.showvzeroplanevalue,trendlineColor:t.trendlinecolor,trendlineToolText:t.trendlinetooltext,trendlineThickness:t.trendlinethickness,trendlineAlpha:t.trendlinealpha,showTrendlinesOnTop:t.showtrendlinesontop,showAxisLine:(0,o.pluckNumber)(t.showxaxisline,t.showaxislines,t.drawAxisLines,0),axisLineThickness:(0,o.pluckNumber)(t.xaxislinethickness,t.axislinethickness,1),axisLineAlpha:(0,o.pluckNumber)(t.xaxislinealpha,t.axislinealpha,100),axisLineColor:(0,o.pluck)(t.xaxislinecolor,t.axislinecolor,"#000000"),majorTMNumber:t.majortmnumber,majorTMColor:t.majortmcolor,majorTMAlpha:t.majortmalpha,majorTMHeight:t.majortmheight,tickValueStep:t.tickvaluestep,showTickMarks:t.showtickmarks,connectTickMarks:t.connecttickmarks,showTickValues:t.showtickvalues,majorTMThickness:t.majortmthickness,reverseScale:t.reversescale,showLimits:(0,o.pluckNumber)(t.showlimits,t.showtickmarks),minorTMNumber:(0,o.pluckNumber)(t.minortmnumber,0),minorTMColor:t.minortmcolor,minorTMAlpha:t.minortmalpha,minorTMHeight:(0,o.pluckNumber)(t.minortmheight,t.minortmwidth),minorTMThickness:t.minortmthickness,tickMarkDistance:(0,o.pluckNumber)(t.tickmarkdistance,t.tickmarkgap),tickValueDistance:(0,o.pluckNumber)(t.tickvaluedistance,t.displayvaluedistance),placeTicksInside:t.placeticksinside,placeValuesInside:t.placevaluesinside,upperLimitDisplay:t.upperlimitdisplay,lowerLimitDisplay:t.lowerlimitdisplay}]},t}(r["default"]);t["default"]=p},661:function(e,t,a){"use strict";t.__esModule=!0;var o=n(a(662)),r=n(a(663)),i=a(118);function n(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.useSortedData=!0,a}return l(t,e),t.getName=function(){return"Funnel"},t.prototype.getName=function(){return"funnel"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Funnel Chart",t.defaultDatasetType="funnel",t.enablemousetracking=!0},t.prototype.configureAttributes=function(){e.prototype.configureAttributes.call(this);var t=this.getFromEnv("dataSource"),a=(0,i.pluckNumber)(t.chart.streamlineddata,1);this.config.PLOT_COLOR_INDEX_START=a?-1:0},t.prototype.getDSdef=function(){return r["default"]},t}(o["default"]);t["default"]=s},662:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=c(a(260)),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t["default"]=e,t}(a(272)),n=c(a(330)),l=c(a(357)),s=a(355);function c(e){return e&&e.__esModule?e:{"default":e}}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.showRTvalue=!1,a.canvasPadding=!1,a.sliceOnLegendClick=!0,a.defaultPlotShadow=1,a.subTitleFontSizeExtender=0,a.tooltippadding=3,a.defaultPaletteOptions=i,a.drawAnnotations=!0,a.isDataLabelBold=!1,a.dontShowLegendByDefault=!0,a.formatnumberscale=1,a.alignCaptionWithCanvas=0,a.registerFactory("dataset",n["default"],["vCanvas","legend"]),a.registerFactory("legend",l["default"]),a}return u(t,e),t.getName=function(){return"FunnelPyramidBase"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.showRTvalue=!1,t.canvasPadding=!1,t.sliceOnLegendClick=!0,t.defaultPlotShadow=1,t.subTitleFontSizeExtender=0,t.tooltippadding=3,t.defaultPaletteOptions=i,t.drawAnnotations=!0,t.isDataLabelBold=!1,t.dontShowLegendByDefault=!0,t.alignCaptionWithCanvas=0,t.formatnumberscale=1,t.isSingleSeries=!0,t.hasLegend=!0,t.decimals=2,t.defaultDatasetType="funnelpyramidbaseds",t.skipCanvasDrawing=!0},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t);var a=this.getFromEnv("chart-attrib");this.config.showLegend=(0,o.pluckNumber)(a.showlegend,0)},t.prototype._createLayers=function(){e.prototype._createLayers.call(this);var t=this.getFromEnv("animationManager");!this.getChildContainer("legendGroup")&&this.addChildContainer("legendGroup",t.setAnimation({el:"group",attr:{name:"legend"},component:this,container:this.getContainer("parentgroup"),label:"group"}))},t.prototype._checkInvalidSpecificData=function(){var e,t,a,o=0,r=0,i=this.getFromEnv("dataSource").data;if(!i)return!0;for(t=i.length,e=0;e<t;e++)a=Number(i[e].value),o+=isNaN(a)||0!==a?0:1,r+=isNaN(a)?1:0;return o+r>=t||void 0},t.prototype._manageLegendSpace=function(){s._manageLegendSpace.call(this)},t.prototype.getName=function(){return"FunnelPyramidBase"},t}(r["default"]);t["default"]=p},663:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=l(a(664)),i=a(129),n=l(a(666));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.config.pointInContext=n["default"],a.config.LABEL_PLACEMENT_ITERATOR_INDEX_START=1,a}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"funnel"},t.prototype.configure=function(e){if(!e)return!1;this.config.JSONData=e;var t,a,r,i,n=this.getFromEnv("chart"),l=this.getFromEnv("number-formatter"),s=this.utils(this).sortObjArrByKey,c=n.getFromEnv("dataSource")?n.getFromEnv("dataSource").chart:{},u=this.config.JSONData.data;if(this._checkValidData(u)){for(a=0,i=u.length;a<i;a++)(r=u[a])&&void 0!==r.value&&(r.value=l.getCleanValue(r.value,!0));t=this.config.streamLinedData=(0,o.pluckNumber)(c.streamlineddata,1),this.config.JSONData.data=t?s(u,"value"):u,this._configure(),u=this.getChildren("data"),t&&(u[0].pseudoPoint=!0),n.config.showLegend&&this.addLegend()}},t.prototype.configureSpecifics=function(){var e=this.getFromEnv("chart"),t=this.config,a=e.getFromEnv("dataSource")?e.getFromEnv("dataSource").chart:{};(0,this.utils(this).copyProperties)(a,t,[["funnelyscale","yScale",o.pluckNumber,void 0,function(e){var t=e.yScale;e.yScale=t>=0&&t<=40?t/200:.2}],["usesameslantangle","useSameSlantAngle",o.pluckNumber,function(e){return e.streamLinedData?0:1}],["ishollow","isHollow",o.pluckNumber,void 0,function(e){void 0===e.isHollow&&(e.isHollow=e.streamLinedData?1:0)}]])},t.prototype.prePointProcessingHookFn=function(e){var t,a,r,i,n=this.getFromEnv("chart"),l=n.config,s=this.config,c=l.canvasWidth,u=n.getFromEnv("smartLabel"),p=!s.streamLinedData;(t=e[0])&&(t.pseudoPoint=!0),t&&t.displayValue&&(u.useEllipsesOnOverflow(n.config.useEllipsesWhenOverflow),u.setStyle(t.style),(0,o.setLineHeight)(t.style),a=parseFloat(t.style.lineHeight.match(/^\d+/)[0]||s.lineHeight,10),i=u.getOriSize(t.displayValue).height,r=u.getSmartText(t.displayValue,c,i),t.displayValue=r.text,r.tooltext&&(t.originalText=r.tooltext),t.labelWidth=u.getOriSize(r.text).width,l.marginTop+=a+4),s.totalValue=p?e[0].y-e[1].y:0,s.offsetVal=function(a){return p?-(e[a+1]&&e[a+1].y||0):t.y}},t.prototype.datasetCalculations=function(e){var t,a,o,r,i=this.config,n=this.getFromEnv("number-formatter"),l={},s=i.streamLinedData,c=i.percentOfPrevious;for(l.highestValue=Number.NEGATIVE_INFINITY,l.refreshedData=[],l.sumValue=l.countPoint=0,t=0,a=e.length;t<a;t++)(o=e[t]).vline||(o.cleanValue=r=Math.abs(n.getCleanValue(o.value,!0)),null!==r&&(l.hasValidPoint=!0,l.highestValue=l.highestValue||r,l.refreshedData.push(o),l.sumValue+=r,l.countPoint+=1,l.highestValue=Math.max(l.highestValue,r)));return s&&(l.sumValue=l.highestValue,c&&(l.prevPerValReq=!0)),l},t.prototype.calculatePositionOfPlots=function(){var e,t,a,r,i,n,l,s,c,u,p,h,d,g,f,m,b,v,y=this.getFromEnv("chart").config,k=this.config,w=this.utils(this),C=w.getSumValueOfObjArrByKey,x=w.DistributionMatrix,T=this.calculatePositionCoordinate,S=k.psmMargin,A=this.getChildren("data"),E=k.streamLinedData,N=2,O=this.getDataLength(),F=k.maxValue=A[0].y,D=k.minValue=A[O-1].y,L=0,M=0,R=k.lineHeight,_=Math.floor;if(k.sumValue&&(this.postPlotCallback=o.stubFN,y.canvasTop+=y.marginTop-S.top,y.effCanvasHeight=i=y.canvasHeight-(y.marginTop+y.marginBottom)+(S.top+S.bottom),y.effCanvasWidth=n=y.width-(y.marginLeft+y.marginRight),l=k.drawingRadius=n/N,k.x=l+y.canvasLeft,!(E&&O<2))){for(E?(r=i/(F-D),u=(s=C(A,"value"))?i/s:i):u=r=F?i/F:i,k.unitHeight=r,k.lastRadius=l,k.globalMinXShift=0,(c=k.alignmentType={})["default"]=1,c.alternate=2,v=new x(_(i/R)),e=0,t=O;e<t;e++)(a=A[e]).getState("removed")||(!E&&0===e||!E&&e===t-1?v.forcePush(a,e):(L=a.y*u,p=_(((M+=a.y*u)-L+L/2)/R),v.push(a,p)));if(h=v.getDistributedResult(),A.length=0,void 0===h.matrix[1])[].push.apply(A,h.matrix[0]);else for(d=h.matrix[0],g=h.matrix[1],t=Math.max(d.length,g.length),e=0;e<t;e++)m=d[e],f=g[e],A.push(m||f);if(Object.keys(h.forceMatrix).length>0)for(b in h.forceMatrix)[].splice.apply(A,[parseInt(b,10),0].concat(h.forceMatrix[b]));switch(h.suggestion){case c["default"]:T.call(this,A,!1);break;case c.alternate:k.labelAlignment=c.alternate,l=n/(N=3),y.canvasLeft=y.canvasWidth/2-l,k.x=y.canvasLeft+l,T.call(this,A,!0)}}},t.prototype.draw=function(){var e,t,a,o,r,n,l,s=this,c=s.getFromEnv("chart"),u=s.config,p=s.config.trackerArgs=[],h=s.getChildren("data"),d=c.getChildContainer("datalabelsGroup"),g=u.streamLinedData,f=h.length,m=Math.min;if(s.config.labelDrawingConfig=s.config.labelDrawingConfig||[],s.config.labelDrawingConfig.length=0,u.sumValue)if(s.animateFunction=function(e){return function(){e.attr({opacity:1})}},r=(a=u.slicingDistance)/2,g&&f<2)s.hide(s.getChildren("data"),f);else{for(e=0,t=h.length;e<t;e++)h[e]&&h[e].shapeArgs&&!h[e].getState("removed")&&(h[e].shapeArgs.renderer=c.getFromEnv("paper"));for((o=u.noOfGap)&&(u.perGapDistance=m(1.5*r,a/o),u.distanceAvailed=r),e=h.length,u.alreadyPlotted&&(s.postPlotCallback=function(){l||(l=!0,s.animateFunction(d)())});e--;)(n=h[e]).index=e,n.syncDraw();for(u.oldLastData=Object.assign({},h[h.length-1].shapeArgs),s.hide(s.getChildren("data"),f),u.connectorEndSwitchHistoryY={},e=h.length;e--;)h[e].getState("removed")||p.push(h[e]);s.addJob("labelDrawID",s.drawAllLabels.bind(s),i.priorityList.label),s.addJob("trackerDrawID",s.drawAllTrackers.bind(s),i.priorityList.tracker),s.removePlots(),u.alreadyPlotted=!0,u.prevIs2d=u.is2d}},t.prototype.getTooltipMacroStub=function(t){var a,o,r=this.config,i=this.getFromEnv("number-formatter");return r.streamLinedData&&(o=r.percentOfPrevious?t.pValue:i.percentValue(t.dataValue/t.prevValue*100)),(a=e.prototype.getTooltipMacroStub.call(this,t)).percentValue=r.percentOfPrevious?i.percentValue(t.dataValue/t.highestValue*100):t.pValue,a.percentOfPrevValue=o,a},t}(r["default"]);t["default"]=c},664:function(e,t,a){"use strict";t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=a(118),i=a(122),n=u(a(131)),l=a(369),s=u(a(665)),c=a(125);function u(e){return e&&e.__esModule?e:{"default":e}}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var h,d=r.preDefStr.showHoverEffectStr,g="none",f="fill",m=Math,b=m.round,v=m.ceil,y=m.max,k=m.min,w=m.pow,C=m.sqrt,x={},T=r.preDefStr.colors.c000000,S=r.preDefStr.POSITION_START,A=r.preDefStr.POSITION_MIDDLE,E="path",N="0,100",O=window,F=O.navigator.userAgent,D=/msie/i.test(F)&&!O.opera,L=r.regex.hexcode,M="rgba(192,192,192,"+(D?.002:1e-6)+")",R=r.regex.dropHash,_=function(e){return"object"===(void 0===e?"undefined":o(e))},P=function(e){return"string"==typeof e},V=function(e){return e!==h&&null!==e},I="M",G="A",j="L",B="Z",H=r.regex.startsRGBA,W=function(e){var t,a=[];return function(e){(t=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(e))?a=[parseInt(t[1],10),parseInt(t[2],10),parseInt(t[3],10),parseFloat(t[4])]:(t=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(e))&&(a=[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),1])}(e),{get:function(t){return a&&!isNaN(a[0])?"rgb"===t?"rgb("+a[0]+","+a[1]+","+a[2]+")":"hex"===t?"#"+(T+(a[0]<<16|a[1]<<8|a[2]).toString(16)).slice(-6):"a"===t?a[3]:"rgba("+a.join(",")+")":e},brighten:function(e){var t;if(!isNaN(e)&&0!==e)for(t=0;t<3;t++)a[t]+=parseInt(255*e,10),a[t]<0&&(a[t]=0),a[t]>255&&(a[t]=255);return this},setOpacity:function(e){return a[3]=e,this}}};(0,c.addDep)({name:"funnelPyramidBaseAnimation",type:"animationRule",extension:s["default"]});var z=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a,o,n,l,s,c,u=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return u.components={},u.utils=function(e){function t(){var e=[],a=0;this.set=function(t,o){a++,e[t]=o},this.get=function(t){return e[t]},this.getAll=function(){return e},this.mergeWith=function(a){var o,r,i,n=e.slice(0);if(a instanceof Array)o=a;else{if(!(a instanceof t))return;o=a.getAll()}for(r in o)i=o[r],n[r]||(n[r]=i);return n},this.getEffectiveLength=function(){return a}}function a(e){this.distributionLength=e,this.distributedMatrix=[],this.altDistributedMatrix=[],this.nonDistributedMatrix={},this.forcePushObj={},this.flags={exhaustion:!1}}return t.prototype.constructor=t,a.prototype.constructor=a,a.prototype.push=function(e,t){this.nonDistributedMatrix[t]=this.nonDistributedMatrix[t]||[],this.nonDistributedMatrix[t].push(e)},a.prototype.forcePush=function(e,t){this.forcePushObj[t]=e},a.prototype.distribute=function(a){var o,i,n,l,s,c,u,p=e,h=!0,d=new t,g=new t,f=new t,m=new t,b=this.flags,v=0,y=p.getDataLength();if(a){if(y-this.distributionLength>0)for(n in this.nonDistributedMatrix)for(o=this.nonDistributedMatrix[n],s=1;s<o.length;s++)(u=o[s]).dontPlot=!0,u.displayValue=r.BLANK}else if(y-2*this.distributionLength>0)for(n in this.nonDistributedMatrix)for(o=this.nonDistributedMatrix[n],s=1;s<o.length-1;s++)(u=o[s]).dontPlot=!0,u.displayValue=r.BLANK;if(y>this.distributionLength&&!a){for(n in b.exhaustion=!0,this.nonDistributedMatrix)for(s=0,c=(o=this.nonDistributedMatrix[n]).length;s<c;s++)(u=o[s]).dontPlot?i=h?f:m:(i=h?d:g).getEffectiveLength()>parseInt(n,10)?u.distributionFactor=i.getEffectiveLength()-1-n:u.distributionFactor=0,i.set(v++,u),h=!h;this.distributedMatrix=d.mergeWith(f),this.altDistributedMatrix=g.mergeWith(m)}else{for(l in this.nonDistributedMatrix)for(s=0,c=(o=this.nonDistributedMatrix[l]).length;s<c;s++)(u=o[s]).dontPlot?i=f:(i=d).getEffectiveLength()>parseInt(l,10)?u.distributionFactor=i.getEffectiveLength()-1-l:u.distributionFactor=0,i.set(v++,u);this.distributedMatrix=d.mergeWith(f)}},a.prototype.getDistributedResult=function(){var t,a=e,o=a.getFromEnv("chart"),r=o.config,i=o.getFromEnv("legend"),n=a.config,l=n.alignmentType,s=[],c=o.isLegendRight;r.width,n.blankSpace;return r.showLegend&&i.config.width?c&&i.config.width+r.marginRight:c=0,o.isLegendRight=c,this.distribute(c),c?(t=l["default"],s.push(this.distributedMatrix)):(t=this.flags.exhaustion?l.alternate:l["default"],this.flags.exhaustion?[].push.call(s,this.distributedMatrix,this.altDistributedMatrix):s.push(this.distributedMatrix)),{forceMatrix:this.forcePushObj,suggestion:t,matrix:s}},{DistributionMatrix:a,setContext:function(t){e=t},invokeHookFns:function(){var t,a=[],o=e;switch(arguments.length){case 3:o=arguments[2];case 2:a=arguments[1];case 1:t=arguments[0];break;default:return}t&&"function"==typeof t&&t.apply(o,a)},copyProperties:function(t,a,o){var i,n,l,s,c,u,p,h,d,g,f=r.stubFN;for(i=0,n=o.length;i<n;i++)s=(l=o[i])[0],c=l[1],u=l[2],d=l[3],g=void 0,p="string"==typeof d&&0===d.indexOf("$")?(g=d.substring(1),a[g]):"function"==typeof d?d.call(e,a):d,h=l[4]||f,a[c]=u(t[s],p),h(a)},sortObjArrByKey:function(e,t){return e.sort(function(e,a){return Math.abs(a[t])-Math.abs(e[t])})},getSumValueOfObjArrByKey:function(e,t){var a,o,r=0;for(a=0,o=e.length;a<o;a++)r+=parseFloat(e[a][t],10);return r}}},u.hide=function(e,t){var a,o,r=this.getFromEnv("animationManager"),i=function(){this.hide()};if(e&&0!==e.length)for(t=t<2&&"funnel"===this.getName()?0:t,a=e.length-1;a>=t;a--)(o=e[a].getGraphicalElement()).graphic&&(o.graphic.front&&r.setAnimation({el:o.graphic.front,callback:i,component:this}),o.graphic.back&&r.setAnimation({el:o.graphic.back,callback:i,component:this}),o.graphic.funnel2D&&r.setAnimation({el:o.graphic.funnel2D,callback:i,component:this}),o.graphic.lighterHalf&&r.setAnimation({el:o.graphic.lighterHalf,callback:i,component:this}),o.graphic.darkerHalf&&r.setAnimation({el:o.graphic.darkerHalf,callback:i,component:this}),o.graphic.borderElement&&r.setAnimation({el:o.graphic.borderElement,callback:i,component:this}),o.graphic.centerLight&&r.setAnimation({el:o.graphic.centerLight,callback:i,component:this}),o.graphic.centerLight1&&r.setAnimation({el:o.graphic.centerLight1,callback:i,component:this}),o.graphic.toptop&&r.setAnimation({el:o.graphic.toptop,callback:i,component:this}),o.graphic.topLight&&r.setAnimation({el:o.graphic.topLight,callback:i,component:this}),o.graphic.topLight1&&r.setAnimation({el:o.graphic.topLight1,callback:i,component:this})),o.dataLabel&&r.setAnimation({el:o.dataLabel,callback:i,component:this}),o.trackerObj&&r.setAnimation({el:o.trackerObj,callback:i,component:this})},u.pyramidFunnelShape=(a={y:!0,R1:!0,R2:!0,h:!0,r3dFactor:!0,color:!0,opacity:!0,fill:!0,stroke:!0,strokeColor:!0,strokeAlpha:!0,"stroke-width":!0},o=function(e,t,a,o,r,i){return[G,a,o,0,i,r,e,t]},n=function(e,t,a,r,i,n,l){var s,c=a*n,u=r*n,p=function(e,t,a,o,r,i){var n,l,s,c,u,p,h,d=w(o,2)-w(e,2),g=-2*(w(o,2)*a-w(e,2)*i),f=w(e*r,2)+w(o*a,2)-w(o*t,2)-w(e*i,2),m=C(w(g,2)-4*d*f),v=(-g+m)/(2*d),y=(-g-m)/(2*d);for(h in v<i&&v>a?l=y:y<i&&y>a&&(l=v),c=-(s=C((w(l-a,2)-w(t,2))/w(e,2))),u={x:b(w(e,2)*s/(l-a)*100)/100,y:b(100*(w(t,2)/(l-a)+a))/100},p={x:b(w(o,2)*s/(l-i)*100)/100,y:b(100*(w(r,2)/(l-i)+i))/100},n={topLeft:{x:b(w(e,2)*c/(l-a)*100)/100,y:b(100*(w(t,2)/(l-a)+a))/100},bottomLeft:{x:b(w(o,2)*c/(l-i)*100)/100,y:b(100*(w(r,2)/(l-i)+i))/100},topRight:u,bottomRight:p})(isNaN(n[h].x)||isNaN(n[h].y))&&(n[h].x="topLeft"===h||"bottomLeft"===h?-e:e,n[h].y="bottomRight"===h||"bottomLeft"===h?i:a);return n}(a,c,t,r,u,t+i),h=p.topLeft,d=p.bottomLeft,g=p.topRight,f=p.bottomRight,m=e+h.x,v=e+g.x,y=e+d.x,k=e+f.x,x=h.y,T=d.y,S=o(v,x,a,c,0,0),A=o(v,x,a,c,1,1),E=o(y,T,r,u,1,0),N=o(y,T,r,u,0,1);return s={front:[I,m,x].concat(S,[j,k,T],E,[B]),back:[I,m,x].concat(A,[j,k,T],N,[B]),silhuette:[I,m,x].concat(A,[j,k,T],E,[B])},l||(s.top=[I,m,x].concat(S,[j,v,x],o(m,x,a,c,0,1),[B])),s},l=function(e,t,a,o,r,i,l,s,c,u){_(e)&&(t=e.y,a=e.R1,o=e.R2,r=e.h,i=e.r3dFactor,l=e.is2D,u=e.isHollow,c=e.isFunnel,e.renderer,e=e.x);var p,h,d,g,f,m,b,v=e-a,y=e+a,w=e-o,C=e+o,x=t+r;return l?(p={silhuette:[I,v,t,j,y,t,C,x,w,x,B]},c||(e=Math.round(e),p.lighterHalf=[I,v,t,j,e,t,e,x,w,x,B],p.darkerHalf=[I,e,t,j,y,t,C,x,e,x,B])):c?p=n(e,t,a||.01,o||.01,r,i,u):(h=a*i,d=o*i,g=k(5,a),f=k(2,2*h),m=k(2,f),p={top:[I,v,t,j,e,t+h,y,t,e,t-h,B],front:[I,v,t,j,e,t+h,y,t,C,x,e,x+d,w,x,B],topLight:[I,v,t+.5,j,e,t+h+.5,e,t+h-f,v+(b=m/i),t,B],topLight1:[I,y,t+.5,j,e,t+h+.5,e,t+h-m,y-b,t,B],silhuette:[I,v,t,j,e,t-h,y,t,C,x,e,x+d,w,x,B],centerLight:[I,e,t+h,j,e,x+d,e-5,x+d,e-g,t+h,B],centerLight1:[I,e,t+h,j,e,x+d,e+5,x+d,e+g,t+h,B]}),p},s=function(e,t){var o,n,s,c,u,p,h,d,g,m,b,v,y,k,w,C,x=this,T=!1,S=!1,A=this._3dAttr;if(P(e)&&V(t)&&(o=e,(e={})[o]=t),P(e))x=a[e]?this._3dAttr[e]:this._attr(e);else{for(o in e)n=e[o],a[o]?(A[o]=n,o===f?(n&&n.linearGradient&&n.stops&&n.stops[0]&&(n=n.stops[0][1]),H.test(n)?(s=(u=new W(n)).get("hex"),c=100*u.get("a")):n&&n.FCcolor?(s=n.FCcolor.color.split(r.COMMASTRING)[0],c=n.FCcolor.opacity.split(r.COMMASTRING)[0]):L.test(n)&&(s=n.replace(R,r.HASHSTRING),c=(0,r.pluckNumber)(A.opacity,100)),A.color=s,A.opacity=c,S=!0):"color"===o||"opacity"===o?(A.fill=(0,r.toRaphaelColor)((0,i.convertColor)(A.color,(0,r.pluckNumber)(A.opacity,100))),S=!0):"stroke"===o||"strokeColor"===o||"strokeAlpha"===o?A.is2D&&("stroke"===o?(n&&n.linearGradient&&n.stops&&n.stops[0]&&(n=n.stops[0][1]),H.test(n)?(s=(u=new W(n)).get("hex"),c=100*u.get("a")):n&&n.FCcolor?(s=n.FCcolor.color.split(r.COMMASTRING)[0],c=n.FCcolor.opacity.split(r.COMMASTRING)[0]):L.test(n)&&(s=n.replace(R,r.HASHSTRING),c=(0,r.pluckNumber)(A.opacity,100)),A.strokeColor=s,A.strokeAlpha=c):A.stroke=(0,i.convertColor)(A.strokeColor,(0,r.pluckNumber)(A.strokeAlpha,100)),A.isFunnel?this.funnel2D.attr("stroke",A.stroke):this.borderElement.attr("stroke",A.stroke)):"stroke-width"===o?A.is2D&&(A.isFunnel?this.funnel2D.attr(o,n):this.borderElement.attr(o,n)):T=!0):this._attr(o,n);A.is2D?(T&&(g=l(A.x,A.y,A.R1,A.R2,A.h,A.r3dFactor,A.is2D),x.shadowElement.attr({path:g.silhuette}),A.isFunnel?x.funnel2D.attr({path:g.silhuette}):(x.lighterHalf.attr({path:g.lighterHalf}),x.darkerHalf.attr({path:g.darkerHalf}),x.borderElement.attr({path:g.silhuette}))),S&&(A.isFunnel?x.funnel2D.attr(f,(0,r.toRaphaelColor)((0,i.convertColor)(A.color,(0,r.pluckNumber)(A.opacity,100)))):(!1===A.use3DLighting?m=b=A.color:(m=(0,i.getDarkColor)(A.color,80),b=(0,i.getLightColor)(A.color,80)),x.lighterHalf.attr(f,(0,r.toRaphaelColor)((0,i.convertColor)(b,(0,r.pluckNumber)(A.opacity,100)))),x.darkerHalf.attr(f,(0,r.toRaphaelColor)((0,i.convertColor)(m,(0,r.pluckNumber)(A.opacity,100))))))):(T&&(g=l(A.x,A.y,A.R1,A.R2,A.h,A.r3dFactor,A.is2D),x.shadowElement.attr(E,g.silhuette),A.isFunnel?(x.front.attr(E,g.front),x.back.attr(E,g.back),x.toptop&&g.top&&x.toptop.attr(E,g.top)):(x.front.attr(E,g.front),x.toptop.attr(E,g.top),x.topLight.attr(E,g.topLight),x.topLight1.attr(E,g.topLight1),x.centerLight.attr(E,g.centerLight),x.centerLight1.attr(E,g.centerLight1))),S&&(s=A.color,c=A.opacity,A.isFunnel?(p=(0,i.getLightColor)(s,60),d=(0,i.getDarkColor)(s,60),x.back.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:d+r.COMMASTRING+p+r.COMMASTRING+s,alpha:c+r.COMMASTRING+c+r.COMMASTRING+c,ratio:"0,60,40",angle:0}})),x.front.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:s+r.COMMASTRING+p+r.COMMASTRING+d,alpha:c+r.COMMASTRING+c+r.COMMASTRING+c,ratio:"0,40,60",angle:0}})),x.toptop&&x.toptop.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:p+r.COMMASTRING+d,alpha:c+r.COMMASTRING+c,ratio:N,angle:-65}}))):(p=(0,i.getLightColor)(s,80),h=(0,i.getLightColor)(s,70),d=(0,i.getDarkColor)(s,80),v=N,y="0,"+c,k=s+r.COMMASTRING+h,w=-45,C=5/(A.R1*A.r3dFactor)*100,x.centerLight.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:k,alpha:y,ratio:v,angle:0}})),x.centerLight1.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:k,alpha:y,ratio:v,angle:180}})),x.topLight.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:h+r.COMMASTRING+h+r.COMMASTRING+s+r.COMMASTRING+s,alpha:c+r.COMMASTRING+c+r.COMMASTRING+0+r.COMMASTRING+0,ratio:"0,50,"+C+r.COMMASTRING+(50-C),angle:w}})),x.topLight1.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:h+r.COMMASTRING+s+r.COMMASTRING+d,alpha:c+r.COMMASTRING+c+r.COMMASTRING+c,ratio:"0,50,50",angle:0}})),x.front.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:s+r.COMMASTRING+s+r.COMMASTRING+d+r.COMMASTRING+d,alpha:c+r.COMMASTRING+c+r.COMMASTRING+c+r.COMMASTRING+c,ratio:"0,50,0,50",angle:0}})),x.toptop.attr(f,(0,r.toRaphaelColor)({FCcolor:{color:p+r.COMMASTRING+s+r.COMMASTRING+d+r.COMMASTRING+d,alpha:c+r.COMMASTRING+c+r.COMMASTRING+c+r.COMMASTRING+c,ratio:"0,25,30,45",angle:w}})))))}return x},c=function p(){var e=this.shadowElement;p&&e.shadow.apply(e,arguments)},function(e,t,a,o,i,n,u,p,h,d,f,m){var b,v,y,k,w,C,T,S,A=this.getFromEnv("chart").getChildContainer().plotGroup,E=this.config.oldLastData;return _(e)&&(t=e.y,a=e.R1,o=e.R2,i=e.h,n=e.r3dFactor,u=e.gStr,p=e.is2D,m=e.use3DLighting,h=e.renderer,f=e.isHollow,d=e.isFunnel,T=e.graphics,e=e.x),(k=function(e,t){var a,o,r,i,n,l=["silhuette","lighterHalf","darkerHalf","centerLight","centerLight1","front","toptop","topLight","topLight1","shadowElement","funnel2D","borderElement","back"];if(e){if((i=e._3dAttr).isFunnel===t.isFunnel&&i.is2D===t.is2D&&i.isHollow===t.isHollow)return e;for(o=0,n=l.length;o<n;o++)(a=e[r=l[o]])&&(delete e[r],a.remove());return e}}(T,b={x:e,y:t,R1:a,R2:o,h:i,r3dFactor:n=(0,r.pluckNumber)(n,.15),is2D:p,use3DLighting:m,isHollow:f,isFunnel:d,renderer:h})||h.group(u,A)).toFront(),(!k.front&&!p||!k.funnel2D&&!k.lighterHalf&&p)&&this.getState("notInitial")&&this.config.prevIs2d===b.is2D?(y=l(b),E.y=E.y+E.h,E.R1=E.R2,E.h=0,v=l(E)):(v=l(b),this.getState("notInitial",!0)),(C=Object.assign({},b)).y=C.y+C.h,C.R1=C.R2,C.h=0,w=l(C),k.squeezedFormPathObj=w,k.Shapeargs=y||v,S=function(e,t){var a=e.getFromEnv("chart");return function(o,r,i){var n=t[o];return n?(a.getFromEnv("animationManager").setAnimation({el:n,attr:{path:r},component:e}),n):(i=i||x,e.postPlotCallback(),a.getFromEnv("animationManager").setAnimation({el:"path",label:"path",attr:Object.assign({path:r},i),container:t,component:e}))}}(this,k),k.shadowElement=S("shadowElement",v.silhuette,{fill:M,stroke:g}),k._attr=k._attr||k.attr,k.attr=s,k.shadow=c,k._3dAttr=b,d?p?(k.funnel2D=S("funnel2D",v.silhuette),y&&(k.funnel2D=S("funnel2D",y.silhuette))):(k.back=S("back",v.back,{"stroke-width":0,stroke:g}),k.front=S("front",v.front,{"stroke-width":0,stroke:g}),y&&(k.back=S("back",y.back,{"stroke-width":0,stroke:g})),y&&(k.front=S("front",y.front,{"stroke-width":0,stroke:g})),v.top&&(k.toptop=S("toptop",v.top,{"stroke-width":0,stroke:g}),y&&(k.toptop=S("toptop",y.top,{"stroke-width":0,stroke:g})))):p?(k.lighterHalf=S("lighterHalf",v.lighterHalf,{"stroke-width":0}),y&&(k.lighterHalf=S("lighterHalf",y.lighterHalf,{"stroke-width":0})),k.darkerHalf=S("darkerHalf",v.darkerHalf,{"stroke-width":0}),y&&(k.darkerHalf=S("darkerHalf",y.darkerHalf,{"stroke-width":0})),k.borderElement=S("borderElement",v.silhuette,{fill:M,stroke:g}),y&&(k.borderElement=S("borderElement",y.silhuette,{fill:M,stroke:g}))):(k.front=S("front",v.front,{"stroke-width":0}),y&&(k.front=S("front",y.front,{"stroke-width":0})),k.centerLight=S("centerLight",v.centerLight,{"stroke-width":0}),y&&(k.centerLight=S("centerLight",y.centerLight,{"stroke-width":0})),k.centerLight1=S("centerLight1",v.centerLight1,{"stroke-width":0}),y&&(k.centerLight1=S("centerLight1",y.centerLight1,{"stroke-width":0})),k.toptop=S("toptop",v.top,{"stroke-width":0}),y&&(k.toptop=S("toptop",y.top,{"stroke-width":0})),k.topLight=S("topLight",v.topLight,{"stroke-width":0}),y&&(k.topLight=S("topLight",y.topLight,{"stroke-width":0})),k.topLight1=S("topLight1",v.topLight1,{"stroke-width":0}),y&&(k.topLight1=S("topLight1",y.topLight1,{"stroke-width":0}))),k}),u.config.legendItemIds=[],(0,u.utils(u).invokeHookFns)(u.postInitHook),u}return p(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"funnelPyramidBase"},t.prototype.trimData=function(e){l.trimData.call(this,e)},t.prototype.getDataLength=function(){var e,t=this.getChildren("data"),a=0,o=t.length;for(e=0;e<o;e++)t[e].getState("removed")||a++;return a},t.prototype.removeData=function(e,t){var a,o,i,n=arguments.length>2&&arguments[2]!==undefined&&arguments[2],l=this.components,s=this.getChildren("data");for(t=(0,r.pluckNumber)(t,1),e=(0,r.pluckNumber)(e,0),i=(a=l.removedDataArr=s.splice(e,t)).length,o=0;o<i;o++)a[o]||a.splice(o,1);n&&this.asyncDraw()},t.prototype.removePlots=function(){var e,t,a,o,r=this.components.removedDataArr;if(r)for(e=r.length-1;e>=0;e--){for(t in a=(o=r[e]).getGraphicalElement())o.removeGraphicalElement(a[t]);r.splice(e,1)}},t.prototype._configure=function(){var e=this.getFromEnv("chart"),t=this.getFromEnv("color-manager"),a=e.config.style,o=this.config||{},n=this.config.JSONData.data||[],l=e.getFromEnv("dataSource")?e.getFromEnv("dataSource").chart:{},s=this.utils(this),c=s.invokeHookFns,u=s.copyProperties,p=this.configureSpecifics,g=t.getColor("baseFontColor");u(l,o,[["showlabels","showLabels",r.pluckNumber,1],["showvalues","showValues",r.pluckNumber,1],["plottooltext","toolText",r.pluck,r.BLANK],["enableslicing","enableSlicing",r.pluckNumber,1],["plotfillalpha","plotFillAlpha",r.pluckNumber,100],["showplotborder","showPlotBorder",r.pluckNumber,0],["plotborderalpha","plotBorderAlpha",r.pluckNumber,h],["plotbordercolor","plotBorderColor",r.pluck,h],["plotborderthickness","plotBorderThickness",r.pluckNumber,1],["showshadow","showShadow",r.pluckNumber,1],["showhovereffect",d,r.pluckNumber,0],["hovercapsepchar","hoverCapSepChar",r.pluck,r.COMMASPACE],["tooltipsepchar","tooltipSepChar",r.pluck,"$hoverCapSepChar"],["labelsepchar","labelSepChar",r.pluck,"$tooltipSepChar"],["showpercentintooltip","showPercentInToolTip",r.pluckNumber,1],["showpercentvalues","showPercentValues",r.pluckNumber,0],[r.BLANK,"blankSpace",r.pluckNumber,3],["labeldistance","labelDistance",r.pluckNumber,50],["issliced","isSliced",r.pluckNumber,0],["is2d","is2d",r.pluckNumber,0],[r.BLANK,"blankSpace",r.pluckNumber,3],["showlabelsatcenter","showLabelsAtCenter",r.pluckNumber,0],["smartlinethickness","connectorWidth",r.pluckNumber,1],["smartlinealpha","connectorAlpha",r.pluckNumber,100],["smartlinecolor","rawSmartLineColorCode",r.pluck,function(){return t.getColor("baseFontColor")}],["labelalpha","labelAlpha",r.pluckNumber,100],["basefont","baseFont",r.pluck,"Verdana,sans"],["basefontsize","baseFontSize",r.pluckNumber,10],["basefontcolor","baseFontColor",r.pluck,g],["labelfontcolor","labelFontColor",r.pluck,"$baseFontColor"],["showtooltip","showTooltip",r.pluckNumber,1],["percentofprevious","percentOfPrevious",r.pluckNumber,0],["animationduration","animationDuration",r.pluckNumber,1,function(e){e.animationDuration*=1e3}]]),o.connectorColor=(0,i.convertColor)(o.rawSmartLineColorCode,o.connectorAlpha),o.origLabelDistance=o.labelDistance,(0,r.setLineHeight)(a),a.nLineHeight=a.lineHeight.match(/^\d+/)[0],u(a,o,[[r.BLANK,"lineHeight",r.pluckNumber,o.baseFontSize]]),o.isSliced&&(o.clicked=!0),delete a.nLineHeight,c(p),o.showLabels||o.showValues?o.datalabelDisabled=!1:o.datalabelDisabled=!0,this.getNormalizeDataSet(n)},t.prototype._preDrawingHook=function(){var e=this.getFromEnv("chart"),t=this.config,a=e.config,o=this.utils(this),i=e.getFromEnv("dataSource")?e.getFromEnv("dataSource").chart:{},n=a.canvasHeight;(0,o.copyProperties)(i,t,[[r.BLANK,"slicingDistance",r.pluckNumber,.1*n],["slicingdistance","slicingHeight",r.pluckNumber,"$slicingDistance",function(){t.slicingHeight>2*t.slicingDistance?t.slicingDistance=0:t.slicingDistance=t.slicingHeight}]])},t.prototype._checkValidData=function(e){var t=this.getFromEnv("chart");return!(!e||!e.length)||(t.setChartMessage(),!1)},t.prototype.addLegend=function(){var e,t,a,n,l,s=this.getFromEnv("chart"),c=0,u=s.getFromEnv("dataSource").chart,p=this.getChildren("data")||this.config.JSONData.data,h=s.getFromEnv("legend"),d=h.getChildren("legendItem");for(n=0;n<p.length;n++)if(t=(l=p[n]).config,l.pseudoPoint||l.getState("removed")||!l.label&&!l.categoryLabel){if(l.pseudoPoint)continue;o("undefined"!==l.categoryLabel)&&c++,t.legendItemId&&((d=h.getItem(t.legendItemId))&&h.disposeItem(d.getId()),delete t.legendItemId)}else e={type:this.getName(),label:l.label||l.categoryLabel,index:c,enabled:(0,r.pluckNumber)(u.includeinlegend,1),legendItemId:l.legendItemId},(d=h.getItem(t.legendItemId))||(a=h.createItem(this),l.config.legendItemId=a,(d=h.getItem(t.legendItemId)).addEventListener("fc-click",d.itemClickFn)),d.configure(e),c++,d.setStateCosmetics("default",{symbol:{fill:p[n].legendColor,rawFillColor:p[n].rawColor,stroke:(0,i.getLightColor)(p[n].rawColor,60).replace(R,r.HASHSTRING)}})},t.prototype.legendInteractivity=function(e){var t,a=this.getChildren("data"),o=void 0,r=e.getId();for(o=0,t=a.length;o<t;o++)if(a[o].config.legendItemId===r){this.legendClick({datasetStore:this,plotItem:a[o].plot},!0,!1);break}},t.prototype.getNormalizeDataSet=function(e){var t,a,o,n,l,s,c,u,p,h,d=this.getChildren("data")||[],f=this.getFromEnv("chart"),m=this.config,b=this.getFromEnv("smartLabel"),v=m.pointInContext,y=f.getFromEnv("dataSource").chart,k=m.dataConnectorStyle={},w=f.config.PLOT_COLOR_INDEX_START,C=0;if((0,r.extend2)(c=m.style={},f.config.style),m.noOFSlicedElement=0,c.borderDash=g,c.borderPadding=2,c.borderRadius=0,c.borderThickness=1,c.color=(0,i.convertColor)(m.labelFontColor,m.labelAlpha),c.fontFamily=m.baseFont,c.fontSize=m.baseFontSize+"px",c.fontStyle="normal",c.fontWeight="normal",k.connectorWidth=m.connectorWidth,k.connectorColor=m.connectorColor,n=(u=this.datasetCalculations(e)).hasValidPoint,o=u.refreshedData,l=u.sumValue,h=+(!m.streamLinedData&&"funnel"===this.getName()),this._chartLevelAttr=(0,r.parsexAxisStyles)({},{},y,c),n)for(m.sumValue=l,s=o.length,(0,r.componentFactory)(this,v,"data",s+h),d=this.getChildren("data"),b.useEllipsesOnOverflow(f.config.useEllipsesWhenOverflow),t=0,C=h;t<s;t+=1,C+=1)a=o[t],(p=d[C]).getState("removed")||p.parseAndConfigurePoint(a,u,w++,t);h&&d[0]&&d[0].configure({displayValue:r.BLANK,y:m.sumValue,index:0})},t.prototype.datasetCalculations=function(e){var t,a,o,r,i=this.getFromEnv("number-formatter"),n={refreshedData:[]};for(n.sumValue=n.countPoint=0,n.highestValue=Number.NEGATIVE_INFINITY,t=0,a=e.length;t<a;t++)(o=e[t]).vline||(o.cleanValue=r=Math.abs(i.getCleanValue(o.value,!0)),null!==r&&(n.hasValidPoint=!0,n.highestValue=n.highestValue||r,n.refreshedData.push(o),n.sumValue+=r,n.countPoint+=1,n.highestValue=Math.max(n.highestValue,n.itemValue)));return n},t.prototype.pointHoverOptions=function(e,t){var a,o,n,l=this.config,s=this.getFromEnv("chart"),c=(0,r.pluckNumber)(e.showhovereffect,l.showHoverEffect),u={enabled:c},p={},d=s.getFromEnv("dataSource")?s.getFromEnv("dataSource").chart:{};if(c||(c=u.enabled=(0,r.pluck)(e.hovercolor,d.plotfillhovercolor,e.hoveralpha,d.plotfillhoveralpha,e.borderhovercolor,d.plotborderhovercolor,e.borderhoverthickness,d.plotborderhoverthickness,e.borderhoveralpha,d.plotborderhoveralpha)!==h),c){if(u.highlight=(0,r.pluckNumber)(e.highlightonhover,d.highlightonhover),u.color=(0,r.pluck)(e.hovercolor,d.plotfillhovercolor),u.alpha=(0,r.pluck)(e.hoveralpha,d.plotfillhoveralpha,t.alpha),u.borderColor=(0,r.pluck)(e.borderhovercolor,d.plotborderhovercolor,t.borderColor),u.borderThickness=(0,r.pluckNumber)(e.borderhoverthickness,d.plotborderhoverthickness,t.borderWidth),u.borderAlpha=(0,r.pluck)(e.borderhoveralpha,d.plotborderhoveralpha,t.borderAlpha),0!==u.highlight&&u.color===h&&(u.highlight=1),u.color=(0,r.pluck)(u.color,t.color).replace(/,+?$/,r.BLANK),1===u.highlight){for(o=(a=u.color.split(/\s{0,},\s{0,}/)).length,n=0;n<o;n+=1)a[n]=(0,i.getLightColor)(a[n],70);u.color=a.join(",")}p={color:u.color,alpha:+u.alpha,borderColor:(0,i.convertColor)(u.borderColor,u.borderAlpha),borderWidth:u.borderThickness}}return{enabled:c,options:u,rolloverOptions:p}},t.prototype.getTooltipMacroStub=function(e){return function(e){return{formattedValue:e.formatedVal,label:e.name,percentValue:e.pValue,sum:e.sum,unformattedSum:e.sumValue}}.call(this,e)},t.prototype.allocatePosition=function(){var e=this.getFromEnv("chart").config,t=this.config;this._preDrawingHook(),t.sumValue&&(t.labelDrawingConfig=t.labelDrawingConfig||[],t.labelDrawingConfig.length=0,t.psmMargin={top:e.marginTop,bottom:e.marginBottom},this.preDrawingSpaceManagement())},t.prototype.preDrawingSpaceManagement=function(){var e,t,a,o,i,n,l,s,c,u,p,d,g,f,m,b,k,w,C,x,T,S,A,E,N,O=this.getFromEnv("chart"),F=O.config,D=O.getChildren("caption")[0],L=O.getChildren("subCaption")[0],M=D.config.height||0,R=L.config.height||0,_=this.config,P=_.showTooltip,V=_.slicingDistance,I=F.height-(F.marginTop+F.marginBottom),G=F.width-(F.marginRight+F.marginLeft),j=this.getChildren("data"),B=_.blankSpace,H=this.config.LABEL_PLACEMENT_ITERATOR_INDEX_START,W="funnel"===this.getName()?1:0,z=this.getFromEnv("smartLabel"),U=0,X=0,K=this.utils(this).invokeHookFns,Y=this.prePointProcessingHookFn,J=O.getFromEnv("legend"),Z=0;for(F.showLegend&&"right"===J.config.legendPos&&(Z=J.config.width+10),F.oriCanvasLeft=O.config.canvasLeft,F.oriBottomSpace=O.config.marginBottom,F.oriTopSpace=O.config.marginTop,S=_._tempSnap={top3DSpace:0,bottom3DSpace:0,topLabelSpace:0,rightLabelSpace:0},e=I-V,t=Math.min(2*e,G),F.marginTop+=V/2,F.marginBottom+=V/2,a=this.getDataLength(),o=_.origLabelDistance+B,i=_.showLabelsAtCenter,l=G-(n=Math.min(t,.3*G)),s=(G-=Z)-n-o,c=0,p=.8/(u=j[0]&&j[0].y?j[0].y:1),K(Y,[j]),d=_.totalValue||0,z.useEllipsesOnOverflow(F.useEllipsesWhenOverflow);H<a;H+=1)(g=j[H]).legendItemId&&J.configureItems&&J.configureItems(g.legendItemId,{configuration:{fillColor:g.legendColor}}),N=g.style,(0,r.setLineHeight)(N),f=(0,r.pluckNumber)(v(parseFloat(N.lineHeight)+N.borderPadding+N.borderThickness+5),10),z.setStyle(N),k=g.y,i?m=z.getSmartText(g.origValue,G,f):(k=g.getModifiedCurrentValue&&g.getModifiedCurrentValue(d)||k,x=s+(n-(C=n*(w=g.getRatioK(this,k,p,d,u))))/2,m=z.getSmartText(g.origValue,x,f),g.displayValue=m.text,P&&m.tooltext&&(g.originalText=m.tooltext),c=Math.max(c,m.width),l>0&&(U=1/(w+1)*(C+2*(m.width>0?x-m.width:x+o)+n),l=Math.min(l,U-n)),d+=_.offsetVal===h?g.y:"function"==typeof _.offsetVal?_.offsetVal(H):_.offsetVal);if(F.showLegend&&"right"===J.config.legendPos?(O.isLegendRight=!0,F.marginRight+=Z):O.isLegendRight=!1,g&&(T=g.getLowestRadiusFactor(this,u)),(b=n+l)>t&&(b=t),d=_.offsetVal===h?0:"function"==typeof _.offsetVal?_.offsetVal():_.offsetVal,!i)for(H=this.config.LABEL_PLACEMENT_ITERATOR_INDEX_START,a=this.getDataLength();H<a;H+=1)k=(g=j[H]).y,k=g.getModifiedCurrentValue&&g.getModifiedCurrentValue(d)||k,x=s+(n-(C=b*(w=g.getRatioK(this,k,p,d,u))))/2-Z,m=z.getSmartText(g.displayValue,x,f),X=y(X,.5*C+m.width+o),d+=_.offsetVal===h?g.y:"function"==typeof _.offsetVal?_.offsetVal():_.offsetVal;c>0?(S.rightLabelSpace=G-b,(A=X-.5*F.canvasWidth)>0&&(F.marginRight+=A,F.marginLeft-=A),F.marginRight+=.5*S.rightLabelSpace,F.marginLeft+=.5*S.rightLabelSpace):o=0,_.labelDistance=_.connectorWidth=o,(i||!c)&&t<G&&(F.marginLeft+=.5*(G-t-o),F.marginRight+=.5*(G-t-o)),_.is2d||(F.marginTop+=S.top3DSpace=b*_.yScale*W/2,F.marginBottom+=S.bottom3DSpace=b*_.yScale*T/2),this.calculatePositionOfPlots(),E=M+R+5,"funnel"===this.getName()?_.streamLinedData&&j.length<2?(F.gaugeStartX=F.marginLeft,F.gaugeStartY=F.marginTop+E,F.gaugeEndX=b+F.marginLeft,F.gaugeEndY=F.canvasHeight+F.marginTop):(F.gaugeStartX=j[0].plotX-j[1].shapeArgs.R1,F.gaugeEndX=j[0].plotX+j[1].shapeArgs.R1,F.gaugeStartY=j[0].plotY,F.gaugeEndY=j[a-1].plotY):(F.gaugeStartX=j[a-1].plotX-j[a-1].shapeArgs.R2,F.gaugeEndX=j[a-1].plotX+j[a-1].shapeArgs.R2,F.gaugeStartY=j[0].shapeArgs.y,F.gaugeEndY=j[a-1].shapeArgs.y+j[a-1].shapeArgs.h),F.gaugeCenterX=F.canvasCenterX=(F.gaugeStartX+F.gaugeEndX)/2,F.gaugeCenterY=(F.gaugeStartY+F.gaugeEndY)/2,F.plotSemiWidth=(F.canvasWidth-S.rightLabelSpace)/2},t.prototype.animateElements=function(e,t,a,o){var r,i,n,l,s,c=this;function u(e,t){var a=(t||{}).alpha;a=a===h?o.post:{opacity:a},e&&c.getFromEnv("animationManager").setAnimation({el:e,attr:a,component:c})}for(a=a||[],r=0,i=e.length;r<i;r++)if(n=e[r])if(a.length)for(l=0,s=a.length;l<s;l++)u(e[r][t][a[l]],n.point);else u(n[t],n.point)},t.prototype.drawAllLabels=function(){var e,t,a,o,r=this.getFromEnv("chart"),i=this.config.labelDrawingConfig,n=r.getChildContainer("datalabelsGroup"),l=["fontFamily","fontSize","fontWeight","fontStyle"],s={};for(t=0,a=l.length;t<a;t++)(o=l[t])in this._chartLevelAttr&&(s[o]=this._chartLevelAttr[o]);for(n.css(s),t=i.length-1;t>-1;t--)(e=i[t].point).index=t,e.drawLabel()},t.prototype.drawAllTrackers=function(){var e,t,a=this.config.trackerArgs;for(e=0,t=a.length;e<t;e++)a[e].drawTracker()},t.prototype.calculatePositionCoordinate=function(e,t){var a,o,i,n,l,s,c,u,p,d,g=this.config,f=g.maxValue,m=g.is2d,b=g.x,v=this.getFromEnv("chart"),y=v.config,k=y.canvasTop,w=g.unitHeight,x=g.drawingRadius,T=g.labelDistance,E=g.showLabelsAtCenter,N=g.isHollow,O=.3*y.style.fontSize,F=g.yScale,D=g.blankSpace,L=g.lastRadius,M=this.getFromEnv("smartLabel"),R=0,_=this.getDataLength()-1,P=!1,V=0,I=g.lineHeight,G=.8/y.effCanvasHeight,j=v.config.width-2,B=g.streamLinedData,H={flag:!1,point:h,sLabel:h,setAll:function(e,t,a){this.flag=e,this.point=t,this.sLabel=a}},W={point:h,sLabel:h,set:function(e,t){var a=e,o=t;return function(e,t){var r,i;if(!e.dontPlot){if(!this.point||!this.sLabel)return this.point=e,void(this.sLabel=t);r=a(this.point,this.sLabel),i=a(e,t),o(r,i)&&(this.point=e,this.sLabel=t)}}}},z={},U={},X={},K={},Y=g.slicingGapPosition={};for((0,r.extend2)(z,H),(0,r.extend2)(U,H),z.setAll=function(e,t,a){var o=this.point,r=this.sLabel;if(this.flag=e,!o||!r)return this.point=t,void(this.sLabel=a);o.labelX-(r.oriTextWidth-r.width)>t.labelX-(a.oriTextWidth-a.width)&&(this.point=t,this.sLabel=a)},U.setAll=function(e,t,a){var o=this.point,r=this.sLabel;if(this.flag=e,!o||!r)return this.point=t,void(this.sLabel=a);o.labelX+r.oriTextWidth<t.labelX+a.oriTextWidth&&(this.point=t,this.sLabel=a)},(0,r.extend2)(X,W),(0,r.extend2)(K,W),X.set=W.set.apply(X,[function(e){return e.labelX},function(e,t){return e>t}]),K.set=W.set.apply(K,[function(e,t){return e.labelX+t.oriTextWidth},function(e,t){return e<t}]),g.noOfGap=0,M.useEllipsesOnOverflow(y.useEllipsesWhenOverflow),a=0,o=e.length;a<o;a++)(i=e[a])&&(i.x=a,i.plot&&(i.isSliced=!!i.isSliced||!!g.isSliced),i.isSliced=(0,r.pluckNumber)(i.isSliced,g.isSliced),a?(t&&(P=!P),i.isSliced&&((d=i.x)>1&&!Y[d]&&(Y[d]=!0,g.noOfGap+=1),d<_&&(Y[d+1]=!0,g.noOfGap+=1)),B?(s=1==g.useSameSlantAngle?f?x*i.y/f:x:f?x*C(i.y/f):x,n=w*(e[a-1].y-i.y)||1):s=x*(1-(R+=n=w*e[a].y)*G),i.shapeArgs={x:b,y:k,R1:L,R2:s,h:n||1,r3dFactor:F,isHollow:N,gStr:"point",is2D:m,renderer:v.getFromEnv("paper"),isFunnel:!0},M.setStyle(i.style),i.oriText=i.displayValue,l=l=M.getSmartText(i.displayValue,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),E?(i.labelAline=A,i.labelX=b,i.labelY=(m?k:k+F*L)+n/2+O):(i.labelAline=S,i.alignmentSwitch=P,i.distributionFactor=i.distributionFactor||0,P?(i.labelX=b-(T+s+D+l.width),i.labelX-=i.distributionFactor*g.globalMinXShift,X.set(i,l)):(i.labelX=b+T+s+D,i.labelX+=i.distributionFactor*g.globalMinXShift,K.set(i,l)),V=i.distributionFactor*I,i.labelY=k+O+n+V),t&&(P&&i.labelX<0?(c=i.labelX+l.width,u=M.getSmartText(i.displayValue,c,Number.POSITIVE_INFINITY,!0),i.labelX=2,i.isLabelTruncated=!0,i.displayValue=u.text,i.virtualWidth=u.maxWidth,z.setAll(!0,i,u)):!P&&i.labelX+l.width>j&&(u=M.getSmartText(i.displayValue,j-i.labelX,Number.POSITIVE_INFINITY,!0),i.isLabelTruncated=!0,i.displayValue=u.text,i.virtualWidth=u.maxWidth,U.setAll(!0,i,u))),i.pWidth=i.virtualWidth=l.width,k+=n,L=s):(i.oriText=i.displayValue,s=1==g.useSameSlantAngle?f?x*i.y/f:x:f?x*C(i.y/f):x,i.labelWidth>2*s&&!t?(i.labelAline=S,i.labelX=0):(i.labelAline=A,i.labelX=b),p=2*T,i.displayValue=M.getSmartText(i.origValue,2*s+p,Number.POSITIVE_INFINITY,!0).text,i.labelY=(m?k:k-F*L)-O-D),i.plotX=b,i.plotY=k);this.findBestPosition(e,{lTrimmedInfo:z,rTrimmedInfo:U,lLargestLabel:X,rLargestLabel:K})},t.prototype.findBestPosition=function(e,t){var a,o,r,i,n,l,s,c,u,p=this.config,h=this.getFromEnv("chart"),d=h.config,g=0,f=t.lTrimmedInfo,m=t.rTrimmedInfo,b=t.lLargestLabel,v=t.rLargestLabel,y=this.getFromEnv("smartLabel"),k=0,w=p.streamLinedData,C=p.blankSpace,x=d.width-p.blankSpace;if(!f.flag||!m.flag){if(m.flag){if(!b.point)return;a=(o=m.sLabel).oriTextWidth-o.width,r=b.point.labelX-C,g=-Math.ceil(Math.min(a,r))}else if(f.flag){if(!v.point)return;a=(o=f.sLabel).oriTextWidth-o.width,i=x-(v.point.labelX+v.sLabel.width),g=Math.ceil(Math.min(a,i))}if(g)for(s=0,c=e.length;s<c;s++)l=e[s],s||!w?(l.alignmentSwitch?(n=g<0?y.getSmartText(l.oriText,l.pWidth,Number.POSITIVE_INFINITY,!0):y.getSmartText(l.oriText,l.pWidth+g,Number.POSITIVE_INFINITY,!0),l.isLabelTruncated&&(k=n.width-l.pWidth),l.virtualWidth=n.width):(n=g>0?y.getSmartText(l.oriText,l.pWidth,Number.POSITIVE_INFINITY,!0):y.getSmartText(l.oriText,l.pWidth-g,Number.POSITIVE_INFINITY,!0),l.virtualWidth=n.width),l.displayValue=n.text,l.labelX+=g-k,l.shapeArgs&&(l.shapeArgs.x+=g),k=0):l.labelX+=g;else for(y.useEllipsesOnOverflow(d.useEllipsesWhenOverflow),s=0,c=e.length;s<c;s++)(u=(l=e[s]).labelX+l.pWidth-x)>0&&(l.lOverflow=u,l.labelX-=u,h.isLegendRight?l.displayValue=y.getSmartText(l.oriText,l.pWidth-u,Number.POSITIVE_INFINITY,!0).text:(l.lOverflow=u,l.labelX-=u))}},t.prototype.getPlotData=function(e){var t,a,o,r=this.getChildren("data")[e],i=this.userData||(this.userData=[]),n=["y","name","color","alpha","borderColor","borderWidth","link","label","displayValue","datasetIndex","toolText"];if(i[e])t=i[e];else{for(t=i[e]={},a=0;a<n.length;a++)t[o=n[a]]=r[o];t.value=t.y,t.label=t.name,delete t.y,delete t.name}return t},t.prototype.slice=function(){var e,t,a,o,r,i,n,l,s,c,u=this.datasetStore,p=this.plotItem,h=p.index,d=u.getChildren("data"),g=d[h].getGraphicalElement(),f=u.getFromEnv("chart"),m=u.getFromEnv("animationManager"),b=u.config,v=arguments[3]||b.clicked,y=b.slicingDistance/2,k=0,w=0,C=d.length,x=[];if(!b.sliceLock){for(b.sliceLock=1,v=p.sliced=V(v)?v:!p.sliced,r=-y,i=y,c=function(){return function(){b.sliceLock=0,f.fireChartInstanceEvent("SlicingEnd",{slicedState:v,data:u.getPlotData(o)})}},k=0;k<C;k+=1)(t=d[k].plot)&&!d[k].getState("removed")&&(g=d[k].getGraphicalElement(),t!==p?(d[k].isSliced=0,t.sliced=!1,x[k]={isSliced:!1},a=!1):(d[k].isSliced=1,x[k]={isSliced:v},a=!0,o=k),g.graphic&&(n=-t.dy,v&&(t.x<p.x?(n+=r,w+=1):t.x==p.x?w?k==C-1&&(n+=.5*y):n+=.5*-y:n+=i),g.graphic.attr({transform:"t0,"+t.dy}),t.dy+=n,e={transform:"...t0,"+n},a&&f.fireChartInstanceEvent("SlicingStart",{slicedState:!v,data:u.getPlotData(o)}),m.setAnimation({el:g.graphic,attr:e,component:u,callback:a&&c()}),g.dataLabel&&m.setAnimation({el:g.dataLabel,attr:e,component:u}),g.connector&&m.setAnimation({el:g.connector,attr:e,component:u}),g.trackerObj&&m.setAnimation({el:g.trackerObj,attr:e,component:u}),l=d[0].getGraphicalElement("graphic"),s=d[0].getGraphicalElement("dataLabel"),1==k&&!l&&s&&m.setAnimation({el:s,attr:e,component:u})));delete b.clicked}},t.prototype.legendClick=function(e){this.slice.call(e)},t.prototype.getEventArgs=function(e){var t=this.getChildren("data")[e.config.index]||{};return{alpha:t.alpha,value:t.y,color:t.color,borderColor:t.borderColor,borderWidth:t.borderWidth,link:t.link,displayValue:t.displayValue,datasetIndex:t.datasetIndex,toolText:t.toolText,label:t.categoryLabel}},t.prototype.plotMouseUp=function(e){var t=this.plotItem,a=this.datasetStore,o=a.getChildren("data")[t.index],r=a.getFromEnv("chart"),i=o.getGraphicalElement("trackerObj");r.plotEventHandler(i,e,"dataplotclick")},t}(n["default"]);t["default"]=z},665:function(e,t,a){"use strict";t.__esModule=!0;var o={initialAttr:{opacity:0},finalAttr:{opacity:1},slot:"final"},r=function(){return{"connector.appearing":function(){return[o]},"connector.transform":function(e){return[{initialAttr:{path:e.attr.path},finalAttr:{path:e.attr.path}}]},"dataLabel.appearing":function(){return[o]},"dataLabel.transform":function(e){return[{initialAttr:{transform:e.attr.transform},finalAttr:{transform:e.attr.transform}}]},"path.appearing":function(){return[Object.assign({},o,{slot:"plot"})]}}};t["default"]={"initial.dataset.funnel":r,"initial.dataset.pyramid":r}},666:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(667),i=(o=r)&&o.__esModule?o:{"default":o},n=a(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=n.preDefStr.POSITION_START,c=n.preDefStr.POSITION_END,u=n.preDefStr.POSITION_MIDDLE,p={right:c,left:s,middle:u,start:s,end:c,center:u,undefined:n.BLANK,BLANK:n.BLANK},h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.configure=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};for(var t in e)this[t]=e[t];this.upperRadiusFactor=1},t.prototype.getType=function(){return"data"},t.prototype.getName=function(){return"funnelpoint"},t.prototype.getModifiedCurrentValue=function(){},t.prototype.getRatioK=function(e,t,a,o,r){var i=e.config,n=!i.streamLinedData,l=i.useSameSlantAngle;return n?.2+a*o:this.y?l?this.y/r:Math.sqrt(this.y/r):1},t.prototype.getLowestRadiusFactor=function(e,t){var a=e.config,o=!a.streamLinedData,r=a.useSameSlantAngle;return o?.2:this.y?r?this.y/t:Math.sqrt(this.y/t):1},t.prototype.allocatePosition=function(){},t.prototype.drawPlots=function(){var e,t,a,o,r,i,l,s=this,c=s.index,u=s.getLinkedParent(),h=u.getFromEnv("toolTipController"),d=u.config,g=s.y,f=s.displayValue,m=d.isSliced,b=s.labelAline,v=s.appliedStyle,y=s.style,k=n.BLANK,w=u.getFromEnv("chart"),C=w.getChildContainer("trackerGroup"),x=s.plot,T=!!s.link,S=d.distanceAvailed,A=u.config.labelDrawingConfig,E=u.getFromEnv("animationManager"),N=s.setRolloutAttr,O=s.setRolloverAttr,F=s.rolloverProperties,D={};if(e=m?1:s.isSliced,r=v&&v.color||y&&y.color||u._chartLevelAttr.color,l={text:f,direction:k,cursor:T?"pointer":n.BLANK,x:0,y:0,fill:r,"text-anchor":p[b]},null!==g&&void 0!==g&&s.shapeArgs)return a=s.getGraphicalElement("graphic"),o=s.getGraphicalElement("trackerObj"),!N&&(s.setRolloutAttr=N={}),!O&&(s.setRolloverAttr=O={}),s.hoverEffects?(N.color=s.rawColor,N.opacity=s.rawAlpha,N["stroke-width"]=s.borderWidth,N.stroke=s.borderColor,O.color=F.color,O.opacity=F.alpha,O["stroke-width"]=F.borderWidth,O.stroke=F.borderColor):(N=s.setRolloutAttr={},O=s.setRolloverAttr={}),x?(s.shapeArgs.graphics=a,a=u.pyramidFunnelShape(s.shapeArgs),s.addGraphicalElement("graphic",a),a=E.setAnimation({el:a,attr:{fill:s.color,"stroke-width":s.borderWidth,stroke:s.borderColor},component:u}),s.addGraphicalElement("graphic",a),a.show(),A[c]=i={args:l,css:v,point:s}):(s.shapeArgs.graphics=x,s.plot=x={},a=u.pyramidFunnelShape(s.shapeArgs).attr({fill:s.color,"stroke-width":s.borderWidth,stroke:s.borderColor}),o=E.setAnimation({el:"path",container:C,component:u}).on("fc-click",u.plotMouseUp,D).hover(function(e){a.attr(s.setRolloverAttr),w.plotEventHandler(this,e,"DataPlotRollOver")},function(e){a.attr(s.setRolloutAttr),w.plotEventHandler(this,e,"DataPlotRollOut")}),s.addGraphicalElement("graphic",a),s.addGraphicalElement("trackerObj",o),A[c]=i={args:l,css:v,point:s}),d.showTooltip?h.enableToolTip(o,s.toolText):h.disableToolTip(o),x.value=g,x.displayValue=f,x.sliced=!!e,x.cursor=T?"pointer":n.BLANK,x.x=s.x,x.index=c,D.datasetStore=u,D.plotItem=x,o.off("fc-click",u.slice),!s.doNotSlice&&o.on("fc-click",u.slice,D),i.context=D,i.actions={click:u.slice,hover:[function(e){a.attr(s.setRolloverAttr),w.plotEventHandler(this,e,"DataPlotRollOver")},function(e){a.attr(s.setRolloutAttr),w.plotEventHandler(this,e,"DataPlotRollOut")}]},x.dy=0,d.noOfGap?(S&&(x._startTranslateY=t="t0,"+S,x.dy=x.distanceAvailed=S),d.slicingGapPosition[s.x]&&(d.distanceAvailed-=d.perGapDistance)):x._startTranslateY=t="t0,0",E.setAnimation({el:a,attr:{transform:t},component:u}),i.transform=t,x;A[c]=i={args:l,css:v,point:s}},t}(i["default"]);t["default"]=h},667:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(131),i=(o=r)&&o.__esModule?o:{"default":o},n=a(118),l=a(122),s=a(369),c=a(129);function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var p=window,h=p.navigator.userAgent,d="rgba(192,192,192,"+(/msie/i.test(h)&&!p.opera?.002:1e-6)+")",g=["fontFamily","fontSize","fontWeight","fontStyle"],f=function(){this.hide()},m=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return u(t,e),t.prototype.parseAndConfigurePoint=function(e,t,a,o){var r,i,s,c,u,p,h,d,g,f,m,b,v,y,k,w,C,x,T,S,A,E,N,O,F,D,L,M=this.getLinkedParent(),R=M.getFromEnv("chart"),_=M.config,P=M.getFromEnv("number-formatter"),V=M.getFromEnv("smartLabel"),I=M.getFromEnv("color-manager"),G=0,j=_.showPercentValues,B=_.labelSepChar,H=R.getFromEnv("dataSource").chart,W=_.isSliced,z={apply:_.showShadow,opacity:1},U=_.plotBorderThickness,X=_.style;r=t.refreshedData,G=t.sumValue,s=P.dataLabels(G),i=t.highestValue,D=(0,n.pluck)(e.labellink,H.labellink,e.link,n.UNDEF),O=e.legendItemId,c=e.cleanValue,u=o?r[o-1].value:c,p=(0,n.parseUnsafeString)((0,n.pluck)(e.label,e.name,n.BLANKSTRING)),V.setStyle(this.getFromEnv("dataLabelStyle")),h=V.getOriSize(p),x=e.alpha||_.plotFillAlpha,F=(0,n.pluck)(e.color,I.getPlotColor(a)),L=(0,l.convertColor)(F),C=(0,l.convertColor)(F,x),T=(0,n.pluck)(e.bordercolor,_.plotBorderColor,(0,l.getLightColor)(F,25)).split(n.COMMASTRING)[0],S=_.showPlotBorder?(0,n.pluck)(e.borderalpha,_.plotBorderAlpha,"80"):n.ZEROSTRING,z.opacity=Math.max(x,S)/100,(d=(0,n.pluckNumber)(e.issliced,W))&&(_.noOFSlicedElement+=1,_.preSliced=d),t.prevPerValReq&&(G=u),g=P.percentValue(c/G*100),_.datalabelDisabled||(f=P.dataLabels(c)||n.BLANKSTRING,m=1===_.showLabels?p:n.BLANKSTRING,b=1===(0,n.pluckNumber)(e.showvalue,_.showValues)?1===j?g:f:n.BLANKSTRING,v=(0,n.getValidValue)((0,n.parseUnsafeString)(e.displayvalue)),N=(0,n.pluck)(v,p+B+(j?g:f),n.BLANKSTRING),b=v||(b!==n.BLANKSTRING&&m!==n.BLANKSTRING?m+B+b:(0,n.pluck)(m,b)||n.BLANKSTRING)),(y=(0,n.getValidValue)((0,n.parseUnsafeString)((0,n.pluck)(e.tooltext,_.toolText))))!==n.UNDEF?(A={formatedVal:f,name:p,pValue:g,sum:s,sumValue:s,dataValue:c,prevValue:u,highestValue:i},y=(0,n.parseTooltext)(y,[1,2,3,7,14,24,25,37],M.getTooltipMacroStub(A),e,H)):(k=1===_.showPercentInToolTip?g:f,y=p!==n.BLANKSTRING?p+_.tooltipSepChar+k:k),E=M.pointHoverOptions(e,{color:F,alpha:x,borderColor:T,borderAlpha:S,borderWidth:U}),w={displayValue:b,origValue:b,displayValueArgs:N,style:(0,n.parsexAxisStyles)(e,{},H,X,C),appliedStyle:function(e,t){var a,o,r={labelfont:"fontFamily",labelfontcolor:"color",labelfontsize:"fontSize",labelfontbold:"fontWeight",labelfontitalic:"fontStyle",labelalpha:"alpha"};for(o in r)(o in e||o in t)&&((a=a||{})[r[o]]=(0,n.pluck)(e[o],t[o]));return a?(a.fontWeight&&(a.fontWeight=(0,n.pluckNumber)(a.fontWeight)?"bold":"normal"),a.fontStyle&&(a.fontStyle=(0,n.pluckNumber)(a.fontStyle)?"italic":"normal"),a.color=(0,l.convertColor)(a.color,a.alpha),a):a}(e,H),name:p,categoryLabel:p,rawColor:F,rawAlpha:x,toolText:y,legendCosmetics:n.UNDEF,legendItemId:O||this&&this.legendItemId,showInLegend:n.UNDEF,y:c,shadow:z,smartTextObj:h,legendColor:L,color:C,alpha:x,borderColor:(0,l.convertColor)(T,S),borderWidth:U,link:(0,n.getValidValue)(e.link),isSliced:d,doNotSlice:!_.enableSlicing,hoverEffects:E.enabled&&E.options,labellink:D,rolloverProperties:E.enabled&&E.rolloverOptions},this.configure(w)},t.prototype.drawLabel=function(){var e,t,a,o,r,i,l,c,u,p,h,d,m,b=this,v=b.index,y=b.getLinkedParent(),k=y.getFromEnv("chart"),w=y.getFromEnv("animationManager"),C=y.getFromEnv("toolTipController"),x=y.config,T=k.getChildContainer("datalabelsGroup"),S=y.getChildren("data"),A=b.displayValue,E=b.plot||{},N=b.getGraphicalElement("dataLabel"),O=b.getGraphicalElement("connector"),F=!N,D=b.labelY,L=b.labelX,M=b.style||{},R=(0,n.pluckNumber)(parseInt(M.fontSize,10),x.baseFontSize),_="funnel"===y.getName(),P=x.lineHeight,V=.3*R,I=.3*P,G=x.showLabelsAtCenter,j=x.connectorEndSwitchHistoryY,B=x.labelDistance,H=x.blankSpace,W=x.streamLinedData;if(!b.displayValue||_&&!x.streamLinedData&&!v)return N&&w.setAnimation({el:N,component:y,callback:f,doNotRemove:!0}),void(O&&w.setAnimation({el:O,component:y,callback:f,doNotRemove:!0}));r=y.config.labelDrawingConfig[v],a=r.actions,e=b.y,t={"stroke-width":x.dataConnectorStyle.connectorWidth,stroke:x.dataConnectorStyle.connectorColor,transform:r.transform},r.args.cursor=b.labellink?"pointer":"default",r.args&&r.css&&(r.args.fill=r.css.color||r.css.fill),null!==e&&e!==n.UNDEF&&b.shapeArgs?(o=!(_&&0===v&&x.streamLinedData),b.plot&&(N&&N.removeCSS(g),N=w.setAnimation({el:N||"text",label:"dataLabel",attr:r.args,css:r.css,container:T,component:y}),b.addGraphicalElement("dataLabel",N),O=w.setAnimation({el:O||"path",attr:o&&t,container:T,callback:function(){x.showLabelsAtCenter&&this.hide()},component:y,label:"connector"}),o&&b.addGraphicalElement("connector",O)),C.enableToolTip(N,b.originalText),F||(b.labelClickFn&&N.off("fc-click",b.labelClickFn),b.actionsClick&&N.off("fc-click",b.actionsClick)),b.labellink&&N.on("fc-click",function(e,t){return b.labelClickFn=function(){s.labelClickFn.call(e,k,t)}}(N,b.labellink)),!b.doNotSlice&&N.on("fc-click",(m=r.context,b.actionsClick=function(){a.click.call(m)})),F&&N.hover(a.hover[0],a.hover[1])):N?(N.removeCSS(g),N&&w.setAnimation({el:N,attr:r.args,component:y}),N&&N.css(r.css)):(N=w.setAnimation({el:"text",label:"dataLabel",attr:r.args,css:r.css,container:T,component:y}),b.addGraphicalElement("dataLabel",N)),G?(d=0===v&&W?D-I+(S[1].plot.distanceAvailed||0):D-I+(E.distanceAvailed||0),A!==n.BLANKSTRING?(w.setAnimation({el:N,attr:{transform:["t",L,d]},component:y}),N.show()):N&&w.setAnimation({el:N,component:y})):(i=D-V-b.distributionFactor*P,l=D-V,c=j[b.alignmentSwitch],x.lastplotY!==n.UNDEF&&c!==n.UNDEF&&c-l<P&&(D=l=c-P),b.displayValue&&(j[b.alignmentSwitch]=l),x.lastplotY=b.plotY,p=x.labelAlignment===x.alignmentType.alternate&&b.alignmentSwitch?(u=L+H+b.virtualWidth)+B+b.distributionFactor*x.globalMinXShift:(u=L-H)-(B-(b.lOverflow||0))-b.distributionFactor*x.globalMinXShift,void 0===A||A===n.BLANKSTRING||_&&0===v&&W?O&&w.setAnimation({el:O,component:y}):(h=["M",p,i,"L",u,l],w.setAnimation({el:O,state:"transform",label:"connector",attr:{path:h,"shape-rendering":i===l&&l<1?"crisp":n.BLANK},component:y}),O.show()),d=0===v&&W?D+(S[1].plot.dy||0):l+(E.dy||0),A!==n.BLANKSTRING?(w.setAnimation({el:N,state:"transform",attr:{transform:["t",L,d]},component:y,label:"dataLabel"}),N.show()):N&&w.setAnimation({el:N,component:y})),N.attr({"text-bound":[M.backgroundColor,M.borderColor,M.borderThickness,M.borderPadding,M.borderRadius,M.borderDash]})},t.prototype.drawTracker=function(){var e,t,a,o,r=this.getLinkedParent().getFromEnv("chart"),i=r.getFromEnv("paper"),l=r.getChildContainer("trackerGroup"),s=+new Date;this&&(a=this.getGraphicalElement("graphic"),t=this.getGraphicalElement("trackerObj"),a&&(e=a.Shapeargs.silhuette,o={link:this.link,value:this.y,displayValue:this.displayValueArgs,categoryLabel:this.categoryLabel,dataIndex:this.index||n.BLANK,toolText:this.toolText},this.datasetIndex=this.index,t?t.attr({path:e,isTracker:s,fill:d,stroke:"none",transform:"t0,"+(this.plot._startTranslateY||0),cursor:this.link?"pointer":"default"}):(t=i.path(e,l).attr({isTracker:s,fill:d,stroke:"none",transform:"t0,"+(this.plot._startTranslateY||0),cursor:this.link?"pointer":"default"}),this.addGraphicalElement("trackerObj",t)),t.data("eventArgs",o),t.show()))},t.prototype.syncDraw=function(){var e=this;e.fireEvent("predraw"),e.removeJob("draw"),e.getState("removed")?e.removingDraw():e.drawPlots&&e.drawPlots(),e.addExtEventListener("animationComplete",e.__remove,e.getFromEnv("animationManager")),e.childrenSyncDraw(),e.setState("dirty",!1),e.setState("parentChanged",!1),e.addJob("draw-complete",function(){e.fireEvent("drawn")},c.priorityList.instant)},t}(i["default"]);t["default"]=m},668:function(e,t,a){"use strict";t.__esModule=!0;var o=i(a(662)),r=i(a(669));function i(e){return e&&e.__esModule?e:{"default":e}}function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var l=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.useSortedData=!1,a}return n(t,e),t.getName=function(){return"Pyramid"},t.prototype.getName=function(){return"Pyramid"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Funnel Chart",t.defaultDatasetType="pyramid"},t.prototype.configureAttributes=function(){e.prototype.configureAttributes.call(this),this.config.PLOT_COLOR_INDEX_START=0},t.prototype.getDSdef=function(){return r["default"]},t}(o["default"]);t["default"]=l},669:function(e,t,a){"use strict";t.__esModule=!0;var o=a(118),r=l(a(664)),i=a(129),n=l(a(670));function l(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var c=o.preDefStr.POSITION_START,u=o.preDefStr.POSITION_MIDDLE,p=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return a.preDrawingHook=function(){},a.config.pointInContext=n["default"],a.config.LABEL_PLACEMENT_ITERATOR_INDEX_START=0,a}return s(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"pyramid"},t.prototype.configure=function(e){if(!e)return!1;this.config.JSONData=e;var t=this.getFromEnv("chartConfig");this._checkValidData(this.config.JSONData.data)&&(this._configure(),t.showLegend&&this.addLegend())},t.prototype.configureSpecifics=function(){var e=this.getFromEnv("chart"),t=this.config,a=e.getFromEnv("dataSource")?e.getFromEnv("dataSource").chart:{};(0,this.utils(this).copyProperties)(a,t,[["pyramidyscale","yScale",o.pluckNumber,void 0,function(e){var t=e.yScale;e.yScale=t>=0&&t<=40?t/200:.2}],["use3dlighting","use3DLighting",o.pluckNumber,1]])},t.prototype.calculatePositionOfPlots=function(){var e,t,a,r,i,n,l,s,c,u,p,h,d,g,f,m,b=this.getFromEnv("chart").config,v=this.config,y=this.utils(this).DistributionMatrix,k=this.calculatePositionCoordinate,w=v.psmMargin,C=this.getChildren("data"),x=2,T=C.length,S=0,A=0,E=v.lineHeight,N=Math.floor;for(this.postPlotCallback=o.stubFN,b.canvasTop+=b.marginTop-w.top,b.effCanvasHeight=i=b.canvasHeight-(b.marginTop+b.marginBottom)+(w.top+w.bottom),b.effCanvasWidth=n=b.width-(b.marginLeft+b.marginRight),l=v.drawingRadius=n/x,v.x=l+b.canvasLeft,m=Math.atan(n/2/i),v.unitHeight=r=i/v.sumValue,v.lastRadius=0,v.globalMinXShift=Math.floor(E/Math.cos(m)),(s=v.alignmentType={})["default"]=1,s.alternate=2,f=new y(N(i/E)),e=0,t=T;e<t;e++)(a=C[e]).getState("removed")||(S=a.y*r,c=N(((A+=a.y*r)-S+S/2)/E),f.push(a,c));if(u=f.getDistributedResult(),C.length=0,void 0===u.matrix[1])[].push.apply(C,u.matrix[0]);else for(p=u.matrix[0],h=u.matrix[1],t=Math.max(p.length,h.length),e=0;e<t;e++)g=p[e],d=h[e],C.push(g||d);switch(u.suggestion){case s["default"]:k.call(this,C,!1);break;case s.alternate:v.labelAlignment=s.alternate,x=3,v.drawingRadius=l=n/x,b.canvasLeft=b.canvasWidth/2-l,v.x=b.canvasLeft+l,k.call(this,C,!0)}},t.prototype.draw=function(){var e,t,a,o,r,n,l,s=this.getFromEnv("chart"),c=this.config,u=this.config.trackerArgs=[],p=this.getChildren("data"),h=p.length,d=Math.min;if(c.sumValue){for(this.config.labelDrawingConfig=this.config.labelDrawingConfig||[],this.config.labelDrawingConfig.length=0,this.animateFunction=function(e){return function(){e.attr({opacity:1})}},r=(a=c.slicingDistance)/2,e=0,t=p.length;e<t;e++)p[e]&&p[e].shapeArgs&&(p[e].shapeArgs.renderer=s.getFromEnv("paper"));for((o=c.noOfGap)&&(c.perGapDistance=d(1.5*r,a/o),c.distanceAvailed=r),e=p.length,c.alreadyPlotted&&(this.postPlotCallback=function(){l||(l=!0)});e--;)(n=p[e]).index=e,n.syncDraw();for(c.oldLastData=Object.assign({},p[p.length-1].shapeArgs),this.hide(this.getChildren("data"),h),c.connectorEndSwitchHistoryY={},e=p.length;e--;)u.push(p[e]);this.addJob("labelDrawID",this.drawAllLabels.bind(this),i.priorityList.label),this.addJob("trackerDrawID",this.drawAllTrackers.bind(this),i.priorityList.tracker),this.removePlots(),c.alreadyPlotted=!0,c.prevIs2d=c.is2d}},t.prototype.calculatePositionCoordinate=function(e,t){var a,r,i,n,l,s,p,h,d,g=this.config,f=g.is2d,m=g.x,b=this.getFromEnv("chart"),v=b.config,y=v.canvasTop,k=g.unitHeight,w=g.labelDistance,C=g.showLabelsAtCenter,x=.3*v.style.fontSize,T=g.yScale,S=g.blankSpace,A=g.lastRadius,E=this.getFromEnv("smartLabel"),N=e.length-1,O=!1,F=0,D=g.lineHeight,L=0,M={flag:!1,point:void 0,sLabel:void 0,setAll:function(e,t,a){this.flag=e,this.point=t,this.sLabel=a}},R={point:void 0,sLabel:void 0,set:function(e,t){var a=e,o=t;return function(e,t){var r,i;if(!e.dontPlot){if(!this.point||!this.sLabel)return this.point=e,void(this.sLabel=t);r=a(this.point,this.sLabel),i=a(e,t),o(r,i)&&(this.point=e,this.sLabel=t)}}}},_={},P={},V={},I={},G=b.config.width-2,j=g.slicingGapPosition={};for((0,o.extend2)(_,M),(0,o.extend2)(P,M),_.setAll=function(e,t,a){var o=this.point,r=this.sLabel;if(this.flag=e,!o||!r)return this.point=t,void(this.sLabel=a);o.labelX-(r.oriTextWidth-r.width)>t.labelX-(a.oriTextWidth-a.width)&&(this.point=t,this.sLabel=a)},P.setAll=function(e,t,a){var o=this.point,r=this.sLabel;if(this.flag=e,!o||!r)return this.point=t,void(this.sLabel=a);o.labelX+r.oriTextWidth<t.labelX+a.oriTextWidth&&(this.point=t,this.sLabel=a)},(0,o.extend2)(V,R),(0,o.extend2)(I,R),V.set=R.set.apply(V,[function(e){return e.labelX},function(e,t){return e>t}]),I.set=R.set.apply(I,[function(e,t){return e.labelX+t.oriTextWidth},function(e,t){return e<t}]),g.noOfGap=0,E.useEllipsesOnOverflow(v.useEllipsesWhenOverflow),a=0,r=e.length;a<r;a++)(i=e[a])&&(i.x=a,i.plot&&(i.isSliced=!!i.isSliced||!!g.isSliced),i.isSliced=(0,o.pluckNumber)(i.isSliced,g.isSliced),t&&(O=!O),i.isSliced&&((d=i.x)&&!j[d]&&(j[d]=!0,g.noOfGap+=1),d<N&&(j[d+1]=!0,g.noOfGap+=1)),E.setStyle(i.style),i.oriText=i.displayValue,l=l=E.getSmartText(i.displayValue,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),L+=i.y,s=g.drawingRadius*L/g.sumValue,n=k*i.y,i.shapeArgs={x:m,y:y,R1:A,R2:s,h:n,r3dFactor:T,gStr:"point",is2D:f,use3DLighting:!!g.use3DLighting,renderer:this.getFromEnv("paper")},C?(i.labelAline=u,i.labelX=m,i.labelY=(f?y:y+T*A)+n/2+x):(i.labelAline=c,i.alignmentSwitch=O,i.distributionFactor=i.distributionFactor||0,O?(i.labelX=m-(w+(s+A)/2+S+l.width),i.labelX-=i.distributionFactor*g.globalMinXShift,V.set(i,l)):(i.labelX=m+w+(s+A)/2+S,i.labelX+=i.distributionFactor*g.globalMinXShift,I.set(i,l)),F=i.distributionFactor*D,i.labelY=y+x+n/2+F),t&&(O&&i.labelX<0?(p=i.labelX+l.width,h=E.getSmartText(i.displayValue,p,Number.POSITIVE_INFINITY,!0),i.labelX=2,i.isLabelTruncated=!0,i.displayValue=h.text,i.virtualWidth=h.maxWidth,_.setAll(!0,i,h)):!O&&i.labelX+l.width>G&&(h=E.getSmartText(i.displayValue,G-i.labelX,Number.POSITIVE_INFINITY,!0),i.isLabelTruncated=!0,i.displayValue=h.text,i.virtualWidth=h.maxWidth,P.setAll(!0,i,h)),i.pWidth=i.virtualWidth||l.width,F=i.distributionFactor*D,i.labelY=y+x+n/2+F),y+=n,i.plotX=m,i.plotY=y-n/2,A=s,i.virtualWidth=i.virtualWidth||l.width);this.findBestPosition(e,{lTrimmedInfo:_,rTrimmedInfo:P,lLargestLabel:V,rLargestLabel:I})},t.prototype.getTooltipMacroStub=function(t){var a,o,r=this.config,i=this.getFromEnv("number-formatter");return o=r.percentOfPrevious?t.pValue:i.percentValue(t.dataValue/t.prevValue*100),(a=e.prototype.getTooltipMacroStub.call(this,t)).percentValue=r.percentOfPrevious?i.percentValue(t.dataValue/t.highestValue*100):t.pValue,a.percentOfPrevValue=o,a},t}(r["default"]);t["default"]=p},670:function(e,t,a){"use strict";t.__esModule=!0;var o,r=a(667),i=(o=r)&&o.__esModule?o:{"default":o},n=a(118);function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var a=Object.getOwnPropertyNames(t),o=0;o<a.length;o++){var r=a[o],i=Object.getOwnPropertyDescriptor(t,r);i&&i.configurable&&e[r]===undefined&&Object.defineProperty(e,r,i)}}(e,t))}var s=n.preDefStr.POSITION_START,c=n.preDefStr.POSITION_END,u=n.preDefStr.POSITION_MIDDLE,p={right:c,left:s,middle:u,start:s,end:c,center:u,undefined:n.BLANK,BLANK:n.BLANK},h=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.configure=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};for(var t in e)this[t]=e[t];this.upperRadiusFactor=0},t.prototype.getType=function(){return"data"},t.prototype.getName=function(){return"pyramidpoint"},t.prototype.getModifiedCurrentValue=function(e){return e+this.y/2},t.prototype.getRatioK=function(e,t){var a=e.config;return t?t/a.sumValue:1},t.prototype.getLowestRadiusFactor=function(){return 1},t.prototype.allocatePosition=function(){},t.prototype.drawPlots=function(){var e,a,o,r,i,l,s,c,u=this,h=u.index,d=u.getLinkedParent(),g=d.config,f=d.getFromEnv("toolTipController"),m=u.y,b=u.displayValue,v=g.isSliced,y=n.BLANK,k=d.getFromEnv("chart"),w=d.getFromEnv("animationManager"),C=k.getChildContainer("trackerGroup"),x=k.getChildContainer("datalabelsGroup"),T=k.getChildContainer().plotGroup,S=u.plot,A=!!u.link,E=g.pointInContext,N=g.distanceAvailed,O=u.labelAline,F=u.appliedStyle,D=u.style,L=u.setRolloutAttr,M=u.setRolloverAttr,R=u.rolloverProperties,_={},P=d.config.labelDrawingConfig;if(u instanceof t||(r=u,(u=new E).configure(r),d.components.data[h]=u),g.prevIs2d&&g.prevIs2d!==g.is2d&&(w.setAnimation({el:T,attr:{opacity:1},component:d}),w.setAnimation({el:x,attr:{opacity:1},component:d})),s=F&&F.color||D&&D.color||d._chartLevelAttr.color,e=v?1:u.isSliced,l={text:b,direction:y,cursor:A?"pointer":n.BLANK,x:0,y:0,fill:s,"text-anchor":p[O]},null!==m&&void 0!==m&&u.shapeArgs)return o=u.getGraphicalElement("graphic"),i=u.getGraphicalElement("trackerObj"),!L&&(u.setRolloutAttr=L={}),!M&&(u.setRolloverAttr=M={}),u.hoverEffects?(L.color=u.rawColor,L.opacity=u.rawAlpha,L["stroke-width"]=u.borderWidth,L.stroke=u.borderColor,M.color=R.color,M.opacity=R.alpha,M["stroke-width"]=R.borderWidth,M.stroke=R.borderColor):(L=u.setRolloutAttr={},M=u.setRolloverAttr={}),S?(u.shapeArgs.graphics=o,o=d.pyramidFunnelShape(u.shapeArgs),u.addGraphicalElement("graphic",o),w.setAnimation({el:o,attr:{fill:u.color,"stroke-width":u.borderWidth,stroke:u.borderColor},component:d}),o.show(),P[h]=c={args:l,css:F,point:u}):(u.shapeArgs.graphics=S,u.plot=S={},o=d.pyramidFunnelShape(u.shapeArgs),i=w.setAnimation({el:"path",container:C,component:d}).on("fc-click",d.plotMouseUp,_).hover(function(e){o.attr(u.setRolloverAttr),k.plotEventHandler(this,e,"DataPlotRollOver")},function(e){o.attr(u.setRolloutAttr),k.plotEventHandler(this,e,"DataPlotRollOut")}),w.setAnimation({el:o,attr:{fill:u.color,"stroke-width":u.borderWidth,stroke:u.borderColor},component:d}),u.addGraphicalElement("graphic",o),u.addGraphicalElement("trackerObj",i),P[h]=c={args:l,css:F,point:u}),g.showTooltip?f.enableToolTip(i,u.toolText):f.disableToolTip(i),S.value=m,S.displayValue=b,S.sliced=!!e,S.cursor=A?"pointer":n.BLANK,S.x=u.x,S.index=h,_.datasetStore=d,_.plotItem=S,i.off("fc-click",d.slice),!u.doNotSlice&&i.on("fc-click",d.slice,_),c.context=_,c.actions={click:d.slice,hover:[function(e){o.attr(u.setRolloverAttr),k.plotEventHandler(this,e,"DataPlotRollOver")},function(e){o.attr(u.setRolloutAttr),k.plotEventHandler(this,e,"DataPlotRollOut")}]},S.dy=0,g.noOfGap?(N&&(S._startTranslateY=a="t0,"+N,S.dy=S.distanceAvailed=N),g.slicingGapPosition[u.x]&&(g.distanceAvailed-=g.perGapDistance)):S._startTranslateY=a="t0,0",w.setAnimation({el:o,attr:{transform:a},component:d}),c.transform=a,S;P[h]=c={args:l,css:F,point:u}},t}(i["default"]);t["default"]=h}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.widgets.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.zoomline.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.zoomline.js new file mode 100755 index 0000000000000000000000000000000000000000..7a2afea3b70f5642494ff04b7e613f175a5e1755 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.zoomline.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=e:e()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[5],{671:function(e,t,o){"use strict";t.__esModule=!0,t.ZoomLineDY=t.ZoomLine=undefined;var i=r(o(672)),n=r(o(677)),a=r(o(679));function r(e){return e&&e.__esModule?e:{"default":e}}t.ZoomLine=i["default"],t.ZoomLineDY=n["default"],t["default"]={name:"zoomline",type:"package",requiresFusionCharts:!0,extension:function(e){e.addDep(a["default"]),e.addDep(i["default"]),e.addDep(n["default"])}}},672:function(e,t,o){"use strict";t.__esModule=!0;var i=o(118),n=o(122),a=h(o(454)),r=h(o(673)),s=h(o(675)),l=o(129),c=o(405),u=o(676),p=o(125);function h(e){return e&&e.__esModule?e:{"default":e}}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),i=0;i<o.length;i++){var n=o[i],a=Object.getOwnPropertyDescriptor(t,n);a&&a.configurable&&e[n]===undefined&&Object.defineProperty(e,n,a)}}(e,t))}var f=window.navigator.userAgent,g=(0,p.getDep)("redraphael","plugin"),m=window.doc,v="rgba(192,192,192,"+(/msie/i.test(f)&&!window.opera?.002:1e-6)+")",b=window.parseFloat,y=window.parseInt,x=Math,C=x.max,w=x.min,k=x.ceil,E=x.floor,P=0;g.addSymbol(u.symbolList);var M=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.canvasborderthickness=1,o.zoomX=!0,o.hasScroll=!0,o.eiMethods={zoomOut:function(e){var t,o=this.apiInstance,i=o.getChildren&&o.getChildren("canvas")[0],n=i&&i.getChildren("inputManager");n=n&&n[0],o&&n&&o.addJob("zoomOut"+P++,function(){t=n.zoomOut(),"function"==typeof e&&e(t)},l.priorityList.postRender)},zoomTo:function(e,t,o){var i,n=this.apiInstance,a=n.getChildren&&n.getChildren("canvas")[0],r=a&&a.getChildren("inputManager");if(e!==undefined&&t!==undefined&&(r=r&&r[0],n&&r))return o?void n.addJob("zoomTo"+P++,function(){i=r.zoomTo(e,t),"function"==typeof o&&o(i)},l.priorityList.postRender):r.zoomTo(e,t)},resetChart:function(){var e=this.apiInstance,t=e.getChildren&&e.getChildren("canvas")[0],o=t&&t.getChildren("inputManager");o=o&&o[0],e&&o&&e.addJob("resetChart"+P++,function(){o.resetChart()},l.priorityList.postRender)},setZoomMode:function(e){var t=this.apiInstance,o=t.getChildren&&t.getChildren("canvas")[0],i=o&&o.getChildren("inputManager");i=i&&i[0],t&&i&&t.addJob("setZoomMode"+P++,function(){i.setZoomMode(e)},l.priorityList.postRender)},getViewStartIndex:function(e){var t,o,i,n=this.apiInstance;if(!e)return t=n.getChildren("xAxis")[0],o=t.getVisibleConfig().minValue,0===(i=Math.ceil(o))?0:i;n.addJob("getViewStartIndex"+P++,function(){"function"==typeof e&&(t=n.getChildren("xAxis")[0],o=t.getVisibleConfig().minValue,i=Math.ceil(o),e(0===i?0:i))},l.priorityList.postRender)},getViewEndIndex:function(e){var t,o,i=this.apiInstance;if(!e)return t=i.getChildren("xAxis")[0],o=t.getVisibleConfig().maxValue,Math.floor(o);i.addJob("getViewEndIndex"+P++,function(){"function"==typeof e&&(t=i.getChildren("xAxis")[0],o=t.getVisibleConfig().maxValue,e(Math.floor(o)))},l.priorityList.postRender)}},o.eiMethods.scrollTo=c.scrollTo,o.registerFactory("dataset",s["default"],["vCanvas"]),o}return d(t,e),t.getName=function(){return"ZoomLine"},t.includeInputOptions=function(){return["DragZoomIn","DragPin","ZoomResetButton","ZoomOutButton"]},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Zoomable and Panable Multi-series Line Chart",t.defaultDatasetType="zoomline",t.showValues=0,t.zeroplanethickness=1,t.zeroplanealpha=40,t.showzeroplaneontop=0,t.enablemousetracking=!0,t.skipAttr=!0,t.showvalues=0},t.prototype.getName=function(){return"ZoomLine"},t.prototype.parseChartAttr=function(t){e.prototype.parseChartAttr.call(this,t);var o=this.config,n=(t||this.getFromEnv("dataSource")).chart;o.useCrossline=Number(n.usecrossline)||n.usecrossline===i.UNDEF?1:0,o.drawTrendRegion=0},t.prototype.getInputConfigurations=function(){var e=this,t=e.config,o=function(o,i){e.addJob("inputZoom",function(){var n=t.viewPortConfig;n.dsi=o,n.dei=i,e.updateManager(),e.getChildren("xAxis")[0].prepareAttributes()},l.priorityList.configure)};return{dragZoomIn:{scaleX:!0,scaleY:!1,drawButton:!1,boxStyle:{stroke:t.zoomPaneStroke,fill:t.zoomPaneFill,"stroke-width":0},catZoomLimit:2,skipGraphics:!0,dragendFn:function(){return o(arguments.length<=1?undefined:arguments[1],arguments.length<=2?undefined:arguments[2])}},zoomResetButton:{hookFn:o,tooltext:t.btnResetChartTooltext},zoomOutButton:{hookFn:o,tooltext:t.btnZoomOutTooltext},dragPin:{orientation:"horizontal",attr:{stroke:t.zoomPaneStroke,fill:t.zoomPaneFill,"stroke-width":0},skipGraphics:!t.allowPinMode,pinAttr:{"stroke-width":0,stroke:"none",fill:t.pinPaneFill,"shape-rendering":"crisp"},strokeWidth:0,tooltext:t.showToolBarButtonTooltext&&t.btnSwitchToPinModeTooltext||""}}},t.prototype._setCategories=function(){var e,t,o,n,a=this.config,r=this.getFromEnv("dataSource"),s=r.chart||{},l=this.getChildren("xAxis"),c=a.cdm,u=a.cdmchar,p=r.categories&&r.categories[0].category||[];if(a.cdm=c=(0,i.pluckNumber)(s.compactdatamode,0),a.cdmchar=u=(0,i.pluck)(s.dataseparator,"|"),(c||"string"==typeof p)&&p.split){for(t=[],o=0,n=(e=p.split(u)).length;o<n;o+=1)t.push({label:e[o]});this.config.categories=r.categories[0].category=t}l[0].setAxisPadding(0,0),l[0].setTickValues(t||p)},t.prototype.isWithinCanvas=function(e,t){return function(e,t){var o=t.get("config"),n=(0,i.getMouseCoordinate)(t.get("linkedItems","container"),e,t),a=n.chartX,r=n.chartY,s=o.canvasLeft,l=o.canvasTop,c=o.canvasLeft+o.canvasWidth,u=o.canvasHeight+o.canvasTop;return n.insideCanvas=!1,n.originalEvent=e,a>s&&a<c&&r>l&&r<u&&(n.insideCanvas=!0),n}.call(this,e,t)},t.prototype.highlightPoint=function(e,t,o,i,n,a){var r,s,l,c,u,p=this,h=p.config,d=p.getFromEnv("animationManager"),f=p.components,g=p.graphics,b=Number(e),y=g.tracker,x=f.dataset[n],C=x&&x.config,w=x&&C.zoomedRadius||0,k=x&&C.hoverCosmetics,E=k&&k.fill,P=k&&k.borderColor,M=k&&k.borderThickness,L=function(e){p.plotEventHandler(this,e)},_=function(e){p.plotEventHandler(this,e,"dataplotRollover")},T=function(e){p.plotEventHandler(this,e,"dataplotRollout")};y||(r=g.tracker=d.setAnimation({el:"circle",attr:{cx:0,cy:0,r:w,fill:b?E:v,stroke:b?P:v,"stroke-width":b?M:0,"clip-rect":h.canvasLeft+","+h.canvasTop+","+h.canvasWidth+","+h.canvasHeight},container:g.trackerGroup,component:p}).on("fc-click",L).hover(_,T)),i&&r.data("eventArgs",{x:i.x,y:i.y,tooltip:i.tooltip,link:i.link}),h.lastHoveredPoint=i,p.getFromEnv("toolTipController").enableToolTip(r,a),r.transform("t"+(t+h.canvasLeft)+","+(o+h.canvasTop)),i&&(s="mouseover",l=r&&r.node,c=h.lastMouseEvent,l&&s&&(c||(c={}),c.originalEvent&&(c=c.originalEvent),c.touches&&(c=c.touches[0]),l.dispatchEvent?(MouseEvent?u=new MouseEvent(s,{bubbles:!!c.bubbles,cancelable:!!c.cancelable,clientX:c.clientX||c.pageX&&c.pageX-m.body.scrollLeft-m.documentElement.scrollLeft||0,clientY:c.clientY||c.pageY&&c.pageY-m.body.scrollTop-m.documentElement.scrollTop||0,screenX:c.screenX||0,screenY:c.screenY||0,pageX:c.pageX||0,pageY:c.pageY||0}):m.createEvent&&(u=m.createEvent("HTMLEvents")).initEvent(s,!!c.bubbles,!!c.cancelable),u.eventName=s,u&&l.dispatchEvent(u)):m.createEventObject&&l.fireEvent&&((u=m.createEventObject()).eventType=s,u.eventName=s,l.fireEvent("on"+s,u))))},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t);var o,a,r=this.getFromEnv("dataSource").chart||{},s=this.getFromEnv("color-manager"),l=s.getColor("canvasBorderColor");o=(a=this.config).style,a.stepZoom=400/(100-(0,i.pluckNumber)(r.stepzoom,25)),a.stepZoom<=2&&(a.stepZoom=1.9),(0,i.extend2)(a,{useRoundEdges:(0,i.pluckNumber)(r.useroundedges,0),zoomType:"x",canvasPadding:(0,i.pluckNumber)(r.canvaspadding,0),scrollColor:(0,n.getFirstColor)((0,i.pluck)(r.scrollcolor,s.getColor("altHGridColor"))),scrollShowButtons:!!(0,i.pluckNumber)(r.scrollshowbuttons,1),scrollHeight:(0,i.pluckNumber)(r.scrollheight,16)||16,scrollBarFlat:(0,i.pluckNumber)(r.flatscrollbars,0),allowPinMode:(0,i.pluckNumber)(r.allowpinmode,1),skipOverlapPoints:(0,i.pluckNumber)(r.skipoverlappoints,1),showToolBarButtonTooltext:(0,i.pluckNumber)(r.showtoolbarbuttontooltext,1),btnResetChartTooltext:(0,i.pluck)(r.btnresetcharttooltext,"Reset Chart"),btnZoomOutTooltext:(0,i.pluck)(r.btnzoomouttooltext,"Zoom out one level"),btnSwitchToZoomModeTooltext:(0,i.pluck)(r.btnswitchtozoommodetooltext,"<strong>Switch to Zoom Mode</strong><br/>Select a subset of data to zoom into it for detailed view"),btnSwitchToPinModeTooltext:(0,i.pluck)(r.btnswitchtopinmodetooltext,"<strong>Switch to Pin Mode</strong><br/>Select a subset of data and compare with the rest of the view"),pinPaneFill:(0,n.convertColor)((0,i.pluck)(r.pinpanebgcolor,l),(0,i.pluckNumber)(r.pinpanebgalpha,15)),zoomPaneFill:(0,n.convertColor)((0,i.pluck)(r.zoompanebgcolor,"#b9d5f1"),(0,i.pluckNumber)(r.zoompanebgalpha,30)),zoomPaneStroke:(0,n.convertColor)((0,i.pluck)(r.zoompanebordercolor,"#3399ff"),(0,i.pluckNumber)(r.zoompaneborderalpha,80)),showPeakData:(0,i.pluckNumber)(r.showpeakdata,0),maxPeakDataLimit:(0,i.pluckNumber)(r.maxpeakdatalimit,r.maxpeaklimit,null),minPeakDataLimit:(0,i.pluckNumber)(r.minpeakdatalimit,r.minpeaklimit,null),crossline:{enabled:(0,i.pluckNumber)(r.showcrossline,1),line:{"stroke-width":(0,i.pluckNumber)(r.crosslinethickness,1),stroke:(0,n.getFirstColor)((0,i.pluck)(r.crosslinecolor,"#000000")),"stroke-opacity":(0,i.pluckNumber)(r.crosslinealpha,20)/100},labelEnabled:(0,i.pluckNumber)(r.showcrosslinelabel,r.showcrossline,1),labelstyle:{fontSize:b(r.crosslinelabelsize)?b(r.crosslinelabelsize)+"px":o.outCanfontSize,fontFamily:(0,i.pluck)(r.crosslinelabelfont,o.outCanfontFamily)},valueEnabled:(0,i.pluckNumber)(r.showcrosslinevalues,r.showcrossline,1),valuestyle:{fontSize:b(r.crosslinevaluesize)?b(r.crosslinevaluesize)+"px":o.inCanfontSize,fontFamily:(0,i.pluck)(r.crosslinevaluefont,o.inCanvasStyle.fontFamily)}},useCrossline:(0,i.pluckNumber)(r.usecrossline,1),tooltipSepChar:(0,i.pluck)(r.tooltipsepchar,", "),showTerminalValidData:(0,i.pluckNumber)(r.showterminalvaliddata,0)})},t.prototype.getValuePixel=function(e){var t=this.config.viewPortConfig;return t.ddsi+E(e/t.ppp)},t.prototype.getDatasets=function(){var e=[];return this.iterateComponents(function(t){t.getType&&"dataset"===t.getType()&&e.push(t)}),e},t.prototype.__preDraw=function(){var e,t,o,n,a,r=this.config,s=this.getFromEnv("dataSource").chart,l=r.cdm,c=this.getChildren("xAxis")[0],u=r.viewPortConfig,p=this.getChildren("canvas")[0].config,h=C(p.canvasPadding,p.canvasPaddingLeft,p.canvasPaddingRight),d=this.getChildren("yAxis")[0],f=r.canvasHeight,g=this.getFromEnv("dataSource").chart,m=c.getTicksLen(),v=c.getVisibleConfig(),b=v.minValue,x=v.maxValue,w=(0,i.pluckNumber)(s.displaystartindex,b,1),k=(0,i.pluckNumber)(s.displayendindex,x,m||2),E=y(w,10)-1,P=y(k,10)-1,M=0;if(a=(n=this.getDatasets()).length,r.borderWidth=(0,i.pluckNumber)(g.showborder,1)?(0,i.pluckNumber)(g.borderthickness,1):0,r.updateAnimDuration=500,r.status="zoom",r.maxZoomLimit=(0,i.pluckNumber)(s.maxzoomlimit,1e3),r.viewPortHistory=[],(t=(0,i.pluckNumber)(s.pixelsperpoint,15))<1&&(t=1),(o=(0,i.pluckNumber)(s.pixelsperlabel,s.xaxisminlabelwidth,c.getAxisConfig("labels").rotation?20:60))<t&&(o=t),(E<0||E>=(m-1||1))&&(E=0),(P<=E||P>(m-1||1))&&(P=m-1||1),(u=r.viewPortConfig=(0,i.extend2)(r.viewPortConfig,{amrd:(0,i.pluckNumber)(s.anchorminrenderdistance,20),nvl:(0,i.pluckNumber)(s.numvisiblelabels,0),cdm:l,oppp:t,oppl:o,dsi:E,dei:P,vdl:P-E,clen:m,offset:0,step:1,llen:0,alen:0,ddsi:E,ddei:P,ppc:0})).clen){for(;a--;)e=n[a].config,M=C(M,e.drawanchors&&(e.anchorradius||0)+(Number(e.anchorborderthickness)||0)||0);r.overFlowingMarkerWidth=M,h=r.canvasPadding=C(M,h),r._prezoomed=u.dei-u.dsi<u.clen-1,r._visw=Math.max(1,r.canvasWidth-2*h),r._visx=r.canvasLeft+h,r._visout=-(r.height+f+1e3),r._yminValue=d.getLimit().min,r._ymin=d.getPixel(r._yminValue),(0,i.pluckNumber)(s.displaystartindex,s.displayendindex)&&c.setVisibleConfig(w,k),this.updateManager()}},t.prototype.resetZoom=function(){var e=this.config.viewPortHistory,t=e[0];return!!e.length&&(e.length=0,this.zoomTo(t.dsi,t.dei,t)&&this.fireChartInstanceEvent("zoomReset",this._zoomargs,[this.getFromEnv("chartInstance").id]),!0)},t.prototype.zoomOut=function(){var e,t,o,i,n,a=this.config,r=a.viewPortHistory;return e=r.pop(),t=r[0]||a.viewPortConfig,e?(o=e.dsi,i=e.dei):a._prezoomed&&(o=0,i=t.clen-1),(n=this.zoomTo(o,i,e))&&this.fireChartInstanceEvent("zoomedout",n),!0},t.prototype.zoomRangePixels=function(e,t){var o,i,n=this.config.viewPortConfig,a=n.ppp,r=n.ddsi;o=r+E(e/a),i=r+E(t/a),n.dsi=o,n.dei=i,this.updateManager()},t.prototype.prepareAttributes=function(){this.config.hasChartMessage||(this.__preDraw(),e.prototype.prepareAttributes.call(this))},t.prototype.getValue=function(e){var t=this.config,o=t.viewPortConfig,i=this.getOriginalPositions(e.x,e.y,e.x,e.y),n=i[0],a=i[1],r=this.getChildren("xAxis")[0],s=this.getChildren("yAxis")[0],l=r.config.axisRange,c=s.config.axisRange,u=l.min,p=l.max,h=c.max,d=c.min,f=t.canvasWidth*o.scaleX/(p-u),g=t.canvasHeight*o.scaleY/(h-d);return{x:u+(n-t.canvasLeft)/f,y:h-(a-t.canvasTop)/g}},t.prototype.getOriginalPositions=function(e,t,o,i){var n=this.config,a=n.viewPortConfig,r=a.scaleX,s=a.scaleY,l=a.x,c=a.y,u=w(e,o),p=C(e,o),h=w(t,i),d=C(t,i);return p=p>n.canvasWidth?n.canvasWidth:p,d=d>n.canvasHeight?n.canvasHeight:d,[l+(u=u<0?0:u)/r,c+(h=h<0?0:h)/s,(p-u)/r,(d-h)/s]},t.prototype.updateManager=function(){var e,t,o,i,n,a,r,s,l,c,u,p,h,d,f,g,m,v=this.getDatasets(),y=v.length,x=this.config,w=x.viewPortConfig,E=x._visw,P=this.getChildren("xAxis")[0],M=function(e){return P.getPixel(e,{wrtVisible:!0})},L=P.getAxisConfig("labels").style;if(x.legendClicked)for(e=0;e<y;e+=1)v[e].draw();else!w&&(w=x.viewPortConfig),n=w.oppp,g=w.nvl,p=w.dsi,h=w.dei,a=w.vdl=h-p,r=w.ppl=g?E/g:w.oppl,l=w.step=(s=w.ppp=E/a)<n?k(n/s):1,c=w.lskip=k(C(r,b(L.lineHeight))/s/l),d=w.dsi,f=w.dei,w.offset=0,u=w.norm=d%l,w.ddsi=d-=u,w.ddei=f=f+2*l-u,w._ymin=x._ymin,w._yminValue=x._yminValue,w.x=(M(d)-M(P.getVisibleConfig().minValue)+w.offset)/w.scaleX,f-d>P.getTicksLen()?w.scaleX=1:w.scaleX=P.getTicksLen()/Math.abs(f-d-l-.9),m=P.getVisibleConfig(),o=Math.ceil((m.maxValue-m.minValue+1)/g),i=x.viewPortConfig&&x.viewPortConfig.scaleX,t=Math.max(Math.round(P.getAxisConfig("labelStep")/i),g?o:c*l),P.setLabelConfig({step:t})},t.prototype.getParsedLabel=function(e){var t=this.xlabels;return t.parsed[e]||(t.parsed[e]=(0,i.parseUnsafeString)(t.data[e]||""))},t.prototype._setAxisScale=function(){this.getChildren("xAxis")[0].setScrollType("always")},t.prototype.getDSdef=function(){return r["default"]},t}(a["default"]);t["default"]=M},673:function(e,t,o){"use strict";t.__esModule=!0;var i=o(118),n=s(o(346)),a=o(125),r=s(o(674));function s(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),i=0;i<o.length;i++){var n=o[i],a=Object.getOwnPropertyDescriptor(t,n);a&&a.configurable&&e[n]===undefined&&Object.defineProperty(e,n,a)}}(e,t))}var c=i.hasTouch?i.TOUCH_THRESHOLD_PIXELS:i.CLICK_THRESHOLD_PIXELS;(0,a.addDep)({name:"zoomlineAnimation",type:"animationRule",extension:r["default"]});var u=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return l(t,e),t.prototype.getType=function(){return"dataset"},t.prototype.getName=function(){return"zoomLine"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this),this.config.skipIgnorerIndices=[],this.config.showPeakData=0,this.config.showTerminalValidData=0,this.config.minPeakDataLimit=null,this.config.maxPeakDataLimit=null},t.prototype._plotConfigure=function(t,o,i){e.prototype._plotConfigure.call(this,t,o,i);var n=this.config,a=this.components.data[t].config.setValue,r=i||this.getFromEnv("xAxis").getTicksLen(),s=n.showTerminalValidData,l=n.showPeakData,c=n.maxPeakDataLimit,u=n.minPeakDataLimit,p=c>u,h=a>c||a<u;l&&(c<u&&(a>c&&a<u)?n.skipIgnorerIndices.push(t):p&&h&&n.skipIgnorerIndices.push(t)),s&&t===r-1&&n.skipIgnorerIndices.push(t)},t.prototype.drawPlots=function(){var t=this.getFromEnv("xAxis"),o=this.getFromEnv("chartConfig").viewPortConfig;t.getPixel(o.step)-t.getPixel(0)>=o.amrd?e.prototype.drawPlots.call(this):this.hideAllAnchors()},t.prototype._setConfigure=function(t,o){var n=this.config,a=this.getFromEnv("chart"),r=a.config,s=a.getFromEnv("dataSource").chart,l=this.config.JSONData;n.drawanchors=(0,i.pluckNumber)(s.drawanchors,s.showanchors,1),n.anchorradius=(0,i.pluckNumber)(l.anchorradius,s.anchorradius,n.linethickness+2),n.showTerminalValidData=(0,i.pluckNumber)(r.showTerminalValidData,0),n.showPeakData=(0,i.pluckNumber)(r.showPeakData,0),n.showPeakData&&(r.maxPeakDataLimit||r.minPeakDataLimit)&&(n.maxPeakDataLimit=(0,i.pluckNumber)(r.maxPeakDataLimit,Number.MIN_SAFE_INTEGER),n.minPeakDataLimit=(0,i.pluckNumber)(r.minPeakDataLimit,Number.MAX_SAFE_INTEGER)),e.prototype._setConfigure.call(this,t,o)},t.prototype.configureAttributes=function(t){e.prototype.configureAttributes.call(this,t);var o,n,a={},r=this.getFromEnv("chart").getFromEnv("dataSource").chart;o=(n=this.config).linethickness+(0,i.pluckNumber)(r.pinlinethicknessdelta,1),a["stroke-width"]=o>0&&o||0,a["stroke-dasharray"]=[3,2],a.stroke=(0,i.hashify)(n.linecolor),a["stroke-opacity"]=n.alpha/100,a["stroke-linejoin"]=n["stroke-linejoin"]="round",a["stroke-linecap"]=n["stroke-linecap"]="round",n.pin=a,n.animation=!1,n.transposeanimduration=0,n.defaultPadding={left:0,right:0}},t.prototype.drawLabel=function(){return this},t.prototype.isWithinShape=function(e,t,o,n){var a,r,s,l,u,p,h,d,f,g,m,v;if(e)return a=e.config.anchorProps,r=e.config,l=a.borderThickness,this,u=this.components.data,p=(0,i.pluckNumber)(r.dragTolerance,0),h=e._xPos,null!==(d=e._yPos)?(v=e.config.hoverEffects,s=Math.max(a.radius,v&&v.anchorRadius||0,c)+l/2,f=o-h,g=n-d,((m=Math.sqrt(Math.pow(f,2)+Math.pow(g,2)))<=s||m<=p)&&{pointIndex:t,hovered:!0,pointObj:u[t]}):void 0},t.prototype.hideAllAnchors=function(){var e,t,o,i=this.components.data;for(t=0,o=i.length;t<o;t++)(e=i[t])&&e.graphics&&e.graphics.element&&e.graphics.element.hide()},t.prototype._firePlotEvent=function(e,t,o){var i,n,a,r=this.getFromEnv("chart"),s=this.components.data,l=this.getFromEnv("toolTipController"),c=s[t],u=c.graphics.element,p=this.config.currentToolTip,h=!r.config.useCrossline;switch(a=(i=c.config).setLink,n=i.eventArgs,e){case"fc-mouseover":h&&this._decideTooltipType(t,o),this._rolloverResponseSetter(r,c,o),a&&(u.node.style.cursor="pointer");break;case"fc-mouseout":l.hide(p),this._rolloutResponseSetter(r,c,o),a&&(u.node.style.cursor="default");break;case"fc-click":r.plotEventHandler(u,o,"dataplotclick",n);break;case"fc-mousemove":h&&this._decideTooltipType(t,o)}},t.prototype.calculateScrollRange=function(){var e=this.config,t=this.getFromEnv("xAxis"),o=t.getTicksLen(),i=this.getFromEnv("chartConfig").viewPortConfig.step||1;e.scrollMinVal=Math.max(Math.round(t.getVisibleConfig().minValue),0)-i,e.scrollMaxVal=Math.min(Math.round(t.getVisibleConfig().maxValue)+1,o)+i,e.scrollMinValForLabel=Math.max(Math.round(t.getVisibleConfig().minValue),0)-i,e.scrollMaxValForLabel=Math.min(Math.round(t.getVisibleConfig().maxValue)+1,o)+i,e.scrollMinVal-=e.scrollMinVal%i,e.scrollMinValForLabel-=e.scrollMinValForLabel%i},t}(n["default"]);t["default"]=u},674:function(e,t,o){"use strict";t.__esModule=!0;var i,n=o(349),a=(i=n)&&i.__esModule?i:{"default":i};t["default"]={"initial.dataset.zoomLine":a["default"]["initial.dataset.line"]}},675:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o,a=e.getFromEnv("dataSource"),r=a.chart||{},s=e.config,l=a.dataset,c=void 0,u=void 0,p=void 0,h=void 0,d=void 0,f=void 0,g=e.getChildren().canvas[0].getChildren("vCanvas")[0];for(s.cdm=t=(0,i.pluckNumber)(r.compactdatamode,0),s.cdmchar=o=(0,i.pluck)(r.dataseparator,n),l||e.setChartMessage(),u=0;u<l.length;u++)if(c=l[u],t&&c.data&&c.data.split){for(p=[],h=0,f=(d=c.data.split(o)).length;h<f;h++)p.push({value:d[h]});c.data=p}(0,i.datasetFactory)(g,e.getDSdef(),"dataset",l.length,l),e.iterateComponents(function(e){e.getType&&"dataset"===e.getType()&&e.createPinElem&&e.addEventListener("createpinelements",e.createPinElem)})};var i=o(118),n="|"},677:function(e,t,o){"use strict";t.__esModule=!0;var i=s(o(672)),n=o(383),a=s(o(384)),r=s(o(678));function s(e){return e&&e.__esModule?e:{"default":e}}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),i=0;i<o.length;i++){var n=o[i],a=Object.getOwnPropertyDescriptor(t,n);a&&a.configurable&&e[n]===undefined&&Object.defineProperty(e,n,a)}}(e,t))}var c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.getSpecificxAxisConf=n.getSpecificxAxisConf,o.getSpecificyAxisConf=n.getSpecificyAxisConf,o.registerFactory("axis",a["default"],["canvas"]),o.registerFactory("dataset",r["default"],["vCanvas"]),o}return l(t,e),t.getName=function(){return"ZoomLineDy"},t.prototype.getName=function(){return"ZoomLineDy"},t.prototype.__setDefaultConfig=function(){e.prototype.__setDefaultConfig.call(this);var t=this.config;t.friendlyName="Zoomable and Panable Multi-series Dual-axis Line Chart",t.defaultDatasetType="zoomline",t.isdual=!0,t.syncaxislimits=0},t.prototype._feedAxesRawData=function(){return n._feedAxesRawData.call(this)},t}(i["default"]);c.prototype.setAxisDimention=n.setAxisDimention,t["default"]=c},678:function(e,t,o){"use strict";t.__esModule=!0,t["default"]=function(e){var t,o,r=e.getFromEnv("dataSource"),s=r.chart||{},l=e.config,c=r.dataset,u=void 0,p=void 0,h=void 0,d=void 0,f=void 0,g=void 0,m=void 0,v=[],b=[],y=[],x=[],C=e.getChildren().canvas[0].getChildren("vCanvas");for(l.cdm=t=(0,i.pluckNumber)(s.compactdatamode,0),l.cdmchar=o=(0,i.pluck)(s.dataseparator,n),c||e.setChartMessage(),p=0;p<c.length;p++)if(u=c[p],t&&u.data&&u.data.split){for(h=[],d=0,g=(f=u.data.split(o)).length;d<g;d++)h.push({value:f[d]});u.data=h}for(p=0;p<c.length;p++)"s"===((m=c[p]).parentyaxis||"").toLowerCase()?(x.push(m),b.push(p)):(y.push(m),v.push(p));y.length?(0,i.datasetFactory)(C[0],e.getDSdef(),"dataset_line",y.length,y,v):a(C[0]),x.length?(0,i.datasetFactory)(C[1],e.getDSdef(),"dataset_line",x.length,x,b):a(C[1]),e.iterateComponents(function(e){e.getType&&"dataset"===e.getType()&&e.createPinElem&&e.addEventListener("createpinelements",e.createPinElem)})};var i=o(118),n="|",a=function(e){e&&e.iterateComponents(function(e){"dataset"===e.getType()&&e.remove()})}},679:function(e,t,o){"use strict";t.__esModule=!0;var i,n=o(118),a=o(131),r=(i=a)&&i.__esModule?i:{"default":i};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):function(e,t){for(var o=Object.getOwnPropertyNames(t),i=0;i<o.length;i++){var n=o[i],a=Object.getOwnPropertyDescriptor(t,n);a&&a.configurable&&e[n]===undefined&&Object.defineProperty(e,n,a)}}(e,t))}var c=Math,u=c.max,p=c.min,h=void 0,d=void 0,f=0,g=void 0,m=void 0,v="ontouchstart"in window,b={zoomlinedy:!0,zoomline:!0},y=function(e,t,o){return o.getFromEnv("animationManager").setAnimation({el:"group",attr:{name:e},container:t,state:"appearing",component:o,label:"group"})},x=function(e){var t,o,i,n={},a=Number.POSITIVE_INFINITY;for(t=0;t<this.length;t++)i=(o=this[t]-e)<0?d.NEG:d.POS,(o=Math.abs(o))<=a&&(a=o,n.absValue=o,n.noScaleSide=i);return n},C=function(e){return{onMouseOut:function(){e.hide(),e.position=h},onMouseMove:function(t){var o,i,a,r,s,l,c,u,p,h,d,f,g;e.disabled||e._mouseIsDown&&!v||(i=e.getZoomInfo(),a=e.getGraphicalElement("line"),r=i.step,l=(s=e.chart).getChildren("xAxis")[0],u=(c=s.get("config")).canvasLeft,p=l.getAxisConfig("axisDimention"),h=(0,n.getMouseCoordinate)(e.getFromEnv("chart-container"),t,s).chartX,d=l.getVisibleConfig(),f=p.x-u,g=(g=e.getDataIndexFromPixel(Math.round(h)))+((o=g%r)>r/2?r-o:-o),h=l.getPixel(g,{wrtVisible:!0})-f-u,h-=i.offset,a.transform(["T",Math.round(h),0]),e.hidden&&0!==c.crossline.enabled&&e.show(),(g<d.minValue||g>d.maxValue)&&e.hide(),(g!==e.position||e.hidden)&&(e.position=g,e.lineX=h,e.updateLabels()))}}},w=function(e){function t(){s(this,t);var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return o.config.handlers=C(o),o}return l(t,e),t.prototype.configureAttributes=function(e){this.config.options=e},t.prototype.draw=function(){var e,t,o=void 0,i=void 0,a=void 0,r=void 0,s={},l=this.getFromEnv("chart"),c=l.getFromEnv()["number-formatter"],u=l.config,p=this.left=l.getChildren("xAxis")[0].getAxisConfig("axisDimention").x,h=this.top=u.canvasTop,d=this.height=u.canvasHeight,f=this._visout=u._visout,g=[],m=this.getFromEnv("animationManager"),v=void 0,b=this.getGraphicalElement("line"),x=this.config.options,C=x.labelstyle,w=x.valuestyle,k=l.getChildren("yAxis")[0],E=k.getLimit(),P=l.getChildren("yAxis")[1],M=P&&P.getLimit(),L=this.getGraphicalElement("labels"),_=[],T=void 0,N=this.getGraphicalElement("positionLabel"),S=this.getLinkedParent().getChildContainer("crosslineBottom"),D=this.getLinkedParent().getChildContainer("crosslineTop"),F=function(){this.remove()};if(l.iterateComponents(function(e){e.getType&&"dataset"===e.getType()&&!e.getState("removed")&&g.push(e)}),this.plots=g,this.width=u._visw,v=this.group,(v=this.getContainer("valueGroup"))||(v=this.addContainer("valueGroup",y("crossline-value-group",D,this))),(T=this.getContainer("labelGroup"))||(T=this.addContainer("labelGroup",y("crossline-label-group",D,this))).insertBefore(l.getChildContainer("plotGroup")),this.container=S,v.attr({transform:["T",p,u._ymin]}).css(w),e=m.setAnimation({el:b||"path",container:S,doNotRemove:!0,attr:(0,n.extend2)({path:["M",p,h,"l",0,d]},x.line)}).toBack(),b||this.addGraphicalElement("line",e,!1),x.labelEnabled&&(s.x=f,s.y=h+d+(u.scrollHeight||0)+2.5,s["vertical-align"]="top",s.direction=u.textDirection,s.text=""),t=m.setAnimation({el:N||"text",attr:x.labelEnabled&&s,css:x.labelEnabled&&C,container:T,doNotRemove:!0,callback:!x.labelEnabled&&function(){this.remove()}}),!N&&x.labelEnabled&&this.addGraphicalElement("positionLabel",t,!1),this.hide(),this.ppixelRatio=-k.config.axisDimention.axisLength/k.getVisibleLength(),this.spixelRatio=P&&-P.config.axisDimention.axisLength/P.getVisibleLength(),this.yminValue=u._yminValue,this.pyaxisminvalue=E.min,this.pyaxismaxvalue=E.max,this.syaxisminvalue=M&&M.min,this.syaxismaxvalue=M&&M.max,this.positionLabels=u.xlabels||{data:[],parsed:[]},this.chart=l,o=0,x.valueEnabled){for(i=g.length;o<i;o+=1)a=g[o],r=(0,n.hashify)(a.config.linecolor),s.x=0,s.y=f,s.fill=r,s.direction=u.textDirection,s.text="",s["text-bound"]=w["text-bound"],s.lineHeight=w.lineHeight,_[o]=m.setAnimation({el:L&&L[o]||"text",container:v,doNotRemove:!0,attr:s}),(!L||!L[o])&&this.addGraphicalElement("labels",_[o],!0);this.numberFormatter=c}for(i=L&&L.length;o<i;o++)m.setAnimation({el:L[o],component:this,doNotRemove:!0,callback:F});L&&L.splice(g.length)},t.prototype.getType=function(){return"crossline"},t.prototype.getName=function(){return"crossLine"},t.prototype.getZoomInfo=function(){return this.getFromEnv("chartConfig").viewPortConfig},t.prototype.getDataIndexFromPixel=function(e){var t=this.getFromEnv("chart").getChildren("xAxis")[0];return Math.round(t.getValue(e,{wrtVisible:!0}))},t.prototype.getPositionLabel=function(e){var t=this.getFromEnv("chart").getChildren("xAxis")[0].getLabel(e);return t&&t.label||""},t.prototype.disable=function(e){return e!==h&&(this.disabled=!!e,this.disabled&&this.visible&&this.hide()),this.disabled},t.prototype.updateLabels=function(){var e=this,t=e.getFromEnv("animationManager"),o=e.getGraphicalElement("labels"),i=e.getGraphicalElement("positionLabel"),n=e.plots,a=e.width,r=e.position,s=e.lineX,l=Math.floor(s),c=e.dummyText,v=e.numberFormatter,b=e.pyaxisminvalue,y=e.pyaxismaxvalue,x=e.syaxisminvalue,C=e.syaxismaxvalue,w=function(e){var t=e.yminValue,o=e.getFromEnv("chart").getChildren("yAxis")[0].getPixel(t),i=void 0,n={},a=void 0;d={},g=-1*e.height;try{Object.defineProperty(d,"POS",{enumerable:!1,configurable:!1,get:function(){return 1}}),Object.defineProperty(d,"NEG",{enumerable:!1,configurable:!1,get:function(){return-1}})}catch(r){d.POS=1,d.NEG=-1}try{Object.defineProperty(n,"top",{enumerable:!1,configurable:!1,get:function(){return g}}),Object.defineProperty(n,"bottom",{enumerable:!1,configurable:!1,get:function(){return o}})}catch(r){n.top=g,n.bottom=o}return n.init=function(e){var t;for(g+=(f=e+2)/2,a=Math.floor(Math.abs(g)/f),i=new E(a),t=0;t<a;t++)i.pos.push(0)},n.occupy=function(e,t){var o=Math.floor(Math.abs(g-e)/f);i&&i.attachShift(e,o,t)},n}(e);m=e._visout,o&&(c||(c=e.dummyText=e.getFromEnv("paper").text().hide()),c.attr({text:v.yAxis("0")}),c&&w.init(c.getBBox().height,o.length),o.forEach(function(t,o){if(!n[o].getState("removed")){var i,a=n[o],s=a.components.data[r]&&a.components.data[r].config.setValue,l=a.config.parentYAxis;i=s===h||!a.getState("visible")||(l?s>C||s<x:s>y||s<b)?m:l?(s-x)*e.spixelRatio:(s-b)*e.ppixelRatio,w.occupy(i,t)}})),o&&o.forEach(function(o,i){if(!n[i].getState("removed")){var c,d,f,g,m,b,y=n[i],x=y.components.data[r]&&y.components.data[r].config.setValue,C=v[y.config.parentYAxis?"sYAxis":"yAxis"](x);C?(o.attr({text:C}),g=(f=(d=(c=o.getBBox())&&c.width)&&.5*d)&&f+10,b=o.calcY,m=u(0,p(l,a)),b!==h&&m!==h&&t.setAnimation({el:o,attr:{x:m,y:b,"text-anchor":(s<=g?"start":s+g>=a&&"end")||"middle","text-bound":["rgba(255,255,255,0.8)","rgba(0,0,0,0.2)",1,2.5]},doNotRemove:!0,component:e})):o.attr({x:-a})}}),i&&t.setAnimation({el:i,attr:{x:s+e.left,text:e.getPositionLabel(r),"text-bound":["rgba(255,255,255,1)","rgba(0,0,0,1)",1,2.5]},component:e})},t.prototype.show=function(){if(!this.disabled){this.hidden=!1;var e=this.getContainer("valueGroup"),t=this.getGraphicalElement("positionLabel"),o=this.getGraphicalElement("line");e&&e.show(),t&&t.show(),o&&o.show()}},t.prototype.hide=function(){this.hidden=!0;var e=this.getContainer("valueGroup"),t=this.getGraphicalElement("positionLabel"),o=this.getGraphicalElement("line");e&&e.hide(),t&&t.hide(),o&&o.hide()},t.prototype.dispose=function(){var e;for(e in this)this.hasOwnProperty(e)&&delete this[e]},t}(r["default"]);var k=function(){function e(){s(this,e),this.y=0,this.lRef=h,this.__shift=0,this.__index=0}return e.prototype.applyShift=function(e){this.__shift=e,this.lRef.calcY=this.y+=e*f},e.prototype.applyDirectIndex=function(e){this.__index=e,this.lRef.calcY=this.y=g-e*f*-1},e}(),E=function(){function e(t){s(this,e),this.holes=[],this.pos=[];for(var o=0;o<t;o++)this.holes.push(o)}return e.prototype.repositionHoles=function(){var e,t=0,o=this.pos;for(this.holes.length=0,e=0;e<o.length;e++)!o[e]&&(this.holes[t++]=e)},e.prototype.attachShift=function(e,t,o){var i,n,a,r,s,l,c,u=this.pos,p=u.length;if(e!==m){if(i=u[l=t>p-1?p-1:t],(r=new k).y=e,r.lRef=o,!i)return r.applyDirectIndex(l),u.splice(l,1,r),void this.holes.splice(this.holes.indexOf(l),1);if(n=l+(c=x.call(this.holes,l)).absValue*c.noScaleSide,c.noScaleSide===d.POS)return r.applyDirectIndex(n),u.splice(n,1,r),this.holes.splice(this.holes.indexOf(n),1),n;if(c.noScaleSide===d.NEG){for(a=u.splice(n+1,u.length-1),u.pop(),a.forEach(function(e){e&&e.applyShift(-1)}),[].push.apply(u,a),s=n;u[s];)s++;return u.push(0),this.repositionHoles(),s+=(c=x.call(this.holes,s)).absValue*c.noScaleSide,r.applyDirectIndex(s),u.splice(s,1,r),this.repositionHoles(),u.length-1}}else o.calcY=m},e}();t["default"]={extension:function(e){e.addEventListener("instantiated",function(e){if("canvas"===e.sender.getName()){var t=e.sender,o=void 0,i=void 0,a=void 0;t.registerFactory("crossLineManager-zoomline",function(){var r=e.sender.getFromEnv("chart"),s=r&&r.getName(),l=void 0;s&&b[s.toLowerCase()]&&((i=r.config.crossline)&&0!==i.enabled&&1===r.config.useCrossline?a=1:(i&&(i.enabled=0),a=0),(0,n.componentFactory)(t,w,"crossLine",a,[i]),a&&(l=t.getChildren("crossLine")[0],o=l.config.handlers,l.addExtEventListener("fc-mousemove",o.onMouseMove,t),l.addExtEventListener("fc-mouseover",o.onMouseMove,t),l.addExtEventListener("fc-dragstart",function(e){o.onMouseOut(e),l.removeExtEventListener("fc-mousemove",o.onMouseMove,t)},t),l.addExtEventListener("fc-dragend",function(){l.addExtEventListener("fc-mousemove",o.onMouseMove,t)},t),l.addExtEventListener("fc-mouseout",function(e){o.onMouseOut(e)},t)))})}})},name:"crossline-manager",type:"extension",requiresFusionCharts:!0}}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.zoomline.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/fusioncharts.zoomscatter.js b/graphs/fusioncharts-suite-xt/js/fusioncharts.zoomscatter.js new file mode 100755 index 0000000000000000000000000000000000000000..658942b5543335c8e231823c8eeadfe20377b3fc --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/fusioncharts.zoomscatter.js @@ -0,0 +1,2 @@ +!function(t){"object"==typeof module&&"undefined"!=typeof module.exports?module.exports=t:t()}(function(){(window.webpackJsonpFusionCharts=window.webpackJsonpFusionCharts||[]).push([[8],{702:function(t,e,o){"use strict";e.__esModule=!0,e.ZoomScatter=undefined;var i,n=o(703),a=(i=n)&&i.__esModule?i:{"default":i};e.ZoomScatter=a["default"],e["default"]={name:"zoomscatter",type:"package",requiresFusionCharts:!0,extension:function(t){t.addDep(a["default"])}}},703:function(t,e,o){"use strict";e.__esModule=!0;var i=c(o(414)),n=c(o(704)),a=o(118),r=o(676),s=o(125),l=o(129);function c(t){return t&&t.__esModule?t:{"default":t}}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),i=0;i<o.length;i++){var n=o[i],a=Object.getOwnPropertyDescriptor(e,n);a&&a.configurable&&t[n]===undefined&&Object.defineProperty(t,n,a)}}(t,e))}(0,s.getDep)("redraphael","plugin").addSymbol(r.symbolList);var g=function(t){function e(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.call(this));return o.highlightEnabled=!1,o.isXY=!0,o.zoom=!0,o.zoomX=!0,o.zoomY=!0,o.defaultZeroPlaneHighlighted=!1,o}return h(e,t),e.getName=function(){return"ZoomScatter"},e.prototype.getName=function(){return"ZoomScatter"},e.prototype.__setDefaultConfig=function(){t.prototype.__setDefaultConfig.call(this);var e=this.config;e.friendlyName="ZoomScatter Chart",e.defaultDatasetType="zoomscatter",e.enablemousetracking=!0,e.animation=0},e.prototype.configureAttributes=function(e){var o,i=this.config;t.prototype.configureAttributes.call(this,e),o=this.getFromEnv("dataSource").chart,i.stepZoom=400/(100-(0,a.pluckNumber)(o.stepzoom,25)),i.stepZoom<=2&&(i.stepZoom=1.9),i.showToolBarButtonToolText=(0,a.pluckNumber)(o.showtoolbarbuttontooltext,1),i.btnResetChartToolText=(0,a.pluck)(o.btnresetcharttooltext,"Reset Chart"),i.btnZoomOutToolText=(0,a.pluck)(o.btnzoomouttooltext,"Zoom out to previous level"),i.btnZoomInToolText=(0,a.pluck)(o.btnzoomintooltext,"<strong>Zoom in</strong><br/>Or double-click on plot to zoom-in"),i.btnSelectZoomToolText=(0,a.pluck)(o.btnselectzoomtooltext,"<strong>Select a region to zoom-in</strong><br/>Click to enable pan mode."),i.btnPanToolText=(0,a.pluck)(o.btnpantooltext,"<strong>Drag to move across chart</strong><br/>Click to enable select-zoom mode.")},e.includeInputOptions=function(){return["DragPan","DragZoomIn","ZoomResetButton","ZoomOutButton","ZoomInButton","DbTapZoom","PinchZoom"]},e.prototype.getInputConfigurations=function(){var t=this,e=t.config,o=function(){t.addJob("spaceManage",function(){t._manageInteractiveSpace()},l.priorityList.configure)};return{dragZoomIn:{scaleX:!0,scaleY:!0,boxStyle:{"stroke-width":1,stroke:"red",fill:"#00FF00",opacity:.2,cursor:"ne-resize"},dragendFn:o,tooltext:e.btnSelectZoomToolText,zoomDecimalLimit:2},zoomResetButton:{tooltext:e.btnResetChartToolText,hookFn:o},zoomOutButton:{tooltext:e.btnZoomOutToolText,hookFn:o},zoomInButton:{tooltext:e.btnZoomInToolText,stepzoom:e.stepZoom,zoomDecimalLimit:2,hookFn:o},dragPan:{tooltext:e.btnPanToolText},dbTapZoom:{stepzoom:e.stepZoom,zoomDecimalLimit:2,hookFn:o},pinchZoom:{zoomDecimalLimit:2}}},e.prototype._checkInvalidSpecificData=function(){if(!this.getFromEnv("dataSource").dataset)return!0},e.prototype.getDatasets=function(){var t=[];return this.iterateComponents(function(e){e.getType&&"dataset"===e.getType()&&t.push(e)}),t},e.prototype.getDSdef=function(){return n["default"]},e.prototype.getDSGroupdef=function(){},e}(i["default"]);g.prototype._manageInteractiveSpace=a._manageInteractiveSpace,e["default"]=g},704:function(t,e,o){"use strict";e.__esModule=!0;var i=c(o(418)),n=c(o(419)),a=o(129),r=o(118),s=o(122),l=c(o(215));function c(t){return t&&t.__esModule?t:{"default":t}}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):function(t,e){for(var o=Object.getOwnPropertyNames(e),i=0;i<o.length;i++){var n=o[i],a=Object.getOwnPropertyDescriptor(e,n);a&&a.configurable&&t[n]===undefined&&Object.defineProperty(t,n,a)}}(t,e))}var g=window,d=function(){this.hide()},u=Math.PI,p=r.preDefStr.DEFAULT,f=2*u,m=function(t,e){return t*e>=0},x=function(t,e,o,i,n,a,r,s){var l,c,h,g,d,u,p,f,x,y;return y=(l=i-e)*r+(h=t-o)*s+(d=o*e-t*i),0!==(x=l*n+h*a+d)&&0!==y&&m(x,y)?0:(f=(c=s-a)*o+(g=n-r)*i+(u=r*a-n*s),0!==(p=c*t+g*e+u)&&0!==f&&m(p,f)?0:(l*g-c*h,1))},y=function(t,e,o){if(!(isNaN(t.x)||isNaN(t.y)||isNaN(e.x)||isNaN(e.y)))return x(t.x,t.y,e.x,e.y,o.xMinWPad,o.yMaxWPad,o.xMaxWPad,o.yMaxWPad)||x(t.x,t.y,e.x,e.y,o.xMaxWPad,o.yMaxWPad,o.xMaxWPad,o.yMinWPad)||x(t.x,t.y,e.x,e.y,o.xMaxWPad,o.yMinWPad,o.xMinWPad,o.yMinWPad)},v=function(t){var e=(t.config.axisRange.max-t.config.axisRange.min)/(t.getVisibleConfig().maxValue-t.getVisibleConfig().minValue);return e=Math.round(1e3*e)/1e3},b=function(t){return[t-1,t,t+1]},P=function(t,e,o){return t>=e&&t<=o},S=function(t,e,o){return P(t,e,o)||P(t,o,e)},w=function(t,e){return(e=parseFloat(e/100))<0?e=0:e>1&&(e=1),t||(t="#FFFFFF"),r.isIE&&!r.hasSVG?e?t:"transparent":(t=t.replace(/^#?([a-f0-9]+)/gi,"$1"),(t=(0,s.HEXtoRGB)(t))[3]=e.toString(),"rgba("+t.join(",")+")")},k=function(t){var e,o,i=[],n=t.getVisibleConfig(),a=n.maxValue-n.minValue,r=n.minValue+a/2,s=t.config,l=s.axisRange;return e=Math.abs((r-(s.isReverse?l.max:l.min))/a),o=i.focusedGrid=Math.floor(e),i.push(o),e%1>.5?i.push(o+1):e%1<.5&&i.unshift(o-1),i},T=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return h(e,t),e.prototype.getType=function(){return"dataset"},e.prototype.getName=function(){return"zoomScatter"},e.prototype.configureAttributes=function(e){t.prototype.configureAttributes.call(this,e);var o,i,n,a,l,c,h,g=this.config,d=this.getFromEnv("chart"),u=d.config,p=d.getFromEnv("dataSource").chart,f=(0,r.pluck)(e.anchorbordercolor,p.anchorbordercolor),m=(0,s.getFirstColor)((0,r.pluck)(f,g.plotBorderColor)),x=(0,r.pluckNumber)(e.anchorborderthickness,p.anchorborderthickness,f?1:0),y=(0,s.getFirstColor)((0,r.pluck)(e.anchorbgcolor,e.color,p.anchorbgcolor,g.plotColor)),v=(0,r.pluck)(e.anchoralpha,e.alpha,p.anchoralpha,r.HUNDREDSTRING),b=(0,r.pluck)(e.anchorbgalpha,e.alpha,p.anchorbgalpha,r.HUNDREDSTRING),P={color:g.lineColor,alpha:g.lineAlpha};g.plotCosmetics={fillStyle:w(y,v*b/100),strokeStyle:w(m,v),borderWidth:x,lineWidth:g.lineThickness,lineStrokeStyle:(0,r.toRaphaelColor)(P)},this.config.JSONData=e,g.anchorBorderThickness=(0,r.pluckNumber)(e.anchorborderthickness,p.anchorborderthickness,f?1:0),g.chunkSize=Math.floor(Math.min((e.data||[]).length/5,5e4)),h=g.staticRadius=(0,r.pluckNumber)(p.staticradius,0),g.radius=(0,r.pluckNumber)(e.radius,e.anchorradius,p.radius,p.anchorradius,h?3:.5),c=g.showHoverEffect,o=(0,s.getFirstColor)((0,r.pluck)(e.plotfillhovercolor,e.hovercolor,p.plotfillhovercolor,p.hovercolor,g.anchorbgcolor)),i=(0,r.pluck)(e.plotfillhoveralpha,e.hoveralpha,p.plotfillhoveralpha,p.hoveralpha,r.HUNDREDSTRING),n=(0,s.getFirstColor)((0,r.pluck)(e.plotfillhovercolor,e.hovercolor,p.plotfillhovercolor,p.hovercolor,o)),l=(0,r.pluck)(e.plotfillhoveralpha,e.hoveralpha,p.plotfillhoveralpha,p.hoveralpha,r.HUNDREDSTRING),a=(0,r.pluckNumber)(e.borderhoverthickness,p.borderhoverthickness,1),g.hoverCosmetics={showHoverEffect:c,fill:w(o,i),borderColor:w(n,l),borderThickness:a},g.tooltip={toolTipVisible:u.showtooltip,seriesNameInToolTip:u.seriesnameintooltip,toolTipSepChar:u.tooltipsepchar},g.lastViewPort={},this.disableScrollBars(),this.setState("dirty",!0)},e.prototype.hasDrawingRefChanged=function(){var t,e=this.getFromEnv("xAxis"),o=this.getFromEnv("yAxis"),i=this.config,n=i.axisConfig=i.axisConfig||{},a=v(e),r=this.getFromEnv("chartConfig"),s=v(o);return t=n.xZoomScale!==a||n.yZoomScale!==s||i.prevCanvasHeight!==r.canvasHeight||i.prevCanvasWidth!==r.canvasWidth,n.xZoomScale=a,n.yZoomScale=s,i.prevCanvasHeight=r.canvasHeight,i.prevCanvasWidth=r.canvasWidth,t},e.prototype.saveScrollPos=function(){var t=this.getFromEnv("xAxis"),e=this.getFromEnv("yAxis"),o=this.config,i=o.axisConfig=o.axisConfig||{};i.xScrollPos=t.config.apparentScrollPos,i.yScrollPos=e.config.apparentScrollPos},e.prototype.disableScrollBars=function(){var t=this.getFromEnv("xAxis"),e=this.getFromEnv("yAxis");t.setScrollType("none"),e.setScrollType("none")},e.prototype.calculateZoomedRadius=function(){var t=this.config,e=this.getFromEnv("chart").config,o=t.axisConfig;t.zoomedRadius=Math.min(t.staticRadius?t.radius:t.radius*Math.min(o.xZoomScale,o.yZoomScale),e.canvasWidth/2,e.canvasHeight/2)},e.prototype.setupKdTree=function(){var t,e,o,i=this,r=i.components.data,s=r.length,l=[];for(e=0;e<s;++e)o=(t=r[e]).config.setValue,isNaN(o.x)||isNaN(o.y)||(o.index=e,l.push({x:o.x,y:o.y,index:e,data:t,r:1}));i.addJob("kdtree",function(){i.dataTree=(new n["default"]).buildKdTree(l)},a.priorityList.kdTree)},e.prototype._getHoveredPlot=function(t,e){var o,i,n,a=this.getFromEnv("xAxis"),r=this.getFromEnv("yAxis");if(i=a.getValue(t+a.getTranslation()),n=r.getValue(e+r.getTranslation()),o=this.dataTree&&this.dataTree.getNeighbour({x:i,y:n,options:this.zoomRadiusOb},!0))return o.data.x=o.x,o.data.y=o.y,{pointIndex:o.index||o.i,hovered:!0,pointObj:o.data}},e.prototype._decideTooltipType=function(t,e){var o=this.getFromEnv("toolTipController"),i=this.config.currentToolTip,n=this.components.data[t],a=n&&(n.config.finalTooltext||n.config.toolText),r=e.originalEvent;a&&(i?o.draw(r,a,i):i=this.config.currentToolTip=o.draw(r,a))},e.prototype._firePlotEvent=function(t,e,o){var i,n=this.getFromEnv("chart"),a=this.components,r=this.getFromEnv("toolTipController"),s=a.data[e],l=this.getFromEnv("paper").canvas.style;if(s)switch(i=s.config.setLink,t){case"fc-mouseover":this._decideTooltipType(e,o),this.highlightPoint(this.config.showHoverEffect,s),n.plotEventHandler(this.getGraphicalElement("tracker"),o,"dataplotRollover"),i&&(l.cursor="pointer");break;case"fc-mouseout":r.hide(this.config.currentToolTip),i&&(l.cursor=p),this.highlightPoint(!1),n.plotEventHandler(this.getGraphicalElement("tracker"),o,"dataplotRollout");break;case"fc-click":n.plotEventHandler(this.getGraphicalElement("tracker"),o,"dataplotClick");break;case"fc-mousemove":this._decideTooltipType(e,o)}},e.prototype.highlightPoint=function(t,e){var o,i=this.getFromEnv("chart").config,n=this.getFromEnv("animationManager"),a=this.getGraphicalElement("tracker"),r=this.getFromEnv("xAxis"),s=this.getFromEnv("yAxis"),l=this&&this.config,c=l&&l.zoomedRadius||0,h=l&&l.hoverCosmetics,g=h&&h.fill,u=h&&h.borderColor,p=h&&h.borderThickness,f={},m=e&&e.link;t&&(f={r:c,fill:g,stroke:u,"stroke-width":p,cx:r.getPixel(e.x),cy:s.getPixel(e.y)}),n.setAnimationState(t?"mouseover":"mouseout"),o=n.setAnimation({el:a||"circle",attr:t&&f,container:this.getContainer("plotGroup"),component:this,doNotRemove:!0,callback:!t&&d}),t&&o.show(),a||this.addGraphicalElement("tracker",o),e&&o.data("eventArgs",{x:e.x,y:e.y,tooltip:e.config.toolText,link:m}),i.lastHoveredPoint=e,f.cursor=m?"pointer":""},e.prototype.drawCommonElements=function(){},e.prototype.animateCommonElements=function(){},e.prototype.remove=function(){t.prototype.remove.call(this),this._deleteGridImages()},e.prototype.drawPlots=function(){var t,e,o,i,n,a=this.getFromEnv("animationManager"),r=this.getFromEnv("xAxis"),s=this.getFromEnv("yAxis"),l=this.config,c=this.getContainer("plotGroup"),h=this.getContainer("containerLine"),g=this.getContainer("containerPlot"),d=!1,u=this.config.anchorBorderThickness;this.saveScrollPos(),i=a.setAnimation({el:h||"group",attr:{name:"lineGroup"},container:c,component:this,label:"group"}),n=a.setAnimation({el:g||"group",attr:{name:"plotGroup"},container:c,component:this,label:"group"}),this.getState("visible")?(i.show(),n.show()):(i.hide(),n.hide()),!h&&this.addContainer("containerLine",i),!g&&this.addContainer("containerPlot",n),(this.hasDrawingRefChanged()||this.wasLastDrawPixelated||this.getState("dirty"))&&(this.wasLastDrawPixelated=!1,this.calculateZoomedRadius(),t=v(r),e=v(s),o=l.radius*Math.min(t,e),this.zoomRadiusOb={rx:r.getValue(o+u)-r.getValue(0),ry:s.getValue(0)-s.getValue(o+u)},this._deleteGridImages(),this._graphics._grid={},d=!0),this._gridDraw(d),this.setState("dirty",!1)},e.prototype._deleteGridImages=function(){var t,e,o,i,n,a,r,s,l=this.config,c=this._graphics,h=c._imagePool||(c._imagePool=[]),g=c._canvasPool||(c._canvasPool=[]),d=c._lineImagePool||(c._lineImagePool=[]),u=c._lineCanvasPool||(c._lineCanvasPool=[]),p=c._grid||[],f=l._batchDrawTimers;if(f&&f.length)for(;f.length;)this.removeJob(f.shift());for(a in p)if(s=p[a])for(r in s)(n=s[r])&&n.drawState&&((t=n.image).attr({src:"",width:0,height:0}),h.push(t),delete n.image,i=n.canvas,g.push(i),delete n.canvas,delete n.ctx,(e=n.lineImage)&&(e.attr({src:"",width:0,height:0}),d.push(e),delete n.lineImage,o=n.lineCanvas,u.push(o),delete n.lineCanvas,delete n.lineCtx));delete c._grid},e.prototype._gridDraw=function(t){var e=this,o=e.config;clearTimeout(o.timer),t?e._gridManager():o.timer=e.addJob("_gridManagerId",function(){e._gridManager()},a.priorityList.label)},e.prototype.getAllGrids=function(){var t,e,o,i,n,a,r,s,l,c=this.config,h=this.getFromEnv("chart").config,g=this.getFromEnv("xAxis"),d=this.getFromEnv("yAxis"),u=k(g),p=k(d),f=b(u.focusedGrid),m=b(p.focusedGrid),x=[],y=[],P=0,S=0,w=this._graphics._grid,T={},C=v(g),E=v(d),M=Math.ceil(E),_=Math.ceil(C),F=Math.max(p.focusedGrid-1,0),I=Math.min(p.focusedGrid+1,M-1),N=Math.max(u.focusedGrid-1,0),D=Math.min(u.focusedGrid+1,_-1),A=g.getAxisConfig("axisDimention").axisLength||h.canvasWidth,R=d.getAxisConfig("axisDimention").axisLength||h.canvasHeight,V=g.config,L=d.config,G=V.axisRange.min,W=V.axisRange.max,O=L.axisRange.min,Z=L.axisRange.max,z=c.radius*Math.min(C,E)+c.plotCosmetics.borderWidth,B=Math.abs(z/(A*C/(g.config.axisRange.max-g.config.axisRange.min))),H=Math.abs(z/(R*E/(d.config.axisRange.max-d.config.axisRange.min))),j=d.getPixel(d.config.axisRange.max),J=g.getPixel(g.config.axisRange.min);for(w||(this.config.grids=w={}),P=F;P<=I;++P)for(w[P]=T=w[P]||{},s=j+P*R,i=d.getValue(s),n=d.getValue(s+R),S=N;S<=D;++S)a=0===S?z:0,r=S===_-1?z:0,l=J+S*A-a,o=g.getValue(l),e=g.getValue(l+A+a+r),T[S]=t=T[S]||{xPixel:l,width:Math.abs(g.getPixel(e)-l),yPixel:s,height:d.getPixel(n)-s,xLeftValue:o,yTopValue:i,xRightValue:e,yBottomValue:n,drawState:0,xMinWPad:Math.max(Math.min(o,e)-B,G),yMinWPad:Math.max(Math.min(i,n)-H,O),xMaxWPad:Math.min(Math.max(o,e)+B,W),yMaxWPad:Math.min(Math.max(i,n)+H,Z),i:P,j:S},t.drawState||(~u.indexOf(S)&&~p.indexOf(P)?x.push(t):~f.indexOf(S)&&~m.indexOf(P)&&y.push(t));return{focused:x,nearBy:y}},e.prototype.allocatePosition=function(){var t,e,o,i,n,a=this.config,r=this.components.data,s=r.length,l=this.getFromEnv("xAxis"),c=this.getFromEnv("yAxis"),h=a.zoomedRadius;for(o=0;o<s;o++)i=(n=r[o].config).setValue,t=l.getPixel(i.x),e=c.getPixel(i.y),n.props={element:{attr:{polypath:[0,t,e,h||n.anchorProps.radius]}},label:{attr:{}}}},e.prototype._gridManager=function(){var t,e,o=this;t=o.getAllGrids(),o.config._drawGrid=t.focused,(t.focused.length||t.nearBy.length)&&(o.config._drawGrid=t.focused,e=function(){o.config._drawGrid=t.nearBy,o._drawGridArr()},o._drawGridArr(e))},e.prototype._drawGridArr=function(t){var e,o,i,n,a,r,s,l,c,h=this.config,d=h.drawLine,u=h._drawGrid,p=[],f=this.getFromEnv("animationManager"),m=this.getContainer("containerLine"),x=this.getContainer("containerPlot"),y=this.getFromEnv("xAxis"),b=this.getFromEnv("yAxis"),P=v(y),S=v(b),w=this._graphics._imagePool||[],k=this._graphics._canvasPool||[],T=this._graphics._lineImagePool||[],C=this._graphics._lineCanvasPool||[],E=h.plotCosmetics,M=h.radius*Math.min(P,S);if(u.length){for(;u.length;)l=(e=u.shift()).xPixel,c=e.yPixel,r=e.width,s=e.height,2!==e.drawState&&(e.drawState=2,d&&(T.length&&(e.lineImage=T.shift()),e.lineImage=f.setAnimation({el:e.lineImage||"image",attr:{x:l,y:c,width:r,height:s},container:m,component:this,label:"image"}),C.length?e.lineCanvas=i=C.shift():e.lineCanvas=i=g.document.createElement("canvas"),i.setAttribute("width",r),i.setAttribute("height",s),(a=e.lineCtx=i.getContext("2d")).fillStyle=E.fillStyle,a.strokeStyle=E.lineStrokeStyle,a.lineWidth=E.lineWidth),w.length&&(e.image=w.shift()),e.image=f.setAnimation({el:e.image||"image",attr:{x:l,y:c,width:r,height:s},container:x,component:this,label:"image"}),k.length?e.canvas=o=k.shift():e.canvas=o=g.document.createElement("canvas"),o.setAttribute("width",r),o.setAttribute("height",s),n=e.ctx=o.getContext("2d"),M<1?(n.strokeStyle=E.fillStyle,n.lineWidth=.5):(n.fillStyle=E.fillStyle,n.strokeStyle=E.strokeStyle,n.lineWidth=E.borderWidth),p.push(e));h._batchDrawindex=this.config.JSONData.data&&this.config.JSONData.data.length-1||0,this._drawGridArrBatch(p,t,!h.animation.enabled)}else t&&t()},e.prototype._drawGridArrBatch=function(t,e,o){var i,n,s,l,c,h,g,d,u,p,m,x,v,b,P,w,k,T,C,E,M,_,F,I,N=this,D=N.config,A=D.drawLine,R=D.plotCosmetics,V=D._batchDrawindex,L=N.components.data,G=V-D.chunkSize,W=N.getFromEnv("xAxis"),O=N.getFromEnv("yAxis"),Z=N.getFromEnv("chart"),z=N.getFromEnv("animationManager"),B=Z.getFromEnv("dataSource"),H=D.JSONData,j=D.zoomedRadius,J=(0,r.pluckNumber)(H.showregressionline,Z.config.showregressionline,0),U=D._store||[],K=R.lineWidth||j<1;for(J&&(E=(0,r.toRaphaelColor)((0,r.pluck)(H.regressionlinecolor,B.chart.regressionlinecolor,D.anchorbordercolor,D.lineColor,"fff000")),M=(0,r.pluckNumber)(H.regressionlinethickness,B.chart.regressionlinethickness,1),_=(0,r.pluckNumber)(H.regressionlinealpha,B.chart.regressionlinealpha,100)/100),d=0;d<t.length;d+=1)t[d].ctx.beginPath(),A&&t[d].lineCtx.beginPath();for(G=G<=0?0:G;V>=G;V-=1)if((x=L[V]&&L[V].config.setValue)&&!isNaN(x.x)&&!isNaN(x.y))for(d=0;d<t.length;d+=1)u=t[d],S(x.x,u.xMinWPad,u.xMaxWPad)&&S(x.y,u.yMinWPad,u.yMaxWPad)?(p=u.ctx,m=u.lineCtx,i=W.getPixel(x.x)-u.xPixel,n=O.getPixel(x.y)-u.yPixel,(g=U[i])||(g=U[i]={}),g[n]||(g[n]=!0,A&&(v=V&&L[V-1].config.setValue,b=V<L.length-1&&L[V+1].config.setValue,!v||isNaN(v.x)||isNaN(v.y)||(F=W.getPixel(v.x)-u.xPixel,I=O.getPixel(v.y)-u.yPixel,m.moveTo(Math.round(F),Math.round(I)),m.lineTo(i,n),S(b.x,u.xMinWPad,u.xMaxWPad)&&S(b.y,u.yMinWPad,u.yMaxWPad)||isNaN(b.x)||isNaN(b.y)||m.lineTo(W.getPixel(b.x)-u.xPixel,O.getPixel(b.y)-u.yPixel))),j<1?(p.moveTo(i,n),p.lineTo(i+1,n)):(p.moveTo(i+j,n),p.arc(i,n,j,0,f)))):A&&V&&y(x,L[V-1].config.setValue,u)&&(v=L[V-1].config.setValue,F=W.getPixel(v.x)-u.xPixel,I=O.getPixel(v.y)-u.yPixel,i=W.getPixel(x.x)-u.xPixel,n=O.getPixel(x.y)-u.yPixel,(m=u.lineCtx).moveTo(Math.round(F),Math.round(I)),m.lineTo(i,n));for(d=0;d<t.length;d+=1)(p=(u=t[d]).ctx).fill(),K&&p.stroke(),p.closePath(),A&&(m=u.lineCtx,K&&m.stroke(),m.closePath());if(D._batchDrawindex=V,V>=0){if(!o)for(d=0;d<t.length;d+=1)k=t[d].image,T=t[d].canvas,z.setAnimation({el:k,attr:{src:T.toDataURL("image/png")},component:N}),D.drawLine&&(P=t[d].lineImage,w=t[d].lineCanvas,z.setAnimation({el:P,src:T.toDataURL("image/png"),component:N}));(D._batchDrawTimers||(D._batchDrawTimers=[])).push(N.addJob("_drawGridArrBatchID",function(){N.getFromEnv("chart")&&N._drawGridArrBatch(t,e,o)},a.priorityList.draw))}else{if(N.setupKdTree(),delete D._store,J)for(C=D.regressionPoints,d=0;d<t.length;d+=1)k=(u=t[d]).image,T=u.canvas,p=u.ctx,C.length&&(s=W.getPixel(C[0].x)-u.xPixel,c=O.getPixel(C[0].y)-u.yPixel,l=W.getPixel(C[1].x)-u.xPixel,h=O.getPixel(C[1].y)-u.yPixel,p.beginPath(),p.strokeStyle=E,p.lineWidth=M,p.globalAlpha=_,p.moveTo(s,c),p.lineTo(l,h),p.stroke(),p.closePath());for(d=0;d<t.length;d+=1)k=(u=t[d]).image,T=u.canvas,u.drawState=1,z.setAnimation({el:k,attr:{src:T.toDataURL("image/png")},component:N}),A&&(P=u.lineImage,w=u.lineCanvas,z.setAnimation({el:P,attr:{src:w.toDataURL("image/png")},component:N}));e&&e()}},e.prototype.getRegressionPoints=function(){var t,e,o=this.config.regressionPoints,i=-Infinity,n=Infinity,a=-Infinity,r=Infinity;if(o&&o.length){for(e=o.length,t=0;t<e;t++)i=Math.max(i,o[t].x),n=Math.min(n,o[t].x),a=Math.max(a,o[t].y),r=Math.min(r,o[t].y);return{max:a,min:r,xMax:i,xMin:n}}},e.prototype.show=function(){var t=this.getContainer("containerLine"),e=this.getContainer("containerPlot"),o=this.getFromEnv("legend");o&&o.getItem(this.config.legendItemId)&&o.getItem(this.config.legendItemId).removeLegendState("hidden"),this.setState("visible",!0),t.show(),e.show(),this.setState("dirty",!0)},e.prototype.setContainerVisibility=function(){},e.prototype.draw=function(){var t=this,e=t.config,o=t.getFromEnv("xAxis"),i=o.getPixel(0),n=o.getPixel(1),r=t.getFromEnv("groupMaxWidth"),s=e.drawn,l=(t.getSkippingInfo&&t.getSkippingInfo()||{}).skippingApplied;r||(r=Math.abs(n-i),t.addToEnv("groupMaxWidth",r)),!s&&t.createContainer(),t.setContainerVisibility(!0),l&&t.hidePlots(),t.drawPlots(),t.drawCommonElements&&!t.config.skipCommonElements&&t.drawCommonElements(),e.drawn?t.drawLabel(void 0,void 0):t.addJob("labelDrawID",function(){t.drawLabel(void 0,void 0)},a.priorityList.label),e.drawn=!0,t.removePlots()},e.prototype.hide=function(){var t=this.getContainer("containerLine"),e=this.getContainer("containerPlot"),o=this.getFromEnv("legend");o&&o.getItem(this.config.legendItemId)&&o.getItem(this.config.legendItemId).setLegendState("hidden"),t.hide(),e.hide(),this.setState("dirty",!0),this.setState("visible",!1)},e.prototype._addLegend=function(){var t,e,o=this.getFromEnv("chart"),i=o.getFromEnv("dataSource").chart,n=o.getFromEnv("legend"),a=this.config,l=this.config.JSONData,c=(0,r.pluck)(l.anchorbordercolor,i.anchorbordercolor),h=(0,s.getFirstColor)((0,r.pluck)(c,a.plotBorderColor)),g=(0,s.getFirstColor)((0,r.pluck)(l.anchorbgcolor,l.color,i.anchorbgcolor,a.plotColor)),d=(0,r.pluck)(l.anchoralpha,l.alpha,i.anchoralpha,r.HUNDREDSTRING),u=(0,r.pluck)(l.anchorbgalpha,l.alpha,i.anchorbgalpha,r.HUNDREDSTRING),p=w(g,d*u/100),f=w(h,d);e={enabled:a.includeInLegend,type:this.type,anchorSide:2,label:(0,r.getFirstValue)(this.config.JSONData.seriesname)},a.includeinlegend?((t=n.getItem(this.config.legendItemId))?t.configure({style:n.config.itemStyle,hiddenStyle:n.config.itemHiddenStyle,datasetVisible:n.config.datasetVisible,hoverStyle:n.config.itemHoverStyle}):(this.config.legendItemId=n.createItem(this),t=n.getItem(this.config.legendItemId),this.addExtEventListener("fc-click",function(){t.itemClickFn()},t)),t.configure(e),t.setStateCosmetics("default",{symbol:{fill:p,stroke:f,rawFillColor:g,rawStrokeColor:a.anchorbordercolor,"stroke-width":a.anchorBorderThickness}}),this.getState("visible")?t.removeLegendState("hidden"):t.setLegendState("hidden")):this.config.legendItemId&&n.disposeItem(this.config.legendItemId)},e.prototype._setConfigure=function(){var t,e,o,i,n,a,s,c,h,g,d,u,p=-Infinity,f=+Infinity,m=p,x=f,y=f,v=p,b=this.components.data||(this.components.data=[]),P=this.getFromEnv("chart"),S=this.config,w=this.config.JSONData,k=P.getFromEnv("dataSource").chart,T=w.data||[],C=T.length,E=this.getFromEnv("number-formatter"),M=(0,r.parseUnsafeString)(k.yaxisname),_=(0,r.parseUnsafeString)(k.xaxisname),F=S.lineDashed,I=S.lineDashStyle,N=(0,r.pluckNumber)(w.showregressionline,P.config.showregressionline,0),D=(0,r.pluckNumber)(w.showyonx,k.showyonx,1),A=S.parentYAxis,R=S.toolTipSepChar,V=S.seriesname;for(t=0;t<C;t+=1)i=T[t],(e=(o=b[t]||(b[t]={})).config||(o.config={})).setValue=n={x:E.getCleanValue(i.x),y:E.getCleanValue(i.y),index:t},v<n.x&&(v=n.x,S.rightMostData=o),y>n.x&&(y=n.x,S.leftMostData=o),m=Math.max(m,n.y),x=Math.min(x,n.y),S.showRegressionLine&&this.pointValueWatcher(n.x,n.y,S.regressionObj),e.setLink=(0,r.pluck)(i.link),e.anchorProps=this._parseAnchorProperties(t),e.showValue=(0,r.pluckNumber)(i.showvalue,S.showValues),e.dashed=(0,r.pluckNumber)(i.dashed,F),e.color=(0,r.pluck)(i.color,S.lineColor),e.alpha=(0,r.pluck)(i.alpha,S.lineAlpha),e.dashStyle=e.dashed?I:"none",e.toolTipValue=s=E.dataLabels(n.y,A),e.setDisplayValue=u=(0,r.parseUnsafeString)(i.displayvalue),g=e.formatedVal=(0,r.pluck)(i.toolTipValue,E.dataLabels(n.y,A)),d=E.xAxis(n.x),e.displayValue=(0,r.pluck)(u,s),e.setTooltext=(0,r.getValidValue)((0,r.parseUnsafeString)((0,r.pluck)(i.tooltext,S.plotToolText))),S.showTooltip?void 0!==e.setTooltext?(c=[4,5,6,7,8,9,10,11],h={yaxisName:M,xaxisName:_,yDataValue:g,xDataValue:d},a=(0,r.parseTooltext)(e.setTooltext,c,h,i,k,w)):null===g?a=!1:(a=V?V+R:r.BLANKSTRING,a+=n.x?d+R:r.BLANKSTRING,a+=s):a=!1,e.toolText=a,o?o.graphics||(b[t].graphics={}):o=b[t]={graphics:{}},e.hoverEffects=this._parseHoverEffectOptions(o),e.anchorProps.isAnchorHoverRadius=e.hoverEffects.anchorRadius;S.xMax=v,S.xMin=y,S.yMin=x,S.yMax=m,S.regressionPoints=N?(0,l["default"])(w.data.slice(),D)[1]:[],this.ErrorValueConfigure&&this.ErrorValueConfigure()},e}(i["default"]);e["default"]=T}}])}); +//# sourceMappingURL=http://localhost:3052/3.13.2-sr.1/map/eval/fusioncharts.zoomscatter.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/maps/fusioncharts.usa.js b/graphs/fusioncharts-suite-xt/js/maps/fusioncharts.usa.js new file mode 100755 index 0000000000000000000000000000000000000000..33f41cecc4f44ae00fb5be9a845e74cd75d3aacd --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/maps/fusioncharts.usa.js @@ -0,0 +1,10 @@ +(function(factory){if(typeof module==="object"&&typeof module.exports!=="undefined"){module.exports=factory}else{factory(FusionCharts)}})(function(FusionCharts){(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.r=function(exports){Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=492)})({492:function(module,exports,__webpack_require__){"use strict";var _fusioncharts=__webpack_require__(493);var _fusioncharts2=_interopRequireDefault(_fusioncharts);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}FusionCharts.addDep(_fusioncharts2["default"])},493:function(module,exports,__webpack_require__){"use strict";exports.__esModule=true; +/**! + * @license FusionCharts JavaScript Library + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + * + * @author FusionCharts Technologies LLP + * @meta package_map_pack + * @id fusionmaps.USA.20.10-31-2012 11:18:04 + */var M="M",L="L",Z="Z",Q="Q",LFT="left",RGT="right",CEN="center",MID="middle",TOP="top",BTM="bottom",geodefinitions=[{name:"USA",revision:20,standaloneInit:true,baseWidth:730,baseHeight:445,baseScaleFactor:10,entities:{HI:{outlines:[[M,2552,3903,Q,2544,3900,2534,3898,2533,3898,2533,3899,2532,3901,2531,3902,2531,3902,2531,3902,2531,3902,2531,3902,L,2531,3902,Q,2525,3896,2521,3890,2520,3889,2518,3889,2510,3888,2503,3886,2497,3883,2495,3877,2495,3876,2494,3875,2490,3873,2484,3874,2484,3874,2483,3875,2477,3882,2477,3890,2476,3902,2480,3913,2483,3922,2479,3927,2472,3941,2461,3951,2451,3962,2452,3974,2453,3987,2458,3992,2462,3997,2465,3996,2467,3996,2468,4e3,2469,4002,2469,4004,2471,4008,2469,4009,2468,4009,2467,4011,2464,4017,2462,4026,2461,4031,2460,4035,2459,4039,2459,4042,2459,4051,2464,4055,2475,4063,2476,4081,2476,4083,2477,4085,2486,4097,2494,4108,2497,4111,2500,4114,2503,4117,2510,4116,2515,4115,2518,4112,2519,4112,2519,4111,2547,4083,2578,4060,2587,4054,2599,4052,2619,4050,2639,4047,2651,4045,2654,4039,2655,4038,2656,4037,2659,4035,2660,4029,2661,4027,2661,4026,2657,4019,2652,4013,2642,3999,2638,3984,2637,3983,2635,3981,2629,3980,2624,3979,2617,3974,2617,3965,2617,3963,2615,3962,2607,3956,2603,3945,2602,3943,2602,3941,2602,3934,2599,3930,2598,3928,2596,3927,2586,3921,2575,3915,Q,2564,3909,2552,3903,Z],[M,2302,3801,Q,2315,3797,2323,3788,2327,3783,2328,3775,2330,3770,2327,3769,2326,3768,2326,3766,2324,3757,2315,3757,2297,3758,2285,3769,2280,3775,2281,3785,2286,3797,2295,3800,2296,3800,2297,3801,Q,2300,3801,2302,3801,Z],[M,2115,3624,Q,2114,3625,2113,3627,2109,3630,2105,3631,2094,3636,2089,3647,2088,3648,2088,3650,2089,3658,2086,3663,2086,3664,2085,3665,2085,3667,2086,3667,2104,3680,2124,3690,2149,3704,2179,3701,2179,3693,2181,3688,2181,3687,2181,3685,2180,3680,2180,3674,2177,3668,2174,3666,2166,3662,2165,3656,2165,3655,2164,3654,2161,3650,2157,3647,2156,3645,2155,3644,2148,3638,2140,3626,2138,3624,2133,3623,2132,3623,2131,3623,2126,3622,2122,3622,Q,2117,3621,2115,3624,Z],[M,2340,3713,L,2338,3710,Q,2324,3706,2309,3703,2302,3702,2295,3704,2293,3704,2291,3704,2288,3703,2286,3704,2274,3706,2262,3712,2253,3717,2251,3725,2250,3732,2257,3735,2259,3736,2261,3737,2271,3740,2282,3739,2289,3738,2295,3737,2305,3735,2315,3733,2323,3731,2331,3728,2340,3725,2338,3718,Q,2337,3714,2340,3713,Z],[M,2396,3759,Q,2394,3759,2392,3760,2391,3761,2389,3761,2384,3763,2378,3761,2376,3761,2374,3759,2370,3756,2368,3753,2362,3748,2359,3750,2349,3760,2354,3770,2360,3782,2372,3792,2378,3797,2379,3805,2379,3808,2380,3810,2381,3817,2389,3820,2404,3824,2416,3817,2426,3812,2438,3807,2452,3801,2466,3795,2468,3794,2470,3793,2464,3784,2457,3777,2454,3774,2449,3772,2446,3771,2442,3769,2433,3766,2424,3764,2423,3763,2422,3763,2413,3762,2405,3764,2400,3765,2398,3761,Q,2397,3759,2396,3759,Z],[M,1784,3561,Q,1784,3564,1780,3566,1760,3576,1748,3589,1745,3591,1743,3593,1737,3596,1736,3600,1736,3601,1737,3602,1741,3610,1748,3612,1764,3614,1774,3605,1776,3603,1778,3602,1787,3595,1792,3584,1792,3582,1792,3580,1792,3576,1793,3574,Q,1793,3567,1784,3561,Z],[M,1825,3549,Q,1825,3563,1829,3578,1829,3579,1831,3580,1844,3588,1859,3597,1861,3598,1862,3598,1870,3598,1877,3596,1879,3596,1881,3595,1890,3593,1896,3590,1901,3588,1906,3586,1914,3584,1915,3576,1916,3571,1918,3570,1919,3569,1919,3567,1919,3565,1918,3564,1916,3556,1913,3549,1910,3541,1901,3540,L,1901,3539,Q,1901,3538,1900,3536,1894,3528,1885,3526,1864,3523,1842,3527,1840,3528,1838,3529,1830,3533,1826,3545,Q,1825,3547,1825,3549,Z]],label:"Hawaii",shortLabel:"HI",labelPosition:[269.6,423.6],labelAlignment:[LFT,MID],labelConnectors:[[M,2696,4236,L,2589,4064]]},DC:{outlines:[[M,6001,1913,Q,5990,1927,5978,1941,5973,1947,5974,1953,5975,1957,5977,1960,L,6034,1960,6034,1913,Z]],label:"District of Columbia",shortLabel:"DC",labelPosition:[627.7,221.2],labelAlignment:[LFT,MID],labelConnectors:[[M,6277,2212,L,6008,1948]]},MD:{outlines:[[M,5807,1784,Q,5813,1789,5824,1787,5828,1787,5829,1783,5841,1778,5852,1773,5857,1771,5862,1767,5867,1764,5874,1764,5881,1765,5886,1765,5885,1765,5884,1766,5882,1769,5880,1769,5878,1770,5879,1772,5880,1780,5889,1780,5899,1780,5904,1785,5906,1787,5906,1789,5908,1799,5906,1805,5906,1807,5905,1809,5903,1813,5903,1820,5903,1825,5909,1824,5913,1824,5915,1824,5916,1825,5916,1825,5924,1828,5931,1832,5938,1837,5944,1842,5956,1854,5967,1868,5970,1872,5975,1874,5995,1882,6011,1895,6013,1897,6010,1901,6005,1907,6001,1913,L,6034,1913,6034,1960,5977,1960,Q,5979,1965,5983,1969,5992,1979,6005,1977,6010,1976,6014,1977,6017,1972,6025,1972,6027,1972,6029,1972,6037,1973,6045,1972,6046,1972,6047,1972,6052,1970,6057,1966,6065,1959,6069,1950,6072,1944,6073,1936,6074,1932,6079,1928,6087,1922,6094,1917,6100,1913,6101,1908,6103,1897,6101,1886,6101,1886,6101,1885,6101,1885,6099,1885,6083,1887,6079,1873,6076,1862,6072,1850,6070,1844,6073,1838,6076,1832,6081,1829,6090,1823,6100,1818,6106,1814,6112,1810,6114,1809,6115,1809,6120,1807,6123,1806,6127,1805,6129,1806,6130,1806,6131,1807,6133,1808,6134,1813,6134,1816,6133,1818,6126,1835,6119,1851,6113,1865,6106,1879,6105,1880,6105,1881,6104,1884,6104,1886,6104,1889,6106,1891,6107,1892,6108,1893,6121,1908,6122,1923,6122,1925,6122,1927,6120,1937,6114,1946,6113,1947,6113,1949,6111,1954,6112,1962,6114,1969,6117,1977,6112,1984,6121,1990,6129,1995,6136,2e3,6147,2008,6155,2018,6163,2026,6166,2036,6166,2037,6166,2038,6169,2049,6163,2059,6159,2068,6154,2076,6148,2087,6142,2099,6139,2105,6139,2113,6140,2117,6138,2119,6137,2120,6137,2122,6137,2133,6140,2142,6140,2143,6140,2144,6141,2153,6143,2159,6145,2159,6146,2158,6157,2148,6166,2136,6171,2131,6174,2124,6175,2121,6176,2119,6178,2115,6181,2112,6183,2110,6184,2108,6186,2104,6190,2100,6194,2095,6197,2090,6200,2085,6201,2080,6201,2079,6201,2078,6201,2072,6203,2068,6204,2067,6204,2065,6206,2060,6204,2053,6202,2047,6195,2043,6189,2039,6182,2036,6189,2036,6198,2035,6224,2032,6233,2016,L,6232,2016,6233,2015,Q,6236,2011,6238,2008,6239,2006,6240,2004,6243,1998,6246,1991,6248,1987,6250,1980,6251,1978,6250,1977,6250,1976,6249,1976,6246,1975,6242,1973,6233,1969,6224,1965,6215,1962,6207,1960,6205,1960,6203,1959,6198,1957,6195,1959,6195,1960,6193,1960,6181,1960,6180,1949,6179,1935,6179,1921,6180,1901,6177,1881,6174,1859,6168,1839,6165,1829,6159,1822,6159,1822,6158,1821,6158,1821,6158,1821,6158,1820,6159,1818,6159,1817,6160,1816,6164,1812,6163,1803,6161,1786,6163,1768,6164,1763,6165,1757,6165,1756,6166,1754,L,5697,1769,Q,5701,1769,5700,1774,5699,1778,5701,1782,5704,1791,5702,1798,5701,1803,5700,1807,5699,1809,5699,1811,5700,1821,5702,1830,5704,1844,5716,1842,5721,1841,5723,1837,5728,1829,5735,1819,5736,1818,5738,1816,5739,1816,5740,1815,5741,1814,5742,1813,5753,1811,5763,1807,5768,1806,5773,1803,5775,1802,5777,1801,5788,1796,5786,1791,5782,1776,5797,1779,5798,1779,5799,1779,Q,5804,1781,5807,1784,Z]],label:"Maryland",shortLabel:"MD",labelPosition:[630.2,201.2],labelAlignment:[LFT,MID],labelConnectors:[[M,6302,2012,L,6212,2012]]},DE:{outlines:[[M,6192,1738,Q,6191,1737,6189,1738,6184,1739,6178,1741,6177,1741,6176,1742,6170,1749,6166,1755,6165,1757,6165,1758,6164,1764,6163,1769,6161,1787,6163,1804,6164,1813,6160,1817,6159,1818,6159,1819,6158,1821,6158,1822,6158,1822,6158,1822,6159,1823,6159,1823,6165,1830,6168,1840,6174,1860,6177,1882,6180,1902,6179,1922,6179,1936,6180,1950,6181,1961,6193,1961,6195,1961,6195,1960,6198,1958,6203,1960,6205,1961,6207,1961,6215,1963,6224,1966,6233,1970,6242,1974,6246,1976,6249,1977,6255,1976,6257,1970,6258,1968,6259,1966,6263,1960,6261,1952,6261,1950,6261,1948,6254,1930,6260,1911,6260,1910,6260,1908,6260,1905,6259,1902,6257,1895,6251,1891,6234,1879,6220,1862,6216,1857,6216,1849,6216,1848,6216,1847,6216,1837,6217,1828,6217,1828,6217,1827,6218,1825,6217,1823,6215,1820,6211,1820,6206,1820,6204,1817,6203,1816,6203,1815,6203,1804,6206,1793,6208,1785,6208,1777,6209,1774,6209,1771,6212,1762,6211,1755,6210,1753,6209,1751,6208,1748,6204,1746,Q,6198,1742,6192,1738,Z]],label:"Delaware",shortLabel:"DE",labelPosition:[636.2,190.7],labelAlignment:[LFT,MID],labelConnectors:[[M,6362,1907,L,6237,1907]]},RI:{outlines:[[M,6708,1388,Q,6703,1387,6695,1385,6691,1384,6686,1385,6685,1385,6684,1386,6682,1386,6679,1387,6674,1387,6670,1388,6663,1390,6653,1392,6657,1398,6658,1405,6659,1413,6659,1421,6659,1447,6649,1469,6646,1475,6648,1482,6650,1492,6653,1503,6653,1504,6652,1506,6653,1506,6653,1506,6657,1506,6659,1507,6666,1512,6673,1508,6691,1498,6698,1478,6698,1477,6699,1476,6699,1474,6699,1471,6699,1468,6703,1469,6709,1469,6716,1470,6720,1471,6722,1474,6723,1476,6725,1476,6730,1476,6733,1471,6734,1470,6736,1469,6737,1468,6737,1467,6738,1464,6742,1463,L,6742,1463,Q,6743,1463,6743,1462,L,6743,1462,Q,6744,1462,6745,1461,6745,1454,6740,1447,6736,1441,6731,1439,6716,1433,6715,1416,6714,1406,6713,1395,Q,6713,1389,6708,1388,Z]],label:"Rhode Island",shortLabel:"RI",labelPosition:[669.3,161],labelAlignment:[CEN,BTM],labelConnectors:[[M,6693,1610,L,6693,1489]]},WA:{outlines:[[M,282,197,Q,281,194,279,193,277,191,274,190,264,189,255,193,253,194,250,198,247,204,243,209,240,212,238,216,237,217,237,218,237,220,238,220,239,223,240,224,242,227,244,229,246,233,248,235,250,237,254,237,259,236,262,239,266,242,270,243,277,244,283,241,288,239,290,238,291,233,291,228,290,223,288,217,286,213,285,208,285,205,284,203,284,202,284,201,284,200,283,199,Q,283,198,282,197,Z],[M,549,131,Q,544,131,540,132,529,134,516,133,498,132,481,128,478,127,475,127,468,127,461,126,441,125,420,125,409,125,398,127,363,132,329,139,326,140,324,142,317,143,310,144,303,146,297,150,294,151,295,157,299,172,311,177,314,179,317,180,320,180,322,180,333,180,336,192,336,193,337,193,342,198,342,208,341,214,339,217,336,223,332,230,327,242,321,249,319,251,319,256,320,259,321,260,L,322,261,Q,322,261,322,262,L,324,262,324,263,Q,325,263,326,264,332,266,336,268,337,270,339,271,350,275,356,287,358,291,358,296,358,297,359,298,363,310,369,321,370,322,370,324,370,330,365,332,362,333,360,336,354,340,346,345,342,347,341,352,340,356,340,361,340,362,341,363,346,372,348,381,349,385,347,389,346,391,347,392,347,394,348,396,352,401,353,405,353,407,352,409,345,417,344,427,344,429,344,431,347,438,347,444,348,448,346,451,341,464,330,470,325,472,323,476,320,482,315,485,311,488,306,489,295,492,286,495,284,496,282,497,276,499,271,495,275,482,283,469,287,463,291,459,297,453,305,450,306,449,306,447,304,445,299,446,286,448,278,452,277,453,275,453,274,454,273,454,271,454,269,453,266,451,268,444,273,427,280,418,290,405,304,401,305,401,306,400,309,396,315,395,316,395,317,394,318,393,319,392,316,387,307,384,302,382,297,382,295,381,294,379,293,376,293,372,294,370,295,368,299,363,304,357,312,347,315,335,316,331,314,329,313,328,313,326,312,317,308,311,301,303,307,292,308,289,310,287,316,284,317,280,318,275,319,272,320,269,320,268,L,320,267,Q,321,267,321,267,321,266,321,266,L,321,265,319,265,319,264,Q,314,266,307,276,L,307,277,Q,306,279,305,281,L,303,284,Q,302,287,302,289,L,302,290,Q,297,297,289,302,288,303,288,304,286,308,280,310,279,310,279,311,277,317,269,315,265,313,254,313,244,312,237,315,231,319,228,318,225,318,221,318,216,317,213,315,207,311,195,311,189,311,183,314,182,314,181,314,162,316,149,301,142,293,133,289,117,283,103,275,100,274,96,272,84,267,72,262,65,263,62,268,56,281,62,291,63,293,63,295,67,310,76,324,77,325,78,326,82,331,84,335,86,339,87,344,88,346,89,348,94,359,99,369,104,378,107,385,107,387,107,389,107,406,108,422,109,441,119,456,123,463,127,470,127,472,128,473,128,474,129,475,131,481,132,490,132,492,132,493,133,500,136,503,144,509,153,512,158,514,159,517,163,523,164,530,165,544,157,551,155,553,154,556,154,557,153,558,141,576,153,599,155,603,154,608,154,618,148,625,144,630,147,634,148,635,149,637,150,638,151,638,166,638,179,641,183,642,186,647,189,652,200,654,200,654,200,654,205,655,210,654,216,653,220,651,221,650,223,649,228,647,233,645,236,644,240,644,247,644,252,649,255,651,258,651,266,652,270,656,274,660,276,664,L,276,665,Q,284,672,289,681,293,689,298,695,301,699,305,703,306,704,306,705,306,711,305,716,305,717,305,718,304,722,304,726,304,733,308,736,314,741,320,746,333,756,346,767,355,774,366,771,367,771,368,770,370,769,372,768,386,756,402,750,422,742,444,740,448,740,453,740,455,740,457,739,462,736,466,734,470,732,472,734,478,743,484,752,489,759,500,763,528,747,560,739,577,734,595,732,603,731,611,731,615,731,617,731,629,728,641,727,667,725,692,721,707,719,722,714,729,712,737,709,744,707,751,705,755,704,759,703,761,702,764,702,773,701,776,694,L,782,694,785,694,Q,786,695,787,696,788,698,790,698,796,695,805,696,807,696,808,697,810,698,812,698,818,699,823,700,828,701,831,701,857,694,884,696,902,697,921,697,923,696,926,696,928,695,930,696,934,696,936,696,939,696,941,696,951,695,956,698,957,698,958,698,959,697,961,697,989,697,1016,698,1018,698,1020,698,1019,692,1021,687,1025,677,1027,669,1028,661,1030,654,1031,650,1030,645,1027,619,1017,595,1016,593,1016,591,1016,590,1014,584,1013,582,1013,580,1011,577,1010,573,1009,571,1008,570,1006,567,1005,562,1004,558,1002,553,1002,552,1002,551,1001,534,1002,518,1002,503,1006,489,1010,476,1017,468,1018,467,1018,466,1018,446,1019,425,1019,396,1016,368,1016,367,1015,365,1013,352,1013,339,1013,299,1014,260,1014,258,1014,256,1015,246,1016,236,1016,233,1016,230,1018,192,1018,155,1017,154,1016,153,1013,152,1011,151,1010,150,1010,149,1007,144,998,144,991,145,984,144,976,144,969,143,959,142,949,141,929,138,908,137,903,137,899,137,873,136,847,137,808,137,768,138,728,138,689,136,656,134,623,132,Q,586,131,549,131,Z]],label:"Washington",shortLabel:"WA",labelPosition:[54.5,44.8],labelAlignment:[CEN,MID]},OR:{outlines:[[M,805,696,Q,796,695,790,698,788,698,787,696,786,695,785,694,L,782,694,776,694,Q,773,701,764,702,761,702,759,703,755,704,751,705,744,707,737,709,729,712,722,714,707,719,692,721,667,725,641,727,629,728,617,731,615,731,611,731,603,731,595,732,577,734,560,739,528,747,500,763,489,759,484,752,478,743,472,734,470,732,466,734,462,736,457,739,455,740,453,740,448,740,444,740,422,742,402,750,386,756,372,768,370,769,368,770,367,771,366,771,355,774,346,767,333,756,320,746,314,741,308,736,304,733,304,726,304,722,305,718,305,717,305,716,306,711,306,705,306,704,305,703,301,699,298,695,293,689,289,681,284,672,276,665,L,276,664,Q,274,660,270,656,266,652,258,651,255,651,252,649,247,644,240,644,236,644,233,645,228,647,223,649,221,650,220,651,216,653,210,654,205,655,200,654,184,659,164,669,162,671,160,672,149,682,146,696,145,700,145,704,146,727,154,750,155,752,155,755,156,775,158,794,159,804,157,812,152,831,150,851,150,855,148,859,147,860,147,862,148,868,146,872,145,873,145,875,146,892,149,910,149,912,149,914,149,932,151,950,152,952,152,954,153,961,152,969,152,970,151,971,142,989,137,1007,136,1010,136,1013,136,1022,138,1030,140,1043,136,1056,131,1070,127,1085,124,1092,121,1099,123,1123,117,1147,116,1151,116,1155,117,1165,117,1175,116,1181,114,1183,110,1189,105,1195,99,1203,94,1212,89,1225,90,1240,90,1247,91,1254,91,1255,92,1256,96,1270,100,1282,100,1284,102,1285,106,1292,108,1302,108,1304,108,1306,109,1315,106,1324,106,1325,106,1326,105,1331,104,1335,104,1336,104,1337,104,1339,104,1341,104,1350,112,1356,116,1360,120,1364,125,1368,128,1373,L,129,1374,Q,138,1384,157,1382,164,1381,171,1381,183,1382,190,1380,192,1379,195,1379,219,1379,243,1379,247,1379,249,1377,251,1376,252,1376,273,1375,291,1377,302,1379,313,1380,325,1381,333,1383,335,1383,337,1383,360,1382,378,1382,383,1382,389,1382,399,1383,409,1383,414,1384,418,1384,437,1387,457,1387,470,1388,481,1386,486,1385,492,1385,501,1386,505,1386,512,1390,512,1395,539,1396,565,1390,566,1390,567,1390,586,1390,606,1391,607,1391,608,1391,612,1392,615,1391,616,1391,618,1391,627,1389,637,1389,638,1390,639,1389,640,1389,640,1389,664,1388,687,1393,689,1393,691,1393,699,1394,707,1394,775,1395,843,1392,845,1392,847,1392,873,1388,901,1388,909,1389,917,1387,924,1386,930,1385,937,1385,943,1384,967,1381,991,1384,995,1385,1e3,1385,1010,1387,1015,1379,L,1015,1379,Q,1016,1378,1016,1376,1017,1373,1017,1370,1020,1348,1018,1324,1018,1323,1018,1322,1018,1321,1018,1319,1015,1305,1012,1291,1011,1283,1010,1274,1010,1273,1010,1271,1010,1268,1011,1265,1011,1261,1012,1256,1015,1241,1016,1225,1017,1214,1017,1203,1018,1187,1019,1173,1021,1167,1018,1158,1014,1144,1018,1125,1018,1124,1018,1123,1018,1122,1018,1120,1020,1113,1018,1105,1017,1101,1017,1097,1018,1096,1017,1094,1017,1092,1017,1088,1017,1087,1016,1086,1013,1082,1012,1075,1012,1074,1012,1072,1011,1070,1010,1069,1008,1068,1009,1064,1009,1063,1010,1062,1017,1054,1022,1048,1023,1047,1024,1046,1029,1044,1033,1038,1036,1032,1035,1022,1035,1020,1036,1019,1038,1016,1033,1011,1032,1009,1031,1007,1028,1001,1022,999,1021,998,1019,998,1011,994,1004,992,996,991,995,983,994,980,993,976,993,974,994,973,996,971,997,963,998,953,1001,943,1001,942,1001,941,1001,937,1004,935,1013,928,1019,915,1022,909,1024,904,1025,903,1025,902,1028,896,1028,895,1032,888,1038,881,1047,871,1049,854,1050,846,1055,840,1068,820,1080,799,1082,786,1078,773,1074,760,1067,746,1062,736,1057,725,1055,720,1049,718,1034,711,1020,703,1018,702,1016,698,989,697,961,697,959,697,958,698,957,698,956,698,951,695,941,696,939,696,936,696,934,696,930,696,928,695,926,696,923,696,921,697,902,697,884,696,857,694,831,701,828,701,823,700,818,699,812,698,810,698,808,697,Q,807,696,805,696,Z]],label:"Oregon",shortLabel:"OR",labelPosition:[58.3,101.7],labelAlignment:[CEN,MID]},CA:{outlines:[[M,729,1950,Q,714,1940,705,1932,703,1931,702,1930,690,1917,678,1912,674,1910,670,1908,664,1905,659,1901,655,1899,652,1896,647,1891,644,1884,L,640,1389,Q,640,1389,639,1389,638,1390,637,1389,627,1389,618,1391,616,1391,615,1391,612,1392,608,1391,607,1391,606,1391,586,1390,567,1390,566,1390,565,1390,539,1396,512,1395,512,1390,505,1386,501,1386,492,1385,486,1385,481,1386,470,1388,457,1387,437,1387,418,1384,414,1384,409,1383,399,1383,389,1382,383,1382,378,1382,360,1382,337,1383,335,1383,333,1383,325,1381,313,1380,302,1379,291,1377,273,1375,252,1376,251,1376,249,1377,247,1379,243,1379,219,1379,195,1379,192,1379,190,1380,183,1382,171,1381,164,1381,157,1382,138,1384,129,1374,124,1385,122,1395,119,1410,123,1424,127,1440,136,1455,141,1462,142,1466,143,1469,144,1471,144,1472,144,1473,146,1488,143,1499,142,1502,141,1505,139,1514,140,1525,141,1535,139,1542,138,1544,137,1547,137,1548,136,1549,131,1555,131,1565,131,1571,130,1576,130,1577,129,1578,126,1592,121,1599,120,1600,119,1602,116,1613,117,1626,118,1635,116,1644,115,1652,117,1657,128,1681,144,1701,148,1706,151,1711,152,1712,153,1713,162,1719,167,1727,170,1731,172,1737,183,1766,182,1795,181,1813,180,1830,179,1844,183,1857,184,1861,188,1864,188,1870,194,1872,199,1867,201,1869,200,1867,203,1865,206,1870,202,1872,205,1884,208,1898,210,1904,211,1910,214,1922,222,1932,222,1933,223,1933,235,1939,241,1951,243,1956,248,1957,254,1959,258,1963,264,1970,266,1980,271,1995,272,2011,272,2014,272,2016,272,2022,276,2025,282,2030,290,2034,300,2039,311,2045,313,2046,315,2048,320,2058,327,2064,333,2069,334,2066,340,2057,337,2044,336,2035,336,2026,337,2016,343,2005,344,2004,345,2004,348,2004,350,2005,353,2007,355,2008,356,2009,356,2011,358,2017,360,2024,361,2026,362,2029,363,2035,369,2031,375,2028,383,2023,391,2019,398,2017,403,2016,407,2016,409,2015,411,2015,418,2013,427,2012,429,2012,431,2011,444,2009,446,2019,446,2020,444,2022,435,2031,420,2030,418,2030,416,2031,389,2038,361,2044,353,2045,355,2055,357,2062,363,2068,364,2070,364,2072,363,2078,366,2080,367,2081,368,2082,370,2087,371,2094,371,2095,372,2095,379,2099,386,2102,387,2103,389,2103,390,2104,390,2105,392,2108,393,2112,393,2115,393,2116,392,2123,383,2121,382,2120,380,2119,373,2115,367,2110,359,2102,349,2093,348,2092,346,2091,340,2090,337,2087,333,2084,328,2083,335,2097,341,2110,347,2123,353,2135,353,2138,353,2140,352,2152,351,2164,350,2170,353,2175,354,2177,357,2179,360,2180,362,2182,366,2188,376,2192,378,2193,380,2193,384,2193,391,2196,400,2200,413,2201,414,2201,415,2201,420,2202,422,2206,425,2212,423,2222,423,2223,423,2224,421,2233,424,2241,425,2243,423,2245,420,2250,413,2258,412,2260,410,2263,408,2269,407,2276,406,2290,409,2303,411,2314,417,2324,417,2325,418,2326,430,2336,447,2345,451,2347,452,2350,452,2352,453,2353,457,2361,459,2368,460,2369,461,2370,465,2376,470,2380,472,2382,473,2383,481,2394,488,2405,497,2417,508,2427,520,2436,530,2446,532,2447,533,2448,537,2453,537,2460,536,2465,539,2467,541,2468,542,2469,546,2478,560,2478,567,2477,568,2481,569,2487,569,2493,568,2512,566,2530,566,2540,569,2545,570,2547,570,2549,571,2550,572,2552,573,2554,573,2556,577,2565,582,2573,587,2578,593,2578,605,2579,617,2577,620,2576,623,2576,624,2575,624,2575,633,2572,643,2573,645,2573,646,2575,654,2581,669,2581,676,2581,683,2581,684,2581,685,2581,691,2582,696,2582,698,2582,700,2583,710,2584,717,2592,721,2597,726,2600,738,2608,747,2617,762,2631,778,2639,789,2645,805,2644,814,2643,823,2646,830,2649,835,2655,839,2660,841,2667,847,2689,869,2689,870,2689,871,2689,881,2690,891,2690,896,2691,898,2693,899,2694,901,2694,902,2695,903,2695,905,2696,905,2697,914,2708,921,2719,937,2743,959,2761,968,2768,975,2774,976,2775,976,2777,975,2784,977,2788,978,2790,979,2792,979,2798,981,2799,982,2799,981,2801,981,2802,980,2803,976,2807,979,2810,979,2822,981,2832,984,2844,988,2855,990,2861,994,2866,996,2868,999,2869,1003,2870,1007,2867,1008,2868,1008,2868,1017,2867,1026,2866,1027,2866,1028,2866,1035,2865,1042,2865,1047,2865,1052,2866,1061,2866,1070,2866,1073,2866,1076,2866,1082,2865,1088,2865,1091,2865,1094,2864,1098,2862,1102,2864,1103,2864,1105,2864,1113,2863,1122,2863,1130,2863,1136,2860,1138,2860,1140,2859,1145,2858,1151,2858,1171,2858,1186,2853,1191,2851,1194,2853,1195,2854,1197,2855,1205,2858,1215,2859,1216,2859,1217,2859,1218,2859,1225,2860,1227,2861,1228,2861,1234,2862,1239,2861,1240,2861,1241,2861,1245,2860,1247,2856,1248,2855,1249,2854,1252,2850,1258,2847,1261,2845,1267,2844,1281,2843,1295,2842,1299,2842,1302,2843,1309,2845,1317,2844,1321,2843,1325,2841,1342,2830,1340,2817,1339,2811,1333,2807,1328,2804,1323,2800,1318,2797,1315,2792,1314,2791,1313,2790,1310,2787,1307,2785,1305,2784,1304,2781,1304,2778,1304,2775,1303,2749,1320,2727,1329,2717,1334,2701,1334,2701,1335,2700,1339,2692,1340,2681,1340,2680,1340,2679,1341,2671,1344,2663,1346,2654,1351,2651,1353,2650,1354,2648,1357,2642,1366,2635,1369,2632,1370,2630,1375,2624,1378,2617,1379,2613,1379,2613,1380,2607,1379,2600,1378,2596,1377,2593,1370,2580,1364,2565,1360,2555,1350,2550,1331,2540,1316,2525,1314,2523,1313,2519,1312,2513,1313,2510,1315,2500,1320,2495,1321,2493,1323,2492,1325,2489,1324,2482,1309,2479,1298,2476,1291,2474,1285,2469,1259,2444,1235,2420,1226,2412,1218,2402,1211,2393,1203,2384,1187,2366,1177,2357,1176,2356,1175,2355,1166,2350,1157,2342,1154,2340,1152,2338,1147,2332,1143,2326,1134,2315,1127,2309,1125,2308,1123,2306,1114,2301,1108,2297,1094,2286,1079,2272,1075,2268,1071,2264,1070,2263,1069,2261,1066,2257,1063,2254,1047,2232,1023,2209,1003,2188,980,2170,960,2154,939,2140,938,2139,937,2139,935,2138,934,2137,922,2131,912,2117,893,2092,870,2072,843,2048,812,2027,798,2019,787,2007,774,1993,762,1978,Q,748,1962,729,1950,Z]],label:"California",shortLabel:"CA",labelPosition:[66.8,224.1],labelAlignment:[CEN,MID]},AK:{outlines:[[M,86,4407,Q,70,4413,54,4420,57,4424,59,4424,80,4425,99,4420,117,4416,134,4409,139,4406,143,4401,141,4397,137,4393,132,4396,124,4398,Q,105,4402,86,4407,Z],[M,984,4014,Q,982,4007,980,3999,978,3994,974,3999,965,4008,959,4019,957,4023,954,4024,952,4024,950,4025,938,4032,923,4037,922,4037,921,4038,916,4044,904,4044,903,4045,903,4045,899,4054,901,4064,901,4065,902,4066,903,4072,906,4079,907,4080,908,4082,912,4085,912,4090,912,4094,908,4097,900,4105,896,4114,896,4115,895,4115,893,4117,892,4121,890,4130,899,4131,905,4133,908,4131,920,4124,928,4113,929,4112,930,4110,935,4106,941,4101,943,4100,945,4099,980,4080,985,4039,Q,987,4027,984,4014,Z],[M,263,4375,Q,258,4376,254,4377,241,4381,227,4383,207,4386,193,4383,181,4380,175,4388,172,4394,168,4398,165,4401,163,4405,165,4408,171,4408,181,4409,190,4408,208,4407,227,4402,244,4397,262,4392,264,4392,265,4392,271,4391,276,4390,Q,272,4380,263,4375,Z],[M,372,4331,Q,362,4335,345,4344,337,4348,330,4354,329,4355,328,4357,326,4358,325,4359,316,4366,311,4370,309,4372,304,4373,303,4373,302,4373,297,4375,297,4381,305,4384,315,4381,323,4378,328,4376,344,4370,353,4364,354,4363,355,4362,363,4359,365,4354,370,4346,373,4337,374,4332,375,4329,Q,373,4329,372,4331,Z],[M,492,3860,Q,476,3853,456,3859,447,3862,439,3866,429,3871,436,3878,450,3891,466,3901,478,3908,485,3912,488,3914,491,3913,503,3908,509,3897,513,3892,511,3884,508,3874,501,3864,500,3863,496,3862,Q,494,3861,492,3860,Z],[M,279,3858,Q,277,3855,275,3851,274,3849,273,3847,269,3839,258,3843,256,3843,254,3843,239,3843,235,3856,234,3860,231,3861,230,3862,230,3864,230,3869,234,3870,249,3873,264,3876,267,3877,271,3877,277,3878,279,3874,Q,281,3866,279,3858,Z],[M,300,3648,Q,309,3651,319,3651,323,3651,328,3652,330,3653,332,3653,338,3655,342,3660,344,3661,345,3663,348,3668,352,3672,356,3677,363,3677,367,3678,371,3675,375,3671,379,3669,385,3667,389,3665,393,3664,394,3662,395,3661,396,3661,409,3662,407,3648,406,3644,400,3642,397,3641,395,3639,386,3641,378,3641,376,3641,374,3640,370,3638,369,3632,369,3627,365,3624,364,3623,363,3621,359,3618,354,3619,334,3615,315,3611,312,3610,308,3610,304,3610,300,3608,298,3608,295,3608,289,3610,287,3613,280,3623,279,3635,279,3637,281,3638,289,3643,299,3647,Q,300,3647,300,3648,Z],[M,426,3517,Q,429,3517,433,3516,438,3515,431,3502,425,3499,418,3498,417,3498,416,3498,402,3503,413,3511,Q,418,3516,426,3517,Z],[M,1334,3058,Q,1331,3053,1327,3049,1318,3039,1306,3032,1297,3026,1286,3022,1280,3020,1276,3022,1271,3023,1267,3027,1263,3030,1260,3035,1253,3048,1240,3048,1231,3047,1228,3043,1223,3036,1217,3031,1207,3024,1195,3021,1179,3018,1162,3017,1155,3017,1149,3013,1138,3007,1123,3e3,1122,3002,1119,3002,1119,3002,1118,3002,1117,3002,1115,3001,1112,3e3,1108,2998,1100,2992,1092,2986,1089,2983,1086,2984,1079,2986,1073,2989,1060,2994,1046,2996,1030,2998,1013,2996,1011,2996,1009,2994,1009,2993,1008,2993,1006,2992,1004,2992,993,2993,986,2985,984,2982,985,2978,985,2977,985,2976,986,2974,987,2973,988,2972,987,2969,985,2965,982,2961,981,2959,980,2958,973,2954,965,2949,959,2945,952,2941,949,2940,945,2939,927,2935,922,2950,919,2959,910,2962,903,2961,903,2954,903,2952,902,2950,899,2944,893,2940,885,2941,877,2937,879,2935,879,2932,880,2926,877,2922,868,2911,855,2909,839,2906,824,2907,814,2909,806,2914,802,2916,804,2920,805,2922,805,2924,805,2931,805,2937,805,2939,804,2940,802,2941,801,2944,797,2950,787,2949,785,2949,783,2949,758,2954,733,2951,732,2951,730,2951,729,2951,728,2951,726,2952,724,2952,717,2953,711,2955,709,2956,708,2957,703,2959,703,2968,703,2975,701,2980,697,2988,693,2994,689,3001,678,3004,675,3005,671,3004,663,3003,654,3003,645,3003,641,3007,640,3008,640,3009,638,3013,630,3020,621,3027,615,3033,615,3034,614,3035,606,3041,602,3047,591,3061,593,3084,594,3095,590,3103,590,3105,589,3106,585,3111,582,3118,577,3126,570,3133,556,3144,534,3144,515,3144,496,3147,489,3148,487,3153,481,3163,480,3175,479,3191,469,3200,470,3208,475,3212,489,3224,507,3231,521,3237,532,3243,544,3249,554,3258,556,3260,557,3261,559,3262,561,3267,566,3278,569,3289,570,3291,571,3293,574,3306,583,3314,584,3316,584,3317,586,3321,589,3323,601,3329,615,3327,626,3326,634,3331,632,3331,631,3332,630,3333,628,3335,624,3338,622,3342,622,3343,622,3344,621,3351,624,3354,638,3368,654,3392,652,3395,650,3398,647,3404,648,3412,649,3426,635,3424,634,3423,632,3423,628,3422,626,3421,615,3417,604,3415,593,3413,582,3414,576,3415,570,3417,568,3418,565,3418,561,3417,561,3411,562,3392,560,3374,559,3366,556,3361,544,3364,540,3374,540,3376,536,3378,534,3379,532,3381,524,3388,512,3396,502,3403,497,3410,493,3416,492,3423,492,3424,490,3424,488,3424,486,3423,471,3417,455,3426,448,3430,445,3435,445,3436,444,3436,432,3442,424,3448,421,3451,421,3457,422,3462,425,3464,429,3469,438,3471,463,3476,488,3484,490,3484,492,3484,494,3483,495,3483,496,3483,497,3484,494,3494,484,3501,477,3505,472,3512,469,3515,471,3519,474,3524,474,3530,474,3531,474,3532,475,3536,476,3540,481,3542,488,3542,494,3541,499,3540,505,3539,509,3540,528,3546,545,3543,558,3541,569,3530,574,3525,579,3521,581,3519,584,3519,591,3520,595,3525,596,3527,597,3528,604,3538,607,3551,608,3553,609,3553,610,3554,611,3554,614,3554,616,3552,623,3544,630,3536,635,3532,641,3527,649,3520,658,3520,664,3519,666,3526,673,3543,670,3561,669,3567,664,3574,662,3577,663,3580,669,3596,675,3611,676,3613,676,3615,676,3627,670,3635,667,3640,662,3636,658,3631,646,3630,635,3628,624,3628,622,3628,619,3628,615,3628,612,3628,610,3627,608,3626,605,3622,600,3626,601,3631,604,3635,606,3636,608,3638,610,3639,612,3639,610,3640,610,3643,610,3645,610,3647,611,3648,610,3649,L,610,3649,Q,610,3650,609,3652,609,3653,608,3653,605,3654,601,3651,595,3653,588,3654,577,3656,566,3657,565,3657,564,3657,553,3659,547,3655,545,3654,543,3654,536,3654,535,3661,535,3662,535,3663,533,3668,532,3673,531,3675,530,3677,527,3685,528,3696,528,3697,527,3698,522,3705,517,3713,517,3714,516,3714,510,3715,509,3720,509,3721,509,3722,505,3729,503,3737,503,3738,502,3739,501,3742,501,3746,499,3752,497,3757,496,3759,495,3761,495,3763,493,3764,489,3770,486,3777,485,3781,487,3783,488,3785,488,3786,489,3794,494,3799,503,3807,508,3811,509,3812,510,3814,513,3820,512,3829,511,3844,523,3845,532,3845,532,3855,531,3864,534,3868,535,3870,537,3872,538,3874,540,3875,553,3882,559,3895,563,3901,568,3905,569,3906,571,3906,585,3905,597,3893,601,3889,603,3888,613,3881,624,3881,630,3881,636,3885,637,3886,639,3886,641,3886,643,3887,645,3888,646,3889,647,3890,646,3891,644,3898,643,3904,642,3911,640,3916,639,3918,640,3921,640,3927,640,3934,640,3936,639,3937,633,3946,631,3958,631,3960,631,3961,632,3969,637,3974,638,3975,639,3976,639,3979,638,3982,639,3981,642,3985,649,3993,657,3983,659,3981,660,3980,667,3972,676,3966,677,3966,677,3965,681,3957,689,3960,702,3966,709,3972,710,3973,711,3974,713,3979,720,3980,722,3980,724,3981,736,3985,748,3988,759,3992,769,3990,775,3990,780,3986,789,3980,798,3976,802,3973,803,3970,808,3976,808,3984,807,3999,802,4013,801,4016,800,4019,799,4022,797,4025,794,4035,790,4044,786,4052,782,4057,781,4059,779,4060,763,4070,756,4078,749,4085,743,4093,742,4095,741,4096,740,4097,738,4099,724,4126,691,4141,689,4142,687,4143,681,4146,675,4151,670,4155,663,4155,661,4155,658,4157,646,4164,635,4172,628,4177,622,4183,600,4202,576,4220,568,4227,558,4227,557,4227,556,4228,552,4231,547,4233,544,4235,540,4236,539,4236,538,4237,533,4245,524,4249,515,4256,511,4259,502,4264,494,4270,492,4271,490,4272,477,4278,464,4284,464,4284,463,4285,457,4294,446,4296,437,4298,428,4303,424,4305,421,4309,420,4310,419,4311,418,4313,417,4315,416,4317,413,4318,407,4320,402,4322,L,394,4325,Q,384,4329,385,4340,385,4344,387,4347,387,4348,389,4348,403,4346,411,4341,413,4340,415,4339,429,4332,446,4325,460,4318,475,4314,487,4310,497,4302,510,4293,522,4282,536,4271,553,4262,571,4252,590,4247,596,4245,598,4249,599,4250,601,4251,607,4254,611,4257,612,4258,614,4258,616,4258,616,4257,620,4249,625,4241,632,4231,641,4222,650,4214,659,4212,671,4210,684,4215,699,4220,714,4221,724,4223,727,4217,731,4210,725,4199,724,4198,723,4196,722,4195,722,4193,721,4188,720,4188,725,4182,733,4180,734,4179,735,4178,739,4173,749,4168,756,4164,760,4157,761,4155,763,4153,818,4098,872,4042,878,4036,887,4031,888,4031,890,4030,897,4029,901,4028,910,4024,914,4019,922,4010,922,3998,923,3992,924,3987,924,3986,925,3985,927,3983,928,3980,929,3979,930,3979,934,3977,938,3976,936,3972,934,3969,932,3967,930,3965,920,3958,912,3950,915,3950,916,3946,919,3945,922,3944,924,3940,928,3937,940,3929,952,3920,965,3911,966,3897,966,3895,966,3893,971,3877,977,3864,980,3856,984,3847,986,3841,988,3839,1004,3831,1019,3818,1033,3806,1049,3798,1052,3797,1055,3799,1060,3802,1057,3808,1054,3815,1048,3819,1029,3830,1013,3844,1005,3852,1002,3862,997,3878,993,3894,990,3908,985,3921,984,3925,987,3926,988,3926,989,3927,995,3934,992,3941,992,3942,993,3943,997,3948,1004,3943,1006,3943,1007,3942,1009,3942,1011,3942,1023,3938,1029,3933,1037,3927,1043,3923,1050,3918,1061,3918,1065,3918,1069,3916,1071,3915,1072,3913,1073,3912,1074,3911,1079,3906,1085,3899,1093,3890,1103,3889,1109,3889,1113,3890,1114,3891,1115,3890,1121,3883,1125,3874,1128,3867,1131,3860,1132,3873,1133,3886,1144,3885,1154,3881,1170,3875,1185,3864,1191,3860,1198,3857,1203,3855,1208,3857,1214,3859,1217,3862,1220,3864,1223,3865,1225,3866,1226,3867,1242,3882,1263,3888,1274,3891,1284,3895,1286,3896,1287,3895,1289,3895,1291,3894,1299,3892,1308,3888,1309,3887,1311,3887,1319,3886,1323,3888,1324,3889,1326,3889,1337,3890,1346,3892,1355,3894,1361,3897,1362,3899,1368,3899,1369,3899,1370,3899,1379,3900,1386,3909,1388,3913,1394,3909,1402,3905,1411,3903,1413,3903,1414,3904,1420,3913,1423,3926,1424,3929,1424,3931,1426,3947,1442,3950,1444,3951,1446,3951,1457,3955,1465,3963,1468,3966,1473,3972,1484,3984,1493,3996,1494,3997,1494,3998,1497,4005,1504,4010,1506,4011,1507,4012,1512,4019,1516,4027,1518,4031,1518,4035,1519,4036,1519,4036,1533,4047,1545,4055,1546,4056,1547,4057,1556,4069,1559,4084,1560,4087,1560,4090,1562,4099,1566,4107,1567,4108,1568,4110,1569,4117,1572,4118,1574,4119,1575,4121,1581,4126,1585,4131,1587,4132,1588,4134,1592,4141,1596,4146,1607,4160,1614,4169,1622,4179,1629,4194,1633,4204,1642,4212,1647,4216,1651,4220,1653,4222,1656,4224,1664,4227,1669,4231,1671,4233,1674,4234,1677,4235,1681,4237,1690,4239,1694,4232,1696,4229,1699,4224,1701,4221,1702,4219,1708,4210,1718,4214,1721,4215,1723,4217,1726,4221,1731,4224,1736,4227,1740,4227,1742,4228,1744,4228,1747,4229,1748,4228,1751,4228,1752,4225,1759,4212,1766,4199,1772,4188,1774,4176,1774,4169,1776,4163,1779,4156,1779,4147,1780,4137,1775,4133,1771,4130,1766,4130,1765,4130,1764,4129,1752,4124,1735,4121,1733,4120,1731,4119,1716,4110,1707,4101,1703,4095,1701,4088,1701,4086,1700,4084,1698,4080,1698,4077,1695,4060,1694,4044,1692,4027,1676,4023,1674,4023,1672,4022,1666,4016,1660,4012,1658,4010,1655,4005,1652,4e3,1647,3995,1632,3983,1631,3963,1631,3960,1630,3957,1624,3941,1613,3932,1612,3931,1610,3930,1596,3924,1586,3916,1585,3915,1584,3913,1580,3908,1576,3907,1570,3906,1560,3908,1549,3914,1540,3919,1535,3921,1533,3924,1532,3925,1531,3926,1525,3931,1519,3934,1512,3937,1505,3938,1499,3939,1496,3935,1487,3927,1479,3918,1477,3915,1474,3913,1458,3893,1444,3872,1442,3869,1441,3865,1439,3857,1430,3861,1429,3861,1427,3862,1422,3864,1416,3867,1415,3868,1414,3869,1410,3872,1402,3871,1397,3870,1394,3866,1391,3863,1387,3863,1381,3863,1376,3863,1380,3858,1379,3852,L,1376,3077,Q,1369,3069,1359,3069,1358,3069,1356,3069,Q,1342,3069,1334,3058,Z]],label:"Alaska",shortLabel:"AK",labelPosition:[102.4,346.5],labelAlignment:[CEN,MID]},ID:{outlines:[[M,1210,456,Q,1209,455,1208,455,1187,448,1183,425,1179,404,1175,384,1174,376,1170,371,1168,370,1168,368,1167,364,1164,362,1156,354,1147,344,1145,341,1144,336,1141,322,1141,307,1141,304,1139,300,1139,298,1139,296,1138,285,1137,274,1137,271,1137,268,1136,233,1136,198,1136,193,1137,187,1139,179,1140,169,1140,167,1141,166,1145,159,1142,152,1142,151,1141,150,1140,149,1138,148,1131,145,1120,142,1115,140,1110,139,1105,138,1099,138,1098,139,1097,138,1087,138,1077,138,1076,139,1075,138,1064,137,1053,140,1035,144,1017,150,1013,153,1018,154,1018,192,1016,230,1016,232,1016,235,1015,246,1014,256,1014,258,1014,259,1013,299,1013,338,1013,351,1015,364,1016,366,1016,368,1019,396,1019,425,1018,445,1018,465,1018,466,1017,467,1010,475,1006,488,1002,503,1002,517,1001,534,1002,550,1002,551,1002,552,1004,557,1005,561,1006,567,1008,570,1009,571,1010,572,1011,577,1013,580,1013,582,1014,583,1016,590,1016,591,1016,593,1017,594,1027,619,1030,644,1031,649,1030,653,1028,661,1027,668,1025,676,1021,686,1019,691,1020,698,1018,698,1016,697,1018,701,1020,702,1034,710,1049,717,1055,720,1057,724,1062,735,1067,746,1074,759,1078,773,1082,785,1080,799,1068,820,1055,840,1050,846,1049,854,1047,870,1038,881,1032,887,1028,895,1028,895,1025,902,1025,903,1024,904,1022,908,1019,915,1013,927,1004,935,1001,937,1001,940,1001,941,1001,942,998,952,997,963,996,970,994,973,993,974,993,975,994,979,995,983,996,990,1004,992,1011,993,1019,997,1021,998,1022,998,1028,1e3,1031,1007,1032,1009,1033,1010,1038,1015,1036,1018,1035,1020,1035,1021,1036,1032,1033,1038,1029,1043,1024,1046,1023,1046,1022,1047,1017,1054,1010,1061,1009,1062,1009,1064,1008,1068,1010,1069,1011,1069,1012,1071,1012,1073,1012,1075,1013,1082,1016,1085,1017,1086,1017,1088,1017,1091,1017,1094,1018,1095,1017,1097,1017,1101,1018,1105,1020,1113,1018,1120,1018,1121,1018,1123,1018,1124,1018,1125,1014,1144,1018,1158,1021,1166,1019,1172,1018,1187,1017,1202,1017,1213,1016,1224,1015,1241,1012,1256,1011,1260,1011,1265,1010,1267,1010,1270,1010,1272,1010,1274,1011,1283,1012,1291,1015,1305,1018,1318,1018,1320,1018,1322,1018,1323,1018,1324,1020,1348,1017,1370,1017,1372,1016,1375,L,1016,1379,1764,1380,1764,954,Q,1760,950,1753,947,1753,947,1752,946,1750,944,1749,940,1746,934,1736,931,1732,930,1732,927,1732,926,1731,925,1730,924,1730,922,1729,921,1729,921,1726,920,1724,921,1717,928,1712,937,1711,939,1709,939,1708,939,1707,940,1705,940,1703,940,1701,940,1698,941,1697,941,1695,941,1693,941,1691,942,1690,942,1689,942,1688,943,1687,943,1682,943,1677,945,1676,946,1675,946,1668,946,1661,944,1655,943,1648,942,1647,941,1646,942,1645,942,1645,942,1641,943,1639,945,1638,946,1638,946,1634,947,1630,950,1629,950,1627,951,1627,951,1626,951,1625,952,1624,952,1621,954,1617,955,1611,956,1605,956,1600,956,1595,955,1584,954,1575,956,1567,958,1559,964,1552,969,1544,972,1537,975,1532,971,1525,966,1522,956,1520,952,1521,947,1521,946,1520,945,1519,941,1516,940,1515,939,1514,939,1513,937,1510,936,1507,936,1508,931,1508,926,1506,922,1502,917,1499,912,1497,908,1498,905,1499,904,1498,903,1496,901,1492,902,1491,902,1490,902,1489,904,1486,904,1485,904,1484,905,1479,907,1474,906,1473,905,1472,905,1470,902,1466,900,1463,899,1462,896,1460,889,1460,880,1460,868,1454,859,1448,850,1442,841,1441,840,1441,838,1439,799,1412,772,1405,764,1397,762,1395,761,1393,764,1381,781,1359,795,1358,793,1356,791,1349,785,1341,780,1331,772,1325,761,1320,752,1323,741,1326,727,1333,715,1334,714,1336,711,1337,710,1339,709,1349,703,1351,688,1352,682,1348,679,1343,674,1333,667,1331,666,1331,664,1330,663,1329,662,1327,659,1328,655,1331,649,1336,641,1336,640,1337,639,1338,637,1339,636,1351,630,1350,619,1350,617,1350,615,1356,603,1362,594,1367,589,1370,582,1364,580,1357,579,1332,575,1308,569,1306,568,1304,567,1300,564,1299,557,1298,556,1297,555,1291,549,1286,544,1284,543,1281,542,1266,534,1268,522,1269,519,1269,517,1269,509,1263,505,1260,503,1256,498,1253,495,1250,492,1246,489,1243,483,1238,475,1234,467,1233,466,1232,466,Q,1220,460,1210,456,Z]],label:"Idaho",shortLabel:"ID",labelPosition:[118.8,84.7],labelAlignment:[CEN,MID]},NV:{outlines:[[M,1017,1379,Q,1017,1380,1016,1381,1016,1380,1016,1379,1012,1387,1001,1385,997,1385,992,1384,968,1381,944,1384,938,1385,932,1385,925,1386,919,1387,911,1389,902,1388,874,1388,849,1392,847,1392,845,1392,777,1395,709,1394,701,1394,692,1393,690,1393,688,1393,665,1388,642,1389,L,646,1884,Q,649,1891,654,1896,657,1899,660,1901,665,1905,672,1908,675,1910,679,1912,692,1917,703,1930,705,1931,706,1932,716,1940,730,1950,749,1962,763,1978,776,1993,789,2007,800,2019,813,2027,845,2048,872,2072,895,2092,913,2117,924,2131,935,2137,937,2138,939,2139,940,2139,940,2140,961,2154,981,2170,1004,2188,1025,2209,1049,2232,1064,2254,1067,2257,1070,2261,1071,2263,1073,2264,1077,2268,1081,2272,1095,2286,1109,2297,1116,2301,1124,2306,1127,2308,1128,2309,1136,2315,1144,2326,1148,2332,1154,2338,1155,2340,1158,2342,1168,2350,1176,2355,1177,2356,1178,2357,1189,2366,1205,2384,1212,2393,1220,2402,1228,2412,1236,2420,1261,2444,1287,2469,1292,2474,1300,2476,1311,2479,1326,2482,1325,2474,1331,2472,1332,2471,1332,2469,1333,2463,1329,2457,1324,2448,1317,2443,1316,2442,1316,2440,1315,2422,1315,2405,1315,2395,1314,2387,1314,2386,1314,2385,1315,2380,1314,2375,1313,2369,1311,2366,1305,2355,1302,2346,1300,2339,1305,2338,1306,2338,1307,2337,1314,2334,1322,2333,1327,2333,1331,2333,1335,2333,1336,2328,1336,2327,1337,2326,1348,2324,1353,2330,1358,2335,1363,2339,1375,2347,1388,2353,1389,2353,1389,2353,1389,2353,1389,2352,1388,2347,1387,2343,1384,2325,1383,2308,1383,2301,1382,2295,1382,2293,1382,2291,1380,2276,1380,2261,1379,2247,1381,2234,1381,2232,1381,2230,1384,2223,1385,2214,1387,2202,1386,2189,L,1391,1380,Z]],label:"Nevada",shortLabel:"NV",labelPosition:[101.6,193.1],labelAlignment:[CEN,MID]},AZ:{outlines:[[M,1398,2188,Q,1390,2186,1385,2189,1385,2202,1384,2214,1383,2223,1380,2230,1379,2232,1379,2234,1378,2247,1378,2261,1378,2276,1380,2291,1380,2293,1380,2295,1381,2301,1382,2308,1382,2325,1386,2343,1387,2347,1387,2352,1387,2353,1387,2353,1387,2353,1387,2353,1374,2347,1362,2339,1356,2335,1351,2330,1346,2324,1335,2326,1334,2327,1334,2328,1334,2333,1330,2333,1325,2333,1320,2333,1313,2334,1306,2337,1305,2338,1304,2338,1299,2339,1301,2346,1303,2355,1310,2366,1312,2369,1312,2375,1313,2380,1312,2385,1312,2386,1312,2387,1314,2395,1314,2405,1313,2422,1314,2440,1315,2442,1316,2443,1323,2448,1328,2457,1331,2463,1331,2469,1331,2471,1329,2472,1324,2474,1324,2482,L,1324,2482,Q,1325,2489,1323,2492,1321,2493,1320,2495,1315,2500,1313,2510,1312,2513,1313,2519,1314,2523,1316,2525,1331,2540,1350,2550,1360,2555,1364,2565,1370,2580,1377,2593,1378,2596,1379,2600,1380,2607,1379,2613,1379,2613,1378,2617,1375,2624,1370,2630,1369,2632,1366,2635,1357,2642,1354,2648,1353,2650,1351,2651,1346,2654,1344,2663,1341,2671,1340,2679,1340,2680,1340,2681,1339,2692,1335,2700,1334,2701,1334,2701,1329,2717,1320,2727,1303,2749,1304,2775,1304,2778,1304,2781,1305,2784,1307,2785,1310,2787,1313,2790,1314,2791,1315,2792,1318,2797,1323,2800,1328,2804,1333,2807,1339,2811,1340,2817,1342,2830,1325,2841,1321,2843,1317,2844,1309,2845,1302,2843,1299,2842,1295,2842,1293,2855,1295,2865,1296,2870,1296,2874,1295,2885,1300,2891,1302,2894,1307,2895,1316,2898,1326,2900,1330,2900,1335,2901,1351,2904,1366,2909,1378,2912,1390,2914,1399,2916,1407,2918,1433,2924,1449,2935,1453,2938,1458,2939,1463,2941,1467,2942,1499,2953,1532,2961,1553,2967,1574,2974,1601,2984,1627,2997,1635,3001,1643,3003,1655,3007,1668,3011,1687,3017,1705,3026,1709,3028,1711,3030,1713,3031,1714,3031,1720,3035,1726,3038,1727,3038,1729,3038,1742,3039,1753,3035,1756,3035,1758,3035,1783,3033,1804,3041,1817,3046,1832,3045,1837,3045,1841,3044,1875,3040,1911,3041,1946,3043,1981,3043,1995,3043,2008,3043,L,2014,2190,1435,2190,Q,1433,2188,1429,2188,Q,1414,2188,1398,2188,Z]],label:"Arizona",shortLabel:"AZ",labelPosition:[165.4,261.6],labelAlignment:[CEN,MID]},MT:{outlines:[[M,1141,150,Q,1142,151,1142,153,1145,160,1141,166,1140,168,1140,169,1139,180,1137,188,1136,193,1136,199,1136,234,1137,269,1137,272,1137,274,1138,285,1139,296,1139,298,1139,300,1141,305,1141,307,1141,322,1144,337,1145,342,1147,344,1156,354,1164,362,1167,364,1168,368,1168,370,1170,372,1174,377,1175,385,1179,404,1183,425,1187,448,1208,455,1209,456,1210,456,1220,461,1232,466,1233,467,1234,468,1238,475,1243,484,1246,489,1250,492,1253,495,1256,499,1260,503,1263,505,1269,510,1269,517,1269,520,1268,523,1266,535,1281,542,1284,543,1286,545,1291,549,1297,555,1298,556,1299,558,1300,564,1305,568,1306,569,1308,570,1332,576,1357,580,1364,581,1370,582,1367,589,1362,595,1356,604,1350,616,1350,617,1350,619,1351,630,1339,637,1338,637,1337,639,1336,640,1336,641,1331,649,1328,656,1327,660,1329,662,1330,663,1331,665,1331,666,1333,667,1343,675,1348,679,1352,682,1351,689,1349,704,1339,709,1337,710,1336,712,1334,714,1333,716,1326,728,1323,741,1320,753,1325,762,1331,773,1341,780,1349,786,1356,791,1358,793,1359,796,1381,781,1393,765,1395,762,1397,762,1405,765,1412,772,1439,799,1441,838,1441,840,1442,842,1448,850,1454,860,1460,869,1460,881,1460,889,1462,897,1463,899,1466,900,1470,902,1472,905,1473,906,1474,906,1479,907,1484,905,1485,905,1486,905,1489,904,1490,903,1491,902,1492,902,1496,902,1498,904,1499,905,1498,906,1497,909,1499,912,1502,918,1506,922,1508,926,1508,931,1507,936,1510,937,1513,937,1514,939,1515,940,1516,940,1519,941,1520,945,1521,947,1521,948,1520,953,1522,957,1525,967,1532,972,1537,975,1544,973,1552,970,1559,964,1567,958,1575,956,1584,954,1595,956,1600,957,1605,957,1611,957,1617,956,1621,955,1624,953,1625,952,1626,952,1627,952,1627,951,1629,951,1630,950,1634,948,1638,946,1638,946,1639,945,1641,944,1645,943,1645,943,1646,942,1647,942,1648,942,1655,944,1661,945,1668,946,1675,946,1676,946,1677,946,1682,944,1687,943,1688,943,1689,943,1690,943,1691,942,1693,942,1695,942,1697,941,1698,941,1701,941,1703,941,1705,941,1707,940,1708,940,1709,940,1711,939,1712,938,1717,929,1724,922,1726,920,1729,921,1729,922,1730,922,1730,924,1731,926,1732,927,1732,928,1732,931,1736,932,1746,935,1749,941,1750,944,1752,947,1753,947,1753,948,1760,951,1764,955,L,1764,865,2639,869,2639,149,1141,149,Z]],label:"Montana",shortLabel:"MT",labelPosition:[188.8,45.1],labelAlignment:[CEN,MID]},WY:{outlines:[[M,1766,1560,L,2641,1544,2641,869,1766,865,Z]],label:"Wyoming",shortLabel:"WY",labelPosition:[220.3,121.3],labelAlignment:[CEN,MID]},UT:{outlines:[[M,1767,1382,L,1392,1381,1387,2190,Q,1392,2188,1400,2189,1416,2189,1432,2189,1435,2189,1437,2191,L,2016,2191,2016,1557,1767,1562,Z]],label:"Utah",shortLabel:"UT",labelPosition:[170.2,178.6],labelAlignment:[CEN,MID]},CO:{outlines:[[M,2642,1544,L,2016,1556,2016,2190,2903,2190,2886,1544,Z]],label:"Colorado",shortLabel:"CO",labelPosition:[246,186.7],labelAlignment:[CEN,MID]},NM:{outlines:[[M,2014,2190,L,2009,3043,Q,2030,3044,2052,3045,2059,3046,2066,3048,2073,3050,2079,3051,2083,3052,2086,3050,2087,3049,2089,3049,2093,3048,2095,3045,2096,3044,2098,3044,2109,3042,2119,3037,2121,3035,2121,3031,2125,3017,2125,3e3,2125,2992,2126,2985,2126,2984,2127,2983,2130,2980,2136,2978,2137,2977,2138,2978,2140,2977,2140,2979,2142,2979,2144,2979,2146,2979,2148,2978,2178,2977,2209,2979,2215,2979,2222,2979,2235,2978,2247,2980,2252,2981,2257,2981,2263,2980,2265,2982,2266,2982,2268,2982,2286,2981,2304,2980,2306,2980,2308,2982,2313,2986,2317,2984,L,2320,2950,2758,2950,2758,2190,Z]],label:"New Mexico",shortLabel:"NM",labelPosition:[238.3,262.1],labelAlignment:[CEN,MID]},ND:{outlines:[[M,3511,148,L,2639,148,2639,701,3578,705,Q,3578,687,3576,668,3576,657,3572,647,3571,645,3568,641,3565,636,3561,630,3559,626,3557,620,3554,603,3549,585,3542,561,3538,534,3537,530,3537,526,3535,521,3534,515,3533,510,3532,504,3531,490,3533,477,3533,472,3534,467,3535,466,3535,464,3537,455,3538,445,3539,444,3539,443,3538,441,3539,439,3539,438,3539,438,3540,436,3540,434,3541,422,3540,410,3538,394,3534,377,3526,339,3512,302,3507,288,3505,274,3503,264,3504,254,3507,239,3508,224,3509,215,3515,213,3525,208,3523,195,3523,194,3523,193,3523,187,3518,184,3508,177,3500,169,3494,164,3489,156,Q,3496,154,3511,148,Z]],label:"North Dakota",shortLabel:"ND",labelPosition:[310.7,42.7],labelAlignment:[CEN,MID]},SD:{outlines:[[M,3565,725,Q,3567,723,3572,721,3573,720,3574,719,3577,716,3579,713,3581,711,3581,707,3581,706,3581,705,L,2642,702,2642,1206,3306,1227,Q,3311,1227,3315,1227,3333,1229,3348,1235,3361,1241,3373,1251,3374,1252,3376,1252,3378,1252,3378,1253,3379,1256,3383,1254,3391,1251,3394,1243,3395,1241,3397,1240,3398,1239,3400,1239,3404,1240,3409,1243,3410,1244,3411,1245,3419,1253,3435,1248,3436,1248,3437,1248,3442,1247,3448,1247,3450,1247,3451,1248,3454,1249,3461,1249,3463,1249,3463,1248,3470,1241,3481,1235,3482,1235,3483,1234,L,3489,1233,Q,3493,1240,3495,1249,3496,1252,3497,1254,3499,1261,3503,1259,3505,1258,3506,1257,3507,1256,3509,1255,3511,1252,3515,1250,3518,1248,3521,1250,3523,1251,3526,1253,3534,1258,3535,1269,3537,1277,3546,1281,3547,1282,3548,1283,3550,1285,3557,1285,3560,1280,3563,1275,3564,1273,3566,1271,3566,1269,3567,1267,3573,1255,3576,1241,3578,1233,3582,1225,3583,1223,3584,1221,3593,1211,3595,1199,3595,1197,3594,1196,3590,1188,3582,1183,3577,1180,3573,1175,3568,1170,3569,1164,3572,1151,3580,1140,3583,1136,3583,1131,3582,1123,3581,1116,3581,1115,3581,1114,3575,1096,3579,1076,3579,1075,3580,1074,3582,1065,3584,1059,3585,1057,3585,1055,3586,1046,3583,1039,3582,1035,3580,1031,3579,1030,3579,1029,3579,1013,3583,998,3587,983,3585,965,3582,941,3588,917,3589,916,3589,915,3589,914,3590,912,3592,909,3592,902,3591,894,3592,891,3592,889,3591,888,3589,885,3590,879,3591,870,3593,864,3593,861,3594,858,3594,857,3594,855,3595,848,3593,842,3590,833,3588,823,3588,821,3587,818,3586,816,3586,812,3587,806,3582,803,3582,802,3581,802,3574,800,3570,798,3562,793,3557,790,3555,789,3553,789,3547,788,3546,785,3545,783,3545,781,3547,773,3547,764,3547,742,3561,730,Q,3563,728,3565,725,Z]],label:"South Dakota",shortLabel:"SD",labelPosition:[311.8,99.3],labelAlignment:[CEN,MID]},NE:{outlines:[[M,3305,1227,L,2641,1207,2641,1544,2885,1544,2889,1708,3730,1715,3730,1715,Q,3731,1714,3732,1714,3732,1713,3732,1713,3733,1711,3733,1709,3733,1704,3726,1703,3725,1704,3720,1702,3719,1701,3718,1700,3715,1692,3714,1682,3711,1679,3708,1675,3697,1661,3686,1645,3686,1644,3685,1643,3680,1640,3679,1634,3678,1625,3673,1615,3673,1614,3672,1612,3667,1602,3661,1598,3660,1597,3659,1595,3655,1584,3654,1573,3653,1561,3654,1549,3654,1530,3651,1511,3647,1483,3638,1456,3637,1452,3634,1449,3623,1439,3622,1426,3622,1413,3619,1398,3615,1384,3608,1372,3600,1360,3595,1347,3581,1314,3565,1281,L,3556,1285,Q,3549,1286,3547,1283,3546,1282,3545,1282,3536,1278,3534,1269,3533,1259,3525,1253,3522,1252,3520,1250,3517,1249,3514,1250,3510,1253,3508,1255,3506,1256,3505,1257,3504,1258,3502,1259,3498,1261,3496,1255,3495,1252,3494,1249,3492,1240,3488,1234,L,3482,1235,Q,3481,1235,3480,1236,3469,1242,3462,1248,3462,1249,3460,1249,3453,1250,3450,1248,3449,1247,3447,1247,3441,1247,3436,1248,3435,1248,3434,1249,3418,1254,3410,1245,3409,1245,3408,1244,3403,1240,3399,1239,3397,1239,3396,1240,3394,1242,3393,1244,3390,1251,3382,1254,3378,1256,3377,1253,3377,1253,3375,1253,3373,1253,3372,1252,3360,1242,3347,1236,3332,1229,3314,1228,Q,3310,1227,3305,1227,Z]],label:"Nebraska",shortLabel:"NE",labelPosition:[318.8,146.3],labelAlignment:[CEN,MID]},KS:{outlines:[[M,3741,1723,Q,3734,1720,3731,1715,L,2890,1708,2903,2190,3815,2192,Q,3817,2152,3814,2129,3813,2112,3813,2096,3813,2088,3813,2079,3813,2056,3813,2033,3814,2031,3813,2029,3812,2021,3812,2011,3812,2001,3813,1991,3813,1987,3812,1983,3810,1974,3811,1965,3811,1962,3810,1960,3808,1954,3809,1948,3811,1941,3811,1932,3811,1927,3812,1923,3815,1905,3815,1884,3814,1873,3810,1863,3809,1860,3804,1858,3799,1856,3797,1851,3792,1842,3786,1832,3774,1814,3758,1798,3754,1795,3761,1789,3765,1785,3771,1783,3773,1778,3774,1774,3775,1772,3776,1770,3777,1765,3777,1759,3777,1758,3776,1757,3763,1748,3763,1737,3763,1735,3762,1733,3759,1728,3750,1726,Q,3745,1726,3741,1723,Z]],label:"Kansas",shortLabel:"KS",labelPosition:[335.3,195.2],labelAlignment:[CEN,MID]},OK:{outlines:[[M,3813,2192,L,2758,2190,2758,2271,3146,2271,3148,2569,Q,3153,2573,3158,2576,3161,2579,3164,2581,3167,2582,3168,2584,3183,2596,3187,2608,3198,2602,3216,2598,3219,2598,3222,2597,3233,2594,3240,2601,3245,2607,3252,2615,3254,2618,3258,2620,3260,2621,3261,2622,3262,2623,3264,2623,3274,2623,3284,2623,3285,2623,3286,2623,3290,2624,3294,2625,3298,2627,3303,2628,3305,2628,3306,2629,3318,2631,3329,2634,3331,2635,3333,2636,3334,2637,3336,2637,3348,2638,3355,2634,3356,2634,3357,2632,3358,2629,3362,2629,3366,2628,3369,2630,3377,2638,3384,2646,3395,2657,3405,2668,3407,2670,3411,2671,3417,2672,3422,2670,3437,2662,3451,2653,L,3454,2651,Q,3462,2650,3466,2655,3470,2659,3471,2663,3473,2674,3481,2677,3490,2680,3502,2683,3503,2683,3504,2684,3508,2688,3512,2682,3513,2681,3514,2679,3516,2678,3517,2674,3517,2673,3517,2672,3517,2671,3517,2669,3516,2666,3516,2663,3517,2662,3518,2662,3527,2662,3534,2664,3537,2665,3539,2667,3544,2673,3552,2670,3553,2669,3555,2668,3559,2666,3562,2665,L,3569,2664,Q,3570,2665,3571,2666,3573,2667,3573,2669,3578,2683,3593,2690,3595,2691,3596,2692,3598,2693,3599,2693,3600,2694,3601,2694,3604,2696,3608,2695,3618,2694,3626,2688,3635,2681,3645,2675,3655,2670,3666,2667,3670,2667,3675,2667,3688,2669,3701,2665,3710,2662,3719,2663,3732,2665,3745,2666,3753,2666,3761,2666,3770,2667,3776,2674,3781,2678,3784,2683,3786,2688,3791,2690,3793,2691,3795,2691,3796,2692,3796,2692,3806,2699,3820,2698,3829,2698,3831,2699,3832,2700,3833,2701,3834,2702,3836,2703,3837,2704,3840,2703,3837,2699,3835,2695,3833,2692,3830,2691,3829,2690,3828,2689,3827,2685,3825,2681,3824,2680,3825,2678,3827,2676,3826,2672,3825,2671,3825,2669,3824,2661,3825,2654,3826,2645,3826,2636,3826,2622,3827,2608,3828,2588,3831,2567,3834,2548,3834,2529,3835,2510,3836,2490,3836,2484,3838,2479,3840,2472,3841,2466,3842,2464,3843,2462,3845,2454,3845,2444,3845,2442,3844,2440,3843,2437,3841,2433,3841,2430,3840,2428,3837,2419,3837,2409,3837,2407,3838,2406,3839,2403,3839,2400,3835,2385,3831,2370,3828,2359,3826,2348,3824,2337,3825,2326,3825,2301,3823,2275,3822,2272,3822,2268,3821,2261,3819,2254,3817,2245,3817,2236,3817,2222,3814,2208,Q,3813,2200,3813,2192,Z]],label:"Oklahoma",shortLabel:"OK",labelPosition:[347.1,245.6],labelAlignment:[CEN,MID]},TX:{outlines:[[M,3666,2667,Q,3655,2669,3645,2674,3635,2680,3626,2687,3618,2693,3608,2695,3604,2695,3601,2694,3600,2693,3599,2693,3598,2692,3596,2691,3595,2690,3593,2689,3578,2682,3573,2668,3573,2667,3571,2666,3570,2665,3569,2664,L,3562,2665,Q,3559,2666,3555,2667,3553,2668,3552,2669,3544,2673,3539,2666,3537,2665,3534,2664,3527,2661,3518,2661,3517,2661,3516,2663,3516,2665,3517,2668,3517,2670,3517,2672,3517,2673,3517,2674,3516,2677,3514,2679,3513,2680,3512,2682,3508,2687,3504,2683,3503,2682,3502,2682,3490,2680,3481,2676,3473,2674,3471,2663,3470,2658,3466,2654,3462,2650,3454,2650,L,3451,2652,Q,3437,2662,3422,2669,3417,2672,3411,2671,3407,2670,3405,2668,3395,2656,3384,2646,3377,2638,3369,2630,3366,2628,3362,2628,3358,2628,3357,2631,3356,2633,3355,2634,3348,2638,3336,2637,3334,2637,3333,2636,3331,2634,3329,2633,3318,2631,3306,2628,3305,2628,3303,2627,3298,2627,3294,2625,3290,2623,3286,2622,3285,2622,3284,2622,3274,2622,3264,2622,3262,2622,3261,2621,3260,2620,3258,2619,3254,2617,3252,2614,3245,2606,3240,2601,3233,2594,3222,2596,3219,2597,3216,2598,3198,2601,3187,2608,3183,2596,3168,2583,3167,2582,3164,2581,3161,2579,3158,2576,3153,2573,3148,2569,L,3146,2271,2758,2271,2758,2949,2320,2949,2317,2983,Q,2321,2981,2325,2973,2338,2985,2349,2999,2352,3003,2355,3008,2361,3020,2369,3031,2371,3034,2374,3036,2381,3041,2389,3041,2391,3041,2393,3039,2395,3037,2400,3038,2403,3038,2406,3037,2408,3037,2409,3038,2420,3044,2420,3056,2421,3072,2432,3080,2443,3088,2456,3100,2467,3109,2475,3119,2498,3145,2528,3159,2532,3161,2535,3164,2540,3168,2542,3174,2544,3180,2546,3185,2548,3196,2548,3202,2548,3203,2549,3204,2552,3216,2558,3226,2562,3233,2565,3246,2568,3261,2571,3275,2572,3284,2583,3287,2584,3288,2584,3288,2585,3288,2586,3288,2598,3295,2609,3300,2622,3306,2625,3320,2626,3326,2629,3329,2631,3333,2635,3334,2649,3339,2667,3339,2676,3340,2682,3344,2683,3345,2685,3345,2699,3347,2706,3354,2707,3355,2708,3357,2708,3358,2709,3358,2713,3367,2715,3379,2726,3385,2734,3381,2735,3380,2737,3380,2758,3371,2777,3359,2787,3352,2790,3341,2793,3329,2791,3316,2791,3312,2793,3310,2794,3309,2794,3307,2792,3295,2799,3293,2802,3292,2805,3292,2806,3291,2807,3291,2812,3287,2820,3287,2828,3279,2836,3275,2842,3273,2849,3273,2851,3273,2853,3273,2859,3273,2871,3271,2873,3271,2875,3271,2891,3270,2908,3272,2910,3273,2912,3273,2919,3274,2925,3277,2927,3277,2928,3277,2932,3277,2934,3279,2936,3279,2937,3279,2944,3278,2950,3277,2960,3276,2966,3284,2972,3293,2976,3298,2980,3304,2989,3312,2995,3317,3002,3320,3019,3330,3036,3341,3042,3346,3046,3354,3050,3363,3052,3373,3054,3379,3054,3386,3054,3387,3055,3388,3052,3392,3053,3394,3059,3401,3067,3407,3070,3409,3071,3412,3078,3429,3085,3446,3092,3461,3102,3472,3115,3487,3129,3500,3138,3508,3146,3516,3168,3535,3187,3556,3199,3569,3204,3586,3208,3598,3208,3610,3210,3629,3215,3647,3217,3654,3222,3660,3231,3671,3240,3682,3252,3696,3263,3710,3275,3725,3287,3737,3289,3738,3290,3739,3296,3744,3302,3749,3324,3766,3347,3779,3368,3790,3391,3796,3407,3801,3422,3807,3443,3815,3463,3820,3470,3821,3477,3820,3485,3820,3491,3817,3494,3815,3496,3811,3497,3810,3497,3809,3500,3802,3503,3795,3505,3791,3505,3785,3505,3777,3503,3769,3501,3753,3497,3737,3497,3734,3496,3730,3494,3724,3491,3720,3490,3719,3490,3717,3489,3716,3488,3715,3485,3710,3480,3707,3479,3706,3477,3706,3476,3705,3475,3705,3464,3700,3468,3688,3467,3689,3466,3690,3472,3680,3472,3669,3472,3665,3473,3660,3473,3659,3474,3658,3475,3656,3476,3653,3478,3647,3480,3643,3476,3639,3475,3636,3474,3634,3472,3632,3471,3631,3469,3629,3467,3628,3465,3626,3460,3624,3456,3619,3454,3618,3453,3618,3457,3615,3463,3613,3467,3612,3470,3612,3474,3612,3476,3609,3476,3608,3476,3607,3477,3600,3478,3594,3479,3591,3478,3588,3478,3587,3478,3586,3477,3585,3477,3583,3476,3580,3476,3577,3475,3574,3477,3572,3479,3570,3483,3569,3484,3569,3485,3569,3503,3564,3519,3555,3531,3550,3539,3540,3541,3538,3542,3535,3543,3534,3543,3533,3547,3528,3552,3522,3557,3516,3562,3511,3563,3510,3564,3509,3570,3506,3575,3504,3577,3504,3578,3503,3585,3500,3585,3493,3586,3486,3583,3481,3582,3480,3582,3478,3579,3462,3579,3447,3580,3437,3586,3435,3594,3433,3603,3441,3610,3447,3616,3448,3627,3450,3639,3446,3645,3444,3650,3442,3652,3443,3654,3442,3660,3442,3665,3439,3670,3436,3674,3433,3677,3431,3680,3429,3684,3426,3689,3423,3696,3417,3702,3410,3713,3397,3731,3392,3733,3392,3735,3391,3751,3388,3759,3374,3761,3372,3762,3369,3767,3360,3773,3356,3779,3351,3784,3345,3787,3342,3789,3338,3789,3337,3789,3335,3789,3334,3789,3333,3790,3329,3785,3328,3784,3328,3783,3327,3773,3321,3764,3310,3763,3309,3762,3307,3760,3293,3769,3283,3774,3277,3781,3277,3794,3276,3807,3276,3808,3277,3809,3277,3815,3281,3816,3287,3817,3289,3816,3290,3815,3298,3811,3302,3810,3303,3809,3305,3805,3311,3800,3317,3801,3321,3805,3321,3806,3321,3807,3321,3825,3327,3840,3318,3842,3317,3844,3316,3852,3312,3857,3307,3865,3300,3877,3295,3885,3292,3892,3287,3899,3283,3905,3282,3902,3282,3900,3280,3893,3275,3896,3269,3897,3268,3897,3267,3899,3254,3904,3246,3907,3242,3911,3237,3912,3236,3913,3235,3914,3235,3914,3234,3920,3218,3923,3202,3925,3188,3925,3173,3924,3161,3928,3151,3928,3150,3929,3149,3938,3137,3947,3126,3948,3125,3949,3124,3951,3119,3949,3113,3948,3112,3947,3110,3943,3099,3941,3090,3937,3065,3933,3040,3928,3013,3912,2990,3909,2985,3903,2981,3894,2975,3889,2962,3887,2957,3890,2951,3890,2950,3890,2948,3893,2928,3885,2911,3885,2910,3884,2908,3882,2892,3885,2876,3886,2872,3886,2867,3886,2843,3885,2819,3885,2814,3886,2808,3886,2807,3886,2806,3887,2803,3887,2800,3887,2799,3887,2799,3891,2795,3893,2789,3894,2786,3894,2782,3895,2771,3894,2760,3894,2749,3891,2738,3891,2735,3891,2731,3892,2728,3891,2722,3890,2717,3887,2714,3886,2713,3885,2713,3879,2712,3872,2712,3860,2712,3849,2710,3846,2709,3843,2705,3841,2704,3840,2702,3837,2703,3836,2702,3834,2702,3833,2701,3832,2700,3831,2699,3829,2697,3820,2698,3806,2698,3796,2692,3796,2691,3795,2691,3793,2690,3791,2690,3786,2687,3784,2683,3781,2678,3776,2673,3770,2666,3761,2666,3753,2666,3745,2665,3732,2665,3719,2662,3710,2661,3701,2664,3688,2668,3675,2667,Q,3670,2666,3666,2667,Z]],label:"Texas",shortLabel:"TX",labelPosition:[333.3,304.5],labelAlignment:[CEN,MID]},MN:{outlines:[[M,4518,359,Q,4543,349,4563,332,4564,331,4565,329,4568,323,4570,318,4573,308,4577,299,4575,300,4572,300,4564,300,4559,303,4558,303,4557,304,4545,317,4521,324,4515,325,4510,329,4509,330,4508,331,4506,331,4505,332,4501,335,4495,341,4489,347,4497,352,4498,352,4498,353,4498,359,4506,360,Q,4512,361,4518,359,Z],[M,4035,228,Q,4023,224,4018,212,4018,211,4016,210,4012,209,4007,208,4e3,203,3989,211,3978,218,3965,224,3955,229,3944,234,3942,236,3939,235,3930,231,3925,235,3924,236,3923,235,3919,233,3917,232,3914,228,3911,223,3905,214,3898,206,3897,206,3896,205,3861,195,3825,188,3820,187,3815,189,3814,190,3812,189,3807,188,3807,182,3806,169,3806,155,3804,120,3793,88,3790,79,3781,78,3769,76,3756,80,3753,81,3751,84,3747,93,3746,103,3746,111,3747,118,3747,120,3748,122,3748,123,3748,124,3749,129,3750,131,3750,135,3748,139,3743,148,3733,146,3729,146,3726,144,3724,144,3723,143,3722,142,3720,142,3680,143,3640,142,3611,141,3583,145,3582,145,3580,145,3570,146,3559,145,3537,144,3516,149,3510,150,3504,152,3497,154,3489,157,3494,164,3500,170,3509,178,3519,184,3523,188,3523,193,3524,194,3524,195,3526,209,3515,214,3510,216,3509,225,3507,240,3505,254,3503,265,3505,274,3508,289,3513,302,3526,340,3535,378,3539,394,3540,411,3541,423,3540,435,3540,437,3540,438,3540,439,3539,439,3539,442,3539,443,3539,444,3539,445,3537,455,3535,464,3535,466,3535,468,3534,472,3533,477,3531,490,3533,505,3534,510,3535,516,3536,521,3537,527,3538,531,3538,534,3542,562,3549,586,3554,603,3558,621,3559,627,3561,630,3566,637,3569,641,3571,645,3572,647,3576,658,3577,669,3578,687,3578,705,3578,706,3578,707,3579,711,3577,713,3574,716,3572,719,3571,720,3569,721,3565,723,3563,725,3561,728,3558,730,3544,742,3544,764,3544,773,3543,781,3542,783,3543,785,3545,788,3550,789,3552,789,3554,790,3560,793,3567,798,3572,800,3578,802,3579,802,3580,803,3584,806,3584,812,3583,816,3584,818,3585,821,3586,823,3587,833,3590,842,3592,848,3592,855,3592,857,3591,858,3591,861,3590,864,3589,870,3587,879,3587,885,3588,888,3589,889,3589,891,3589,894,3589,902,3589,909,3587,912,3587,914,3586,915,3586,916,3586,917,3580,941,3582,965,3584,983,3580,998,3576,1013,3577,1029,3577,1030,3577,1031,3579,1035,3581,1039,3583,1046,3582,1055,3582,1057,3582,1059,3579,1065,3577,1074,3577,1075,3576,1076,3572,1096,3578,1114,3579,1115,3579,1116,3580,1123,3580,1131,L,4232,1127,4232,1119,Q,4228,1111,4232,1101,4236,1092,4238,1079,4239,1073,4239,1066,4239,1064,4238,1063,4232,1058,4230,1053,4229,1052,4228,1052,4211,1050,4199,1039,4197,1037,4193,1036,4192,1036,4191,1035,4183,1032,4173,1029,4166,1028,4162,1023,4157,1018,4154,1011,4147,993,4136,978,4132,973,4125,970,4111,963,4097,956,4081,947,4065,936,4063,936,4063,934,4062,925,4056,919,4053,915,4055,913,4050,910,4049,902,4047,889,4048,876,4048,875,4049,873,4051,870,4051,865,4051,864,4052,862,4056,850,4051,838,4050,836,4050,834,4050,821,4055,812,4060,803,4062,794,4062,792,4061,791,4056,784,4049,779,4039,770,4032,759,4032,758,4032,757,4031,753,4032,749,4032,748,4032,747,4032,740,4038,735,4049,727,4060,718,4075,704,4087,688,4096,677,4101,662,4111,627,4100,593,4099,590,4100,587,4100,585,4100,584,4100,583,4100,582,4101,575,4099,571,4114,568,4128,566,4133,566,4137,565,4142,559,4146,551,4150,539,4159,527,4160,526,4161,525,4163,522,4166,518,4178,507,4189,494,4203,477,4221,468,4235,461,4246,450,4275,424,4305,399,4317,389,4333,385,4353,380,4374,375,4391,372,4402,367,4403,367,4405,366,4406,366,4406,365,4409,358,4414,355,4415,354,4416,352,4418,345,4422,341,4427,335,4436,330,4440,328,4441,322,4441,322,4440,321,4434,317,4427,318,4417,319,4407,318,4393,318,4389,305,4388,302,4387,302,4374,304,4362,306,4351,308,4340,306,4319,304,4301,295,4290,290,4279,284,4277,282,4273,284,4267,288,4263,294,4259,300,4253,302,4241,307,4228,308,4219,309,4210,309,4208,309,4206,309,4197,307,4189,306,4188,306,4186,305,4174,299,4163,292,4158,289,4154,286,4144,276,4136,264,4134,262,4134,258,4124,262,4118,272,4116,275,4113,277,4100,286,4094,274,4094,273,4093,271,4092,268,4088,264,4085,262,4083,260,4082,259,4081,258,4080,257,4079,256,4072,246,4062,240,Q,4050,232,4035,228,Z]],label:"Minnesota",shortLabel:"MN",labelPosition:[382.5,61.4],labelAlignment:[CEN,MID]},IA:{outlines:[[M,4237,1127,L,3580,1131,Q,3581,1136,3578,1140,3570,1151,3566,1164,3565,1170,3570,1175,3574,1180,3579,1183,3587,1188,3592,1196,3592,1197,3592,1199,3591,1211,3582,1221,3581,1223,3579,1225,3575,1233,3573,1241,3571,1255,3565,1267,3564,1269,3563,1271,3562,1273,3561,1275,3562,1277,3563,1279,3563,1280,3564,1281,3580,1313,3593,1347,3599,1360,3606,1372,3614,1384,3617,1398,3620,1412,3621,1425,3621,1439,3632,1449,3636,1452,3637,1455,3645,1482,3650,1510,3653,1529,3652,1549,3652,1561,3653,1572,3654,1584,3658,1595,3658,1597,3660,1598,3665,1602,3670,1612,L,4154,1617,Q,4161,1613,4163,1601,4167,1604,4171,1606,4190,1623,4202,1647,4204,1652,4209,1654,4210,1655,4211,1656,4212,1658,4213,1659,4215,1660,4218,1655,4219,1654,4219,1652,4222,1646,4225,1640,4237,1618,4245,1595,4245,1594,4246,1593,4247,1588,4250,1584,4258,1572,4264,1567,4267,1566,4269,1564,4273,1562,4274,1556,4275,1555,4275,1554,4275,1553,4274,1551,4274,1549,4273,1548,4269,1540,4261,1532,4255,1525,4256,1516,4256,1514,4257,1512,4257,1510,4256,1509,4254,1506,4256,1499,4256,1496,4258,1495,4269,1493,4281,1492,4296,1492,4308,1485,4323,1477,4329,1466,4335,1456,4342,1447,4351,1436,4360,1424,4367,1417,4369,1407,4371,1399,4371,1391,4371,1386,4371,1380,4371,1372,4365,1368,4353,1357,4342,1345,4328,1328,4318,1309,4314,1302,4313,1294,4313,1290,4313,1287,4313,1280,4309,1275,L,4309,1275,Q,4307,1273,4306,1272,4303,1270,4300,1269,4290,1264,4280,1257,4264,1245,4245,1237,4244,1237,4243,1236,4236,1226,4241,1212,4245,1200,4250,1189,4253,1183,4252,1175,4252,1173,4251,1172,4248,1166,4243,1160,4241,1158,4242,1155,4242,1154,4242,1153,4243,1151,4244,1150,4246,1148,4245,1140,4245,1138,4243,1136,Q,4240,1132,4237,1127,Z]],label:"Iowa",shortLabel:"IA",labelPosition:[396.6,139.3],labelAlignment:[CEN,MID]},MO:{outlines:[[M,4202,1700,Q,4205,1685,4209,1670,4210,1668,4210,1666,4211,1659,4213,1659,4212,1658,4211,1656,4210,1655,4209,1654,4204,1652,4202,1647,4190,1623,4171,1606,4167,1604,4163,1601,4161,1613,4154,1617,L,3672,1612,3672,1615,Q,3676,1625,3677,1633,3678,1640,3683,1643,3684,1643,3685,1644,3695,1660,3706,1675,3709,1678,3713,1682,L,3713,1681,3713,1682,Q,3714,1682,3714,1683,L,3714,1685,Q,3714,1684,3713,1682,L,3713,1682,Q,3714,1691,3717,1700,3717,1701,3718,1701,3723,1704,3725,1702,3731,1704,3732,1709,3732,1711,3731,1712,3731,1713,3730,1713,3730,1714,3729,1715,3732,1720,3738,1723,3742,1726,3747,1726,3756,1728,3759,1733,3760,1735,3760,1737,3761,1748,3773,1757,3774,1758,3774,1759,3775,1765,3773,1770,3773,1772,3772,1774,3770,1778,3769,1783,3763,1785,3758,1789,3752,1795,3756,1798,3772,1814,3783,1832,3789,1842,3794,1851,3796,1856,3801,1858,3806,1860,3808,1863,3812,1873,3812,1884,3813,1905,3809,1923,3808,1927,3808,1932,3809,1941,3807,1948,3806,1954,3807,1960,3808,1962,3808,1965,3808,1974,3810,1983,3810,1987,3810,1991,3809,2001,3810,2011,3810,2021,3811,2029,3811,2031,3811,2033,3810,2056,3811,2079,3811,2088,3810,2096,3810,2112,3812,2129,3814,2152,3813,2192,3812,2200,3814,2208,3817,2222,3816,2236,3816,2245,3818,2254,3820,2261,3821,2268,L,4369,2273,Q,4372,2276,4375,2278,4378,2280,4377,2286,4376,2291,4376,2297,4376,2299,4377,2299,4381,2300,4383,2304,4388,2314,4380,2321,4376,2324,4372,2325,4362,2330,4353,2336,4350,2338,4347,2343,4367,2346,4387,2348,4391,2349,4395,2349,4404,2349,4413,2350,4428,2351,4438,2343,4438,2342,4439,2341,4440,2339,4440,2337,4442,2329,4441,2319,4441,2316,4441,2312,4442,2301,4447,2291,4450,2286,4449,2279,4448,2273,4449,2269,4450,2262,4455,2258,4458,2256,4460,2254,4466,2250,4472,2246,4483,2237,4488,2226,4493,2215,4485,2205,4482,2201,4483,2196,4483,2196,4482,2197,4480,2190,4475,2188,4470,2187,4469,2184,4462,2172,4456,2159,4455,2155,4451,2152,4448,2153,4447,2147,4447,2144,4449,2142,4452,2138,4454,2134,4458,2126,4459,2117,4460,2107,4456,2097,4444,2065,4414,2049,4398,2041,4385,2030,4374,2022,4363,2012,4358,2007,4353,2002,4350,1998,4349,1992,4349,1991,4350,1989,4352,1983,4352,1976,4352,1975,4353,1974,4353,1972,4354,1970,4354,1969,4355,1967,4356,1956,4361,1951,4367,1944,4372,1938,4378,1932,4373,1924,4373,1923,4373,1921,4373,1911,4373,1900,4373,1899,4373,1897,4373,1888,4366,1886,4364,1886,4364,1885,4362,1882,4359,1882,4357,1882,4356,1882,4345,1888,4334,1893,4320,1899,4305,1902,4304,1890,4304,1878,4303,1862,4301,1845,4301,1844,4300,1844,4295,1843,4291,1840,4280,1833,4276,1823,4270,1810,4266,1797,4263,1788,4252,1786,4247,1785,4243,1782,4242,1782,4241,1781,4237,1774,4235,1768,4233,1761,4226,1758,4225,1758,4224,1758,4217,1758,4211,1754,4209,1753,4207,1746,4207,1738,4204,1731,4202,1728,4202,1725,Q,4200,1713,4202,1700,Z]],label:"Missouri",shortLabel:"MO",labelPosition:[408.1,197.5],labelAlignment:[CEN,MID]},AR:{outlines:[[M,4369,2272,L,3823,2267,3823,2275,Q,3825,2300,3825,2326,3824,2337,3826,2347,3828,2359,3831,2370,3835,2385,3839,2399,3839,2403,3838,2405,3837,2407,3837,2409,3837,2419,3840,2427,3841,2430,3841,2432,3843,2436,3844,2440,3845,2442,3845,2444,3845,2453,3843,2462,3842,2464,3841,2466,3840,2472,3838,2478,3836,2484,3836,2490,3835,2509,3834,2528,3834,2548,3831,2567,3828,2587,3827,2607,3826,2621,3826,2635,3826,2644,3825,2653,3824,2661,3825,2668,3825,2670,3826,2672,3827,2676,3825,2678,3824,2679,3825,2681,3827,2685,3828,2688,3829,2689,3830,2690,3833,2692,3835,2695,3837,2699,3840,2702,3841,2704,3843,2705,3846,2709,3849,2710,3860,2712,3872,2712,3879,2712,3885,2713,3886,2713,3887,2714,3890,2717,3891,2722,3892,2728,3891,2731,3891,2735,3891,2738,3894,2749,3894,2760,3895,2771,3894,2782,L,3894,2789,4242,2788,Q,4242,2786,4243,2784,4244,2779,4242,2776,4242,2775,4241,2774,4239,2770,4239,2766,4239,2764,4237,2762,4238,2756,4238,2751,4237,2713,4255,2679,4256,2678,4256,2676,4258,2670,4260,2666,4262,2662,4266,2656,4275,2640,4282,2630,4286,2625,4289,2620,4300,2604,4305,2585,4306,2583,4307,2580,4328,2550,4347,2518,4349,2515,4350,2513,4356,2501,4365,2495,4366,2494,4367,2494,4366,2492,4366,2490,4367,2485,4372,2482,4378,2477,4377,2470,4376,2460,4376,2457,4376,2450,4380,2447,4381,2447,4382,2446,4383,2443,4385,2441,4400,2431,4399,2409,4399,2400,4408,2394,4411,2392,4412,2389,4416,2373,4425,2361,4433,2350,4439,2342,4428,2351,4413,2349,4404,2349,4395,2348,4392,2348,4388,2348,4368,2345,4347,2342,4350,2338,4354,2335,4363,2330,4372,2325,4377,2323,4380,2320,4389,2314,4384,2304,4382,2300,4377,2298,4377,2298,4377,2296,4377,2290,4378,2285,4379,2279,4375,2277,Q,4372,2275,4369,2272,Z]],label:"Arkansas",shortLabel:"AR",labelPosition:[413.1,252.8],labelAlignment:[CEN,MID]},LA:{outlines:[[M,4257,2894,Q,4255,2885,4249,2876,4242,2866,4238,2855,4234,2842,4235,2828,4235,2815,4237,2801,4237,2800,4237,2799,4240,2794,4241,2788,L,3892,2789,Q,3891,2795,3886,2799,3886,2799,3886,2800,3886,2803,3886,2806,3885,2807,3885,2808,3884,2814,3884,2819,3885,2843,3885,2867,3885,2872,3884,2876,3881,2892,3884,2908,3884,2910,3885,2911,3892,2928,3890,2948,3890,2950,3889,2951,3887,2957,3889,2962,3894,2975,3903,2981,3908,2985,3912,2990,3928,3013,3932,3040,3936,3065,3941,3090,3942,3099,3947,3110,3947,3112,3948,3113,3951,3119,3948,3124,3947,3125,3946,3126,3937,3137,3929,3149,3928,3150,3927,3151,3924,3161,3924,3173,3925,3188,3922,3202,3919,3218,3913,3234,3913,3235,3912,3235,3911,3236,3910,3237,3906,3242,3903,3246,3898,3254,3896,3267,3896,3268,3896,3269,3893,3275,3899,3280,3901,3282,3905,3282,3905,3282,3906,3282,3913,3281,3920,3282,3921,3282,3922,3282,3937,3283,3952,3283,3954,3283,3955,3283,3981,3279,4007,3281,4014,3282,4018,3284,4031,3290,4042,3298,4049,3303,4058,3306,4068,3309,4079,3309,4086,3310,4090,3308,4092,3307,4094,3307,4099,3306,4101,3308,4103,3309,4104,3308,4112,3305,4117,3301,4120,3298,4123,3294,4128,3289,4134,3282,4136,3279,4139,3280,4156,3282,4167,3293,4175,3301,4178,3314,4181,3316,4186,3316,4189,3316,4191,3315,4195,3313,4200,3311,4200,3311,4201,3311,4207,3310,4211,3312,4212,3313,4213,3313,4217,3314,4218,3316,4219,3317,4219,3317,4221,3319,4222,3321,4224,3331,4226,3341,4227,3345,4229,3348,4229,3349,4230,3350,4243,3353,4255,3359,4260,3362,4266,3362,4271,3363,4277,3363,4278,3363,4279,3364,4283,3366,4287,3368,4290,3370,4294,3370,4304,3371,4311,3369,4314,3368,4316,3366,4316,3366,4316,3365,4319,3356,4321,3349,4322,3347,4324,3346,4331,3343,4335,3345,4352,3352,4366,3364,4372,3368,4378,3370,4382,3372,4384,3369,4387,3366,4390,3363,4392,3360,4390,3356,4386,3346,4385,3335,4384,3326,4388,3319,4391,3315,4398,3315,4401,3315,4404,3317,4405,3318,4406,3318,4410,3321,4414,3324,4416,3326,4418,3328,4420,3329,4421,3331,4423,3337,4425,3343,4425,3345,4426,3346,4439,3361,4455,3370,4463,3375,4471,3378,4474,3379,4476,3379,4480,3379,4484,3380,4491,3380,4495,3377,4505,3371,4508,3360,4511,3350,4506,3339,4503,3334,4498,3330,4486,3321,4475,3312,4463,3301,4453,3288,4450,3285,4451,3280,4453,3274,4457,3268,4459,3266,4462,3267,4465,3267,4467,3268,L,4471,3266,Q,4475,3262,4479,3259,4481,3256,4481,3253,4481,3253,4481,3252,4482,3249,4481,3246,4481,3246,4481,3245,4482,3240,4479,3237,4475,3233,4470,3231,4469,3230,4468,3230,4464,3229,4459,3229,4452,3229,4445,3229,4439,3229,4437,3232,4436,3233,4435,3234,4434,3234,4434,3235,4433,3238,4429,3241,4427,3243,4423,3243,4421,3243,4419,3242,4417,3242,4414,3242,4411,3241,4407,3240,4400,3238,4393,3236,4391,3235,4389,3234,4388,3234,4386,3234,4381,3233,4376,3233,4372,3232,4368,3232,4350,3232,4336,3222,4332,3220,4331,3214,4331,3213,4331,3211,4338,3200,4346,3192,4353,3185,4362,3182,4371,3178,4380,3178,4383,3178,4386,3179,4391,3180,4394,3182,4395,3183,4397,3184,4400,3187,4402,3192,4404,3200,4410,3203,4411,3204,4413,3204,4416,3206,4421,3207,4423,3208,4426,3209,4428,3210,4430,3212,4432,3213,4435,3215,4436,3215,4436,3215,4437,3214,4441,3214,4443,3215,4445,3215,4448,3215,4449,3215,L,4449,3214,Q,4432,3199,4428,3182,4425,3170,4421,3159,4419,3154,4418,3147,4417,3143,4419,3143,4419,3137,4415,3135,4414,3134,4412,3133,4408,3130,4412,3124,4418,3116,4425,3110,4429,3107,4430,3103,4431,3096,4427,3094,4418,3088,4405,3090,4402,3091,4400,3091,4381,3092,4363,3092,4351,3092,4341,3090,4331,3089,4321,3087,4319,3087,4317,3087,4307,3085,4297,3083,4288,3082,4280,3081,4278,3081,4275,3081,4268,3083,4262,3083,4257,3084,4254,3085,4253,3086,4251,3086,4243,3087,4236,3088,4230,3088,4223,3087,4222,3087,4221,3087,4213,3085,4205,3083,4200,3081,4200,3078,4202,3056,4210,3035,4213,3027,4217,3020,4233,2993,4248,2967,4256,2953,4259,2938,Q,4263,2916,4257,2894,Z]],label:"Louisiana",shortLabel:"LA",labelPosition:[406.6,300.4],labelAlignment:[CEN,MID]},WI:{outlines:[[M,4407,647,Q,4398,642,4393,637,4390,634,4389,632,4384,628,4378,620,4375,616,4370,609,4370,608,4368,607,4364,602,4364,597,4364,595,4365,593,4364,593,4362,593,4348,587,4331,589,4325,590,4318,589,4311,588,4307,586,4302,584,4297,582,4288,577,4280,570,4277,568,4275,564,4270,558,4275,553,4280,549,4287,547,4288,547,4289,546,4292,543,4290,541,4289,541,4288,539,4286,535,4282,534,4274,530,4265,528,4258,527,4255,529,4254,530,4252,530,4242,531,4237,535,4228,545,4213,548,4205,550,4200,553,4191,558,4187,561,4186,561,4184,561,4175,560,4169,562,4167,563,4164,563,4151,564,4143,565,4136,566,4133,566,4130,566,4122,567,4114,568,4099,570,4101,575,4100,581,4100,582,4100,583,4100,585,4100,587,4099,589,4100,592,4111,627,4101,662,4096,676,4087,688,4075,704,4060,717,4049,726,4038,734,4032,739,4032,747,4032,748,4032,749,4031,753,4032,756,4032,757,4032,758,4039,770,4049,778,4056,783,4061,790,4062,791,4062,793,4060,803,4055,811,4050,820,4050,834,4050,836,4051,837,4056,849,4052,861,4051,863,4051,865,4051,870,4049,873,4048,874,4048,876,4047,888,4049,902,4050,909,4055,913,4053,915,4056,918,4062,925,4063,933,4063,935,4065,936,4081,946,4097,955,4111,963,4125,969,4132,973,4136,978,4147,993,4154,1010,4157,1018,4162,1023,4166,1027,4173,1029,4183,1031,4191,1035,4192,1035,4193,1036,4197,1037,4199,1038,4211,1049,4228,1052,4229,1052,4230,1053,4232,1057,4238,1063,4239,1064,4239,1066,4239,1072,4238,1079,4236,1091,4232,1101,4228,1110,4232,1119,4234,1123,4237,1127,4240,1131,4243,1136,4245,1138,4245,1140,4246,1147,4244,1150,4243,1151,4242,1152,4242,1153,4242,1154,4241,1158,4243,1160,4248,1166,4251,1171,4252,1173,4252,1174,4253,1182,4250,1188,4245,1199,4241,1211,4236,1225,4243,1235,4244,1236,4245,1236,4264,1245,4280,1256,4290,1263,4300,1268,4303,1270,4306,1271,4308,1272,4309,1274,4313,1279,4313,1287,4313,1290,4313,1293,4319,1292,4324,1291,4330,1290,4335,1291,4339,1293,4344,1294,4352,1296,4360,1299,4365,1301,4368,1299,4370,1298,4372,1298,4393,1299,4412,1295,4424,1292,4436,1288,4440,1287,4445,1288,4464,1291,4482,1293,4508,1296,4534,1297,4536,1297,4537,1297,4548,1298,4559,1298,4564,1299,4569,1299,4575,1300,4578,1298,4582,1296,4589,1295,4591,1295,4593,1294,4604,1292,4615,1293,4623,1294,4631,1294,4645,1295,4658,1299,L,4658,1299,Q,4659,1297,4660,1295,4664,1285,4668,1276,4671,1269,4669,1264,4665,1250,4655,1237,4652,1233,4647,1230,4642,1225,4640,1219,4640,1215,4638,1212,4635,1207,4637,1200,4638,1199,4638,1198,4639,1191,4640,1185,4641,1184,4641,1182,4646,1161,4648,1139,4650,1124,4652,1109,4656,1082,4662,1055,4667,1033,4682,1024,4685,1022,4687,1018,4689,1016,4689,1014,4693,1002,4696,990,4701,966,4708,943,4714,927,4724,911,4735,894,4747,876,4750,872,4752,866,4755,859,4756,848,4756,847,4756,845,4757,837,4758,830,4754,830,4749,831,4748,831,4747,832,4741,839,4737,845,4736,847,4736,848,4733,853,4733,859,4733,868,4728,871,4726,872,4725,873,4715,880,4706,887,4694,896,4685,909,4672,927,4660,945,4657,949,4653,952,4651,946,4651,941,4653,929,4659,919,4666,907,4673,896,4685,878,4692,858,4688,852,4683,846,4677,839,4674,829,4673,822,4669,815,4668,813,4668,811,4671,805,4672,799,4673,792,4674,786,4675,778,4671,771,4655,748,4638,735,4636,733,4636,729,4636,727,4635,725,4632,718,4627,715,4626,714,4624,714,4618,714,4613,712,4607,710,4602,709,4584,705,4572,694,4564,685,4550,685,4548,685,4546,685,4532,684,4517,682,4504,673,4491,671,4490,671,4489,670,4481,665,4475,663,4446,653,4412,649,Q,4409,648,4407,647,Z]],label:"Wisconsin",shortLabel:"WI",labelPosition:[439.4,91.2],labelAlignment:[CEN,MID]},IL:{outlines:[[M,4658,1299,L,4658,1299,Q,4645,1296,4631,1295,4623,1294,4615,1293,4604,1292,4593,1295,4591,1295,4589,1295,4582,1296,4578,1299,4575,1301,4569,1300,4564,1299,4559,1299,4548,1298,4537,1297,4536,1297,4534,1297,4508,1296,4482,1293,4464,1291,4445,1288,4440,1287,4436,1289,4424,1293,4412,1295,4393,1299,4372,1298,4370,1298,4368,1299,4365,1301,4360,1300,4352,1297,4344,1295,4339,1293,4335,1292,4330,1290,4324,1292,4319,1293,4313,1293,4314,1302,4318,1309,4328,1328,4342,1345,4353,1357,4365,1368,4371,1372,4371,1380,4371,1386,4371,1391,4371,1399,4369,1407,4367,1417,4360,1424,4351,1436,4342,1447,4335,1456,4329,1466,4323,1477,4308,1485,4296,1492,4281,1492,4269,1493,4258,1495,4256,1496,4256,1499,4254,1506,4256,1509,4257,1510,4257,1512,4256,1514,4256,1516,4255,1525,4261,1532,4269,1540,4273,1548,4274,1549,4274,1551,4275,1553,4275,1554,4275,1555,4274,1556,4273,1562,4269,1564,4267,1566,4264,1567,4258,1572,4250,1584,4247,1588,4246,1593,4245,1594,4245,1595,4237,1618,4225,1640,4222,1646,4219,1652,4219,1654,4218,1655,4215,1660,4213,1659,4211,1659,4210,1666,4210,1668,4209,1670,4205,1685,4202,1700,4200,1713,4202,1725,4202,1728,4204,1731,4207,1738,4207,1746,4209,1753,4211,1754,4217,1758,4224,1758,4225,1758,4226,1758,4233,1761,4235,1768,4237,1774,4241,1781,4242,1782,4243,1782,4247,1785,4252,1786,4263,1788,4266,1797,4270,1810,4276,1823,4280,1833,4291,1840,4295,1843,4300,1844,4301,1844,4301,1845,4303,1862,4304,1878,4304,1890,4305,1902,4320,1899,4334,1893,4345,1888,4356,1882,4357,1882,4359,1882,4362,1882,4364,1885,4364,1886,4366,1886,4373,1888,4373,1897,4373,1899,4373,1900,4373,1911,4373,1921,4373,1923,4373,1924,4378,1932,4372,1938,4367,1944,4361,1951,4356,1956,4355,1967,4354,1969,4354,1970,4353,1972,4353,1974,4352,1975,4352,1976,4352,1983,4350,1989,4349,1991,4349,1992,4350,1998,4353,2002,4358,2007,4363,2012,4374,2022,4385,2030,4398,2041,4414,2049,4444,2065,4456,2097,4460,2107,4459,2117,4458,2126,4454,2134,4452,2138,4449,2142,4447,2144,4447,2147,4448,2153,4451,2152,4455,2155,4456,2159,4462,2172,4469,2184,4470,2187,4475,2188,4480,2190,4482,2197,4483,2196,4483,2196,4485,2193,4486,2186,4488,2181,4490,2178,4495,2170,4501,2164,4504,2162,4506,2160,4511,2156,4518,2161,4519,2162,4521,2163,4527,2166,4535,2168,4552,2173,4571,2173,4580,2173,4581,2170,4588,2153,4587,2132,4586,2129,4585,2125,4599,2123,4611,2120,4613,2119,4615,2119,4617,2119,4618,2117,4636,2094,4633,2067,4632,2060,4630,2053,4627,2045,4628,2035,4628,2032,4628,2029,4629,2028,4630,2027,4651,2003,4672,1984,4674,1983,4675,1980,4689,1950,4697,1920,4700,1911,4694,1899,4689,1890,4689,1880,4689,1866,4693,1852,4696,1844,4698,1836,4699,1832,4697,1830,4696,1829,4696,1827,4696,1823,4696,1819,L,4696,1818,Q,4698,1817,4697,1815,4697,1813,4698,1807,4699,1801,4701,1790,4701,1787,4703,1783,4703,1781,4703,1779,4704,1767,4701,1757,4700,1755,4700,1753,4700,1735,4700,1716,4700,1706,4698,1696,4692,1675,4694,1652,4695,1627,4695,1602,4694,1564,4693,1525,4693,1523,4693,1521,4691,1484,4693,1449,4694,1447,4694,1445,4691,1443,4691,1438,4691,1436,4691,1434,4690,1420,4691,1405,4691,1403,4691,1401,L,4691,1398,Q,4690,1398,4689,1396,4679,1383,4669,1370,4666,1366,4662,1361,4661,1360,4660,1358,4659,1357,4658,1356,4656,1352,4656,1350,4655,1343,4656,1337,4659,1325,4658,1315,4658,1310,4656,1307,4655,1306,4656,1304,Q,4657,1302,4658,1299,Z]],label:"Illinois",shortLabel:"IL",labelPosition:[445.2,174.2],labelAlignment:[CEN,MID]},KY:{outlines:[[M,5123,1914,Q,5110,1915,5107,1907,5107,1905,5106,1904,5104,1901,5104,1898,5105,1886,5101,1878,5100,1877,5099,1876,5088,1873,5077,1868,5075,1868,5075,1866,5071,1855,5060,1854,5059,1854,5057,1855,5055,1856,5049,1857,5046,1858,5042,1858,5036,1862,5035,1872,5035,1874,5035,1876,5035,1885,5037,1894,5037,1898,5035,1899,5034,1900,5034,1902,5033,1903,5033,1903,5030,1909,5023,1910,5020,1911,5017,1909,5016,1909,5014,1909,5005,1909,4997,1914,4996,1914,4994,1914,4985,1914,4977,1910,4955,1930,4935,1952,4929,1958,4926,1966,4925,1968,4922,1970,4917,1974,4917,1981,4917,1983,4917,1984,4915,1990,4909,1992,4903,1994,4901,1997,4901,1998,4900,1999,4898,2003,4899,2007,4903,2023,4891,2032,4876,2042,4864,2032,4857,2026,4853,2018,4853,2017,4853,2016,L,4852,2012,Q,4842,2015,4834,2023,4819,2038,4806,2054,4799,2064,4791,2073,4783,2055,4778,2036,4767,2045,4757,2055,4749,2065,4739,2069,4735,2070,4729,2065,4716,2052,4699,2049,4695,2049,4693,2050,4692,2051,4690,2051,4681,2052,4676,2054,4663,2060,4648,2065,4643,2067,4638,2067,4637,2067,4635,2065,4634,2066,4633,2067,4633,2067,4633,2067,4636,2094,4618,2117,4617,2118,4615,2118,4613,2119,4611,2119,4599,2123,4585,2125,4586,2128,4587,2132,4588,2152,4581,2169,4580,2172,4571,2172,4552,2172,4535,2168,4527,2165,4521,2163,4519,2162,4518,2161,4511,2155,4506,2160,4504,2162,4501,2164,4495,2170,4490,2178,4488,2181,4486,2185,4485,2193,4483,2196,4482,2200,4485,2204,4493,2215,4488,2225,4483,2237,4472,2245,4466,2250,4460,2254,4458,2255,4455,2258,4450,2261,4449,2268,L,5209,2253,Q,5212,2249,5215,2245,5226,2234,5239,2224,5251,2216,5263,2207,5265,2205,5271,2202,5272,2202,5273,2201,5284,2198,5292,2190,5293,2189,5294,2187,5296,2185,5299,2182,5310,2173,5323,2169,5330,2167,5335,2162,5337,2160,5338,2159,5356,2145,5373,2129,5377,2126,5377,2121,5375,2118,5373,2114,5372,2111,5369,2107,5367,2103,5366,2101,5361,2095,5355,2090,5341,2078,5330,2063,5321,2050,5316,2034,5314,2027,5312,2020,5311,2013,5310,2007,5309,1997,5311,1987,5312,1983,5313,1980,5314,1979,5314,1979,5309,1974,5306,1967,5304,1961,5298,1958,5297,1958,5297,1957,5294,1951,5291,1950,5289,1949,5287,1947,5286,1946,5285,1944,5283,1942,5282,1937,5282,1932,5278,1931,5277,1930,5277,1929,5275,1922,5269,1920,5268,1919,5267,1919,5266,1919,5265,1919,5259,1920,5256,1922,5246,1931,5234,1937,5231,1939,5226,1938,5211,1936,5195,1936,5190,1937,5184,1937,5182,1938,5181,1937,5175,1934,5172,1929,5172,1928,5172,1927,5171,1924,5169,1920,5165,1913,5154,1917,5154,1917,5153,1918,5151,1918,5149,1918,5145,1916,5142,1915,Q,5133,1913,5123,1914,Z]],label:"Kentucky",shortLabel:"KY",labelPosition:[501.3,210.1],labelAlignment:[CEN,MID]},TN:{outlines:[[M,5293,2357,Q,5320,2335,5350,2328,5352,2327,5353,2326,5354,2324,5359,2324,5361,2325,5363,2324,5371,2324,5377,2321,5391,2314,5407,2308,5417,2305,5419,2298,5420,2296,5420,2294,5426,2274,5440,2247,L,4449,2268,Q,4448,2273,4449,2278,4450,2286,4447,2291,4442,2300,4441,2311,4441,2315,4441,2319,4442,2328,4440,2337,4440,2339,4439,2341,4438,2341,4438,2342,4432,2350,4425,2361,4416,2373,4411,2389,4411,2392,4407,2394,4399,2400,4399,2409,4400,2431,4385,2441,4382,2443,4381,2446,4381,2447,4380,2447,4376,2450,4376,2457,4376,2460,4377,2470,4378,2477,4371,2482,4366,2485,4365,2490,4365,2492,4366,2494,L,5100,2493,Q,5100,2490,5101,2488,5101,2486,5101,2484,5102,2482,5103,2481,5110,2473,5115,2466,5118,2463,5119,2456,5119,2455,5120,2454,5124,2446,5131,2441,5133,2439,5138,2438,5157,2432,5178,2421,5193,2413,5210,2405,5212,2404,5214,2403,5224,2402,5232,2397,5243,2389,5255,2378,5256,2376,5258,2375,5263,2370,5273,2366,5275,2365,5275,2364,5277,2360,5284,2360,5290,2361,5291,2359,Q,5292,2358,5293,2357,Z]],label:"Tennessee",shortLabel:"TN",labelPosition:[490.2,237],labelAlignment:[CEN,MID]},MS:{outlines:[[M,4632,2494,L,4366,2494,Q,4365,2494,4364,2495,4356,2502,4350,2513,4348,2516,4347,2518,4328,2551,4307,2581,4305,2583,4304,2586,4300,2605,4289,2620,4285,2625,4282,2630,4275,2641,4266,2656,4262,2662,4260,2667,4257,2671,4256,2676,4255,2678,4254,2680,4237,2714,4238,2752,4238,2757,4236,2762,4239,2765,4239,2766,4239,2771,4241,2774,4241,2776,4242,2777,4244,2780,4242,2785,4242,2787,4241,2788,4240,2794,4237,2799,4237,2800,4237,2801,4235,2815,4235,2829,4234,2843,4238,2856,4242,2867,4249,2877,4255,2885,4257,2894,4263,2916,4259,2938,4256,2953,4248,2967,4233,2994,4217,3020,4213,3028,4210,3036,4202,3057,4200,3078,4200,3081,4205,3083,4213,3086,4221,3088,4222,3088,4223,3088,4230,3089,4236,3088,4243,3087,4251,3087,4253,3087,4254,3086,4257,3084,4262,3084,4268,3083,4275,3082,4278,3081,4280,3082,4288,3083,4297,3084,4307,3085,4317,3087,4319,3088,4321,3088,4331,3089,4341,3091,4351,3093,4363,3093,4381,3092,4400,3091,4402,3091,4405,3091,4418,3088,4427,3094,4431,3096,4430,3103,4429,3108,4425,3110,4418,3116,4412,3125,4408,3131,4412,3134,4414,3135,4415,3136,4419,3137,4419,3143,4417,3144,4418,3148,4419,3154,4421,3160,4425,3170,4428,3183,4432,3199,4449,3215,4450,3215,4450,3214,4456,3210,4465,3208,4477,3206,4489,3203,4500,3200,4511,3199,4525,3199,4539,3203,4544,3204,4548,3204,4565,3203,4581,3200,4583,3200,4585,3199,4588,3199,4590,3199,4590,3197,4590,3195,4590,3193,4591,3190,4593,3183,4591,3173,4590,3166,4588,3162,4588,3160,4587,3158,4586,3152,4586,3145,4585,3136,4585,3125,4585,3123,4585,3121,4586,3113,4588,3107,4588,3105,4589,3103,4587,3093,4589,3088,L,4585,3088,Q,4588,3079,4589,3068,4589,3067,4589,3065,4583,3051,4576,3039,4567,3021,4569,3e3,4572,2982,4573,2962,4573,2960,4573,2959,4573,2958,4573,2958,4572,2957,4572,2956,4571,2954,4572,2952,4576,2940,4579,2925,4583,2910,4586,2895,4588,2890,4587,2884,4587,2882,4587,2880,4586,2872,4587,2864,4587,2858,4588,2853,4589,2841,4588,2838,4587,2829,4586,2820,4586,2817,4587,2814,4590,2804,4595,2793,4595,2792,4596,2791,4604,2773,4602,2752,4602,2745,4601,2739,4601,2736,4600,2734,4597,2724,4598,2713,4598,2708,4600,2703,4606,2682,4609,2658,4610,2656,4610,2654,4616,2640,4614,2623,4614,2621,4613,2619,4611,2612,4612,2604,4617,2582,4621,2558,4624,2546,4628,2535,4631,2526,4631,2516,4631,2514,4631,2513,Q,4630,2508,4632,2494,Z]],label:"Mississippi",shortLabel:"MS",labelPosition:[442.3,277.5],labelAlignment:[CEN,MID]},AL:{outlines:[[M,4938,2494,L,4632,2494,Q,4630,2508,4631,2513,4631,2514,4631,2516,4631,2526,4628,2535,4624,2546,4621,2558,4617,2582,4612,2604,4611,2612,4613,2619,4614,2621,4614,2623,4616,2640,4610,2654,4610,2656,4609,2658,4606,2682,4600,2703,4598,2708,4598,2713,4597,2724,4600,2734,4601,2736,4601,2739,4602,2745,4602,2752,4604,2773,4596,2791,4595,2792,4595,2793,4590,2804,4587,2814,4586,2817,4586,2820,4587,2829,4588,2838,4589,2841,4588,2853,4587,2858,4587,2864,4586,2872,4587,2880,4587,2882,4587,2884,4588,2890,4586,2895,4583,2910,4579,2925,4576,2940,4572,2952,4571,2954,4572,2956,4572,2957,4573,2958,4573,2958,4573,2959,4573,2960,4573,2962,4572,2982,4569,3e3,4567,3021,4576,3039,4583,3051,4589,3065,4589,3067,4589,3068,4588,3079,4585,3088,L,4588,3088,Q,4586,3093,4589,3102,4588,3104,4587,3106,4585,3113,4585,3121,4585,3123,4585,3125,4584,3135,4585,3145,4586,3151,4587,3158,4587,3160,4588,3161,4589,3166,4590,3172,4592,3183,4590,3190,4589,3192,4590,3195,4590,3197,4590,3198,4596,3198,4601,3197,4608,3194,4613,3192,4616,3191,4616,3187,4617,3186,4617,3185,4618,3184,4618,3183,4618,3181,4618,3180,4620,3174,4622,3178,4631,3174,4637,3163,4639,3158,4643,3155,4645,3154,4646,3153,4650,3147,4653,3145,4653,3156,4654,3167,4658,3173,4656,3182,4656,3183,4655,3184,4650,3188,4650,3195,4650,3197,4653,3200,4662,3207,4671,3208,4673,3209,4675,3209,4691,3211,4697,3200,4702,3193,4707,3186,4710,3181,4717,3181,4722,3181,4727,3182,4727,3179,4725,3175,4724,3171,4722,3167,4722,3166,4721,3165,4719,3164,4720,3159,4720,3159,4720,3158,4720,3153,4718,3149,4710,3136,4702,3123,4698,3116,4696,3109,4693,3099,4692,3088,L,5007,3088,5007,3084,Q,5007,3083,5006,3082,5006,3081,5006,3079,5007,3069,5010,3057,5012,3050,5013,3043,5014,3032,5010,3022,5006,3014,5e3,3006,4993,2998,4992,2987,4992,2974,4997,2962,5e3,2956,5003,2950,5004,2946,5005,2943,5008,2936,5008,2926,5007,2913,5009,2904,5011,2897,5014,2891,5017,2884,5016,2875,5016,2870,5015,2866,5015,2864,5014,2863,5012,2860,5009,2857,5004,2850,5e3,2844,4992,2833,4984,2816,4976,2797,4971,2776,4967,2760,4968,2742,4968,2724,4967,2705,4965,2686,4962,2667,4960,2648,4959,2628,4959,2625,4958,2623,4956,2612,4950,2604,4950,2603,4949,2603,4942,2599,4940,2593,4937,2586,4938,2578,4938,2577,4937,2575,4937,2572,4937,2569,4936,2541,4937,2512,Q,4938,2510,4938,2494,Z]],label:"Alabama",shortLabel:"AL",labelPosition:[479.2,279.1],labelAlignment:[CEN,MID]},GA:{outlines:[[M,5245,2517,Q,5247,2516,5248,2514,5261,2501,5278,2493,L,4938,2493,Q,4938,2509,4937,2511,4936,2540,4937,2568,4937,2571,4937,2574,4938,2576,4938,2577,4937,2585,4940,2592,4942,2598,4949,2602,4950,2602,4950,2603,4956,2611,4958,2622,4959,2624,4959,2627,4960,2647,4962,2666,4965,2685,4967,2704,4968,2723,4968,2741,4967,2759,4971,2775,4976,2796,4984,2815,4992,2832,5e3,2843,5004,2849,5009,2856,5012,2859,5014,2862,5015,2863,5015,2865,5016,2869,5016,2874,5017,2883,5014,2890,5011,2896,5009,2903,5007,2912,5008,2925,5008,2935,5005,2942,5004,2945,5003,2949,5e3,2955,4997,2961,4992,2973,4992,2986,4993,2997,5e3,3005,5006,3013,5010,3021,5014,3031,5013,3042,5012,3049,5010,3056,5007,3068,5006,3078,5006,3080,5006,3081,5007,3082,5007,3083,5008,3085,5009,3087,5011,3090,5012,3095,5013,3097,5014,3098,5020,3105,5026,3116,5026,3117,5026,3119,5026,3125,5026,3132,5026,3138,5032,3140,5035,3141,5037,3141,5071,3142,5104,3144,5126,3145,5148,3146,5156,3146,5165,3145,5201,3144,5236,3151,5237,3151,5238,3152,5246,3162,5258,3158,5261,3158,5264,3158,5273,3157,5281,3155,5285,3154,5290,3154,5299,3154,5308,3155,5309,3155,5310,3156,5311,3159,5316,3161,5323,3165,5331,3168,5332,3169,5334,3169,5348,3171,5359,3177,5361,3178,5364,3182,5367,3186,5371,3183,5379,3176,5385,3167,5390,3160,5394,3157,5385,3142,5374,3130,5379,3127,5384,3125,5387,3124,5389,3123,5393,3120,5400,3122,5403,3123,5406,3123,5419,3123,5420,3134,5431,3135,5441,3135,5445,3135,5450,3135,5454,3128,5458,3120,5459,3119,5459,3118,5458,3110,5454,3101,5454,3099,5453,3097,5454,3095,5455,3094,5456,3093,5457,3091,5458,3090,5459,3087,5463,3081,5467,3076,5468,3074,5469,3072,5470,3071,5471,3069,5474,3064,5477,3060,5486,3049,5491,3035,5498,3020,5502,3004,5511,2974,5520,2944,5518,2948,5512,2944,5505,2938,5499,2931,5491,2923,5486,2912,5479,2896,5479,2879,5478,2864,5470,2855,5468,2854,5467,2851,5466,2850,5466,2848,5462,2840,5458,2833,5458,2832,5457,2831,5456,2825,5455,2819,5455,2817,5454,2815,5449,2806,5437,2798,5430,2793,5422,2785,5420,2783,5419,2778,5415,2763,5409,2750,5408,2749,5407,2747,5401,2740,5395,2732,5390,2726,5386,2721,5385,2720,5384,2719,5380,2714,5376,2710,5351,2690,5329,2667,5321,2659,5313,2651,5312,2650,5311,2649,5302,2636,5293,2625,5292,2624,5292,2623,5291,2616,5286,2612,5281,2609,5276,2607,5275,2606,5273,2606,5270,2605,5267,2603,5258,2593,5250,2582,5234,2558,5222,2531,5223,2528,5227,2527,5228,2527,5229,2526,Q,5239,2521,5245,2517,Z]],label:"Georgia",shortLabel:"GA",labelPosition:[522.9,283.8],labelAlignment:[CEN,MID]},MI:{outlines:[[M,5027,556,Q,5026,555,5025,554,5013,549,5001,554,4991,557,4979,558,4978,558,4977,558,4965,559,4953,559,4939,559,4928,568,4926,570,4923,572,4916,576,4907,577,4906,577,4904,577,4887,576,4876,581,4874,582,4872,582,4864,583,4861,589,4855,600,4845,609,4843,611,4841,612,4832,616,4821,618,4820,617,4819,616,4815,610,4808,608,4782,603,4756,600,4733,598,4710,600,4709,600,4708,599,4705,592,4700,584,4692,571,4688,556,4687,554,4687,552,4688,538,4675,532,4666,527,4655,523,4642,522,4629,522,4616,521,4609,530,4606,534,4602,536,4601,537,4600,537,4596,538,4596,541,4595,540,4595,539,4594,537,4593,536,4592,534,4591,532,4586,527,4584,521,4583,519,4582,517,4579,511,4586,504,4588,502,4590,498,4591,497,4592,496,4604,483,4625,470,4636,464,4645,457,4658,446,4663,431,4664,428,4657,424,4643,418,4627,415,4617,414,4609,421,4592,433,4574,446,4569,450,4564,455,4563,456,4562,457,4560,461,4560,467,4561,477,4556,484,4553,488,4550,489,4548,489,4546,490,4538,491,4530,492,4517,494,4506,504,4499,510,4491,513,4480,517,4474,526,4474,527,4473,527,4458,533,4443,532,4442,532,4441,531,4437,527,4432,531,4431,532,4429,533,4424,537,4419,542,4418,544,4416,544,4408,545,4401,548,4388,553,4379,563,4367,576,4365,593,4364,595,4364,597,4364,602,4368,607,4370,608,4370,609,4375,616,4378,620,4384,628,4389,632,4390,634,4393,637,4398,642,4407,647,4409,648,4412,649,4446,653,4475,663,4481,665,4489,670,4490,671,4491,671,4504,673,4517,682,4532,684,4546,685,4548,685,4550,685,4564,685,4572,694,4584,705,4602,709,4607,710,4613,712,4618,714,4624,714,4626,714,4627,715,4632,718,4635,725,4636,727,4636,729,4636,733,4638,735,4655,748,4671,771,4675,778,4674,786,4673,792,4672,799,4671,805,4668,811,4668,813,4669,815,4673,822,4674,829,4677,839,4683,846,4688,852,4692,858,4696,848,4698,837,4700,831,4702,824,4704,817,4707,810,4711,795,4723,783,4724,781,4726,779,4728,776,4730,772,4733,768,4735,760,4735,758,4737,756,4745,745,4758,739,4765,736,4772,733,4773,732,4775,732,4780,730,4784,730,4797,731,4809,734,4818,737,4823,744,4826,747,4825,753,4831,751,4837,748,4839,747,4840,746,4852,733,4860,718,4864,710,4874,707,4876,706,4878,704,4886,699,4895,703,4897,703,4898,703,4910,701,4922,697,4929,694,4935,693,4942,691,4946,689,4955,685,4963,685,4969,685,4976,687,4994,693,5013,691,5017,691,5017,694,5017,695,5018,695,5024,698,5028,703,5029,705,5030,707,5031,712,5036,718,5032,720,5028,725,5023,735,5017,746,5014,753,5009,760,5007,763,5005,764,5004,766,5001,769,4997,772,4997,779,5001,780,5005,782,5010,785,5011,789,5014,797,5010,801,5003,806,4993,810,4981,814,4974,824,4965,837,4967,852,4967,854,4967,856,4966,871,4964,885,4964,886,4963,887,4958,894,4953,906,4951,910,4946,912,4945,913,4944,912,4940,910,4936,906,4935,906,4936,904,4936,902,4936,900,4937,895,4936,891,4935,886,4936,882,4936,881,4936,880,4937,872,4938,867,4940,859,4935,856,4931,852,4927,855,4923,858,4920,865,4919,867,4918,869,4904,888,4883,901,4870,909,4863,921,4852,939,4848,959,4846,964,4848,967,4849,968,4849,970,4851,983,4850,998,4850,999,4849,999,4841,1011,4833,1024,4829,1028,4828,1033,4825,1045,4834,1055,4835,1056,4836,1056,4839,1057,4840,1059,4842,1067,4840,1074,4838,1081,4833,1088,4829,1094,4827,1104,4827,1108,4826,1112,4826,1113,4826,1114,4825,1120,4824,1126,4824,1131,4826,1131,4826,1133,4826,1134,4827,1141,4830,1147,4838,1165,4850,1183,4857,1195,4860,1208,4862,1215,4862,1222,4863,1226,4862,1230,4862,1256,4862,1283,4862,1287,4863,1290,4865,1311,4851,1327,4842,1338,4836,1352,4829,1368,4822,1384,4820,1388,4818,1392,4815,1396,4812,1399,4811,1400,4810,1401,4806,1408,4799,1414,4800,1414,4802,1415,4805,1413,4812,1414,4814,1414,4815,1415,4818,1416,4821,1417,4831,1421,4841,1424,4845,1425,4849,1424,4856,1423,4865,1422,4871,1422,4880,1421,4882,1420,4884,1420,4897,1417,4911,1419,4920,1420,4928,1418,4930,1418,4931,1419,4939,1424,4948,1423,4957,1422,4964,1423,4986,1426,5007,1424,5015,1423,5022,1424,5031,1426,5040,1427,5048,1429,5055,1430,5080,1435,5105,1436,5115,1437,5125,1435,5146,1432,5167,1428,5179,1426,5191,1427,5195,1428,5199,1428,5208,1429,5217,1430,5224,1430,5227,1427,5226,1420,5228,1414,5230,1411,5232,1408,5235,1401,5237,1394,5238,1387,5243,1381,5249,1373,5254,1368,5256,1365,5257,1361,5257,1357,5258,1353,5258,1352,5259,1351,5259,1348,5260,1344,5260,1342,5260,1340,5262,1315,5285,1300,5296,1293,5307,1285,5311,1282,5314,1278,5326,1261,5335,1243,5341,1234,5335,1224,5330,1214,5328,1203,5325,1186,5325,1167,5325,1165,5324,1164,5320,1157,5318,1149,5315,1151,5316,1147,5316,1144,5316,1141,5315,1140,5315,1139,5314,1134,5314,1128,5314,1116,5311,1103,5311,1101,5310,1099,5308,1092,5309,1082,5310,1076,5309,1073,5309,1071,5308,1070,5301,1061,5290,1054,5290,1054,5289,1053,5288,1047,5285,1045,5281,1042,5277,1040,5272,1037,5267,1038,5253,1041,5240,1048,5232,1052,5226,1060,5218,1073,5209,1086,5201,1097,5190,1105,5181,1112,5171,1118,5168,1120,5163,1119,5157,1116,5151,1111,5148,1109,5148,1103,5147,1090,5151,1079,5151,1076,5153,1074,5158,1067,5163,1058,5171,1047,5182,1039,5192,1031,5200,1022,5206,1015,5211,1008,5212,1007,5214,1005,5218,1001,5218,996,5219,990,5221,985,5219,979,5222,974,5228,961,5228,946,5229,932,5226,918,5225,907,5222,897,5220,893,5217,889,5212,883,5214,879,5218,871,5225,863,5228,861,5227,856,5224,844,5219,832,5216,826,5213,821,5200,800,5176,798,5174,798,5173,796,5166,788,5165,777,5165,775,5164,774,5163,773,5162,769,5161,765,5156,765,5155,765,5154,765,5148,764,5143,764,5127,765,5117,761,5110,757,5101,757,5099,757,5097,757,5091,756,5084,757,5073,759,5069,751,5068,749,5066,745,5066,744,5065,742,5064,740,5063,737,5059,730,5054,724,5054,723,5053,722,5050,719,5046,717,5045,716,5043,714,5043,713,5042,712,5040,705,5043,702,5050,694,5054,688,5056,686,5057,686,5063,684,5069,684,5070,684,5071,684,5082,684,5093,685,5095,685,5097,686,5107,692,5117,695,5124,698,5130,696,5132,696,5134,695,5139,694,5145,694,5153,695,5158,699,5159,700,5159,701,5164,716,5180,717,5197,717,5196,703,5195,694,5193,688,5190,680,5185,679,5183,679,5180,679,5170,678,5161,680,5160,681,5158,681,5154,684,5147,683,5145,683,5144,682,5139,679,5139,672,5139,671,5138,670,5131,669,5125,666,5116,662,5110,656,5109,655,5109,653,5110,641,5110,627,5110,624,5110,620,5109,613,5106,609,5098,599,5086,603,5080,605,5075,609,5074,610,5073,610,5062,614,5049,613,5041,613,5033,610,5031,610,5029,609,5026,609,5023,609,5014,608,5010,604,5009,603,5008,602,5007,589,5016,581,5022,576,5028,569,5029,569,5029,567,5030,565,5030,563,Q,5030,558,5027,556,Z]],label:"Michigan",shortLabel:"MI",labelPosition:[502.1,114],labelAlignment:[CEN,MID]},IN:{outlines:[[M,4849,1424,Q,4845,1425,4841,1424,4831,1421,4821,1417,4818,1416,4815,1415,4814,1414,4812,1414,4805,1413,4802,1415,4800,1414,4799,1414,4798,1415,4796,1416,4795,1417,4794,1418,4777,1430,4763,1446,4756,1453,4749,1457,4748,1458,4746,1458,4745,1458,4744,1458,4743,1459,4742,1460,4734,1463,4727,1463,4727,1460,4725,1458,4724,1457,4723,1456,4723,1451,4718,1449,4712,1446,4701,1446,L,4701,1446,Q,4694,1444,4693,1449,4691,1484,4693,1521,4693,1523,4693,1524,4694,1563,4695,1602,4695,1627,4694,1651,4692,1675,4698,1696,4700,1705,4700,1716,4700,1734,4700,1753,4700,1755,4701,1756,4704,1766,4703,1778,4703,1780,4703,1782,4701,1787,4701,1790,4698,1801,4696,1809,4698,1813,4697,1815,4697,1817,4696,1819,4696,1823,4696,1826,4696,1828,4697,1829,4699,1832,4698,1835,4696,1844,4693,1852,4689,1866,4689,1880,4689,1889,4694,1898,4700,1910,4697,1919,4689,1950,4675,1979,4674,1982,4672,1984,4651,2002,4630,2027,4629,2028,4628,2029,4628,2031,4628,2034,4627,2044,4630,2053,4632,2060,4633,2067,4633,2067,4633,2067,4634,2066,4635,2065,4637,2067,4638,2067,4643,2067,4648,2065,4663,2060,4676,2054,4681,2052,4690,2051,4692,2051,4693,2050,4695,2049,4699,2049,4716,2052,4729,2065,4735,2070,4739,2069,4749,2065,4757,2055,4767,2045,4778,2036,4783,2055,4791,2073,4799,2064,4806,2054,4819,2038,4834,2023,4842,2015,4852,2012,L,4853,2016,Q,4853,2017,4853,2018,4857,2026,4864,2032,4876,2042,4891,2032,4903,2023,4899,2007,4898,2003,4900,1999,4901,1998,4901,1997,4903,1994,4909,1992,4915,1990,4917,1984,4917,1983,4917,1981,4917,1974,4922,1970,4925,1968,4926,1966,4929,1958,4935,1952,4955,1930,4977,1910,4985,1914,4994,1914,4996,1914,4997,1914,5005,1909,5014,1909,5016,1909,5017,1909,5020,1911,5023,1910,5030,1909,5033,1903,5033,1903,5034,1902,5034,1900,5035,1899,5037,1898,5037,1894,5035,1885,5035,1876,5035,1874,5035,1872,5036,1862,5042,1858,5042,1856,5042,1854,5043,1852,5043,1850,5044,1848,5044,1845,5046,1840,5044,1834,5042,1827,5040,1821,5038,1808,5039,1795,5040,1778,5040,1760,5040,1729,5040,1698,5041,1683,5041,1668,5041,1639,5043,1609,5044,1593,5045,1576,5047,1557,5045,1538,5042,1520,5037,1504,5034,1498,5035,1491,5036,1486,5036,1480,5036,1477,5037,1475,5038,1471,5038,1467,5037,1466,5037,1464,5038,1446,5040,1427,5031,1426,5022,1424,5015,1423,5007,1424,4986,1426,4964,1423,4957,1422,4948,1423,4939,1424,4931,1419,4930,1418,4928,1418,4920,1420,4911,1419,4897,1417,4884,1420,4882,1420,4880,1421,4871,1422,4865,1422,Q,4856,1423,4849,1424,Z]],label:"Indiana",shortLabel:"IN",labelPosition:[483.7,174.3],labelAlignment:[CEN,MID]},OH:{outlines:[[M,5539,1406,Q,5518,1409,5501,1422,5485,1433,5468,1444,5459,1450,5447,1457,5437,1462,5426,1462,5425,1462,5424,1462,5423,1465,5419,1465,5407,1463,5397,1466,5392,1468,5384,1470,5374,1472,5369,1476,5361,1481,5352,1484,5341,1489,5330,1486,5306,1482,5283,1472,5277,1469,5271,1466,5270,1465,5268,1465,5264,1464,5259,1463,5258,1463,5257,1463,5243,1460,5238,1451,5238,1450,5237,1449,5229,1443,5227,1432,5226,1430,5226,1427,5224,1430,5217,1430,5208,1429,5198,1428,5195,1428,5191,1427,5179,1426,5167,1428,5146,1432,5124,1435,5114,1437,5104,1436,5080,1435,5055,1430,5047,1429,5040,1427,5038,1446,5037,1464,5037,1466,5037,1467,5038,1471,5036,1475,5036,1477,5036,1480,5035,1486,5035,1491,5034,1498,5036,1504,5042,1520,5044,1538,5047,1557,5045,1576,5043,1593,5042,1609,5040,1639,5040,1668,5040,1683,5040,1698,5039,1729,5039,1760,5039,1778,5038,1795,5038,1808,5040,1821,5041,1827,5043,1834,5045,1840,5044,1845,5043,1848,5043,1850,5042,1852,5042,1854,5041,1856,5041,1858,5045,1858,5049,1857,5054,1856,5057,1855,5058,1854,5060,1854,5071,1855,5074,1866,5075,1868,5077,1868,5088,1873,5099,1876,5100,1877,5100,1878,5105,1886,5103,1898,5103,1901,5105,1904,5106,1905,5107,1907,5110,1915,5123,1914,5132,1913,5141,1915,5144,1916,5149,1918,5150,1918,5152,1918,5153,1917,5154,1917,5164,1913,5168,1920,5170,1924,5171,1927,5171,1928,5172,1929,5174,1934,5180,1937,5182,1938,5183,1937,5189,1937,5194,1936,5210,1936,5226,1938,5230,1939,5233,1937,5245,1931,5256,1922,5259,1920,5264,1919,5265,1919,5266,1919,5267,1919,5268,1920,5275,1922,5276,1929,5276,1930,5277,1931,5282,1932,5282,1937,5283,1942,5284,1944,5286,1946,5287,1947,5288,1949,5290,1950,5294,1951,5296,1957,5297,1958,5298,1958,5304,1961,5306,1967,5309,1974,5313,1978,5315,1974,5317,1971,5323,1962,5332,1955,5344,1947,5354,1938,5367,1928,5371,1913,5373,1905,5370,1894,5369,1889,5370,1887,5374,1882,5378,1876,5379,1875,5380,1875,5385,1876,5387,1873,5388,1872,5390,1872,5399,1872,5402,1878,5407,1885,5415,1882,5423,1879,5422,1872,5422,1860,5425,1848,5429,1835,5438,1823,5439,1822,5441,1821,5455,1816,5472,1818,5476,1818,5479,1816,5480,1815,5481,1814,5492,1809,5502,1801,5504,1800,5506,1799,5509,1798,5510,1793,5510,1792,5511,1792,5518,1787,5522,1778,5522,1777,5523,1775,5529,1753,5529,1731,5529,1729,5529,1727,5531,1721,5534,1717,5535,1716,5535,1714,5555,1701,5556,1679,5556,1676,5554,1671,L,5554,1671,Q,5553,1670,5553,1668,5551,1655,5553,1644,5554,1634,5559,1625,5562,1621,5568,1618,L,5568,1396,5566,1396,Q,5565,1397,5563,1397,5558,1400,5552,1402,5550,1403,5547,1404,5546,1405,5544,1405,5543,1405,5541,1405,Q,5540,1406,5539,1406,Z]],label:"Ohio",shortLabel:"OH",labelPosition:[530.1,168.8],labelAlignment:[CEN,MID]},PA:{outlines:[[M,6220,1396,Q,6215,1393,6210,1387,6209,1384,6206,1382,L,5662,1384,5662,1343,Q,5662,1341,5658,1343,5633,1357,5608,1370,5605,1372,5602,1374,5600,1375,5599,1376,5586,1386,5569,1395,L,5568,1618,Q,5564,1643,5562,1668,5562,1668,5562,1669,5562,1672,5564,1674,5565,1675,5566,1677,5572,1689,5572,1707,5572,1723,5574,1740,5574,1750,5579,1755,5585,1761,5596,1761,5633,1763,5670,1766,5684,1768,5697,1769,L,6166,1755,Q,6170,1749,6176,1741,6177,1741,6178,1740,6184,1739,6189,1737,6191,1737,6192,1737,6198,1741,6204,1745,6208,1748,6209,1751,6211,1750,6213,1747,L,6216,1745,Q,6221,1736,6235,1732,6237,1732,6238,1730,6243,1724,6248,1718,6250,1717,6250,1715,6253,1711,6259,1710,6266,1709,6274,1708,6275,1707,6277,1706,6282,1704,6284,1700,6287,1692,6282,1686,6282,1686,6281,1685,6281,1682,6277,1681,6271,1680,6268,1674,6265,1668,6261,1666,6260,1665,6258,1663,6247,1655,6245,1637,6244,1634,6244,1631,6242,1618,6242,1605,6241,1593,6242,1580,6242,1578,6243,1576,6244,1575,6245,1574,6247,1572,6248,1571,6255,1565,6261,1550,6265,1538,6271,1527,6275,1518,6286,1513,6289,1512,6290,1510,6291,1509,6292,1508,6294,1508,6295,1507,6297,1506,6299,1504,6292,1501,6287,1496,6284,1493,6282,1488,6276,1471,6268,1454,6263,1453,6259,1450,6252,1444,6248,1435,6244,1422,6238,1409,6237,1406,6233,1404,Q,6226,1401,6220,1396,Z]],label:"Pennsylvania",shortLabel:"PA",labelPosition:[593.2,155.7],labelAlignment:[CEN,MID]},NY:{outlines:[[M,6463,926,Q,6465,925,6466,925,6472,928,6475,922,6478,917,6477,912,6472,896,6461,856,L,6289,860,Q,6264,873,6251,882,6237,891,6223,900,6213,906,6204,914,6195,923,6186,934,L,6183,937,Q,6175,946,6170,957,6170,958,6169,959,6163,965,6159,976,6159,978,6158,979,6148,992,6138,1006,6132,1015,6130,1022,6129,1023,6129,1024,6127,1028,6119,1027,6118,1026,6117,1025,6112,1019,6104,1019,6097,1024,6097,1033,6098,1045,6110,1052,6115,1055,6121,1059,6125,1061,6125,1066,6126,1068,6124,1069,6119,1074,6114,1079,6111,1082,6112,1090,6113,1091,6113,1092,L,6114,1094,Q,6114,1097,6114,1099,6115,1109,6113,1119,6111,1124,6106,1126,6103,1128,6099,1128,6093,1129,6088,1131,6087,1131,6086,1131,6081,1131,6077,1135,6069,1143,6065,1152,6064,1157,6064,1164,6061,1165,6057,1166,6056,1166,6055,1167,6051,1167,6047,1168,6046,1169,6044,1169,6030,1172,6020,1170,6018,1169,6017,1168,6014,1166,6011,1168,6010,1168,6009,1168,6005,1169,6001,1170,5992,1172,5981,1170,5980,1170,5979,1171,5975,1175,5970,1182,5968,1186,5965,1189,5964,1190,5963,1190,5957,1187,5944,1182,5927,1175,5911,1165,5901,1159,5893,1151,5890,1147,5882,1149,5877,1150,5873,1151,5860,1153,5847,1152,5840,1152,5834,1151,5832,1151,5831,1152,5823,1157,5814,1163,5804,1165,5793,1164,5781,1162,5773,1165,5771,1166,5770,1168,5768,1170,5765,1172,5758,1177,5758,1186,5758,1190,5758,1193,5759,1203,5763,1211,5767,1219,5772,1226,5777,1232,5779,1239,5780,1241,5779,1242,5775,1251,5768,1259,5767,1260,5766,1261,5758,1275,5746,1286,5719,1313,5683,1331,5672,1336,5662,1341,L,5662,1384,6206,1382,Q,6209,1384,6210,1387,6215,1393,6220,1396,6226,1401,6233,1404,6237,1406,6238,1409,6244,1422,6248,1435,6252,1444,6259,1450,6263,1453,6268,1454,6276,1471,6282,1488,6284,1493,6287,1496,6292,1501,6299,1504,6300,1504,6300,1504,6303,1503,6307,1502,6309,1502,6310,1503,6326,1512,6338,1518,6348,1523,6358,1530,6369,1538,6376,1549,6379,1552,6382,1555,6382,1556,6383,1556,6384,1556,6385,1556,6388,1559,6392,1565,6397,1571,6397,1579,6397,1586,6398,1588,6400,1589,6398,1592,6397,1596,6396,1596,6394,1597,6391,1599,6387,1601,6383,1603,6379,1606,6374,1609,6395,1622,6408,1624,6420,1626,6428,1624,6452,1618,6475,1609,6489,1605,6503,1603,6508,1603,6512,1603,6528,1602,6538,1595,6543,1592,6548,1588,6556,1583,6564,1578,6567,1576,6569,1575,6576,1570,6586,1569,6595,1569,6605,1565,6615,1561,6622,1555,6630,1550,6636,1547,6629,1543,6622,1541,6612,1539,6601,1535,6587,1531,6574,1533,6563,1534,6552,1543,6546,1548,6538,1551,6536,1552,6534,1552,6528,1551,6522,1551,6509,1550,6496,1551,6495,1551,6494,1552,6469,1563,6443,1567,L,6444,1563,Q,6444,1565,6443,1565,6442,1566,6442,1566,6441,1566,6441,1565,6437,1556,6432,1549,L,6432,1548,Q,6437,1541,6439,1532,6439,1528,6441,1526,6442,1525,6443,1525,6447,1523,6447,1519,6448,1505,6441,1493,6436,1483,6435,1472,6435,1466,6437,1458,6442,1444,6444,1430,6446,1421,6444,1413,6439,1388,6444,1361,6443,1355,6444,1349,6445,1343,6449,1337,6455,1327,6460,1316,6464,1308,6467,1300,6469,1293,6471,1287,6472,1283,6473,1279,6474,1277,6474,1274,6474,1270,6471,1265,6469,1262,6464,1261,6463,1259,6463,1258,6461,1252,6460,1248,6459,1240,6461,1235,6464,1227,6469,1223,6475,1218,6474,1211,6473,1207,6472,1202,6471,1193,6475,1186,6480,1181,6480,1175,6478,1163,6478,1151,6478,1148,6479,1145,6480,1143,6481,1140,6483,1132,6478,1127,6476,1125,6474,1124,6471,1122,6465,1120,6458,1119,6459,1112,6460,1104,6458,1097,6450,1079,6449,1060,6449,1047,6456,1034,6459,1030,6459,1025,6459,1018,6461,1014,6461,1013,6462,1011,6469,1003,6473,993,6470,988,6473,981,6476,976,6475,971,6474,960,6470,950,Q,6466,939,6463,926,Z]],label:"New York",shortLabel:"NY",labelPosition:[620.2,120.2],labelAlignment:[CEN,MID]},VT:{outlines:[[M,6698,851,L,6461,856,Q,6472,896,6477,912,6478,917,6475,922,6472,928,6466,925,6465,925,6463,926,6466,939,6470,950,6474,960,6475,971,6476,976,6473,981,6470,988,6473,993,6469,1003,6462,1011,6461,1013,6461,1014,6459,1018,6459,1025,6459,1030,6456,1034,6449,1047,6449,1060,6450,1079,6458,1097,6460,1104,6459,1112,6458,1119,6465,1120,6471,1122,6474,1124,6476,1125,6478,1127,6483,1132,6481,1140,6480,1143,6479,1145,6478,1148,6478,1151,6478,1163,6480,1175,6480,1181,6475,1186,6471,1193,6472,1202,6473,1207,6474,1211,6475,1218,6469,1223,6464,1227,6461,1235,6459,1240,6460,1248,6461,1252,6463,1258,6463,1259,6464,1261,6469,1262,6471,1265,6474,1270,6474,1274,6474,1277,6473,1279,6475,1277,6476,1275,6481,1268,6487,1262,6492,1258,6498,1256,6500,1256,6501,1257,6507,1264,6515,1265,6517,1265,6518,1264,6524,1261,6528,1259,6538,1254,6552,1255,6563,1256,6567,1249,6567,1249,6567,1248,6568,1246,6567,1245,6567,1243,6567,1239,6571,1207,6586,1178,6586,1177,6587,1176,6592,1165,6591,1149,6591,1140,6592,1130,6595,1115,6601,1100,6608,1083,6617,1065,6620,1059,6622,1053,6626,1037,6630,1022,6632,1014,6637,1007,6641,1001,6648,993,6650,991,6651,991,6657,990,6660,986,6665,982,6667,976,6667,975,6667,974,6669,965,6677,961,6679,960,6680,959,6682,956,6685,954,6695,949,6685,942,6684,942,6683,941,6681,938,6678,933,6676,930,6676,926,6676,920,6681,920,6682,920,6683,919,6694,919,6694,906,6695,889,6693,873,6693,870,6694,863,6695,859,6698,855,Q,6701,850,6698,851,Z]],label:"Vermont",shortLabel:"VT",labelPosition:[654.9,95.8],labelAlignment:[CEN,MID]},NH:{outlines:[[M,6733,812,Q,6724,816,6714,821,6711,823,6710,826,6706,836,6703,847,6702,849,6701,851,6700,853,6698,855,6695,859,6694,863,6693,870,6693,873,6695,889,6694,906,6694,919,6683,919,6682,920,6681,920,6676,920,6676,926,6676,930,6678,933,6681,938,6683,941,6684,942,6685,942,6695,949,6685,954,6682,956,6680,959,6679,960,6677,961,6669,965,6667,974,6667,975,6667,976,6665,982,6660,986,6657,990,6651,991,6650,991,6648,993,6641,1001,6637,1007,6632,1014,6630,1022,6626,1037,6622,1053,6620,1059,6617,1065,6608,1083,6601,1100,6595,1115,6592,1130,6591,1140,6591,1149,6592,1165,6587,1176,6586,1177,6586,1178,6571,1207,6567,1239,6567,1243,6567,1245,6568,1246,6567,1248,6567,1249,6567,1249,6566,1253,6570,1254,6583,1258,6596,1257,6607,1256,6617,1252,6622,1251,6623,1251,6627,1248,6629,1251,6630,1252,6631,1252,6633,1253,6634,1254,6658,1275,6689,1263,6690,1263,6692,1262,6693,1262,6694,1261,6698,1258,6707,1259,6709,1259,6710,1260,6711,1260,6712,1260,6717,1261,6721,1260,6722,1260,6723,1260,6724,1260,6725,1260,6727,1260,6729,1260,6734,1260,6737,1258,6738,1257,6740,1257,6746,1255,6750,1250,6759,1240,6766,1234,6768,1233,6769,1233,6770,1233,6771,1232,6775,1229,6780,1230,6783,1229,6786,1227,6787,1226,6787,1226,6789,1225,6791,1224,6791,1223,6792,1222,6795,1216,6797,1211,6798,1210,6799,1208,6798,1207,6797,1206,6796,1199,6790,1196,6789,1196,6788,1195,6783,1188,6780,1182,6778,1179,6779,1175,6781,1165,6776,1157,6765,1141,6759,1123,6755,1109,6756,1093,6758,1073,6764,1053,6766,1044,6766,1035,6766,1033,6765,1032,6762,1028,6759,1025,6755,1020,6754,1014,6754,1013,6754,1012,6753,1007,6752,1001,6749,970,6747,939,6747,937,6748,936,6750,932,6750,924,6751,922,6751,920,6754,914,6755,907,6757,897,6757,885,6757,884,6757,882,6758,857,6750,837,6744,841,6746,834,6740,824,6738,814,6737,813,6736,812,Q,6735,812,6733,812,Z]],label:"New Hampshire",shortLabel:"NH",labelPosition:[666.8,114],labelAlignment:[CEN,MID]},ME:{outlines:[[M,7005,440,Q,7001,434,6996,433,6994,433,6992,435,6984,441,6975,447,6962,455,6954,469,6945,484,6936,499,6931,509,6922,518,6912,529,6906,543,6898,561,6889,575,6886,581,6882,584,6881,586,6880,587,6879,589,6879,591,6878,606,6877,621,6877,629,6876,637,6876,639,6874,640,6867,644,6862,649,6852,658,6848,671,6846,681,6847,691,6848,700,6851,705,6852,706,6854,707,6861,710,6862,718,6862,720,6861,721,6848,731,6835,740,6827,746,6823,754,6814,770,6805,784,6799,794,6791,803,6783,812,6774,818,6762,826,6748,832,6747,832,6746,834,6744,841,6750,837,6758,858,6757,882,6757,884,6757,886,6757,897,6755,908,6754,915,6751,921,6751,923,6750,925,6750,933,6748,936,6747,938,6747,939,6749,970,6752,1002,6753,1007,6754,1013,6754,1014,6754,1015,6755,1021,6759,1025,6762,1028,6765,1032,6766,1033,6766,1035,6766,1045,6764,1054,6758,1074,6756,1094,6755,1110,6759,1124,6765,1142,6776,1158,6781,1166,6779,1175,6778,1180,6780,1183,6783,1189,6788,1195,6789,1196,6790,1197,6796,1199,6797,1206,6798,1207,6799,1208,L,6799,1208,Q,6800,1207,6801,1206,6803,1199,6807,1194,6818,1180,6831,1167,6832,1166,6841,1164,6844,1163,6848,1159,6854,1152,6850,1142,6848,1138,6849,1133,6851,1124,6854,1118,6858,1112,6861,1105,6864,1099,6864,1092,6864,1091,6864,1090,6867,1081,6876,1080,6878,1080,6881,1081,6884,1081,6887,1082,6889,1082,6891,1083,6900,1088,6904,1095,6905,1097,6907,1097,6914,1098,6919,1094,6920,1094,6921,1093,6923,1088,6921,1081,6920,1079,6920,1076,6919,1071,6917,1066,6921,1056,6930,1062,6937,1066,6943,1069,6949,1071,6953,1068,6964,1060,6972,1050,6973,1048,6973,1046,6975,1046,6977,1047,6988,1050,6997,1047,7005,1045,7009,1035,7010,1033,7011,1031,7013,1023,7014,1015,7016,1003,7021,996,7027,989,7034,982,7040,988,7046,993,7052,998,7058,1e3,7060,1001,7062,1001,7063,1001,7064,1001,7068,1001,7067,998,7077,1003,7085,1008,7088,1010,7091,1009,7093,1009,7094,1008,7097,1007,7099,1004,7101,1002,7102,1001,7104,1e3,7105,998,7106,997,7107,996,7111,989,7115,985,7116,984,7117,983,7127,974,7134,968,7135,968,7135,967,7139,959,7144,957,7145,956,7146,955,7151,951,7161,953,7162,953,7163,953,7170,953,7174,950,7175,949,7176,949,7182,947,7187,944,7198,937,7210,934,7230,928,7249,924,7250,924,7250,922,7251,922,7251,921,7252,918,7252,915,7255,908,7255,900,7255,891,7250,886,7249,885,7248,884,7240,881,7238,873,7238,867,7239,862,7239,859,7235,856,7234,855,7234,854,7229,842,7211,843,7209,843,7209,842,7208,840,7204,841,7202,841,7201,840,7192,834,7191,826,7190,814,7197,801,7201,795,7203,789,7204,787,7204,783,7204,781,7203,779,7202,777,7202,773,L,7198,773,Q,7200,768,7196,762,7196,761,7195,761,7190,759,7184,758,7174,756,7167,750,7161,744,7160,735,7160,718,7160,702,7160,666,7160,635,7160,632,7160,628,7160,625,7159,622,7157,614,7157,604,7158,590,7160,576,7164,542,7146,512,7142,505,7139,497,7135,484,7127,474,7123,468,7117,462,7113,458,7108,454,7108,454,7107,454,7104,455,7101,454,7099,454,7097,453,7092,452,7088,452,7087,452,7086,453,7085,454,7084,454,7080,456,7077,457,7073,459,7068,465,7061,474,7053,481,7047,486,7039,485,7029,484,7020,477,7012,472,7005,466,7002,464,6999,462,7e3,461,7e3,459,7001,456,7002,453,7005,448,7006,442,Q,7006,441,7005,440,Z]],label:"Maine",shortLabel:"ME",labelPosition:[700,82.1],labelAlignment:[CEN,MID]},MA:{outlines:[[M,6570,1254,Q,6566,1253,6567,1249,6563,1256,6552,1255,6538,1254,6528,1259,6524,1261,6518,1264,6517,1265,6515,1265,6507,1264,6501,1257,6500,1256,6498,1256,6492,1258,6487,1262,6481,1268,6476,1275,6475,1277,6473,1279,6472,1283,6471,1287,6469,1293,6467,1300,6464,1308,6460,1316,6455,1327,6449,1337,6445,1343,6444,1349,6443,1355,6444,1361,6445,1364,6446,1367,6450,1378,6457,1382,6466,1387,6478,1385,6482,1385,6485,1384,6486,1384,6487,1384,6499,1382,6506,1388,6509,1391,6511,1397,6512,1399,6513,1399,6529,1397,6544,1390,6551,1387,6558,1384,6569,1379,6581,1378,6598,1376,6614,1378,6620,1378,6625,1379,6631,1381,6636,1382,6646,1385,6651,1390,6652,1391,6653,1392,6663,1390,6670,1388,6674,1387,6679,1387,6682,1386,6684,1386,6685,1385,6686,1385,6691,1384,6695,1385,6703,1387,6708,1388,6713,1389,6713,1395,6714,1406,6715,1416,6716,1433,6731,1439,6736,1441,6740,1447,6745,1454,6745,1461,6759,1457,6773,1452,6783,1449,6793,1446,6796,1445,6799,1445,6800,1454,6797,1461,6791,1477,6788,1494,6787,1500,6793,1502,6803,1504,6815,1500,6820,1498,6823,1499,6832,1500,6830,1487,6830,1482,6830,1476,6831,1473,6833,1472,6838,1470,6840,1468,6857,1450,6881,1450,6891,1447,6898,1443,6899,1442,6900,1441,6902,1435,6906,1431,6907,1431,6908,1429,6908,1428,6909,1427,6913,1422,6911,1417,6903,1399,6898,1379,6897,1376,6897,1373,6896,1370,6895,1368,6895,1366,6893,1364,6891,1362,6887,1361,6876,1360,6870,1357,6866,1356,6865,1358,6865,1360,6865,1361,6861,1372,6861,1383,6861,1393,6863,1403,6864,1407,6863,1412,6862,1417,6852,1416,6849,1416,6845,1415,6844,1415,6843,1414,6840,1405,6832,1402,6830,1402,6828,1402,6826,1402,6826,1401,6822,1397,6820,1391,6818,1380,6816,1368,6816,1366,6816,1364,6814,1360,6812,1356,6811,1355,6811,1353,6810,1349,6808,1349,6788,1347,6770,1338,6764,1336,6765,1329,6768,1318,6778,1310,6779,1309,6780,1308,6786,1307,6789,1310,6790,1311,6791,1311,6799,1312,6801,1308,6803,1302,6803,1294,6802,1280,6798,1266,6796,1260,6791,1255,6790,1255,6789,1254,6786,1252,6784,1248,6784,1245,6793,1234,6809,1184,6787,1226,6787,1226,6786,1227,6783,1229,6780,1230,6775,1229,6771,1232,6770,1233,6769,1233,6768,1233,6766,1234,6759,1240,6750,1250,6746,1255,6740,1257,6738,1257,6737,1258,6734,1260,6729,1260,6727,1260,6725,1260,6724,1260,6723,1260,6722,1260,6721,1260,6717,1261,6712,1260,6711,1260,6710,1260,6709,1259,6707,1259,6698,1258,6694,1261,6693,1262,6692,1262,6690,1263,6689,1263,6658,1275,6634,1254,6633,1253,6631,1252,6630,1252,6629,1251,6627,1248,6623,1251,6622,1251,6617,1252,6607,1256,6596,1257,Q,6583,1258,6570,1254,Z]],label:"Massachusetts",shortLabel:"MA",labelPosition:[655.7,132],labelAlignment:[CEN,MID]},CT:{outlines:[[M,6558,1384,Q,6551,1387,6544,1390,6529,1397,6513,1399,6512,1399,6511,1397,6509,1391,6506,1388,6499,1382,6487,1384,6486,1384,6485,1384,6482,1385,6478,1385,6466,1387,6457,1382,6450,1378,6446,1367,6445,1364,6444,1361,6439,1388,6444,1413,6446,1421,6444,1430,6442,1444,6437,1458,6435,1466,6435,1472,6436,1483,6441,1493,6448,1505,6447,1519,6447,1523,6443,1525,6442,1525,6441,1526,6439,1528,6439,1532,6437,1542,6431,1549,L,6431,1550,6431,1550,6431,1550,Q,6436,1557,6440,1566,6440,1567,6441,1568,6441,1567,6442,1567,6443,1566,6443,1565,L,6443,1561,Q,6443,1560,6445,1559,6449,1556,6452,1552,6453,1551,6454,1550,6473,1541,6491,1532,6508,1524,6523,1515,6533,1510,6544,1507,6548,1506,6552,1506,6558,1506,6565,1505,6570,1505,6576,1504,6596,1503,6614,1506,6620,1507,6620,1507,6622,1506,6624,1506,6629,1507,6635,1507,6637,1507,6638,1507,6645,1506,6652,1506,6653,1504,6653,1503,6650,1492,6648,1482,6646,1475,6649,1469,6659,1447,6659,1421,6659,1413,6658,1405,6657,1398,6653,1392,6652,1391,6651,1390,6646,1385,6636,1382,6631,1381,6625,1379,6620,1378,6614,1378,6598,1376,6581,1378,Q,6569,1379,6558,1384,Z]],label:"Connecticut",shortLabel:"CT",labelPosition:[654.5,146.5],labelAlignment:[CEN,MID]},NJ:{outlines:[[M,6385,1557,Q,6382,1556,6382,1555,6379,1552,6376,1549,6369,1538,6358,1530,6348,1523,6338,1518,6326,1512,6310,1503,6309,1502,6307,1502,6303,1503,6300,1504,6300,1504,6299,1504,6297,1506,6295,1507,6294,1508,6292,1508,6291,1509,6290,1510,6289,1512,6286,1513,6275,1518,6271,1527,6265,1538,6261,1550,6255,1565,6248,1571,6247,1572,6245,1574,6244,1575,6243,1576,6242,1578,6242,1580,6241,1593,6242,1605,6242,1618,6244,1631,6244,1634,6245,1637,6247,1655,6258,1663,6260,1665,6261,1666,6265,1668,6268,1674,6271,1680,6277,1681,6281,1682,6281,1685,6282,1686,6282,1686,6287,1692,6284,1700,6282,1704,6277,1706,6275,1707,6274,1708,6266,1709,6259,1710,6253,1711,6250,1715,6250,1717,6248,1718,6243,1724,6238,1730,6237,1732,6235,1732,6221,1736,6216,1745,L,6213,1747,Q,6211,1750,6209,1751,6210,1752,6211,1754,6212,1762,6209,1771,6209,1773,6208,1776,6208,1785,6206,1793,6203,1803,6203,1815,6203,1816,6204,1817,6206,1819,6211,1820,6215,1820,6217,1822,6218,1824,6217,1826,6217,1827,6217,1828,6224,1829,6231,1834,6241,1843,6249,1853,6250,1854,6251,1854,6271,1852,6273,1869,6274,1877,6279,1878,6289,1879,6295,1870,6297,1869,6298,1867,6299,1863,6302,1858,6302,1856,6303,1854,6307,1843,6312,1833,6321,1815,6334,1800,6343,1790,6353,1781,6355,1780,6356,1778,6370,1765,6379,1748,6385,1737,6387,1725,6387,1724,6387,1723,6388,1716,6390,1709,6390,1707,6391,1705,6392,1684,6382,1665,6375,1653,6369,1640,6366,1633,6363,1625,6368,1617,6373,1611,6378,1607,6382,1605,6386,1603,6390,1600,6393,1599,6395,1598,6396,1597,6397,1596,6399,1590,6399,1589,6399,1587,6398,1579,6397,1570,6392,1564,Q,6387,1558,6385,1557,Z]],label:"New Jersey",shortLabel:"NJ",labelPosition:[630.1,168.9],labelAlignment:[CEN,MID]},WV:{outlines:[[M,5553,1627,Q,5550,1630,5550,1637,5550,1642,5552,1644,L,5554,1642,5555,1641,5555,1641,Q,5554,1643,5554,1644,5552,1649,5552,1657,L,5553,1662,Q,5555,1666,5558,1675,5558,1676,5558,1677,5558,1679,5558,1681,5559,1682,5559,1683,5557,1682,5556,1680,5555,1701,5536,1714,5536,1716,5535,1717,5532,1721,5530,1727,5529,1729,5529,1731,5530,1753,5523,1775,5523,1777,5522,1778,5519,1787,5512,1792,5511,1792,5510,1793,5509,1798,5506,1799,5504,1800,5503,1801,5492,1809,5482,1814,5480,1815,5479,1816,5476,1818,5473,1818,5456,1816,5442,1821,5440,1822,5438,1823,5430,1835,5426,1848,5422,1860,5423,1872,5423,1879,5416,1882,5407,1885,5403,1878,5399,1872,5390,1872,5388,1872,5388,1873,5386,1876,5381,1875,5379,1875,5378,1876,5375,1882,5371,1887,5369,1889,5370,1894,5374,1905,5371,1913,5367,1928,5355,1938,5344,1947,5333,1955,5324,1962,5318,1971,5315,1974,5314,1978,5314,1979,5313,1979,5312,1983,5311,1987,5309,1997,5310,2007,5311,2013,5312,2020,5314,2027,5316,2034,5321,2050,5330,2063,5341,2078,5355,2090,5361,2095,5366,2101,5367,2103,5369,2107,5372,2111,5373,2114,5375,2118,5377,2121,5379,2125,5381,2128,5382,2130,5383,2131,5397,2138,5410,2145,5427,2153,5445,2160,5449,2158,5452,2155,5459,2149,5465,2158,5466,2160,5468,2160,5469,2161,5471,2162,5474,2164,5478,2162,5493,2155,5508,2147,5510,2146,5512,2144,5513,2144,5513,2143,5515,2143,5517,2142,5524,2138,5536,2136,5542,2136,5548,2135,5549,2135,5550,2135,5560,2133,5566,2130,5579,2123,5590,2114,5594,2112,5595,2108,5602,2092,5610,2077,5615,2069,5622,2064,5632,2057,5638,2050,5649,2040,5654,2025,5659,2010,5663,1994,5667,1981,5673,1970,5678,1959,5688,1956,5692,1955,5695,1962,5698,1967,5701,1972,5701,1974,5702,1974,5712,1976,5718,1968,5719,1967,5720,1966,5729,1960,5733,1954,5734,1952,5737,1950,5744,1943,5750,1928,5754,1919,5761,1915,5762,1915,5762,1914,5764,1912,5769,1914,5773,1913,5780,1910,5790,1907,5795,1902,5803,1895,5805,1885,5805,1884,5805,1883,5806,1878,5808,1874,5812,1870,5815,1864,5818,1859,5821,1854,5833,1835,5850,1820,5853,1818,5857,1819,5860,1820,5862,1821,5864,1822,5870,1821,5873,1830,5881,1839,5889,1848,5896,1846,5902,1844,5909,1836,5911,1833,5914,1832,5915,1832,5920,1833,5925,1835,5928,1835,5932,1835,5929,1833,5926,1831,5923,1829,5918,1826,5915,1825,5913,1824,5909,1825,5903,1826,5903,1821,5903,1813,5905,1809,5906,1808,5906,1806,5908,1799,5906,1790,5906,1788,5904,1786,5899,1780,5889,1780,5880,1781,5879,1773,5878,1771,5880,1770,5882,1769,5884,1766,5885,1766,5886,1765,5881,1766,5874,1765,5867,1765,5862,1768,5857,1771,5852,1773,5841,1779,5829,1784,5828,1787,5824,1788,5813,1790,5807,1784,5804,1781,5799,1780,5798,1779,5797,1779,5782,1776,5786,1791,5788,1796,5777,1802,5775,1802,5773,1803,5768,1806,5763,1808,5753,1812,5742,1814,5741,1814,5740,1815,5739,1816,5738,1817,5736,1818,5735,1819,5728,1829,5723,1837,5721,1841,5716,1842,5704,1844,5702,1830,5700,1821,5699,1812,5699,1810,5700,1808,5701,1804,5702,1799,5704,1791,5701,1782,5699,1779,5700,1775,5701,1770,5697,1769,5684,1768,5670,1766,5633,1763,5596,1761,5585,1761,5579,1755,5574,1750,5574,1740,5572,1723,5572,1707,5572,1689,5566,1677,5565,1675,5564,1674,5564,1674,5563,1673,5563,1672,5563,1671,L,5562,1671,Q,5562,1671,5561,1672,5562,1666,5563,1659,5564,1653,5566,1645,L,5568,1626,Q,5568,1624,5568,1623,5568,1621,5566,1620,5565,1620,5564,1620,5562,1620,5555,1632,L,5555,1627,Z]],label:"West Virginia",shortLabel:"WV",labelPosition:[544.5,199.9],labelAlignment:[CEN,MID]},VA:{outlines:[[M,5850,1820,Q,5833,1835,5821,1854,5818,1859,5815,1864,5812,1870,5808,1874,5806,1878,5805,1883,5805,1884,5805,1885,5803,1895,5795,1902,5790,1907,5780,1910,5773,1913,5769,1914,5764,1912,5762,1914,5762,1915,5761,1915,5754,1919,5750,1928,5744,1943,5737,1950,5734,1952,5733,1954,5729,1960,5720,1966,5719,1967,5718,1968,5712,1976,5702,1974,5701,1974,5701,1972,5698,1967,5695,1962,5692,1955,5688,1956,5678,1959,5673,1970,5667,1981,5663,1994,5659,2010,5654,2025,5649,2040,5638,2050,5632,2057,5622,2064,5615,2069,5610,2077,5602,2092,5595,2108,5594,2112,5590,2114,5579,2123,5566,2130,5560,2133,5550,2135,5549,2135,5548,2135,5542,2136,5536,2136,5524,2138,5517,2142,5515,2143,5513,2143,5513,2144,5512,2144,5510,2146,5508,2147,5493,2155,5478,2162,5474,2164,5471,2162,5469,2161,5468,2160,5466,2160,5465,2158,5459,2149,5452,2155,5449,2158,5445,2160,5427,2153,5410,2145,5397,2138,5383,2131,5382,2130,5381,2128,5379,2125,5377,2121,5377,2126,5373,2129,5356,2145,5338,2159,5337,2160,5335,2162,5330,2167,5323,2169,5310,2173,5299,2182,5296,2185,5294,2187,5293,2189,5292,2190,5284,2198,5273,2201,5272,2202,5271,2202,5265,2205,5263,2207,5251,2216,5239,2224,5226,2234,5215,2245,5206,2253,5215,2252,L,5440,2247,6148,2264,Q,6149,2261,6149,2259,6149,2257,6148,2256,6148,2255,6147,2255,6148,2251,6148,2248,6149,2242,6150,2237,6150,2235,6150,2234,6141,2214,6127,2203,6122,2204,6119,2203,6118,2203,6117,2204,6112,2210,6105,2209,6095,2208,6087,2203,6089,2194,6085,2191,L,6086,2189,Q,6091,2182,6099,2173,6100,2173,6100,2171,6098,2164,6093,2156,6089,2150,6079,2147,6077,2147,6075,2143,6079,2135,6088,2131,6095,2127,6099,2124,6100,2123,6101,2121,6101,2114,6102,2108,6102,2103,6100,2098,6099,2097,6098,2096,6095,2091,6094,2088,6092,2084,6086,2086,6089,2082,6094,2079,6095,2078,6097,2078,6103,2076,6107,2069,6108,2068,6108,2066,6111,2060,6110,2053,6110,2051,6109,2050,6106,2046,6101,2043,6087,2036,6071,2030,6065,2028,6066,2021,6067,2021,6067,2020,6073,2015,6071,2007,6071,2006,6069,2005,6064,2001,6054,2001,6047,2001,6044,1997,6042,1995,6039,1991,6038,1989,6036,1988,6026,1983,6012,1985,6012,1981,6014,1978,6010,1977,6005,1978,5992,1980,5983,1969,5977,1962,5974,1954,5973,1948,5978,1941,5995,1922,6010,1901,6013,1897,6011,1895,5995,1882,5975,1874,5970,1872,5967,1868,5956,1855,5944,1843,5938,1837,5931,1833,5926,1834,5925,1835,5924,1834,5922,1833,5917,1831,5914,1832,5911,1833,5909,1836,5902,1844,5896,1846,5889,1848,5882,1839,5875,1831,5870,1821,5864,1821,5861,1820,5860,1819,5858,1818,Q,5853,1818,5850,1820,Z]],label:"Virginia",shortLabel:"VA",labelPosition:[583.3,210.1],labelAlignment:[CEN,MID]},NC:{outlines:[[M,6123,2328,Q,6113,2325,6109,2317,6115,2304,6121,2298,6124,2295,6126,2292,6129,2286,6135,2291,6141,2296,6149,2296,6148,2294,6145,2294,6143,2294,6144,2290,6144,2289,6144,2288,6145,2286,6145,2283,6148,2274,6148,2264,L,5440,2247,Q,5426,2274,5420,2294,5420,2296,5419,2298,5417,2305,5407,2308,5391,2314,5377,2321,5371,2324,5363,2324,5361,2325,5359,2324,5354,2324,5353,2326,5352,2327,5350,2328,5320,2335,5293,2357,5292,2358,5291,2359,5290,2361,5284,2360,5277,2360,5275,2364,5275,2365,5273,2366,5263,2370,5258,2375,5256,2376,5255,2378,5243,2389,5232,2397,5224,2402,5214,2403,5212,2404,5210,2405,5193,2413,5178,2421,5157,2432,5138,2438,5133,2439,5131,2441,5124,2446,5120,2454,5119,2455,5119,2456,5118,2463,5115,2466,5110,2473,5103,2481,5102,2482,5101,2484,5101,2486,5101,2488,L,5101,2493,5278,2493,Q,5279,2492,5281,2492,5282,2491,5283,2491,5290,2487,5291,2493,5300,2483,5316,2478,5319,2477,5321,2477,5331,2477,5337,2472,5339,2472,5340,2470,5343,2467,5351,2468,5364,2471,5380,2470,5385,2470,5389,2469,5391,2469,5393,2469,5417,2468,5441,2465,5448,2464,5454,2465,5467,2466,5479,2470,5486,2471,5494,2472,5495,2472,5496,2473,5509,2479,5517,2488,5532,2506,5542,2527,5544,2533,5551,2534,5561,2535,5570,2533,5579,2532,5588,2533,5628,2536,5667,2536,5677,2536,5685,2539,5690,2541,5692,2544,5702,2560,5713,2575,5722,2588,5732,2600,5746,2615,5763,2626,5777,2636,5793,2653,5802,2657,5806,2665,5806,2666,5807,2666,5814,2669,5819,2674,5820,2673,5820,2672,5820,2671,5821,2670,5826,2668,5830,2669,5832,2670,5834,2670,5855,2670,5876,2667,5886,2666,5889,2655,5891,2650,5892,2646,5894,2640,5895,2635,5895,2633,5896,2631,5899,2628,5901,2623,5902,2621,5904,2620,5911,2616,5922,2612,5923,2612,5924,2611,5936,2604,5946,2591,5955,2578,5968,2569,5972,2565,5977,2565,5984,2566,5990,2565,5998,2564,6005,2561,6021,2555,6037,2553,6043,2553,6049,2558,6058,2565,6069,2559,6074,2556,6078,2553,L,6078,2553,Q,6079,2549,6082,2546,6087,2540,6092,2534,6094,2531,6093,2527,6093,2525,6093,2524,6091,2511,6079,2509,6078,2509,6077,2509,6073,2508,6069,2507,6061,2506,6055,2503,6052,2502,6053,2499,6055,2496,6057,2493,6058,2492,6060,2491,6061,2489,6061,2487,6061,2474,6058,2462,6061,2462,6064,2461,6065,2461,6066,2461,6072,2460,6073,2454,6073,2453,6072,2451,6070,2449,6068,2446,6061,2440,6066,2430,6069,2424,6074,2428,6087,2440,6106,2432,6107,2431,6108,2431,6112,2431,6115,2430,L,6115,2430,Q,6115,2429,6116,2429,6117,2430,6120,2431,6127,2434,6137,2433,6138,2433,6139,2432,6139,2430,6140,2427,6141,2421,6145,2416,6150,2410,6158,2408,6159,2407,6160,2407,6163,2405,6165,2404,6169,2401,6172,2398,6175,2395,6175,2392,6175,2387,6173,2382,6169,2376,6174,2371,6181,2366,6179,2357,6179,2356,6178,2355,6172,2349,6169,2344,6166,2336,6159,2331,6155,2328,6149,2326,6137,2327,6126,2328,Q,6125,2328,6123,2328,Z]],label:"North Carolina",shortLabel:"NC",labelPosition:[574,240],labelAlignment:[CEN,MID]},SC:{outlines:[[M,5685,2539,Q,5676,2536,5667,2536,5627,2536,5588,2533,5579,2532,5569,2533,5560,2535,5551,2534,5544,2533,5541,2527,5532,2506,5517,2488,5509,2479,5496,2473,5495,2472,5494,2472,5486,2471,5479,2470,5466,2466,5453,2465,5447,2464,5440,2465,5417,2468,5392,2469,5391,2469,5389,2469,5384,2470,5379,2470,5364,2471,5350,2468,5343,2467,5339,2470,5338,2472,5337,2472,5330,2477,5321,2477,5318,2477,5316,2478,5299,2483,5290,2493,5289,2487,5283,2491,5282,2491,5280,2492,5279,2492,5277,2493,5260,2502,5248,2515,5247,2516,5245,2517,5239,2522,5228,2527,5227,2527,5226,2528,5223,2528,5221,2531,5234,2559,5250,2582,5258,2594,5267,2604,5269,2606,5272,2606,5274,2606,5276,2607,5281,2609,5285,2613,5290,2616,5291,2624,5292,2625,5292,2626,5302,2636,5310,2649,5311,2651,5312,2652,5321,2660,5328,2667,5351,2690,5375,2710,5380,2715,5383,2719,5385,2721,5386,2722,5389,2727,5394,2732,5401,2740,5407,2747,5408,2749,5409,2751,5415,2763,5419,2779,5420,2783,5422,2785,5430,2793,5437,2798,5448,2807,5454,2816,5455,2817,5455,2819,5456,2826,5457,2832,5457,2833,5458,2834,5462,2840,5465,2849,5466,2851,5466,2852,5468,2854,5469,2856,5478,2865,5478,2880,5479,2896,5486,2912,5491,2923,5498,2932,5504,2939,5512,2944,5517,2949,5520,2944,5520,2943,5521,2942,5522,2938,5526,2937,5536,2935,5541,2930,5542,2929,5543,2929,5547,2927,5549,2922,5550,2920,5550,2918,5550,2917,5550,2916,5548,2908,5545,2901,5544,2900,5544,2898,5546,2892,5557,2892,5558,2892,5559,2892,5569,2893,5578,2897,5589,2895,5591,2883,5591,2882,5591,2880,5594,2873,5598,2871,5611,2864,5627,2861,5633,2859,5639,2856,5651,2847,5662,2837,5673,2828,5685,2821,5694,2815,5703,2809,5717,2799,5729,2786,5737,2777,5745,2768,5749,2763,5754,2758,5755,2755,5756,2752,5759,2740,5760,2727,5762,2719,5765,2711,5767,2707,5771,2704,5773,2703,5774,2703,5785,2701,5798,2701,5800,2701,5802,2700,5804,2699,5806,2699,5810,2698,5812,2692,5813,2690,5814,2688,5815,2687,5815,2685,5818,2680,5819,2674,L,5819,2674,Q,5813,2669,5807,2666,5806,2666,5805,2665,5801,2657,5793,2653,5776,2636,5763,2626,5746,2615,5732,2600,5721,2588,5712,2575,5702,2560,5691,2544,Q,5689,2541,5685,2539,Z]],label:"South Carolina",shortLabel:"SC",labelPosition:[552.2,270.6],labelAlignment:[CEN,MID]},FL:{outlines:[[M,5400,3122,Q,5393,3120,5389,3123,5387,3124,5384,3125,5379,3127,5374,3130,5385,3142,5394,3157,5390,3160,5385,3167,5379,3176,5371,3183,5367,3186,5364,3182,5361,3178,5359,3177,5348,3171,5334,3169,5332,3169,5331,3168,5323,3165,5316,3161,5311,3159,5310,3156,5309,3155,5308,3155,5299,3154,5290,3154,5285,3154,5281,3155,5273,3157,5264,3158,5261,3158,5258,3158,5246,3162,5238,3152,5237,3151,5236,3151,5201,3144,5165,3145,5156,3146,5148,3146,5126,3145,5104,3144,5071,3142,5037,3141,5035,3141,5032,3140,5026,3138,5026,3132,5026,3125,5026,3119,5026,3117,5026,3116,5020,3105,5014,3098,5013,3097,5012,3095,5011,3090,5009,3087,L,4692,3087,Q,4693,3098,4696,3109,4698,3116,4702,3122,4711,3135,4718,3148,4720,3152,4720,3157,4720,3158,4720,3159,4720,3163,4722,3165,4722,3165,4723,3166,4724,3170,4726,3174,4727,3178,4727,3182,4731,3183,4735,3185,4751,3192,4768,3193,4776,3194,4784,3193,4794,3192,4802,3188,4803,3188,4804,3187,4815,3180,4829,3179,4838,3179,4847,3184,4850,3186,4852,3187,4859,3191,4864,3196,4874,3202,4884,3207,4891,3210,4898,3212,4904,3213,4908,3211,4913,3208,4918,3206,4922,3205,4923,3205,4924,3204,4926,3205,4938,3208,4943,3219,4946,3226,4951,3233,4958,3242,4962,3252,4966,3261,4968,3269,4970,3276,4973,3283,4974,3285,4979,3285,4987,3283,4991,3285,4992,3286,4994,3286,5008,3284,5022,3279,5031,3276,5044,3273,5046,3272,5048,3271,5056,3266,5061,3263,5083,3245,5109,3236,5116,3234,5123,3232,5124,3232,5125,3231,5129,3225,5136,3223,5141,3221,5143,3224,5149,3230,5156,3239,5160,3244,5168,3251,5173,3256,5184,3262,5193,3267,5201,3270,5204,3272,5207,3274,5213,3277,5211,3283,5209,3308,5228,3324,5230,3326,5232,3328,5241,3339,5249,3345,5250,3346,5251,3347,5255,3353,5253,3357,5259,3360,5266,3363,5268,3363,5270,3363,5279,3363,5287,3364,5297,3366,5297,3376,5297,3377,5297,3378,5300,3395,5306,3411,5309,3418,5308,3426,5306,3437,5304,3449,5303,3460,5304,3472,5305,3480,5305,3489,5304,3494,5298,3495,5286,3497,5280,3501,5276,3503,5276,3505,5276,3515,5280,3518,5281,3518,5282,3520,5282,3521,5283,3522,5286,3524,5284,3528,5283,3529,5283,3531,5283,3537,5282,3542,5282,3544,5284,3545,5290,3549,5300,3551,5311,3553,5315,3559,5316,3561,5316,3562,5315,3570,5315,3577,5314,3582,5313,3586,5309,3597,5312,3614,5312,3615,5312,3616,5315,3620,5320,3624,5321,3625,5322,3627,5325,3633,5328,3637,5329,3639,5331,3640,5334,3642,5334,3647,5333,3656,5337,3661,5340,3666,5342,3669,5347,3676,5352,3681,5366,3694,5381,3706,5382,3707,5383,3707,5387,3709,5386,3715,5385,3726,5387,3736,5388,3742,5390,3748,5391,3754,5397,3754,5404,3757,5408,3760,5412,3763,5411,3769,5411,3770,5412,3771,5413,3772,5414,3773,L,5414,3773,Q,5420,3777,5423,3783,5424,3785,5424,3787,5426,3796,5421,3800,5422,3806,5430,3806,5434,3805,5437,3807,5455,3815,5471,3828,5482,3836,5487,3849,5495,3870,5504,3889,5510,3901,5523,3908,5530,3912,5536,3915,5554,3921,5571,3927,5572,3928,5574,3927,5581,3925,5586,3920,5587,3919,5589,3919,5592,3918,5594,3920,5598,3919,5600,3917,5608,3909,5606,3895,5606,3894,5605,3893,5602,3886,5598,3879,5598,3878,5598,3877,5599,3869,5596,3865,5594,3860,5595,3853,5595,3852,5596,3851,5608,3842,5621,3834,5624,3833,5624,3829,5625,3827,5627,3825,5630,3824,5629,3820,5626,3798,5626,3776,5626,3765,5631,3754,5635,3746,5635,3739,5635,3738,5635,3736,5637,3716,5635,3696,5635,3689,5633,3682,5627,3660,5618,3638,5614,3627,5613,3615,5612,3610,5612,3606,5611,3601,5609,3597,5609,3595,5608,3593,5608,3591,5608,3589,5607,3587,5606,3584,5606,3581,5604,3578,5603,3577,5602,3575,5599,3569,5592,3560,5591,3559,5590,3558,5576,3547,5573,3534,5573,3534,5572,3533,5565,3528,5566,3514,5566,3512,5566,3510,5562,3492,5554,3477,5554,3476,5554,3474,5557,3464,5548,3455,5544,3451,5542,3449,5538,3444,5537,3438,5535,3433,5535,3428,5534,3433,5535,3426,5536,3425,5537,3424,5542,3416,5539,3406,5537,3399,5534,3394,5534,3393,5534,3391,5533,3382,5529,3376,5527,3375,5527,3373,5521,3359,5514,3350,5513,3349,5513,3347,5511,3328,5501,3311,5497,3305,5494,3299,5492,3296,5491,3293,5481,3258,5470,3223,5466,3211,5460,3198,5454,3183,5445,3168,5443,3166,5443,3161,5443,3152,5447,3143,5448,3139,5450,3135,5445,3135,5441,3135,5431,3135,5420,3134,5419,3123,5406,3123,Q,5403,3123,5400,3122,Z]],label:"Florida",shortLabel:"FL",labelPosition:[539.3,350.8],labelAlignment:[CEN,MID]}}}];exports["default"]={extension:geodefinitions,name:"usa",type:"maps"}}})}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/maps/fusioncharts.world.js b/graphs/fusioncharts-suite-xt/js/maps/fusioncharts.world.js new file mode 100755 index 0000000000000000000000000000000000000000..5a589c72ae05a7dfcf0b0fca23f37a6a6fb2e9aa --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/maps/fusioncharts.world.js @@ -0,0 +1,10 @@ +(function(factory){if(typeof module==="object"&&typeof module.exports!=="undefined"){module.exports=factory}else{factory(FusionCharts)}})(function(FusionCharts){(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.r=function(exports){Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=714)})({714:function(module,exports,__webpack_require__){"use strict";var _fusioncharts=__webpack_require__(715);var _fusioncharts2=_interopRequireDefault(_fusioncharts);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}FusionCharts.addDep(_fusioncharts2["default"])},715:function(module,exports,__webpack_require__){"use strict";exports.__esModule=true; +/**! + * @license FusionCharts JavaScript Library + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + * + * @author FusionCharts Technologies LLP + * @meta package_map_pack + * @id fusionmaps.World.20.10-30-2012 07:55:31 + */var M="M",L="L",Z="Z",Q="Q",LFT="left",RGT="right",CEN="center",MID="middle",TOP="top",BTM="bottom",geodefinitions=[{name:"World",revision:20,standaloneInit:true,baseWidth:715,baseHeight:405,baseScaleFactor:10,entities:{SA:{outlines:[[M,2090,3908,Q,2087,3908,2087,3909,2087,3910,2087,3911,2087,3914,2089,3916,2091,3918,2092,3918,2095,3918,2094,3917,2095,3913,2093,3911,Q,2093,3909,2090,3908,Z],[M,2142,3947,Q,2143,3947,2144,3945,2145,3943,2145,3942,2147,3940,2150,3939,2152,3938,2156,3937,2157,3937,2158,3937,2160,3936,2161,3936,2164,3936,2165,3934,2166,3933,2166,3932,2168,3931,2168,3928,2167,3924,2161,3925,2159,3924,2154,3921,2150,3921,2144,3921,2141,3920,2141,3922,2142,3924,2141,3924,2139,3924,2137,3924,2136,3923,2134,3923,2130,3923,2124,3924,2121,3924,2119,3923,2117,3923,2115,3922,2110,3921,2108,3924,2111,3925,2113,3928,2115,3929,2113,3931,2113,3932,2112,3933,2111,3934,2110,3937,2112,3938,2111,3940,2110,3942,2107,3942,2107,3942,2105,3941,2103,3940,2100,3937,2099,3936,2096,3936,2094,3936,2094,3937,2095,3938,2096,3940,2098,3941,2101,3942,2104,3945,2107,3948,2109,3945,2112,3945,2115,3943,2115,3941,2119,3940,2121,3940,2123,3940,2126,3939,L,2126,3939,Q,2126,3944,2128,3946,2130,3948,2134,3950,2136,3950,2140,3948,Q,2141,3948,2142,3947,Z],[M,2329,2575,Q,2328,2574,2326,2574,2309,2575,2298,2564,2300,2564,2302,2561,2302,2560,2303,2559,2308,2553,2310,2545,2311,2544,2311,2543,2311,2541,2312,2541,2314,2540,2312,2536,2311,2533,2309,2528,2309,2527,2308,2526,2308,2525,2307,2523,2306,2519,2305,2515,2305,2513,2304,2511,2304,2511,2303,2510,2303,2508,2302,2506,2301,2500,2300,2495,2300,2493,2299,2491,2299,2491,2299,2490,2298,2486,2295,2483,2289,2479,2286,2474,2284,2471,2282,2469,2277,2462,2270,2456,2267,2454,2264,2448,2264,2448,2263,2447,2257,2442,2254,2434,L,2254,2433,Q,2253,2433,2253,2433,2247,2431,2240,2429,2221,2425,2202,2426,2201,2426,2200,2425,2200,2423,2197,2424,2196,2425,2194,2425,2190,2426,2185,2427,2175,2429,2165,2430,2160,2430,2156,2427,2149,2422,2143,2414,2136,2404,2129,2394,2127,2391,2126,2388,2126,2388,2126,2387,2125,2385,2125,2383,2125,2383,2125,2382,2126,2379,2125,2377,2122,2372,2119,2367,2116,2363,2111,2360,2102,2353,2093,2346,2087,2341,2080,2337,2072,2331,2063,2325,2054,2320,2045,2315,2031,2309,2017,2303,2016,2303,2015,2302,2015,2301,2014,2301,2013,2301,2012,2300,2011,2300,2009,2300,2007,2299,2005,2300,2003,2300,2002,2302,2001,2303,2e3,2303,1998,2305,1994,2307,1993,2308,1992,2307,1984,2307,1978,2311,1975,2312,1973,2313,1967,2314,1960,2314,1952,2314,1943,2313,1933,2312,1923,2311,1919,2310,1915,2309,1910,2309,1908,2307,1906,2303,1904,2301,1898,2295,1893,2289,1888,2283,1883,2277,1882,2276,1882,2273,1883,2272,1882,2270,1876,2273,1872,2277,1868,2282,1863,2284,1858,2287,1851,2286,1843,2285,1835,2283,1835,2283,1834,2282,1832,2278,1834,2274,1836,2271,1836,2266,1836,2265,1836,2264,1836,2263,1836,2262,1836,2261,1835,2260,1830,2258,1829,2261,1828,2261,1828,2262,1823,2266,1818,2271,1814,2275,1810,2278,1802,2286,1792,2291,1787,2295,1780,2294,1767,2294,1754,2293,1752,2293,1751,2294,1750,2299,1748,2303,1744,2313,1740,2323,1739,2326,1737,2328,1737,2329,1736,2329,1735,2332,1733,2334,1732,2335,1732,2336,1730,2343,1723,2346,1721,2347,1720,2348,1720,2349,1719,2349,1718,2350,1718,2350,1715,2351,1713,2352,1712,2353,1711,2353,1710,2353,1709,2353,1708,2353,1706,2353,1706,2353,1705,2352,1705,2351,1704,2351,1701,2349,1698,2346,L,1698,2352,Q,1700,2352,1702,2352,1701,2355,1700,2357,1699,2358,1699,2359,1700,2362,1698,2363,1698,2364,1698,2365,L,1698,2410,Q,1698,2411,1698,2413,1699,2414,1699,2415,1699,2417,1699,2419,1701,2429,1701,2439,1703,2458,1703,2478,1703,2479,1703,2480,1704,2481,1704,2482,1705,2485,1703,2485,1703,2486,1702,2486,1700,2491,1697,2495,1692,2504,1685,2509,1685,2510,1685,2510,1684,2514,1680,2515,1680,2515,1679,2515,1678,2518,1674,2520,1661,2529,1648,2538,1639,2544,1632,2552,1629,2554,1629,2560,1629,2561,1628,2562,1628,2563,1628,2564,1626,2574,1627,2584,1627,2586,1626,2588,1626,2589,1626,2590,1625,2593,1625,2595,1625,2600,1624,2604,1623,2614,1622,2623,1620,2639,1620,2654,1620,2664,1618,2674,1618,2676,1617,2677,1617,2677,1617,2678,1616,2683,1618,2688,1619,2689,1619,2689,1620,2690,1620,2690,1623,2694,1627,2697,1630,2700,1631,2704,1631,2705,1631,2705,1632,2707,1632,2708,1633,2712,1634,2714,1637,2718,1640,2722,1643,2724,1645,2726,1646,2727,1646,2728,1654,2735,1661,2743,1666,2749,1669,2756,1673,2762,1676,2768,1680,2773,1682,2779,1682,2781,1682,2782,1683,2784,1683,2785,1684,2787,1684,2788,1685,2789,1685,2789,1685,2791,1684,2792,1684,2793,1684,2794,1683,2798,1685,2800,1685,2802,1685,2803,1685,2807,1686,2810,1687,2818,1690,2824,1690,2826,1691,2827,1693,2836,1698,2843,1699,2844,1699,2847,1700,2847,1700,2848,1702,2849,1704,2852,1706,2855,1710,2858,1711,2859,1711,2860,1712,2861,1712,2862,1713,2863,1713,2864,1714,2867,1715,2870,1716,2873,1718,2877,1719,2878,1719,2879,1720,2882,1721,2885,1722,2889,1723,2891,1724,2892,1724,2893,1726,2897,1727,2900,1729,2904,1733,2905,1734,2906,1735,2907,1740,2911,1744,2916,1746,2920,1749,2922,1751,2924,1753,2925,1757,2927,1761,2929,1764,2931,1768,2931,1768,2931,1769,2931,1770,2932,1771,2932,1772,2932,1773,2933,1779,2935,1785,2938,1786,2939,1786,2939,1788,2940,1790,2941,1795,2944,1800,2948,1809,2956,1818,2964,1821,2966,1824,2968,1825,2969,1825,2969,1830,2975,1833,2979,1834,2980,1835,2981,1845,2990,1854,3e3,1860,3007,1864,3016,1866,3019,1866,3023,1868,3040,1870,3057,1871,3058,1871,3059,1871,3069,1871,3079,1872,3093,1872,3107,1872,3109,1872,3111,1873,3115,1873,3119,1874,3120,1874,3121,1874,3121,1873,3122,1873,3123,1873,3124,1873,3129,1872,3133,1872,3134,1872,3134,1872,3147,1871,3159,1871,3161,1871,3162,1870,3163,1870,3164,1869,3168,1868,3172,1868,3173,1868,3174,1865,3190,1864,3207,1864,3224,1865,3241,1866,3254,1867,3267,1868,3283,1868,3298,1868,3308,1865,3317,1864,3318,1864,3319,1864,3322,1865,3323,1865,3325,1865,3327,1865,3331,1866,3336,1866,3336,1866,3337,1867,3338,1868,3339,1868,3341,1869,3342,1869,3343,1869,3344,1870,3350,1872,3357,1872,3358,1872,3359,1872,3363,1870,3366,1869,3369,1869,3372,1869,3373,1868,3374,1868,3376,1868,3377,1867,3378,1867,3379,1868,3387,1868,3395,1868,3397,1868,3398,1867,3401,1868,3403,1868,3407,1866,3408,1865,3408,1865,3409,1864,3411,1862,3412,1858,3415,1857,3421,1857,3422,1856,3423,1855,3428,1852,3430,1851,3431,1850,3435,1850,3436,1849,3436,1849,3438,1848,3440,1848,3441,1848,3441,1847,3447,1845,3449,1844,3450,1843,3451,1841,3456,1842,3463,1842,3466,1842,3468,1840,3482,1840,3496,1840,3509,1839,3521,1838,3534,1835,3548,1834,3554,1838,3560,1839,3562,1841,3563,1842,3563,1842,3564,1846,3570,1848,3577,1849,3579,1849,3581,1850,3582,1850,3582,1851,3585,1850,3587,1850,3592,1851,3594,1852,3596,1852,3597,1853,3606,1851,3612,1851,3614,1851,3616,1851,3619,1850,3621,1849,3622,1848,3624,1847,3629,1847,3635,1847,3636,1846,3637,1845,3642,1847,3645,1847,3648,1847,3650,1845,3673,1842,3695,1840,3711,1833,3726,1832,3729,1831,3732,1828,3738,1824,3745,1843,3751,1857,3761,1863,3765,1864,3776,1864,3781,1863,3783,1861,3786,1860,3790,1860,3791,1859,3793,1857,3795,1857,3800,1857,3801,1856,3803,1854,3817,1847,3822,1843,3824,1841,3828,1841,3830,1840,3831,1840,3832,1839,3833,1839,3835,1838,3836,1838,3841,1840,3843,1843,3845,1846,3848,1847,3849,1849,3851,1852,3855,1854,3863,1855,3864,1855,3866,1855,3869,1854,3872,1854,3873,1855,3874,1858,3888,1867,3901,1873,3909,1880,3916,1887,3924,1895,3929,1896,3930,1896,3931,1900,3938,1905,3945,1906,3947,1908,3948,1909,3949,1910,3950,1918,3959,1924,3964,1929,3969,1934,3973,1942,3981,1952,3987,1965,3996,1973,4009,1975,4012,1978,4008,1984,4001,1982,3991,1980,3970,1978,3949,1977,3938,1983,3927,1985,3922,1988,3917,1990,3914,1991,3909,1991,3906,1990,3903,1989,3901,1989,3900,1989,3888,1990,3876,1990,3876,1991,3875,1991,3873,1992,3871,1992,3871,1992,3870,1993,3868,1993,3866,1996,3856,2003,3848,2003,3848,2003,3848,2004,3847,2004,3846,2010,3837,2015,3827,2016,3825,2017,3823,2019,3822,2019,3820,2021,3817,2023,3815,2026,3811,2026,3806,2029,3791,2024,3777,2021,3768,2014,3761,2009,3756,2005,3751,2004,3750,2004,3749,2003,3731,2011,3716,2012,3715,2013,3714,2016,3712,2019,3709,2023,3705,2029,3705,2030,3705,2031,3704,2036,3698,2040,3692,2042,3690,2043,3687,2044,3682,2047,3678,2047,3677,2048,3676,2049,3672,2050,3670,2051,3669,2051,3667,2050,3662,2049,3656,2049,3654,2049,3652,2048,3652,2048,3651,2040,3639,2040,3623,2040,3614,2034,3611,2036,3608,2038,3606,2039,3606,2041,3605,2052,3601,2064,3602,2067,3602,2069,3602,2071,3601,2072,3601,2073,3600,2074,3600,2078,3599,2080,3595,2080,3595,2081,3595,2082,3595,2082,3595,2086,3595,2086,3591,2088,3573,2091,3556,2091,3554,2090,3553,2086,3546,2092,3544,2095,3544,2097,3542,2098,3542,2099,3542,2114,3541,2129,3541,2131,3541,2134,3541,2149,3539,2157,3524,2160,3520,2162,3516,2165,3510,2170,3507,2173,3506,2175,3505,2179,3505,2180,3503,2181,3502,2182,3502,2185,3501,2188,3500,2194,3496,2199,3493,2203,3490,2200,3485,2199,3483,2198,3480,2198,3479,2197,3478,2193,3475,2193,3471,2193,3471,2192,3470,2189,3464,2185,3460,2178,3452,2172,3441,2171,3440,2171,3438,2172,3434,2174,3430,2178,3421,2188,3423,2190,3423,2192,3423,2198,3421,2205,3421,2234,3422,2263,3422,2264,3424,2264,3425,2266,3424,2267,3423,2270,3421,2272,3418,2273,3417,2274,3416,2274,3415,2275,3412,2275,3408,2276,3404,2279,3391,2285,3381,2293,3368,2302,3356,2310,3342,2317,3327,2323,3316,2329,3305,2337,3293,2345,3280,2351,3269,2353,3257,2356,3246,2355,3234,2354,3220,2356,3207,2358,3195,2364,3184,2373,3171,2384,3160,2392,3153,2401,3147,2406,3144,2412,3143,2420,3141,2429,3139,2430,3139,2431,3139,2433,3138,2436,3137,2448,3132,2456,3128,2463,3124,2471,3121,2472,3121,2472,3121,2490,3120,2507,3120,2509,3120,2510,3119,2513,3118,2517,3118,2519,3121,2519,3119,L,2520,3118,Q,2521,3117,2521,3116,2522,3114,2525,3113,2527,3112,2528,3111,2532,3105,2528,3096,2528,3095,2528,3093,2529,3087,2532,3080,2536,3072,2538,3063,2538,3063,2538,3062,2540,3056,2543,3052,2544,3051,2545,3051,2548,3049,2549,3047,2550,3045,2550,3042,2552,3036,2551,3030,2551,3027,2552,3026,2553,3025,2553,3023,2554,3020,2555,3018,2555,3017,2555,3015,2555,3010,2557,3005,2558,3004,2558,3002,2558,3001,2558,3e3,2558,2999,2559,2998,2561,2996,2562,2992,2563,2991,2564,2990,2566,2989,2567,2986,2569,2972,2569,2959,2569,2942,2566,2924,2565,2921,2566,2918,2566,2917,2566,2916,2570,2903,2575,2890,2578,2885,2581,2881,2585,2876,2588,2871,2600,2847,2613,2825,2614,2824,2615,2823,2617,2819,2619,2815,2620,2813,2621,2811,2625,2806,2631,2801,2632,2801,2633,2800,2634,2798,2635,2797,2639,2794,2641,2788,2642,2787,2644,2785,2646,2782,2646,2780,2646,2775,2646,2770,2646,2768,2647,2767,2648,2764,2648,2758,2648,2757,2649,2756,2651,2754,2652,2748,2652,2748,2652,2747,2654,2741,2656,2736,2657,2734,2656,2728,2655,2725,2655,2722,2655,2720,2654,2718,2654,2718,2654,2717,2653,2713,2652,2710,2651,2709,2650,2707,2648,2704,2646,2699,2646,2698,2645,2697,2645,2693,2643,2689,2640,2685,2636,2681,2635,2680,2633,2680,2619,2682,2615,2675,2609,2675,2611,2678,L,2612,2679,Q,2611,2680,2611,2680,2610,2682,2610,2685,2609,2685,2608,2684,2606,2683,2605,2681,2593,2666,2576,2659,2569,2657,2565,2654,2564,2653,2563,2652,2563,2652,2562,2651,2550,2646,2537,2637,2535,2637,2533,2636,2532,2636,2530,2635,2529,2635,2528,2635,2526,2634,2523,2634,2523,2633,2522,2633,2507,2630,2492,2629,2490,2629,2489,2629,2488,2628,2487,2628,2485,2627,2484,2627,2477,2627,2470,2627,2470,2627,2469,2627,2459,2628,2455,2621,2455,2619,2453,2617,2450,2612,2445,2607,2437,2599,2428,2595,2417,2589,2406,2586,2386,2580,2365,2576,2359,2574,2353,2574,2351,2574,2350,2575,2345,2578,2338,2577,2334,2576,2331,2576,Q,2330,2575,2329,2575,Z]],label:"South America",shortLabel:"SA",labelPosition:[212.7,283.6],labelAlignment:[CEN,MID]},NA:{outlines:[[M,797,1293,Q,806,1299,812,1304,813,1306,814,1307,817,1310,822,1312,824,1313,825,1313,830,1315,832,1310,832,1309,831,1308,828,1304,822,1300,821,1300,820,1299,801,1282,781,1262,777,1258,771,1258,768,1258,764,1259,771,1276,787,1286,Q,792,1290,797,1293,Z],[M,707,1148,Q,705,1148,704,1149,704,1149,703,1149,699,1152,698,1157,695,1170,696,1184,696,1195,697,1206,L,697,1206,Q,697,1208,698,1209,698,1211,698,1213,699,1215,699,1216,699,1217,699,1218,708,1215,706,1204,706,1204,706,1203,707,1202,708,1201,708,1198,706,1197,L,706,1196,Q,707,1193,707,1192,709,1188,709,1183,709,1167,708,1151,708,1150,707,1148,Z],[M,704,1105,Q,703,1109,701,1112,701,1113,701,1115,700,1122,706,1124,707,1124,708,1125,711,1128,714,1128,713,1127,715,1123,716,1122,716,1120,717,1119,717,1118,718,1117,718,1116,711,1114,709,1103,708,1104,706,1104,Q,705,1105,704,1105,Z],[M,699,1055,Q,698,1049,695,1054,694,1055,692,1057,691,1058,691,1060,690,1065,691,1067,693,1072,693,1077,694,1078,694,1080,695,1081,695,1082,696,1084,696,1087,697,1088,698,1088,699,1088,699,1088,703,1078,703,1067,703,1064,701,1060,701,1059,700,1057,Q,700,1056,699,1055,Z],[M,1699,2407,Q,1699,2408,1699,2410,L,1699,2365,Q,1698,2385,1699,2404,Q,1699,2406,1699,2407,Z],[M,1583,2001,Q,1580,2003,1575,2006,1574,2006,1573,2007,1572,2008,1571,2009,1568,2012,1567,2017,1567,2019,1569,2021,1572,2022,1575,2025,1578,2027,1583,2025,1584,2025,1584,2025,1586,2024,1587,2024,1590,2023,1594,2022,1599,2020,1605,2021,1615,2021,1625,2020,1630,2020,1633,2023,1635,2025,1638,2025,1649,2028,1660,2031,1668,2033,1676,2036,1693,2042,1704,2057,1712,2068,1721,2077,1727,2082,1734,2083,1746,2084,1757,2085,1764,2086,1772,2087,1784,2089,1796,2092,1803,2094,1807,2099,1808,2101,1805,2103,1798,2109,1789,2114,1789,2115,1788,2116,1788,2117,1788,2118,1789,2120,1790,2120,1795,2121,1800,2121,1804,2121,1808,2121,1808,2121,1809,2121,1823,2123,1837,2122,1840,2121,1843,2121,1844,2121,1845,2120,1846,2120,1847,2120,1853,2119,1859,2118,1861,2118,1863,2118,1871,2116,1879,2113,1881,2113,1883,2113,1889,2114,1895,2117,1896,2118,1897,2118,1899,2119,1900,2119,1909,2119,1915,2115,1919,2113,1917,2108,1916,2103,1911,2099,1904,2093,1895,2088,1890,2085,1885,2084,1884,2083,1883,2083,1881,2082,1879,2081,1878,2081,1877,2080,1876,2080,1875,2080,1863,2080,1850,2078,1835,2076,1820,2075,1815,2074,1809,2073,1801,2072,1793,2070,1788,2069,1784,2066,1776,2059,1769,2052,1763,2047,1757,2041,1753,2038,1749,2035,1741,2029,1732,2025,1721,2019,1709,2015,1692,2008,1675,2e3,1669,1997,1664,1994,1663,1993,1662,1993,1661,1991,1657,1991,1655,1991,1653,1990,1652,1990,1650,1990,1647,1989,1644,1989,1643,1989,1642,1989,1634,1989,1627,1989,1623,1989,1619,1989,1609,1987,1600,1992,1594,1995,1588,1999,1587,2e3,1585,2e3,Q,1584,2001,1583,2001,Z],[M,2262,1229,Q,2261,1229,2259,1228,2258,1228,2256,1227,2255,1226,2255,1224,2254,1223,2254,1222,L,2252,1222,Q,2251,1224,2249,1224,2238,1229,2233,1240,2232,1242,2232,1243,2228,1249,2223,1256,2222,1257,2222,1257,2220,1258,2218,1259,2217,1260,2217,1260,2214,1261,2213,1264,2209,1270,2205,1275,2203,1280,2200,1284,2198,1286,2197,1289,2197,1290,2197,1290,2196,1291,2195,1293,2195,1294,2194,1295,2192,1296,2190,1299,2187,1303,2183,1306,2182,1308,2181,1309,2178,1315,2176,1320,2174,1326,2176,1330,2176,1331,2178,1333,L,2178,1333,Q,2179,1335,2180,1336,2182,1338,2185,1338,2194,1340,2203,1338,2215,1337,2227,1336,2234,1335,2241,1334,2242,1334,2243,1334,2248,1333,2252,1334,2253,1335,2253,1335,2254,1340,2254,1345,2254,1346,2254,1346,2254,1348,2254,1349,2254,1350,2255,1351,2255,1353,2255,1354,2256,1355,2256,1356,2258,1357,2261,1357,2261,1357,2262,1357,2264,1356,2266,1356,2267,1355,2269,1355,2273,1354,2276,1352,2276,1352,2277,1351,2283,1344,2289,1341,2292,1339,2296,1338,2297,1337,2297,1337,2298,1338,2298,1338,2299,1338,2299,1339,2302,1341,2301,1345,2301,1346,2301,1347,2303,1351,2306,1354,2306,1354,2306,1354,2306,1355,2307,1355,2308,1356,2309,1356,2310,1357,2311,1357,L,2311,1357,Q,2311,1358,2312,1358,2313,1359,2314,1359,2315,1359,2316,1359,2317,1359,2318,1358,2321,1357,2322,1355,2322,1354,2322,1352,2323,1352,2323,1351,2323,1350,2323,1349,2324,1346,2326,1344,2329,1340,2331,1336,2335,1327,2333,1318,2332,1313,2326,1309,2325,1308,2324,1308,L,2324,1308,2316,1302,Q,2313,1299,2309,1296,2308,1296,2309,1295,2309,1294,2309,1294,2309,1293,2310,1291,2310,1291,2311,1290,2313,1286,2315,1280,2316,1279,2315,1278,2314,1277,2313,1276,2313,1276,2312,1275,2309,1274,2306,1272,2306,1272,2305,1272,2305,1272,2304,1272,2303,1271,2302,1271,2301,1271,2299,1270,2287,1267,2274,1264,2270,1264,2266,1262,2265,1262,2264,1261,2264,1261,2264,1260,2263,1259,2263,1257,2263,1257,2262,1256,2262,1255,2261,1254,2260,1252,2260,1249,2260,1245,2262,1242,2264,1239,2266,1237,2268,1236,2268,1235,2268,1234,2269,1232,2270,1230,2268,1227,2268,1228,2267,1228,Q,2265,1230,2262,1229,Z],[M,1420,483,Q,1417,485,1413,486,1408,487,1403,488,1400,489,1398,490,1397,491,1397,491,1396,492,1394,492,1391,493,1387,494,1380,496,1373,500,1370,501,1368,503,1365,505,1363,507,1362,507,1362,508,1360,511,1355,514,1355,515,1355,515,1354,518,1353,519,1349,524,1344,524,1332,525,1319,524,1311,524,1303,524,1295,524,1290,520,1287,517,1286,512,1284,508,1281,507,1273,506,1264,507,1255,509,1245,511,1239,512,1233,513,1229,514,1231,510,1233,504,1234,497,1234,497,1233,497,1232,497,1230,496,1230,496,1229,496,1219,494,1208,491,1205,490,1201,488,1201,486,1202,484,1202,482,1200,480,1197,478,1194,477,1193,477,1191,477,1189,478,1186,479,1178,480,1170,480,1166,480,1162,478,1156,476,1152,471,1146,465,1140,462,1137,460,1133,459,1131,458,1129,459,1128,459,1126,459,1125,459,1124,460,1123,460,1123,460,1122,461,1120,461,1119,462,1116,462,1115,462,1114,462,1113,463,1113,462,1105,462,1098,460,1090,459,1081,458,1074,458,1068,461,1061,465,1058,473,1055,483,1053,493,1052,501,1048,507,1044,516,1038,524,1032,532,1028,541,1026,545,1026,548,1026,550,1027,552,1027,553,1027,553,1028,555,1028,555,1030,557,1031,561,1031,562,1032,563,1032,564,1032,564,1033,570,1039,573,1040,574,1040,574,1042,574,1043,575,1043,575,1044,575,1047,576,1050,576,1052,576,1052,576,1058,581,1063,586,1064,588,1065,588,1067,588,1068,588,1068,588,1069,587,1075,585,1080,581,1086,576,1089,572,1090,571,1090,571,1090,570,1091,570,1093,566,1096,563,1097,563,1098,562,1101,560,1104,558,1105,558,1105,557,1109,556,1113,554,1115,553,1116,552,1130,544,1144,536,1145,536,1145,536,1147,535,1148,534,1149,533,1153,533,1152,534,1152,534,1151,535,1150,536,1149,538,1148,541,1147,544,1147,547,1146,549,1146,551,1145,552,1145,553,1145,554,1145,554,1145,556,1146,558,1147,560,1149,560,1150,560,1150,560,1153,561,1155,562,1157,563,1158,563,1160,563,1161,564,1165,566,1167,568,1168,568,1167,569,1165,579,1158,586,1157,586,1156,587,1153,588,1154,593,1155,594,1155,594,1157,598,1163,596,1163,596,1164,596,1174,596,1184,596,1187,596,1190,597,1192,597,1194,597,1195,598,1195,598,1198,599,1200,600,1205,600,1206,604,1206,606,1206,608,1206,610,1205,611,1197,621,1186,624,1185,624,1184,625,1176,626,1172,632,1171,636,1171,639,1172,641,1173,641,1174,642,1175,642,L,1175,642,Q,1176,643,1176,643,1178,643,1179,643,1183,644,1188,644,1206,646,1225,646,1233,646,1240,646,1247,647,1253,647,1254,648,1255,648,1258,648,1260,649,1262,649,1263,649,1266,649,1269,650,1270,650,1271,650,1273,651,1275,651,1279,652,1281,653,1283,653,1284,653,1287,654,1290,654,1294,655,1296,656,1301,658,1306,658,1310,658,1314,659,1315,659,1315,659,1317,659,1318,660,1318,660,1319,661,1320,661,1320,662,1322,663,1321,666,L,1321,666,Q,1321,666,1322,666,1322,666,1323,666,1326,664,1329,664,1330,664,1330,664,1332,666,1333,667,1333,666,1333,665,1335,665,1335,664,1339,656,1341,648,1342,648,1343,647,1344,647,1344,647,1348,647,1351,648,1359,650,1365,653,1367,654,1367,655,1371,661,1379,660,1392,660,1404,661,1407,661,1409,659,1410,658,1412,657,1414,656,1415,655,1416,654,1417,653,1419,651,1422,649,1423,649,1424,647,1425,647,1425,645,1425,643,1425,640,1425,639,1425,638,1425,637,1425,635,1423,633,1426,631,1428,628,1434,625,1435,625,1435,624,1437,624,1438,623,1441,622,1441,617,1442,615,1441,613,1441,612,1440,611,1439,610,1438,609,1437,608,1437,607,1434,604,1433,599,1433,597,1432,595,1432,594,1432,593,1432,592,1432,590,1432,590,1432,589,1427,583,1422,577,1419,573,1416,568,1416,567,1416,567,1415,566,1414,565,1409,561,1409,557,1409,556,1409,554,1407,548,1405,539,1405,537,1404,536,1402,533,1403,528,1404,524,1406,520,1414,506,1423,492,1426,489,1427,484,1427,481,1422,482,Q,1421,482,1420,483,Z],[M,1418,411,Q,1417,402,1407,397,1400,394,1393,392,1390,391,1389,390,1389,390,1388,389,1385,382,1380,379,1379,378,1378,378,1372,377,1365,377,1364,377,1363,377,1361,378,1359,378,1359,379,1358,379,1355,382,1353,384,1352,385,1352,385,1349,387,1347,389,1342,394,1337,398,1336,399,1334,399,1332,400,1329,400,1324,399,1323,395,1322,395,1322,395,1321,394,1320,394,1303,385,1284,382,1283,382,1282,381,1281,381,1279,381,1278,380,1277,380,1271,378,1264,377,1263,377,1262,376,1261,376,1260,376,1260,376,1259,376,1258,377,1257,377,1256,377,1255,378,1252,380,1248,383,1237,394,1227,406,1222,412,1218,419,1218,420,1218,420,1217,422,1215,422,1214,423,1212,424,1213,425,1213,426,1215,429,1216,432,1219,437,1222,440,1223,442,1227,442,1228,443,1229,443,1230,444,1230,444,1233,445,1235,444,1240,442,1246,441,1256,438,1265,442,1269,444,1271,450,1272,454,1274,455,1287,462,1302,467,1302,467,1303,467,1304,467,1305,466,1307,464,1309,462,1310,461,1310,460,1315,454,1321,449,1327,444,1335,442,1344,440,1352,438,1358,436,1364,434,1380,431,1395,427,1397,427,1398,426,1400,425,1403,425,1409,424,1413,420,Q,1419,415,1418,411,Z],[M,1513,478,Q,1509,480,1506,486,1503,493,1500,499,1497,504,1494,508,1493,509,1492,509,1491,510,1489,510,1484,511,1478,516,1472,520,1467,523,1466,524,1466,524,1465,526,1466,526,1467,529,1470,530,1476,535,1483,537,1491,539,1499,539,1501,539,1501,540,1510,544,1519,550,1526,554,1533,554,1541,555,1549,551,1557,548,1564,544,1565,544,1565,544,1567,543,1568,543,1569,543,1569,542,1571,540,1576,540,1575,538,1574,534,1574,533,1575,533,1576,532,1575,529,1575,528,1576,528,1578,526,1577,522,1577,521,1576,520,1576,518,1575,517,1575,516,1575,514,1574,513,1574,511,1574,508,1574,506,1574,505,1573,503,1573,502,1573,501,1574,500,1574,499,1574,498,1574,497,1575,494,1574,491,1574,486,1570,483,1565,478,1558,478,1549,478,1540,478,1533,479,1525,477,Q,1519,476,1513,478,Z],[M,2002,538,Q,1997,529,1988,524,1972,515,1954,512,1952,512,1950,513,1949,513,1948,513,1947,514,1945,514,1944,514,1943,515,1936,517,1932,520,1931,521,1930,522,1929,523,1927,523,1919,527,1910,526,1909,526,1908,526,1907,525,1904,524,1903,524,1902,524,1894,524,1888,521,1887,521,1885,520,1882,520,1882,517,1882,514,1882,510,1881,505,1881,499,1880,492,1878,485,1877,479,1871,476,1865,473,1858,473,1851,474,1844,476,1832,481,1819,485,1812,488,1805,492,1799,497,1793,502,1785,511,1781,522,1781,523,1781,524,1780,525,1780,526,1779,529,1776,534,1776,534,1776,535,1776,538,1772,539,1769,539,1767,537,1764,533,1762,526,1761,514,1758,502,1757,496,1752,492,1749,489,1743,491,1732,496,1723,503,1717,508,1713,516,1712,518,1712,519,1709,529,1707,539,1706,547,1710,552,1714,559,1722,562,1717,576,1716,590,1715,595,1718,600,1719,601,1719,601,1721,602,1722,602,1723,602,1724,603,1725,605,1728,604,1733,603,1738,605,1746,609,1754,613,1755,613,1755,613,1757,614,1758,614,1759,615,1762,615,1763,615,1764,614,1765,614,1768,614,1769,614,1770,613,1771,613,1772,613,1773,612,1774,612,1777,611,1780,612,1781,613,1782,614,1785,616,1785,620,1786,620,1787,619,1788,619,1789,619,1791,620,1791,620,L,1785,620,Q,1778,626,1774,631,1774,632,1773,632,1772,633,1771,634,1765,643,1756,654,1755,656,1753,658,1753,658,1752,659,1749,663,1745,669,1733,684,1718,695,1718,696,1717,696,1713,696,1709,696,1704,696,1703,691,1703,690,1703,689,1703,688,1702,688,1700,688,1700,685,1701,684,1700,683,1699,680,1698,676,1696,666,1699,656,1699,655,1699,654,1697,652,1698,648,1698,647,1699,645,1700,643,1698,640,1696,639,1693,639,1689,639,1686,641,1678,646,1674,654,1674,655,1673,655,1672,656,1671,657,1670,658,1669,659,1669,660,1668,660,1665,660,1662,662,1661,662,1661,662,1660,662,1659,662,1656,660,1654,659,1654,658,1653,658,1649,652,1651,644,1651,643,1650,641,1650,641,1650,640,1649,639,1649,638,1648,636,1647,634,1645,631,1644,629,1643,628,1643,626,1643,626,1642,625,1642,624,1641,623,1641,622,1641,621,1641,620,1640,619,1640,618,1640,618,1639,615,1638,613,1634,607,1634,599,1634,590,1634,580,1634,575,1634,570,1634,556,1634,541,1634,540,1634,539,1632,536,1631,533,1628,528,1625,523,1623,518,1625,512,1627,506,1632,502,1639,497,1648,496,1657,495,1666,493,1678,491,1687,485,1693,482,1692,475,1692,470,1687,466,1683,463,1679,461,1679,461,1678,461,1671,458,1663,459,1662,459,1661,458,1658,457,1653,458,1643,459,1638,466,1637,468,1636,468,1635,469,1633,469,1633,470,1632,470,1631,471,1629,472,1623,476,1617,482,1616,483,1616,484,1614,485,1612,487,1611,487,1611,487,1606,490,1601,494,1598,497,1595,503,1595,503,1595,504,1594,505,1595,506,1596,508,1596,510,1596,515,1597,519,1599,525,1601,530,1603,537,1602,542,1601,555,1595,565,1589,577,1579,586,1574,591,1571,597,1567,604,1569,610,1570,614,1573,618,1579,628,1581,639,1585,656,1584,674,1584,677,1583,679,1580,682,1577,684,1576,685,1574,685,1565,687,1562,694,1560,697,1557,700,1553,703,1550,707,1546,710,1543,708,1543,708,1542,708,1537,708,1537,704,1537,703,1537,701,1538,697,1539,694,1539,693,1540,691,1540,691,1540,690,1540,688,1539,686,1538,684,1536,683,1536,682,1534,682,1532,681,1531,680,1529,679,1527,678,1526,678,1524,678,1518,678,1512,679,1511,680,1511,680,1508,682,1503,683,1502,684,1501,684,1497,686,1492,685,1491,685,1489,686,1481,688,1472,688,1467,688,1463,688,1457,689,1451,688,1450,688,1449,688,1444,688,1439,688,1435,688,1431,688,1424,689,1417,688,1406,686,1394,683,1392,683,1389,682,1381,679,1372,676,1364,674,1356,672,1355,671,1354,671,1352,670,1348,670,1347,670,1346,670,1345,670,1344,669,1338,668,1333,670,1328,671,1323,674,1323,675,1322,675,1318,680,1314,681,1313,682,1313,684,1307,696,1304,708,1302,713,1301,718,1299,722,1298,721,1290,715,1285,705,1284,703,1283,701,1282,700,1281,699,1281,699,1279,699,1279,699,1278,699,1274,701,1270,701,1269,701,1268,702,1267,702,1262,702,1257,701,1253,701,1244,701,1234,701,1232,701,1230,701,1214,701,1198,703,1195,701,1193,701,1190,700,1188,701,1187,701,1187,701,1183,702,1182,700,1179,697,1177,700,1176,700,1175,700,1173,700,1171,699,1169,697,1170,694,1170,691,1170,689,1169,686,1170,684,1170,683,1170,681,1170,680,1171,679,1171,678,1171,676,1172,674,1172,671,1171,666,1173,663,1174,662,1174,660,1174,659,1173,658,1172,655,1171,654,1170,654,1171,653,1170,653,1168,653,1154,657,1140,656,1137,656,1134,657,1130,657,1128,656,1125,655,1122,654,1108,651,1097,643,1075,630,1049,633,1033,634,1016,634,1014,634,1012,634,1010,634,1010,633,1008,620,995,621,994,622,993,622,981,622,969,622,963,623,962,619,961,615,960,611,960,609,959,608,955,605,951,605,944,607,939,613,936,617,935,622,934,623,934,624,933,626,932,627,928,631,926,635,L,923,635,Q,922,637,920,639,916,642,911,642,891,643,871,645,867,645,862,645,855,646,849,646,837,647,828,644,827,644,826,644,823,643,817,644,806,645,802,659,787,662,770,661,769,661,767,662,748,666,733,657,727,654,721,651,711,645,699,642,692,640,686,639,676,637,667,634,664,633,662,633,656,632,650,632,636,631,622,629,616,628,609,628,601,629,594,626,592,626,590,625,566,616,540,613,527,612,514,608,476,598,437,591,436,591,435,591,428,590,422,589,420,589,418,589,390,587,364,598,350,604,336,609,324,613,317,617,316,617,315,618,313,618,312,619,308,622,300,626,299,627,298,627,295,628,293,629,283,631,275,637,266,643,257,647,256,647,255,648,251,649,248,651,245,653,242,655,232,661,229,667,227,672,222,673,216,676,213,679,212,679,211,679,207,679,205,681,204,682,202,683,202,683,201,684,201,684,201,684,200,683,200,682,199,682,199,682,192,682,186,683,185,683,184,684,179,695,185,712,187,726,197,736,208,748,223,754,228,755,228,759,229,761,228,762,224,768,212,767,180,766,148,773,136,775,128,787,127,789,127,791,126,797,125,804,124,811,128,817,133,825,139,828,L,142,829,Q,144,831,146,831,150,832,154,834,156,834,158,835,177,842,195,832,203,828,210,825,214,823,218,824,220,825,221,827,221,828,220,829,218,831,217,833,213,844,201,852,199,853,198,855,194,862,182,868,179,869,175,870,174,870,173,871,171,871,169,872,162,873,156,872,155,872,152,872,138,870,133,882,132,884,131,886,127,889,123,891,108,901,98,918,96,922,95,926,94,937,93,952,93,958,95,963,97,974,111,979,118,981,126,982,129,982,132,981,136,980,141,981,142,981,142,982,147,1001,143,1019,143,1021,144,1022,146,1025,148,1025,150,1024,152,1027,153,1028,154,1028,157,1031,165,1031,166,1031,167,1032,172,1034,175,1033,178,1031,182,1030,184,1030,185,1028,188,1026,191,1024,206,1017,220,1011,221,1011,222,1012,222,1017,220,1022,218,1029,213,1035,210,1038,207,1041,199,1049,186,1057,174,1064,163,1072,156,1077,150,1081,148,1082,147,1083,139,1091,126,1098,125,1099,124,1100,123,1103,120,1105,115,1107,113,1110,112,1112,110,1114,108,1117,106,1119,102,1127,103,1137,104,1141,111,1141,113,1141,113,1142,114,1144,118,1143,135,1137,152,1131,158,1128,161,1126,164,1123,168,1121,179,1116,188,1109,199,1102,209,1093,222,1082,236,1073,244,1068,251,1064,259,1059,269,1052,274,1048,278,1044,290,1035,301,1021,303,1019,304,1018,310,1013,316,1004,320,999,324,995,325,994,326,993,328,988,332,982,350,959,366,939,L,366,939,Q,368,937,369,935,370,935,371,935,377,936,374,945,370,953,365,960,359,969,356,980,355,981,355,982,354,983,354,985,353,988,353,991,L,354,999,Q,363,1002,372,999,380,996,387,991,388,990,389,986,389,986,390,985,393,985,394,982,396,976,402,974,403,974,405,974,411,974,415,971,417,970,418,969,424,968,430,965,432,964,433,963,438,960,446,956,447,956,448,955,450,951,452,945,454,942,458,941,459,940,460,940,466,940,468,942,470,943,471,943,479,943,487,946,488,947,489,947,497,947,502,951,505,954,506,957,507,958,508,958,512,960,517,966,518,967,519,967,522,968,524,969,527,970,529,969,533,969,535,971,536,972,538,972,543,971,548,970,553,968,559,968,560,968,561,967,566,966,569,968,571,968,572,969,573,969,574,969,592,974,605,989,608,992,610,997,611,998,611,1e3,612,1002,613,1003,618,1009,625,1012,635,1017,645,1019,649,1020,652,1020,658,1021,661,1019,662,1018,664,1018,665,1017,667,1017,670,1016,674,1014,675,1014,675,1014,676,1014,677,1014,679,1015,681,1016,689,1024,696,1033,702,1040,705,1045,708,1049,710,1052,710,1053,710,1054,709,1061,710,1066,711,1068,711,1069,712,1071,712,1073,714,1078,714,1084,714,1085,715,1086,720,1091,726,1098,727,1099,728,1100,729,1100,729,1101,730,1103,730,1104,733,1115,733,1126,735,1127,736,1128,737,1130,736,1134,735,1141,737,1146,738,1148,738,1149,741,1156,745,1162,748,1166,750,1172,750,1173,751,1174,755,1177,761,1179,764,1179,766,1181,776,1187,780,1201,781,1207,782,1214,783,1221,786,1225,787,1227,788,1229,793,1236,804,1246,810,1251,814,1257,815,1259,816,1260,821,1265,823,1270,825,1276,828,1279,829,1280,831,1281,832,1281,832,1282,838,1289,838,1298,838,1299,839,1300,839,1302,840,1303,840,1304,840,1305,841,1305,841,1306,845,1317,847,1327,848,1335,844,1339,833,1347,819,1348,817,1348,814,1346,814,1346,813,1345,809,1347,809,1353,809,1354,808,1355,808,1358,807,1361,807,1363,806,1365,806,1368,806,1371,807,1377,805,1379,803,1384,801,1390,799,1394,796,1400,793,1406,792,1413,792,1414,791,1415,791,1418,791,1421,790,1435,788,1448,788,1451,787,1453,786,1455,785,1456,784,1461,782,1466,778,1477,777,1486,776,1489,775,1491,774,1493,773,1494,773,1495,773,1495,773,1498,773,1504,772,1530,775,1555,776,1567,781,1577,787,1591,797,1603,805,1612,811,1623,817,1633,818,1645,820,1661,817,1676,816,1685,821,1688,822,1689,822,1689,823,1693,826,1693,829,1693,831,1695,831,1696,833,1697,840,1699,843,1706,844,1707,844,1707,849,1708,850,1713,850,1714,850,1714,850,1715,850,1716,849,1720,853,1723,856,1725,861,1725,865,1725,867,1727,868,1728,868,1729,872,1733,874,1738,874,1737,874,1736,875,1738,876,1740,876,1740,877,1740,L,877,1741,Q,879,1753,883,1764,886,1770,886,1777,886,1779,887,1781,888,1783,889,1786,899,1805,909,1824,916,1837,921,1849,922,1851,922,1852,923,1854,923,1855,924,1859,925,1862,926,1867,927,1872,928,1874,928,1875,929,1878,928,1882,928,1884,928,1885,928,1886,928,1887,929,1889,929,1890,930,1895,934,1897,935,1898,935,1898,937,1899,938,1900,944,1905,948,1910,949,1911,950,1912,950,1914,951,1915,956,1929,964,1939,968,1946,972,1952,973,1953,973,1953,977,1957,979,1963,979,1964,980,1965,985,1970,992,1974,995,1975,997,1974,998,1973,1e3,1973,1001,1972,1002,1972,1003,1971,1004,1971,1007,1966,1007,1960,1007,1939,1006,1918,1006,1918,1006,1917,1004,1909,1e3,1903,999,1901,997,1900,989,1893,980,1885,979,1885,978,1884,976,1882,974,1880,973,1879,971,1877,966,1871,963,1864,963,1863,962,1862,961,1861,960,1859,958,1855,957,1849,957,1844,954,1842,953,1842,953,1841,952,1839,951,1837,948,1832,945,1826,944,1822,945,1818,952,1805,960,1792,961,1792,962,1792,964,1792,965,1793,968,1795,968,1799,968,1801,968,1802,968,1807,969,1811,969,1812,970,1812,970,1815,971,1817,971,1824,975,1826,976,1827,977,1829,978,1831,979,1832,985,1837,991,1843,994,1845,995,1849,996,1850,996,1850,998,1852,999,1854,1012,1873,1026,1892,1031,1899,1034,1906,1042,1921,1049,1937,1053,1945,1058,1952,1067,1965,1080,1975,1090,1983,1093,1992,1097,2002,1100,2013,1102,2021,1105,2030,1105,2031,1106,2031,1106,2033,1106,2035,1106,2038,1106,2041,1106,2043,1106,2044,1108,2063,1113,2081,1114,2085,1116,2088,1125,2097,1141,2101,1154,2103,1158,2109,1159,2110,1159,2111,1167,2118,1174,2124,1187,2134,1196,2139,1197,2140,1197,2140,1205,2144,1211,2148,1225,2156,1238,2165,1241,2167,1245,2169,1249,2171,1253,2173,1254,2174,1256,2173,1259,2173,1260,2175,1261,2176,1262,2176,1266,2176,1270,2177,1276,2177,1282,2178,1284,2178,1285,2178,1293,2179,1295,2178,1297,2178,1299,2178,1304,2179,1309,2180,1310,2180,1312,2180,1314,2181,1317,2181,1322,2182,1329,2185,1333,2187,1337,2189,1343,2191,1348,2194,1350,2195,1352,2196,1354,2198,1355,2199,1358,2202,1361,2205,1362,2206,1364,2207,1366,2208,1368,2208,1369,2209,1371,2209,1372,2209,1373,2210,1375,2211,1376,2211,1377,2212,1378,2212,1389,2217,1400,2222,1408,2225,1416,2227,1428,2231,1440,2235,1450,2238,1458,2242,1469,2247,1480,2252,1484,2253,1486,2255,1494,2260,1501,2266,1503,2268,1504,2271,1504,2272,1505,2272,1510,2279,1513,2289,1514,2293,1517,2295,1517,2296,1518,2297,1518,2298,1518,2299,1522,2303,1526,2307,1527,2308,1527,2309,1528,2313,1531,2316,1536,2323,1544,2329,1548,2332,1553,2335,1555,2336,1558,2337,1565,2338,1572,2341,L,1571,2341,Q,1575,2341,1575,2343,1576,2345,1577,2346,1582,2351,1585,2357,1588,2364,1597,2368,1600,2369,1603,2371,1605,2372,1606,2373,1607,2374,1608,2375,1609,2376,1610,2376,1614,2379,1620,2380,1627,2380,1635,2378,1636,2378,1637,2378,1641,2377,1645,2375,1646,2375,1648,2374,1649,2374,1650,2374,1652,2371,1653,2370,1666,2364,1678,2357,1683,2355,1689,2353,1693,2352,1698,2352,L,1698,2345,Q,1698,2345,1697,2344,1693,2340,1688,2337,1686,2336,1683,2336,1680,2336,1677,2335,1676,2335,1676,2334,1675,2334,1673,2333,1672,2333,1672,2331,1671,2331,1671,2330,1667,2328,1664,2326,1663,2326,1662,2325,1661,2324,1658,2324,1651,2326,1645,2329,1639,2332,1634,2335,1628,2339,1621,2339,1613,2338,1606,2332,1591,2319,1581,2303,1580,2301,1581,2299,1579,2290,1575,2280,1575,2280,1575,2279,1573,2274,1576,2273,1573,2272,1574,2269,1574,2268,1575,2267,1575,2265,1576,2264,1576,2263,1576,2261,1577,2260,1576,2258,1576,2257,1576,2256,1574,2242,1579,2228,1579,2227,1579,2226,1579,2225,1580,2224,1582,2222,1581,2219,1581,2217,1581,2215,1583,2209,1584,2201,1584,2198,1584,2194,1584,2189,1583,2184,1583,2180,1578,2179,1561,2175,1543,2175,1524,2176,1504,2175,1502,2175,1499,2176,1498,2176,1496,2176,1488,2177,1486,2171,1486,2170,1485,2169,1485,2169,1485,2169,1485,2168,1485,2168,1484,2167,1484,2165,1484,2164,1484,2163,1485,2154,1484,2145,1484,2143,1485,2142,1486,2138,1488,2135,1488,2133,1489,2131,1493,2124,1496,2118,1496,2117,1496,2115,1497,2111,1498,2108,1499,2107,1499,2106,1499,2105,1500,2104,1502,2098,1506,2093,1512,2086,1513,2076,1513,2063,1513,2049,1513,2048,1512,2046,1511,2044,1508,2043,1505,2042,1499,2043,1495,2044,1490,2043,1490,2043,1489,2043,1485,2043,1487,2042,1484,2040,1480,2039,1467,2037,1454,2039,1448,2041,1443,2047,1438,2056,1431,2063,1421,2076,1408,2085,1398,2093,1387,2100,1382,2104,1375,2107,1375,2107,1373,2108,1372,2108,1371,2108,1364,2110,1357,2110,1355,2110,1353,2109,1351,2109,1348,2109,1346,2109,1343,2108,1342,2108,1341,2108,1340,2107,1338,2107,1331,2105,1325,2102,1324,2102,1323,2101,1323,2101,1322,2100,1321,2100,1320,2099,1316,2098,1315,2095,1315,2094,1314,2092,1314,2092,1314,2091,1314,2085,1311,2081,1310,2080,1308,2079,1305,2074,1301,2065,1299,2059,1296,2054,1291,2043,1289,2032,1286,2014,1286,1995,1286,1993,1286,1991,1287,1990,1287,1989,1287,1985,1289,1982,1289,1981,1290,1980,1290,1979,1290,1977,1291,1968,1291,1959,1291,1949,1293,1940,1294,1933,1297,1927,1297,1926,1296,1925,L,1296,1926,Q,1297,1925,1297,1924,1301,1919,1302,1913,1306,1901,1309,1889,1310,1886,1313,1884,1324,1879,1333,1871,L,1333,1871,Q,1334,1871,1334,1871,1337,1868,1340,1866,1348,1859,1355,1851,1359,1848,1363,1844,1365,1843,1366,1842,1366,1842,1367,1842,1370,1841,1373,1840,1375,1840,1376,1839,1377,1839,1378,1839,1379,1840,1379,1840,1384,1841,1388,1842,1389,1842,1389,1842,1394,1843,1398,1843,1400,1843,1400,1842,1402,1842,1403,1841,1405,1841,1406,1841,1410,1840,1417,1840,1418,1840,1418,1840,1420,1838,1423,1839,1425,1839,1426,1839,1426,1840,1427,1840,1428,1841,1429,1841,1430,1841,1431,1841,1439,1840,1448,1840,1451,1840,1453,1840,1458,1839,1462,1838,1468,1837,1474,1834,1480,1833,1484,1831,1486,1830,1486,1830,1487,1828,1489,1827,1492,1826,1493,1826,1495,1825,1495,1825,1496,1823,1498,1823,1509,1820,1522,1818,1525,1818,1527,1816,1528,1816,1528,1815,1528,1813,1531,1813,1532,1813,1533,1812,1534,1812,1534,1812,1537,1810,1539,1811,1550,1813,1561,1816,1565,1817,1567,1819,1568,1820,1568,1820,1573,1823,1577,1826,1578,1827,1578,1827,1580,1828,1581,1828,1583,1828,1586,1827,1587,1827,1588,1827,1590,1826,1591,1826,1592,1826,1593,1825,1595,1825,1596,1825,1597,1825,1598,1824,1605,1824,1608,1827,1616,1836,1620,1849,1622,1854,1622,1860,1622,1863,1622,1865,1623,1867,1623,1868,1623,1873,1624,1878,1625,1887,1627,1896,1629,1909,1632,1921,1632,1923,1633,1924,1635,1925,1635,1926,1636,1927,1637,1929,1640,1934,1647,1937,1648,1937,1648,1937,1652,1937,1656,1936,1663,1934,1665,1926,1665,1925,1665,1924,1666,1923,1666,1921,1666,1920,1667,1919,1667,1918,1667,1916,1668,1916,1668,1915,1668,1914,1669,1913,1670,1908,1672,1903,1673,1901,1674,1899,1674,1898,1675,1896,1675,1896,1675,1895,1676,1893,1677,1891,1679,1886,1678,1880,1678,1878,1678,1876,1678,1875,1677,1874,1677,1870,1676,1866,1676,1865,1675,1864,1674,1863,1674,1860,1674,1859,1673,1858,1672,1857,1671,1855,1667,1849,1665,1845,1664,1844,1664,1841,1664,1841,1664,1840,1663,1830,1663,1819,1663,1818,1663,1816,1663,1816,1663,1815,1663,1813,1663,1810,1665,1802,1668,1795,1669,1788,1669,1781,1669,1772,1677,1765,1684,1759,1691,1752,1696,1748,1700,1744,1711,1734,1723,1727,1733,1720,1744,1714,1746,1713,1748,1712,1750,1712,1750,1711,1753,1708,1755,1706,1766,1691,1777,1678,1778,1675,1779,1671,1779,1666,1779,1660,1779,1658,1780,1656,1780,1655,1780,1654,1779,1644,1779,1631,1779,1630,1780,1629,1780,1628,1780,1628,1781,1624,1782,1620,1783,1620,1783,1619,1787,1617,1791,1616,1792,1615,1793,1615,1794,1615,1794,1614,1800,1611,1805,1608,1808,1606,1810,1602,1811,1599,1810,1596,1810,1592,1812,1591,1813,1591,1813,1590,1813,1589,1814,1589,1815,1588,1817,1587,1819,1585,1822,1584,1823,1583,1823,1582,1827,1578,1831,1574,1836,1570,1840,1569,1842,1568,1842,1567,1843,1566,1843,1566,1845,1565,1845,1562,1844,1561,1845,1560,1845,1559,1845,1558,1845,1557,1845,1555,1845,1553,1846,1551,1846,1550,1846,1549,1847,1545,1849,1545,1851,1544,1852,1543,1852,1543,1853,1543,1856,1541,1859,1540,1860,1539,1860,1539,1864,1534,1867,1530,1874,1523,1882,1516,1882,1516,1883,1516,1884,1516,1887,1517,1887,1517,1888,1517,1888,1518,1888,1518,1889,1518,1889,1519,1891,1519,1892,1520,1900,1522,1909,1518,1917,1516,1925,1511,1925,1511,1925,1510,1925,1509,1926,1507,1926,1507,1926,1506,1929,1501,1934,1494,1935,1492,1935,1489,1935,1488,1935,1487,1934,1483,1935,1479,1935,1478,1935,1476,1934,1472,1935,1467,1935,1467,1935,1466,1935,1464,1936,1461,1937,1457,1939,1453,1940,1452,1940,1450,1940,1449,1941,1448,1944,1446,1948,1444,1949,1443,1949,1443,1952,1442,1954,1442,1955,1442,1955,1442,1957,1441,1958,1441,1962,1439,1965,1438,1972,1435,1979,1432,1991,1427,2002,1424,2006,1423,2010,1423,2011,1422,2012,1422,L,2012,1422,Q,2014,1422,2015,1421,2017,1420,2020,1418,2021,1418,2021,1417,2022,1417,2023,1417,2023,1416,2024,1416,2025,1416,2025,1415,2026,1415,2026,1414,2027,1414,2027,1414,2029,1412,2030,1411,2031,1411,2032,1411,2033,1411,2034,1410,2034,1410,2035,1409,2036,1409,2037,1409,2039,1407,2042,1405,2043,1405,2043,1404,2044,1404,2044,1404,2045,1404,2045,1403,2046,1403,2046,1402,2048,1401,2050,1401,2051,1400,2051,1400,2052,1400,2052,1399,2053,1399,2054,1399,2054,1398,2054,1398,2055,1398,2055,1397,2056,1397,2057,1397,L,2057,1397,2058,1396,Q,2058,1396,2059,1396,2060,1396,2061,1396,2061,1397,2062,1397,2062,1397,2062,1398,2063,1398,2063,1399,2064,1399,2063,1400,2059,1405,2055,1409,2050,1412,2045,1415,2040,1418,2034,1422,2032,1424,2029,1426,2027,1427,2026,1430,2026,1431,2025,1431,2023,1432,2023,1435,2023,1436,2023,1436,2024,1437,2024,1437,2025,1439,2027,1441,2027,1442,2028,1442,2030,1444,2033,1444,2034,1445,2035,1445,2036,1446,2037,1445,2041,1444,2045,1442,2047,1441,2048,1440,2050,1439,2053,1436,2054,1436,2054,1435,2056,1435,2057,1435,2058,1434,2059,1434,2063,1433,2067,1431,2070,1430,2073,1429,2074,1429,2075,1428,2078,1426,2080,1425,2081,1424,2082,1424,2082,1423,2083,1423,2084,1422,2085,1422,2090,1420,2094,1419,2096,1419,2096,1418,2103,1413,2109,1409,2110,1408,2110,1407,2111,1407,2112,1407,2113,1406,2114,1406,2115,1404,2117,1404,2118,1404,2119,1403,2127,1399,2139,1391,2143,1389,2148,1389,2149,1389,2150,1389,2153,1388,2155,1386,2165,1381,2158,1371,2157,1371,2157,1370,2153,1368,2152,1364,2152,1363,2151,1361,2151,1361,2150,1360,2150,1359,2150,1359,2150,1356,2150,1353,L,2148,1353,Q,2134,1354,2120,1361,L,2120,1378,2100,1378,Q,2091,1378,2084,1375,2084,1373,2083,1370,2082,1368,2081,1367,2081,1364,2080,1362,2080,1361,2078,1360,2074,1356,2068,1349,2067,1349,2065,1348,2064,1347,2063,1347,2060,1344,2059,1339,2058,1339,2058,1338,2058,1335,2058,1333,2059,1329,2059,1324,2059,1323,2059,1322,2064,1318,2066,1315,2072,1311,2078,1307,2079,1306,2080,1304,2083,1300,2083,1297,2084,1296,2083,1294,2082,1292,2081,1290,2081,1289,2080,1289,2066,1283,2050,1283,2042,1282,2033,1284,2024,1286,2015,1291,2005,1297,1996,1304,1990,1308,1984,1313,1983,1314,1983,1314,1981,1315,1978,1317,L,1979,1319,Q,1979,1320,1978,1320,1970,1332,1962,1344,1961,1345,1961,1346,1960,1349,1957,1351,1951,1355,1945,1357,1935,1361,1925,1363,1926,1362,1926,1361,1925,1361,1924,1362,1925,1360,1927,1358,1930,1355,1932,1351,1933,1350,1936,1348,1941,1345,1944,1343,1945,1342,1946,1341,1948,1340,1949,1339,1957,1332,1968,1323,1973,1320,1977,1316,1977,1316,1978,1315,1983,1311,1986,1307,1987,1306,1988,1306,1991,1305,1993,1303,1999,1297,2004,1293,2005,1292,2005,1292,2006,1291,2007,1290,2008,1288,2010,1286,2013,1284,2016,1281,2025,1272,2035,1264,2041,1260,2049,1257,2067,1251,2085,1246,2087,1245,2088,1245,2088,1245,2089,1245,2090,1244,2091,1244,2092,1244,2093,1243,2094,1243,2096,1242,2103,1242,2110,1242,2120,1242,2129,1244,2136,1245,2144,1245,2155,1246,2165,1244,2177,1242,2188,1237,2192,1235,2196,1231,2203,1222,2211,1216,2217,1211,2224,1210,2235,1208,2246,1206,2248,1206,2251,1207,2253,1207,2253,1206,2254,1206,2255,1205,2257,1204,2260,1203,2260,1203,2260,1201,2261,1195,2264,1189,2268,1182,2270,1175,2272,1167,2272,1159,2272,1158,2271,1156,2269,1150,2264,1144,2257,1137,2249,1131,2247,1130,2245,1128,2243,1126,2240,1124,2239,1123,2238,1122,2236,1119,2233,1118,2232,1117,2231,1116,2229,1112,2224,1110,2222,1110,2220,1108,2219,1108,2219,1106,2219,1106,2218,1106,2217,1105,2215,1105,2215,1105,2214,1104,2214,1103,2213,1103,2212,1102,2211,1101,2211,1100,2210,1098,2208,1096,2204,1094,2199,1091,2196,1088,2196,1087,2194,1087,2188,1085,2183,1081,2181,1080,2178,1078,2177,1077,2175,1077,2168,1076,2167,1069,2167,1068,2166,1066,2166,1066,2166,1065,2165,1064,2165,1063,2164,1054,2161,1045,2159,1039,2158,1032,2156,1027,2155,1020,2154,1019,2154,1018,2152,1016,2152,1011,2151,1006,2149,1004,2149,1003,2148,1003,2146,1002,2145,999,2143,995,2141,993,2138,991,2134,988,2130,984,2126,979,2125,977,2124,975,2123,974,2123,973,2121,969,2122,964,2122,963,2122,961,2123,960,2123,959,2125,952,2123,949,2123,948,2122,948,2121,947,2121,947,2120,946,2119,947,2118,948,2117,949,2115,950,2114,951,2111,956,2107,959,2106,960,2106,960,2106,962,2105,962,2101,969,2097,976,2096,978,2094,980,2092,984,2088,988,2086,991,2083,993,2083,994,2081,995,2076,998,2074,1001,2072,1005,2067,1005,2054,1007,2041,1006,2040,1006,2039,1004,2039,1003,2038,1003,2037,999,2032,997,2031,997,2031,997,2029,996,2028,996,2023,994,2022,986,2021,981,2021,976,2020,965,2019,953,2019,944,2018,935,2017,926,2011,919,2003,907,1990,898,1981,892,1970,886,1969,885,1967,885,1966,885,1964,884,1962,884,1961,883,1954,882,1948,880,1948,880,1947,879,1945,879,1943,879,1938,878,1934,876,1929,875,1923,873,1921,873,1919,873,1917,873,1916,872,1915,872,1913,872,1907,871,1901,871,1900,871,1898,872,1896,873,1892,873,1891,873,1889,872,1889,872,1888,872,1887,871,1886,871,1885,871,1884,871,1883,870,1882,870,1881,870,1881,869,1877,869,1874,869,1873,869,1872,869,1868,872,1864,876,1864,877,1863,878,1863,879,1862,880,1863,882,1863,883,1864,889,1864,895,1864,901,1861,906,1857,915,1853,924,1852,929,1851,934,1851,947,1849,960,1848,963,1847,966,1844,970,1843,974,1843,975,1843,976,1843,977,1842,977,1842,985,1842,992,1842,996,1841,1e3,1840,1008,1841,1016,1841,1021,1842,1026,1844,1031,1844,1035,1844,1036,1845,1037,1845,1038,1845,1039,1846,1043,1846,1046,1847,1054,1846,1062,1844,1073,1836,1081,1828,1090,1817,1098,1806,1106,1799,1116,1794,1123,1791,1131,1788,1142,1788,1152,1788,1161,1792,1167,1801,1183,1799,1202,1799,1203,1798,1204,1798,1204,1797,1205,1789,1217,1773,1220,1770,1221,1766,1219,1761,1217,1758,1216,1754,1213,1751,1211,1744,1206,1741,1202,1737,1198,1733,1194,1733,1193,1732,1191,1729,1188,1728,1185,1727,1182,1726,1180,1722,1171,1720,1161,1718,1153,1718,1144,1719,1143,1719,1142,1720,1141,1722,1139,1726,1134,1730,1130,1731,1129,1731,1126,1731,1126,1731,1125,1731,1123,1731,1121,1731,1120,1730,1119,1729,1116,1728,1114,1727,1111,1724,1110,1722,1109,1720,1108,1719,1106,1717,1106,1712,1106,1707,1105,1691,1103,1676,1104,1675,1104,1673,1103,1673,1103,1672,1103,1666,1102,1663,1099,1663,1098,1662,1097,1658,1094,1653,1090,1641,1082,1628,1074,1624,1071,1620,1068,1617,1067,1614,1064,1611,1062,1608,1059,1608,1058,1607,1057,1607,1054,1603,1051,1598,1048,1593,1046,1593,1046,1592,1045,1591,1044,1590,1043,1588,1041,1584,1040,1582,1040,1581,1039,1578,1039,1574,1038,1570,1038,1568,1036,1568,1035,1566,1034,1564,1032,1562,1030,1561,1029,1561,1029,1558,1027,1553,1025,1550,1023,1546,1020,1545,1019,1544,1019,1543,1019,1542,1018,1537,1015,1532,1010,1530,1007,1528,1005,1525,1002,1524,997,1524,997,1524,996,1523,993,1522,990,1519,979,1520,969,1521,958,1527,947,1531,939,1535,931,1539,925,1542,919,1546,911,1551,904,1559,894,1568,885,1578,877,1584,871,1588,867,1592,862,1593,862,1593,861,1594,859,1595,857,1597,855,1598,854,1606,842,1617,832,1622,828,1626,823,1628,821,1632,820,1633,819,1633,819,1637,816,1642,812,1648,808,1653,804,1654,803,1654,803,1652,801,1656,800,1659,800,1661,799,1664,797,1668,796,1670,796,1670,795,1674,791,1674,786,1674,786,1674,785,1674,782,1674,778,1674,777,1674,776,1675,773,1677,771,1684,766,1691,763,1698,759,1701,755,1701,755,1702,754,1703,753,1704,750,1704,749,1704,748,1704,746,1705,744,1706,741,1707,739,1708,738,1708,738,1710,737,1711,737,1715,736,1718,735,1719,735,1719,735,1725,735,1731,733,1732,733,1733,733,1741,734,1747,732,1752,730,1757,729,1761,728,1763,728,1764,728,1764,728,1771,728,1777,726,1778,726,1778,726,1780,725,1781,725,1783,725,1786,724,1787,723,1788,722,1789,722,1789,722,1795,718,1803,716,1804,716,1804,716,1806,715,1807,715,1808,715,1808,714,1810,713,1812,712,1813,712,1813,711,1816,708,1818,706,1819,706,1819,705,1819,704,1820,703,1820,702,1820,700,1820,697,1819,694,1815,687,1812,681,1807,674,1812,668,1813,667,1813,665,1814,662,1817,661,1822,659,1826,654,1826,653,1826,653,1827,652,1827,651,1829,650,1828,646,1828,645,1828,644,1828,643,1827,643,1824,638,1821,634,1821,633,1819,632,1815,629,1808,625,1808,625,1807,624,1806,624,1805,623,1802,620,1797,620,1794,620,1792,620,1792,619,1792,619,1793,618,1793,618,1797,614,1805,611,1818,607,1831,604,1845,602,1859,602,1876,602,1893,604,1902,605,1910,609,1918,612,1926,616,1933,621,1941,625,1941,626,1942,626,1943,628,1946,628,1947,628,1948,629,1952,632,1957,635,1958,637,1959,639,1963,643,1965,646,1966,647,1967,648,1970,653,1972,658,1973,659,1974,660,1976,663,1979,667,1979,668,1980,668,1984,675,1988,682,1993,691,1996,700,1998,707,1995,711,1995,712,1994,713,1992,714,1991,715,1988,715,1986,714,1985,717,1982,717,1981,717,1981,717,1978,719,1978,721,1975,725,1972,728,1967,736,1959,741,1934,762,1905,776,1892,783,1880,791,1879,791,1879,792,1879,793,1879,794,1879,794,1879,795,1879,798,1883,797,1899,797,1915,797,1935,798,1955,801,1962,803,1968,806,1974,809,1977,815,1977,816,1977,816,1978,818,1978,819,1979,819,1979,820,1983,826,1988,831,1995,839,2003,846,2005,849,2008,851,2021,858,2032,862,2042,866,2053,871,2054,872,2055,873,2056,874,2058,875,2061,876,2065,878,2066,878,2067,878,2068,879,2069,879,2070,881,2073,880,2080,879,2086,876,2090,875,2091,872,2092,867,2091,862,2091,862,2091,861,2090,859,2089,858,2086,854,2084,851,2081,846,2079,841,2088,842,2097,843,2101,843,2105,843,2111,844,2117,845,L,2117,845,Q,2120,845,2123,846,2124,846,2124,846,2126,845,2127,845,2127,845,2128,844,2129,844,2130,843,2133,843,2134,840,2138,835,2138,828,2137,817,2133,807,2129,797,2123,789,2111,775,2098,762,2091,755,2092,748,2092,743,2099,743,2115,742,2125,751,2126,752,2126,753,2127,757,2129,759,2131,760,2131,761,2132,762,2133,762,2134,763,2135,764,2141,769,2143,774,2144,775,2145,776,2149,780,2153,782,2161,785,2162,779,2162,778,2163,778,2164,777,2164,775,2164,773,2165,771,2165,770,2165,769,2165,768,2166,766,2167,763,2169,759,2170,755,2173,753,2174,752,2174,751,2174,750,2175,749,2179,741,2182,738,2182,737,2183,736,2186,733,2188,730,2192,724,2191,719,2189,711,2182,705,2175,700,2167,696,2154,690,2140,685,2127,681,2119,675,2118,675,2117,674,2116,673,2114,672,2108,668,2102,663,2101,662,2100,661,2098,660,2097,659,2094,658,2092,656,2091,656,2090,655,2090,654,2091,651,2091,651,2091,650,2092,649,2092,648,2096,645,2098,639,2100,633,2099,627,2097,618,2093,609,2093,608,2092,606,2092,605,2092,602,2092,601,2091,600,2091,599,2091,599,2090,596,2090,594,2090,593,2089,592,2086,588,2082,585,2081,584,2081,584,2080,583,2080,582,2080,581,2078,577,2060,557,2032,554,2022,553,2012,551,2008,551,2007,548,Q,2004,543,2002,538,Z],[M,1633,358,Q,1630,360,1629,364,1627,372,1631,379,1631,380,1632,380,1633,381,1635,381,1639,381,1643,381,1644,381,1644,382,1645,383,1648,384,1649,384,1649,384,1656,387,1662,388,1663,389,1664,389,1668,388,1672,389,1674,393,1674,397,1675,408,1676,418,1677,426,1680,433,1683,440,1684,446,1685,449,1685,453,1690,452,1695,452,1701,451,1707,450,1712,450,1717,449,1735,448,1753,447,1767,446,1782,445,1790,445,1798,445,1809,445,1819,446,1837,448,1855,451,1857,451,1857,450,1860,448,1863,449,1865,449,1867,450,1868,450,1869,450,1870,450,1872,449,1877,447,1882,443,1893,436,1902,428,1904,426,1906,423,1907,420,1906,418,1905,414,1900,412,1893,408,1885,406,1879,403,1872,403,1871,403,1869,403,1865,401,1860,402,1859,402,1858,401,1855,400,1850,401,1848,401,1845,400,1844,400,1843,400,1841,400,1839,400,1838,401,1837,401,1836,401,1834,400,1834,400,1833,400,1830,399,1828,400,1827,400,1825,400,1824,400,1823,400,1813,399,1803,399,1793,400,1783,400,1775,401,1768,401,1766,401,1764,400,1764,400,1763,400,1760,399,1757,399,1754,399,1752,398,1748,396,1743,394,1742,394,1741,393,1731,375,1714,366,1709,363,1703,363,1702,363,1701,363,1698,361,1693,361,1690,362,1687,362,1685,363,1683,363,1677,364,1674,361,1674,360,1673,360,1670,358,1668,356,1666,353,1662,353,1661,353,1659,353,1657,352,1655,351,1654,351,1653,351,Q,1642,353,1633,358,Z],[M,1706,176,Q,1702,176,1701,178,1701,179,1700,180,1695,184,1691,187,1685,192,1681,197,1679,198,1678,200,1678,202,1677,203,1670,214,1665,222,1664,223,1663,225,1661,227,1660,229,1660,230,1659,230,1658,236,1659,241,1660,247,1664,250,1673,256,1684,258,1690,259,1692,262,1701,271,1705,283,1706,287,1708,291,1710,297,1714,301,1715,302,1718,303,1727,305,1735,307,1739,309,1744,311,L,1744,311,Q,1746,308,1745,304,1745,301,1744,299,1740,292,1733,286,1729,283,1724,280,1722,279,1720,278,1716,275,1720,270,1725,265,1730,258,1732,255,1731,254,1726,247,1718,244,1704,239,1689,233,1686,232,1683,229,1685,228,1683,225,L,1683,224,Q,1686,219,1690,213,1691,212,1691,212,1692,211,1692,209,1693,206,1695,204,1701,199,1706,194,1707,193,1707,192,1708,188,1708,185,1708,185,1708,184,1709,180,1708,178,Q,1707,177,1706,176,Z],[M,2250,362,Q,2251,364,2252,364,2264,367,2277,369,2279,369,2280,369,2281,369,2282,369,L,2282,370,Q,2282,372,2286,373,2286,373,2287,373,2290,373,2294,372,2295,372,2295,372,2297,372,2299,371,2302,371,2304,371,2305,370,2307,370,2309,369,2311,369,2316,369,2317,373,2316,373,2315,373,2309,374,2301,376,2299,376,2297,377,2296,377,2294,377,2290,378,2287,380,2286,380,2286,380,2282,381,2278,383,2269,389,2259,399,2258,400,2258,401,2258,402,2258,403,2257,404,2257,405,2257,410,2262,413,2263,414,2264,414,2266,414,2267,415,2268,416,2268,416,2275,418,2280,421,2281,421,2281,422,2284,426,2291,426,2295,426,2299,425,2301,425,2302,425,2305,425,2308,425,2312,425,2316,425,2334,425,2352,426,2350,425,2348,425,2351,425,2354,426,2353,426,2352,426,2356,426,2359,427,2370,427,2382,427,2394,427,2406,425,2407,425,2408,425,2409,425,2409,425,2413,425,2417,427,2417,427,2418,427,2422,426,2427,427,2432,429,2436,432,2444,437,2454,440,2459,441,2463,442,2467,444,2471,445,2475,447,2478,448,2486,453,2493,455,2494,456,2494,457,2496,459,2500,463,2500,463,2501,464,2503,468,2505,471,2511,483,2517,495,2521,502,2524,509,2526,513,2526,518,2527,529,2527,541,2526,544,2526,546,L,2526,546,Q,2527,553,2528,560,2529,568,2528,575,2528,580,2528,584,2528,592,2530,599,2532,603,2535,605,2539,607,2543,606,2549,604,2554,602,2563,598,2570,600,2577,602,2581,610,2585,616,2589,621,2595,627,2601,632,2603,635,2605,638,2608,645,2611,652,2613,660,2612,668,2610,674,2608,681,2608,681,2608,682,2605,686,2600,690,2595,695,2590,697,2589,698,2589,698,2585,704,2576,707,2573,709,2570,711,2570,711,2569,712,2561,718,2554,724,2550,727,2549,731,2547,740,2547,749,2547,752,2547,755,2547,765,2546,774,2545,776,2544,778,2542,780,2540,782,2539,783,2538,784,2533,788,2534,795,2534,796,2534,797,2535,799,2536,803,2536,805,2537,806,2537,810,2538,813,2539,814,2539,815,2540,816,2540,816,2543,820,2545,824,2546,825,2547,825,2547,826,2548,827,2555,831,2559,840,2561,845,2562,849,2563,852,2565,856,2565,857,2566,857,2569,865,2574,873,2574,874,2575,875,2579,883,2581,892,2582,893,2582,895,2584,902,2586,909,2586,910,2586,911,2587,915,2587,918,2587,922,2590,925,2590,926,2590,927,2591,933,2595,937,2605,945,2615,949,2628,955,2640,961,2642,962,2643,963,2648,966,2653,974,2659,983,2666,988,2675,995,2685,996,2691,997,2696,995,2699,994,2702,992,2705,990,2708,986,2712,983,2714,981,2715,980,2715,980,2718,972,2724,969,2724,969,2724,968,2726,961,2730,956,2731,955,2731,955,2733,951,2736,947,2740,942,2741,935,2744,929,2747,924,2750,920,2753,916,2754,914,2756,914,2762,912,2767,909,2768,909,2768,908,2773,904,2775,899,2779,890,2782,881,2788,867,2786,852,2786,850,2785,848,2785,847,2785,846,2785,842,2786,839,2787,836,2790,833,2793,830,2798,825,2799,824,2800,824,2803,821,2808,821,2813,822,2817,822,2827,821,2837,823,2839,823,2842,823,2843,823,2844,823,2847,822,2849,821,2867,815,2883,802,2887,798,2890,794,2891,794,2891,794,2894,789,2896,786,2905,775,2915,765,2922,758,2929,751,2935,747,2940,744,2951,738,2961,732,2962,732,2963,731,2965,729,2967,728,2970,726,2974,726,2978,725,2983,725,2984,725,2985,724,2988,723,2989,723,2991,722,2993,722,2993,721,2994,721,2999,720,3004,719,3005,719,3006,719,3017,723,3030,724,3034,724,3035,723,3037,723,3040,724,3041,724,3042,723,3043,723,3044,723,3045,723,3046,722,3047,721,3050,720,3051,720,3052,720,3053,720,3054,719,3056,718,3059,717,3059,717,3060,717,3077,709,3091,700,3092,700,3093,699,3096,698,3098,696,3099,696,3100,696,3103,696,3106,694,3117,689,3126,682,3127,681,3128,681,3133,678,3137,676,3138,676,3138,676,3140,675,3141,674,3145,672,3146,670,3146,669,3147,669,3151,669,3152,664,3149,660,3146,657,3143,653,3139,650,3142,648,3145,647,3154,641,3161,633,3164,630,3165,625,3165,620,3163,616,3161,614,3157,613,3157,613,3156,613,3153,611,3151,610,3150,610,3150,610,3138,602,3130,592,3127,589,3129,584,3132,577,3139,577,3142,576,3145,576,3146,576,3147,576,3151,576,3153,574,3153,573,3154,572,3156,569,3157,565,3157,565,3157,564,3160,557,3164,551,3169,546,3173,540,3174,540,3174,539,3175,538,3175,536,3175,535,3175,535,3177,528,3180,523,3185,516,3191,511,3196,506,3199,500,3202,495,3199,491,3196,487,3191,483,3186,480,3185,475,3184,470,3188,464,3190,460,3195,459,3196,458,3196,458,3199,455,3200,452,3203,449,3204,446,3206,443,3208,438,3208,437,3209,436,3211,431,3206,428,3205,427,3204,427,3202,426,3200,425,3199,424,3198,423,3197,420,3196,419,3196,418,3196,418,3199,414,3200,410,3200,409,3201,408,3207,400,3213,387,3213,386,3213,385,3214,383,3213,380,3213,379,3213,379,3213,376,3211,373,3208,373,3204,373,3201,373,3197,372,3188,371,3181,365,3179,363,3180,358,3182,352,3185,345,3186,343,3188,341,3192,336,3197,330,3201,324,3206,319,3219,305,3234,291,3244,282,3255,273,3262,268,3268,263,3269,261,3271,260,3273,258,3275,255,3276,254,3276,253,3280,250,3283,247,3288,240,3295,235,3298,234,3300,232,3305,229,3310,225,3314,223,3317,220,3318,219,3318,219,3319,217,3320,215,3321,212,3319,208,3318,207,3317,205,3317,204,3316,203,3311,198,3304,198,3299,197,3296,199,3289,202,3284,206,3283,207,3282,208,3281,209,3279,210,3276,213,3273,214,L,3272,214,Q,3268,216,3264,218,3256,220,3248,221,3237,222,3226,223,3206,225,3186,228,3185,229,3183,229,3182,230,3181,230,3181,231,3180,231,3179,231,3178,231,3176,232,3175,232,3174,233,3173,233,3167,239,3158,240,3152,244,3148,249,3140,260,3126,258,3127,255,3129,252,3136,239,3149,224,3152,221,3151,215,3149,205,3135,206,3133,206,3132,205,3129,202,3122,202,3115,203,3108,202,3095,201,3083,202,3058,204,3033,202,3021,201,3009,199,3020,196,3031,193,3033,192,3035,192,3047,188,3060,184,3074,180,3090,181,3097,181,3103,180,3109,179,3114,178,3117,179,3119,180,3125,182,3131,182,3134,182,3134,183,3137,193,3147,187,3153,184,3158,180,3159,179,3160,175,3159,173,3157,172,3145,165,3131,160,3122,156,3112,154,3093,149,3074,145,3073,144,3071,144,3069,144,3067,143,3062,142,3056,143,3054,142,3052,142,3050,142,3048,142,3043,143,3040,138,3039,137,3036,136,3031,134,3027,132,3023,129,3017,128,3015,128,3014,128,3005,126,2995,127,2987,127,2980,126,2979,125,2978,125,2970,124,2963,123,2962,123,2960,123,2951,122,2941,121,2934,121,2926,122,2920,122,2914,125,2911,126,2908,128,2906,129,2904,130,2896,135,2886,136,2876,137,2865,139,2852,141,2839,143,2838,143,2837,143,2835,143,2834,144,2830,145,2826,145,2825,145,2824,145,2816,145,2807,146,2806,146,2804,146,2784,146,2765,147,2760,147,2758,150,2757,151,2756,152,2752,156,2754,163,2754,164,2754,165,2760,174,2764,182,2764,183,2764,183,2765,192,2758,194,2755,193,2753,192,2745,186,2734,180,2733,180,2731,179,2717,172,2702,166,2694,163,2686,163,2682,163,2679,167,2673,173,2667,180,2665,183,2662,185,2659,188,2653,188,2653,187,2652,187,2650,183,2647,181,2642,178,2640,183,2640,184,2640,184,2639,186,2638,187,2636,189,2634,192,2630,195,2625,196,2620,197,2615,197,2613,197,2613,195,2613,194,2613,194,2612,190,2610,187,2605,183,2596,183,2586,183,2576,182,2575,182,2574,182,2563,182,2552,180,2550,180,2548,180,2545,179,2541,179,2532,179,2523,180,2522,180,2521,180,2518,180,2516,181,2507,187,2498,192,2491,197,2484,202,2469,215,2451,223,2440,228,2431,234,2427,237,2423,239,2415,242,2406,247,2403,249,2400,251,2399,251,2398,252,2392,257,2383,259,2377,261,2374,267,2371,274,2370,281,L,2372,281,Q,2372,281,2373,281,2374,281,2374,281,2375,284,2374,285,2369,293,2360,296,2348,301,2334,304,2327,305,2319,307,2306,312,2293,316,2293,317,2292,317,2288,318,2285,321,2282,324,2277,325,2276,326,2275,326,2272,329,2268,330,2259,332,2252,335,2249,336,2249,340,2248,342,2248,343,2248,344,2248,344,Q,2247,354,2250,362,Z],[M,2165,92,Q,2154,92,2143,91,2125,90,2106,90,2101,90,2096,90,2095,90,2094,91,2093,91,2091,91,2081,93,2070,98,2051,101,2032,103,2017,105,2002,106,1991,107,1980,109,1963,113,1946,119,1935,123,1925,128,1922,129,1919,130,1917,131,1914,131,1913,131,1912,131,1911,132,1910,132,1909,132,1908,133,1903,137,1893,138,1890,139,1887,140,1884,141,1882,141,1881,142,1879,142,1878,142,1877,142,1865,144,1853,144,1847,144,1840,144,1829,144,1820,149,1807,157,1801,171,1800,174,1802,177,1803,179,1805,180,1806,180,1807,180,1808,181,1809,181,1810,182,1810,182,1812,182,1813,182,1815,183,1817,184,1820,186,1824,187,1826,187,1827,188,1831,190,1835,191,1836,192,1837,192,1841,193,1844,193,1846,193,1846,194,1848,194,1849,194,1853,195,1857,195,1859,195,1860,195,1869,197,1876,199,1888,202,1896,210,1899,214,1898,220,1898,220,1897,221,1896,222,1895,222,1894,223,1893,223,1892,223,1890,224,1890,224,1889,224,1880,225,1872,226,1865,227,1863,233,1862,235,1862,236,1860,237,1860,240,1860,241,1861,242,1862,243,1864,246,1865,247,1865,247,1869,249,1873,253,1877,256,1880,258,1883,261,1882,265,1877,266,1872,266,1871,266,1870,266,1867,268,1862,268,1857,267,1853,267,1852,267,1851,267,1848,265,1844,265,1841,266,1837,265,1836,265,1834,265,1823,265,1812,271,1814,273,1816,275,1823,278,1830,281,1829,284,1826,287,1826,288,1826,288,1825,290,1824,291,1824,292,1824,293,1821,298,1824,302,1826,304,1826,305,1828,307,1830,308,1832,309,1833,311,1834,312,1834,313,1834,316,1837,316,1837,319,1834,320,1833,320,1832,320,1830,320,1828,321,1826,321,1824,321,1818,322,1812,323,1801,326,1790,329,1778,333,1767,338,1765,339,1763,340,1757,343,1753,347,1752,348,1752,348,1750,352,1748,355,1749,355,1749,355,1750,356,1751,357,1751,357,1752,357,1755,358,1756,363,1757,365,1758,365,1759,366,1760,366,1761,367,1761,367,1763,367,1764,367,1765,367,1766,367,1770,367,1773,369,1774,369,1775,370,1777,370,1778,370,1778,370,1779,370,1780,371,1781,371,1782,372,1783,372,1788,372,1793,373,1797,373,1801,373,1812,373,1823,375,1829,375,1835,376,1837,376,1838,376,1838,377,1839,377,1843,377,1845,378,1848,380,1853,380,1872,379,1891,375,1893,375,1893,375,1895,376,1899,376,1901,376,1904,376,1905,377,1906,377,1908,377,1910,378,1911,378,1913,378,1917,378,1921,378,1922,378,1923,378,1929,376,1935,374,1948,369,1959,362,1962,360,1961,357,1961,354,1958,353,1957,351,1956,350,1956,348,1955,348,1955,347,1954,347,1953,337,1959,334,1960,334,1960,333,1967,326,1975,322,1976,322,1976,321,1984,316,1994,310,2002,305,2009,299,2018,293,2024,284,2027,280,2028,275,2029,272,2028,270,2028,269,2028,268,2029,265,2026,265,2026,265,2025,265,2024,262,2024,258,2024,257,2023,256,2022,255,2023,252,2023,252,2024,251,2028,250,2033,247,2035,246,2039,244,2043,243,2049,242,2050,242,2051,242,2052,240,2055,240,2057,240,2057,239,2058,238,2060,238,2062,237,2063,237,2063,237,2064,236,2069,234,2074,232,2077,231,2080,230,2082,230,2082,229,2085,228,2089,227,2090,227,2090,226,2093,226,2095,225,2098,224,2100,223,2102,222,2102,222,2104,220,2105,220,2112,218,2118,215,2119,214,2120,214,2129,210,2138,207,2138,207,2139,206,2140,205,2141,205,2147,202,2153,199,2153,199,2154,199,2155,198,2156,198,2160,196,2165,195,2166,195,2166,195,2170,193,2174,192,2175,192,2175,191,2178,191,2180,190,2181,189,2181,189,2185,188,2188,186,2197,181,2205,176,2208,175,2210,173,2223,167,2236,162,2246,157,2253,152,2253,152,2254,151,2255,150,2255,150,2260,147,2265,143,2268,142,2271,140,2277,137,2282,134,2292,129,2300,122,2301,121,2300,119,2296,110,2286,109,2281,108,2276,106,2276,105,2275,105,2273,105,2271,104,2270,104,2268,103,2265,103,2263,102,2245,100,2226,97,2212,95,2198,94,Q,2182,93,2165,92,Z]],label:"North America",shortLabel:"NA",labelPosition:[130.4,135.4],labelAlignment:[CEN,MID]},EU:{outlines:[[M,3757,335,Q,3760,336,3760,338,3759,342,3763,345,3765,346,3768,346,3771,346,3773,347,3775,348,3777,350,3778,349,3777,347,3774,347,3772,343,3772,339,3768,337,3767,336,3765,334,3764,333,3761,332,3760,331,3758,331,3756,331,3756,333,Q,3756,334,3757,335,Z],[M,4018,402,Q,4015,399,4011,399,4008,400,4003,402,4001,403,4e3,407,4e3,411,4004,415,4005,416,4007,417,4009,417,4010,418,4011,417,4014,416,4015,416,4017,415,4018,413,4020,412,4021,412,4021,410,4021,406,4019,403,Q,4019,402,4018,402,Z],[M,4031,376,L,4034,375,Q,4033,375,4032,374,4031,374,4028,375,4022,376,4022,370,4019,370,4015,370,4016,371,4017,374,4018,375,4021,376,4022,379,4022,381,4023,383,4024,385,4025,382,4028,380,Q,4028,376,4031,376,Z],[M,3890,482,Q,3888,484,3888,486,3887,487,3887,489,3889,491,3891,494,3893,495,3894,497,3900,497,3906,496,3906,492,3906,488,3906,486,3904,483,3904,482,3903,480,3902,477,3896,477,3895,478,3892,480,Q,3891,482,3890,482,Z],[M,4020,345,Q,4022,348,4027,348,4029,347,4031,346,4030,344,4029,342,4032,342,4035,341,4037,341,4038,339,4038,338,4039,337,4039,333,4034,332,4029,331,4025,331,4023,331,4021,331,4019,331,4019,333,4019,335,4018,339,4018,340,4018,343,Q,4018,343,4020,345,Z],[M,3946,342,Q,3941,343,3938,340,3938,339,3938,338,3939,337,3938,333,3937,332,3934,332,3930,331,3926,332,3918,332,3915,327,3915,327,3913,326,3912,324,3908,323,3907,323,3906,322,3902,321,3898,320,3898,321,3896,319,3896,319,3895,317,3893,315,3893,311,3892,311,3891,308,3889,304,3885,304,3885,305,3885,306,3885,307,3885,308,3885,310,3883,311,3880,312,3876,312,3873,313,3873,311,3873,309,3874,308,3876,306,3876,302,3874,301,3874,300,3874,299,3873,296,3873,294,3870,293,3868,292,3863,293,3857,293,3851,289,3849,289,3848,289,3846,289,3845,290,3845,293,3842,297,3843,299,3845,301,3847,302,3846,306,3844,310,3846,314,3847,315,3848,316,3849,318,3851,319,3852,321,3851,325,3849,325,3846,324,3843,323,3841,321,3840,319,3839,317,3838,315,3837,310,3836,308,3834,304,3834,301,3833,299,3833,298,3830,297,3827,297,3823,297,3822,297,3820,297,3817,298,3814,301,3814,301,3814,302,3814,305,3813,308,3813,310,3814,312,3814,316,3810,315,3811,314,3811,313,3811,310,3808,310,3806,311,3805,309,3805,308,3803,307,3801,304,3797,303,3798,302,3800,301,3805,300,3810,300,3811,300,3812,299,3813,297,3810,296,3810,296,3808,294,3805,294,3800,294,3800,295,3797,296,3794,296,3791,296,3788,296,3785,296,3782,296,3780,298,3779,300,3777,300,3776,300,3775,298,3773,297,3772,296,3771,295,3769,296,3769,298,3766,299,3766,300,3764,302,3764,303,3763,304,3761,308,3764,310,3766,310,3765,315,3766,316,3766,317,3767,321,3771,320,3771,319,3771,318,3771,315,3773,315,3777,315,3778,317,3780,319,3782,321,3782,322,3781,323,3781,325,3780,325,3778,325,3778,326,3777,327,3777,330,3779,331,3781,330,3784,330,3784,333,3782,333,3780,337,3780,338,3781,339,3782,340,3783,341,3785,341,3788,342,3791,341,3791,344,L,3792,346,Q,3792,350,3795,353,3797,356,3802,355,3804,353,3807,354,3813,355,3819,352,3823,348,3826,343,3826,336,3834,337,3834,342,3838,342,3841,341,3842,341,3848,339,3857,340,3862,341,3864,343,3867,348,3863,350,3858,352,3853,352,3848,351,3843,351,3833,349,3829,355,3830,359,3826,360,3825,366,3815,364,3809,362,3810,368,3813,369,3817,369,3822,369,3825,371,3828,373,3831,374,3835,375,3833,382,3823,383,3814,383,3814,384,3815,387,3816,390,3823,394,3829,394,3838,395,3841,398,3846,399,3845,399,3845,403,3847,406,3848,409,3851,417,3861,414,3863,413,3864,410,3865,407,3868,405,3870,404,3869,401,3870,398,3870,394,3871,393,3872,391,3873,389,3874,387,3875,386,3876,385,3877,384,3878,381,3881,380,3883,379,3884,379,3885,378,3887,377,3889,377,3890,374,3886,370,3885,365,3888,362,3891,361,3896,361,3897,360,3896,358,3897,357,3896,355,3895,351,3897,345,3901,345,3901,341,3902,340,3904,339,3908,339,3911,339,3917,340,3922,337,3925,337,3927,337,3931,336,3931,339,3932,344,3927,344,3924,348,3928,350,3930,352,3931,353,3933,354,3934,355,3935,357,3934,358,3934,359,3934,362,3938,362,3939,364,3939,365,3940,366,3940,370,3938,375,3936,376,3935,379,3935,382,3933,382,3940,382,3946,382,3949,383,3949,381,3950,381,3951,379,3952,378,3955,379,3958,380,3958,382,3957,384,3958,385,3960,387,3961,389,3966,389,3972,389,3974,388,3975,387,3980,382,3988,376,3989,376,3990,374,3991,374,3993,374,3995,372,3994,369,3990,370,3984,370,3982,371,3980,369,3979,368,3975,368,3972,368,3970,366,3969,365,3969,363,3969,361,3968,358,3968,355,3963,354,3961,354,3958,355,3956,357,3951,357,3949,356,3948,354,3947,353,3947,351,L,3948,349,Q,3950,349,3951,349,3954,349,3953,346,3953,344,3951,343,Q,3949,342,3946,342,Z],[M,4007,277,Q,4005,276,4003,276,3998,277,3991,276,3988,276,3983,276,3979,276,3977,278,3976,279,3974,280,3972,280,3967,279,3963,278,3967,276,3969,276,3970,272,3970,269,3966,270,3965,275,3959,274,3956,275,3955,279,3956,280,3956,281,3957,286,3953,285,3950,286,3945,283,3945,281,3941,280,3938,279,3934,279,3933,279,3931,279,3926,280,3923,276,3920,276,3918,272,3918,272,3916,271,3914,270,3911,270,3909,270,3908,272,3910,274,3911,276,3913,277,3913,280,3912,280,3911,280,3909,280,3908,279,3903,279,3902,283,3902,286,3901,286,3898,285,3896,284,3895,284,3892,282,3890,281,3886,281,3883,281,3879,281,3879,285,3883,285,3885,285,3886,286,3888,287,3888,287,3890,288,3889,289,3889,291,3889,293,3890,295,3892,296,3893,297,3894,298,3898,298,3901,298,3907,299,3914,297,3915,297,3916,297,3919,297,3921,296,3932,296,3943,295,3947,295,3946,300,3945,300,3943,300,3939,301,3934,301,3932,303,3926,304,3920,305,3914,305,3914,306,3915,307,3915,310,3917,309,3920,309,3923,309,3926,309,3928,310,3930,312,3935,312,3937,313,3939,315,3940,317,3942,317,3946,316,3949,313,3950,313,3952,312,3959,311,3963,318,3964,320,3965,322,3969,325,3974,323,3979,322,3982,317,3984,316,3986,316,3987,316,3989,315,3990,314,3992,314,3995,313,3999,313,4001,313,4002,313,4005,313,4007,313,4009,313,4009,311,4008,307,4012,305,4016,306,4018,303,4019,303,4020,301,4022,297,4027,296,4030,296,4034,295,4035,292,4034,288,4034,288,4032,287,4030,287,4029,286,4027,285,4026,284,4025,282,4024,282,4023,282,4021,282,4015,281,4009,280,Q,4009,278,4007,277,Z],[M,4052,328,Q,4049,327,4049,329,4049,331,4049,332,4050,333,4053,333,4055,333,4057,332,4059,332,4060,332,4067,333,4075,332,4077,332,4076,328,4074,327,4069,327,4067,327,4064,326,4061,326,4060,327,4059,329,4056,328,Q,4054,328,4052,328,Z],[M,4059,289,Q,4060,285,4060,281,4060,277,4057,275,4054,272,4047,273,4045,273,4044,275,4042,278,4040,279,4039,283,4042,286,4043,287,4044,287,4047,289,4051,291,4053,292,4053,290,Q,4055,289,4059,289,Z],[M,4118,288,Q,4121,288,4124,286,4126,286,4127,286,4130,285,4134,285,4134,286,4136,284,4138,283,4141,282,4142,282,4144,282,4145,282,4146,279,4145,278,4144,277,4142,276,4143,273,4140,273,4135,274,4133,275,4131,279,4129,279,4126,282,4123,283,4119,282,4116,282,4113,283,4110,285,4107,287,4111,290,4115,292,Q,4117,290,4118,288,Z],[M,4207,290,Q,4207,289,4209,288,4210,286,4210,283,4211,279,4208,275,4205,274,4202,272,4201,271,4198,272,4195,273,4193,275,4192,276,4190,278,4189,281,4189,286,4190,287,4191,287,4192,288,4193,289,4195,291,4197,293,4198,293,4200,295,4201,297,4203,296,4204,296,4205,295,Q,4206,294,4207,290,Z],[M,3343,1065,Q,3344,1061,3341,1059,3325,1053,3312,1065,3305,1071,3300,1079,3295,1088,3295,1099,3295,1108,3299,1115,3306,1130,3315,1143,3320,1149,3324,1154,3336,1168,3348,1180,3349,1181,3349,1182,3350,1184,3351,1187,3352,1188,3352,1189,3352,1191,3353,1193,3353,1195,3354,1197,3355,1199,3354,1200,3354,1207,3350,1212,3345,1220,3339,1227,3337,1229,3335,1233,3331,1239,3328,1246,3323,1259,3323,1271,3323,1275,3324,1279,3327,1294,3317,1306,3308,1317,3298,1328,3311,1322,3324,1315,3333,1311,3342,1306,3351,1302,3360,1300,3361,1300,3365,1300,3389,1299,3412,1297,3414,1297,3415,1297,3425,1294,3438,1298,3438,1297,3437,1297,3435,1296,3435,1294,3435,1292,3437,1289,3440,1284,3442,1277,3443,1276,3444,1275,3446,1273,3447,1270,3450,1264,3456,1257,3460,1254,3462,1249,3462,1247,3462,1246,3457,1239,3454,1235,3454,1234,3452,1233,3451,1233,3449,1233,3442,1232,3435,1230,3429,1228,3430,1220,3430,1217,3428,1216,3415,1210,3412,1200,3412,1200,3411,1199,3410,1187,3407,1177,3405,1172,3402,1169,3402,1168,3401,1167,3396,1163,3394,1159,3393,1157,3392,1156,3391,1155,3390,1152,3390,1150,3389,1149,3387,1142,3382,1137,3382,1137,3381,1136,3378,1127,3374,1123,3373,1123,3373,1122,3372,1120,3372,1119,3369,1116,3369,1110,3369,1108,3370,1106,3371,1104,3371,1100,3371,1097,3371,1093,3372,1088,3369,1086,3366,1084,3363,1084,3350,1086,3335,1088,3338,1084,3339,1080,Q,3343,1073,3343,1065,Z],[M,3223,1199,Q,3216,1208,3209,1217,3206,1220,3207,1224,3208,1229,3211,1234,3216,1242,3213,1248,3213,1249,3213,1250,3212,1254,3212,1257,3211,1260,3211,1263,3211,1264,3210,1264,3210,1268,3212,1271,3215,1275,3221,1277,3223,1277,3225,1277,3239,1275,3249,1265,3253,1262,3257,1260,3265,1257,3274,1255,3280,1254,3282,1249,3285,1241,3286,1231,3288,1217,3294,1204,3297,1195,3304,1189,3308,1185,3313,1182,3314,1182,3314,1180,3315,1176,3314,1175,3310,1171,3308,1165,3307,1165,3306,1164,3304,1163,3301,1164,3288,1165,3274,1167,3263,1169,3251,1169,3248,1170,3244,1171,3242,1176,3240,1180,3240,1182,3240,1183,3240,1188,3238,1193,3238,1193,3237,1194,3233,1196,3227,1198,Q,3224,1198,3223,1199,Z],[M,3197,731,Q,3196,731,3195,730,3193,730,3191,731,3192,733,3193,733,3195,734,3197,737,3199,738,3198,740,3198,742,3198,742,3195,743,3192,742,3191,742,3190,742,3189,741,3188,740,3187,740,3185,739,3184,738,3181,738,3180,738,3180,739,3178,740,3178,742,3179,743,3180,744,3181,745,3180,746,3180,747,3179,748,3178,748,3176,748,3174,747,3173,750,3173,751,3171,751,3170,751,3169,753,3168,755,3170,755,L,3171,756,Q,3172,756,3173,756,3175,756,3177,756,3180,756,3182,755,3183,755,3184,754,3187,754,3191,754,3195,754,3198,754,3199,754,3200,754,3203,756,3203,760,3201,760,3202,763,3203,765,3205,766,3206,769,3204,770,3201,771,3198,770,3197,770,3195,769,3194,768,3191,768,3187,769,3186,771,3189,771,3192,771,3195,771,3197,772,3198,774,3198,776,3197,779,3198,781,3200,781,3201,782,3203,783,3205,785,3206,786,3206,786,3207,789,3206,792,3205,793,3203,793,3202,794,3201,794,3200,794,3200,795,3199,798,3201,799,3202,799,3203,800,3206,801,3209,801,3210,802,3211,801,3214,801,3218,800,3222,799,3225,800,3226,800,3226,800,3228,802,3231,803,3233,804,3234,805,3235,806,3236,806,3240,808,3244,808,3246,807,3249,808,3254,809,3259,810,3263,811,3267,811,3271,811,3274,810,3276,810,3277,809,3280,808,3283,805,3284,804,3286,803,3287,802,3287,800,3287,799,3287,798,3290,797,3292,797,3293,797,3294,797,3298,798,3302,798,3304,798,3305,797,3306,797,3306,796,3307,795,3307,795,3309,794,3310,793,3313,792,3315,789,3316,787,3318,787,3321,788,3323,786,3325,786,3326,786,3329,786,3330,785,3331,784,3332,783,3333,781,3333,780,3333,779,3334,778,3336,778,3337,777,3339,777,3341,775,3342,774,3344,772,3345,770,3346,770,3347,768,3346,765,3346,764,3345,762,3345,762,3345,761,3345,760,3345,759,3345,757,3342,756,3342,755,3340,755,3337,754,3335,750,3335,749,3334,749,3333,748,3331,747,3328,747,3325,744,3325,741,3325,739,3325,739,3324,737,3323,737,3321,737,3319,736,3316,737,3316,737,3315,737,3315,736,3314,736,3312,735,3310,734,3309,734,3308,732,3307,730,3305,729,3304,728,3302,728,3300,728,3299,730,3298,731,3298,732,3298,734,3297,734,3295,735,3293,737,3292,737,3290,737,3289,736,3288,736,3286,735,3285,737,3284,738,3282,738,3281,739,3279,741,3277,742,3275,740,3275,738,3272,737,3272,737,3271,737,3270,736,3268,737,3267,737,3266,738,3265,740,3264,742,3264,741,3264,740,3263,739,3260,737,3256,736,3254,739,3254,740,3254,741,3254,742,3252,742,3251,742,3250,742,3249,743,3247,744,3247,746,3245,745,3242,745,3240,742,3239,742,3239,741,3236,741,3234,741,3235,745,3234,749,3235,749,3235,750,3235,752,3234,752,3230,752,3227,752,3225,752,3226,755,3226,757,3223,758,3223,758,3221,758,3221,758,3220,757,3219,756,3219,755,3220,753,3218,751,3217,751,3216,751,3213,751,3212,748,3215,748,3215,746,3216,742,3213,741,3213,741,3212,740,3212,740,3211,740,3211,739,3210,739,3208,735,3202,734,3200,734,3199,732,Q,3199,732,3197,731,Z],[M,4411,664,Q,4413,663,4414,661,4415,660,4417,658,4421,659,4419,654,4417,653,4412,650,4411,649,4410,649,4406,648,4402,647,4399,646,4398,648,4398,649,4397,650,4395,651,4393,653,4393,654,4391,654,4388,657,4390,662,4390,664,4392,663,4395,663,4397,664,4399,665,4401,666,4404,667,4405,665,Q,4407,664,4411,664,Z],[M,4375,256,Q,4367,256,4360,256,4356,256,4352,256,4347,257,4342,261,4336,262,4330,262,4327,262,4325,264,4323,265,4323,267,4326,268,4330,267,4334,267,4340,268,4340,270,4340,271,4348,272,4355,272,4355,270,4355,268,4354,265,4356,263,4358,261,4361,261,4363,261,4365,261,4368,260,4372,260,4375,260,4376,259,Q,4378,258,4375,256,Z],[M,4434,259,Q,4437,260,4437,258,4436,257,4435,257,4433,257,4432,257,4431,257,4429,257,4427,258,4425,254,4425,254,4423,254,4419,253,4417,256,4415,261,4411,264,4408,264,4404,264,4402,263,4400,263,4397,264,4395,262,4393,262,4390,259,4387,259,4385,262,4385,265,4383,265,4378,263,4373,263,L,4372,263,Q,4371,264,4370,264,4366,265,4368,269,4372,269,4376,270,4377,271,4376,273,4376,274,4374,275,4372,275,4370,276,4366,276,4367,280,4368,281,4369,282,4370,283,4373,283,4377,283,4380,282,4383,282,4384,283,4384,285,4382,286,4381,288,4382,289,4384,291,4387,291,4387,290,4387,287,4389,287,4390,287,4394,287,4396,285,4397,284,4397,281,4397,280,4397,278,4398,278,4401,277,4409,276,4417,276,4421,276,4425,276,4426,274,4428,272,4429,271,4431,271,4435,271,4439,271,4440,271,4442,270,4444,270,4446,267,4449,266,4448,263,4445,262,4442,262,4438,262,4434,262,4432,262,4432,261,Q,4431,258,4434,259,Z],[M,4470,282,Q,4469,282,4467,281,4465,281,4465,285,4470,285,4475,285,4477,286,4478,286,4481,286,4481,285,4482,284,4482,283,4483,279,4479,279,4477,277,4473,278,Q,4471,279,4470,282,Z],[M,4522,287,Q,4524,289,4526,289,4530,290,4535,289,4536,288,4540,288,4541,287,4541,285,4541,283,4541,280,4542,277,4538,278,4531,278,4522,279,4521,280,4521,282,Q,4521,285,4522,287,Z],[M,4570,288,Q,4569,289,4570,290,4571,293,4574,294,4575,294,4576,294,4579,294,4580,296,4582,297,4584,297,4585,294,4585,291,4584,289,4584,288,4583,286,4580,286,4576,286,4571,287,Q,4571,287,4570,288,Z],[M,4568,281,Q,4571,281,4571,280,4571,279,4569,276,4564,273,4556,274,4554,274,4551,274,4547,273,4545,276,4545,278,4545,280,4545,285,4547,289,4548,288,4549,287,4551,287,4554,286,4555,286,4557,285,4558,283,4558,282,4560,279,4564,280,Q,4566,281,4568,281,Z],[M,4554,256,Q,4553,256,4550,255,4550,255,4548,254,4547,254,4545,253,4544,252,4542,252,4538,251,4532,252,4532,254,4528,253,4525,250,4521,252,4519,253,4516,253,4513,251,4507,249,4503,248,4499,250,4500,251,4501,253,4503,254,4504,254,4506,255,4509,255,4513,255,4517,255,4520,255,4523,258,4524,259,4523,260,4520,260,4515,260,4515,259,4513,258,4509,258,4504,258,4503,258,4503,258,4502,258,4500,257,4499,257,4496,257,4492,256,4493,261,4501,262,4508,262,4510,262,4512,261,4515,261,4517,264,4518,266,4520,266,4526,268,4533,267,4533,267,4534,266,4536,263,4540,264,4542,264,4543,264,4546,265,4546,263,4546,261,4548,259,4549,258,4552,258,4556,257,4559,260,4561,262,4564,262,4566,262,4568,261,4570,261,4569,259,4568,257,4563,254,Q,4559,257,4554,256,Z],[M,4609,248,Q,4605,248,4601,248,4598,248,4596,250,4595,252,4596,254,4599,254,4601,254,4604,254,4603,257,4602,258,4601,259,4599,260,4597,259,4595,259,4593,259,4589,259,4585,262,4585,262,4584,264,4583,265,4582,266,4581,269,4582,273,4583,276,4585,276,4586,276,4587,275,4589,275,4591,275,4593,276,4595,277,4596,279,4599,279,4603,278,4607,278,4609,278,4610,277,4611,275,4616,274,4618,269,4616,264,4619,264,4622,263,4625,263,4628,261,4629,261,4628,258,4626,257,4623,257,4622,257,4621,257,4619,258,4617,258,4614,258,4614,256,4615,252,4613,249,Q,4611,248,4609,248,Z],[M,4756,562,Q,4741,577,4721,579,4720,579,4719,580,4714,583,4711,587,4704,594,4704,606,4704,609,4704,611,4701,621,4702,631,4702,637,4704,642,4707,651,4712,661,4717,672,4724,680,4728,685,4733,688,4726,686,4720,684,4718,684,4717,682,4714,679,4708,677,4695,671,4681,668,4675,666,4668,668,4664,670,4660,669,4657,669,4654,669,4651,668,4648,668,4647,668,4646,667,4637,667,4628,665,4611,661,4595,655,4580,650,4565,645,4561,644,4559,646,4553,652,4555,660,4556,671,4560,678,4561,680,4562,681,4564,685,4566,689,4568,691,4571,692,4575,693,4579,695,4584,697,4590,700,4591,701,4591,701,4595,707,4596,714,4592,718,4586,720,4583,721,4579,719,4578,719,4577,719,4576,718,4574,718,4567,714,4557,715,4556,715,4555,715,4553,713,4547,713,4544,714,4540,714,4531,716,4520,718,4519,721,4513,719,4512,719,4510,719,4484,715,4456,710,4455,710,4453,710,4448,712,4445,714,4441,717,4436,719,4436,719,4435,719,4433,720,4431,722,4421,730,4409,734,4404,736,4398,741,4389,750,4371,760,4369,761,4367,762,4357,767,4346,770,4339,772,4334,769,4332,768,4330,764,4327,755,4321,746,4315,738,4307,730,4306,728,4304,727,4302,726,4301,725,4298,722,4296,719,4289,709,4279,707,4271,706,4267,710,L,4267,712,Q,4268,719,4273,724,4277,729,4283,733,4285,734,4285,735,4287,743,4290,751,4290,752,4290,754,4291,767,4285,778,4281,787,4271,792,4270,793,4269,793,4267,794,4265,794,4264,795,4262,795,4251,796,4241,799,4233,801,4230,808,4229,809,4229,811,4226,818,4221,826,4220,827,4220,828,4218,833,4214,835,4208,838,4200,838,4186,838,4174,836,4172,836,4171,836,4165,835,4160,835,4159,835,4158,834,4152,833,4151,836,4151,841,4152,844,4154,848,4156,853,4158,857,4158,862,4158,864,4157,865,4157,870,4154,873,4148,878,4141,880,4141,880,4140,880,4136,879,4134,876,4126,861,4119,846,4114,836,4106,827,4096,814,4085,800,4084,799,4083,798,4084,797,4084,797,4086,793,4088,791,4092,788,4097,787,4103,787,4108,787,4124,787,4140,787,4166,787,4192,786,4193,786,4194,786,4195,785,4197,785,4202,785,4205,781,4206,780,4207,780,4210,778,4212,774,4213,773,4214,773,4217,771,4219,767,4219,765,4220,765,4222,764,4221,761,4220,757,4219,754,4218,752,4218,751,4213,747,4204,741,4195,735,4185,731,4177,727,4168,723,4165,722,4161,723,4156,723,4154,721,4149,718,4142,712,4137,708,4128,704,4124,702,4120,700,4118,700,4117,699,4113,697,4107,696,4104,695,4101,694,4097,691,4090,689,4088,689,4087,689,4083,688,4080,688,4071,686,4063,684,4062,684,4061,683,4058,683,4054,682,4051,681,4050,680,4049,679,4048,679,4046,678,4045,678,4040,676,4033,675,4029,675,4024,674,4021,674,4018,674,4012,672,4008,668,4008,668,4007,667,4007,659,4007,651,4008,647,4004,646,4003,646,4002,645,4001,643,3997,644,3989,645,3983,640,3984,641,3984,641,3981,639,3977,636,3969,631,3962,631,3956,632,3954,638,3952,643,3949,644,3944,645,3940,646,3927,650,3914,650,3912,650,3909,646,3905,638,3899,631,3897,630,3895,631,3888,635,3877,639,3874,640,3871,642,3859,648,3848,655,3843,659,3838,664,3837,665,3836,666,3832,669,3829,670,3820,674,3813,678,3812,679,3810,679,3805,681,3801,682,3794,686,3789,691,3780,701,3771,712,3766,720,3761,724,3760,725,3759,726,3756,728,3753,729,3752,730,3751,731,3747,736,3742,739,3741,740,3740,741,3732,755,3720,767,3719,769,3718,770,3714,778,3708,784,3706,786,3702,790,3701,791,3700,792,3693,804,3683,815,3680,820,3677,826,3672,835,3665,845,3662,847,3661,851,3656,859,3649,866,3646,869,3642,875,3640,879,3636,883,3628,893,3623,898,3615,906,3608,911,3597,918,3584,924,3567,932,3556,939,3555,940,3554,941,3552,944,3548,946,3540,950,3533,957,3528,961,3527,965,3526,972,3528,979,3530,989,3534,998,3537,1005,3541,1010,3542,1011,3542,1012,3542,1013,3543,1014,3547,1020,3547,1027,3549,1040,3550,1052,3552,1059,3555,1065,3556,1067,3559,1069,3561,1070,3565,1071,3566,1071,3566,1071,3575,1073,3584,1075,3587,1076,3591,1077,3592,1077,3593,1077,3603,1073,3611,1066,3619,1058,3625,1052,3626,1051,3626,1050,3634,1045,3640,1033,3641,1032,3642,1031,3646,1028,3649,1024,3652,1027,3651,1032,3651,1035,3652,1038,3652,1040,3652,1042,3652,1044,3651,1045,3651,1051,3651,1056,3650,1063,3650,1069,3650,1076,3655,1078,3657,1079,3658,1079,3664,1084,3672,1085,3673,1086,3674,1086,3680,1091,3684,1098,3685,1099,3685,1099,3687,1108,3689,1116,3690,1122,3691,1128,3694,1136,3699,1141,3703,1145,3709,1144,3716,1142,3723,1137,3724,1136,3725,1135,3728,1132,3732,1129,3733,1129,3733,1128,3734,1126,3737,1124,3738,1123,3739,1122,3739,1122,3739,1122,3747,1116,3749,1103,L,3749,1102,Q,3750,1099,3749,1094,L,3749,1094,Q,3749,1093,3749,1092,3751,1079,3756,1067,3756,1065,3757,1063,3759,1061,3761,1058,3763,1053,3766,1049,3769,1045,3776,1037,3790,1022,3795,1003,3796,1e3,3789,994,3784,990,3781,985,3776,977,3776,967,3776,962,3778,957,3779,955,3779,954,3782,942,3787,929,3791,920,3797,913,3802,907,3810,903,3811,903,3812,903,3816,903,3818,902,3819,901,3820,901,3828,896,3832,888,3839,874,3844,858,3847,845,3849,831,3849,827,3851,826,3852,826,3852,825,3855,822,3859,818,3860,818,3862,817,3888,814,3913,821,3920,823,3924,826,3924,827,3925,828,3925,829,3925,830,3928,834,3925,838,3924,841,3923,845,3923,846,3922,847,3913,854,3905,861,3904,862,3903,863,3899,865,3895,868,3884,877,3879,885,3878,886,3878,887,3876,892,3872,896,3871,897,3870,898,3868,907,3860,909,3846,914,3843,925,3843,926,3842,927,3836,936,3836,948,3836,950,3836,951,3839,962,3843,972,3843,974,3843,975,3842,987,3848,995,3849,997,3853,997,3871,997,3889,998,3900,998,3910,998,3912,999,3913,999,3920,999,3926,1e3,3927,1e3,3929,1e3,3935,1001,3942,1003,3948,1005,3950,1009,3950,1014,3947,1018,3945,1021,3940,1023,3938,1024,3936,1025,3923,1031,3911,1037,3910,1038,3908,1039,3906,1042,3903,1048,3900,1054,3899,1061,3897,1071,3896,1082,3896,1086,3892,1087,3891,1087,3890,1087,3883,1088,3879,1084,3878,1083,3878,1082,3876,1079,3873,1078,3866,1086,3859,1093,3849,1103,3846,1115,3846,1116,3845,1118,3841,1138,3837,1156,3836,1159,3836,1162,3836,1169,3835,1176,3835,1180,3832,1181,3831,1182,3830,1183,3824,1189,3816,1190,3815,1190,3813,1191,3813,1191,3812,1191,3810,1191,3809,1190,3807,1189,3803,1188,3797,1186,3791,1182,3790,1181,3788,1180,3788,1179,3786,1179,3781,1179,3776,1180,3775,1181,3774,1182,3768,1189,3756,1202,3753,1205,3751,1207,3751,1208,3750,1208,3749,1210,3748,1211,3745,1213,3742,1213,3719,1213,3698,1207,3683,1203,3668,1201,3659,1200,3651,1197,3644,1195,3641,1188,3636,1180,3634,1169,3633,1161,3637,1153,3637,1153,3637,1152,3638,1147,3637,1142,3636,1132,3633,1125,3630,1119,3624,1114,3620,1111,3614,1113,3608,1114,3604,1118,3597,1123,3600,1136,3605,1158,3612,1179,3615,1188,3617,1196,3619,1203,3617,1210,3617,1214,3613,1217,3612,1219,3609,1219,3609,1220,3608,1220,3603,1227,3599,1222,3597,1219,3592,1217,3592,1217,3591,1216,3590,1216,3589,1215,3589,1216,3588,1217,3586,1209,3574,1213,3567,1214,3561,1216,3556,1218,3549,1220,3544,1221,3539,1225,3529,1233,3523,1240,3520,1244,3516,1247,3512,1250,3509,1254,3508,1256,3506,1258,3505,1260,3504,1261,3502,1264,3501,1267,3497,1278,3491,1284,3490,1284,3488,1285,3488,1285,3487,1286,3480,1289,3476,1295,3470,1302,3462,1306,3458,1309,3451,1308,3449,1307,3447,1306,3447,1306,3446,1306,3446,1306,3446,1307,3446,1312,3441,1318,3437,1322,3432,1324,3428,1326,3425,1329,3424,1330,3422,1330,3422,1331,3421,1331,3418,1335,3411,1335,3410,1335,3409,1335,3407,1337,3404,1337,3400,1337,3397,1338,3395,1338,3392,1339,3392,1339,3391,1340,3387,1342,3384,1347,3383,1351,3385,1353,3385,1354,3386,1356,3386,1357,3387,1358,3390,1364,3384,1366,3381,1367,3378,1367,3377,1368,3375,1367,3371,1367,3367,1368,3359,1368,3352,1369,3349,1369,3345,1370,3340,1370,3337,1374,3330,1382,3331,1391,3331,1398,3338,1401,3350,1405,3362,1405,3371,1405,3379,1406,3381,1406,3382,1407,3387,1412,3392,1415,3393,1416,3393,1417,3394,1423,3394,1430,3395,1431,3395,1432,3396,1433,3397,1435,3400,1458,3395,1482,3394,1490,3389,1496,3380,1508,3368,1513,3357,1518,3345,1515,3338,1513,3330,1511,3318,1508,3304,1509,3297,1509,3290,1509,3285,1509,3283,1509,3275,1506,3267,1506,3257,1507,3247,1508,3236,1510,3224,1511,3224,1512,3223,1512,3223,1533,3229,1554,3234,1572,3235,1589,3235,1594,3235,1598,3234,1607,3228,1611,3223,1615,3223,1622,3223,1628,3226,1632,3230,1638,3231,1643,3232,1648,3230,1651,3229,1654,3228,1658,3227,1670,3235,1675,3238,1677,3240,1679,3242,1680,3244,1682,3249,1685,3255,1682,3257,1682,3258,1682,3262,1681,3265,1680,3267,1680,3268,1680,3281,1677,3289,1687,3291,1688,3291,1689,3292,1691,3293,1691,3304,1696,3315,1696,3323,1696,3329,1691,3334,1688,3338,1685,3344,1681,3355,1681,3375,1682,3391,1673,3394,1671,3398,1670,3400,1670,3401,1669,3407,1666,3410,1663,3411,1662,3411,1661,3412,1660,3412,1659,3421,1633,3419,1602,3419,1599,3420,1597,3421,1596,3421,1595,3424,1589,3428,1584,3428,1584,3429,1583,3430,1582,3434,1581,3435,1581,3437,1580,3445,1578,3457,1573,3458,1573,3459,1572,3468,1565,3476,1557,3476,1557,3477,1556,3484,1546,3490,1540,3492,1539,3492,1538,3494,1533,3495,1528,3496,1521,3499,1514,3499,1513,3501,1513,3505,1512,3507,1510,3508,1509,3509,1509,3515,1509,3519,1510,3523,1511,3526,1510,3532,1510,3535,1512,3538,1513,3539,1511,3539,1511,3541,1511,3548,1510,3555,1509,3558,1508,3562,1508,3567,1507,3571,1506,3576,1503,3583,1501,3589,1498,3595,1496,3596,1496,3596,1495,3603,1491,3610,1490,3614,1490,3618,1490,3627,1491,3630,1500,3631,1502,3631,1503,3634,1506,3638,1509,3639,1509,3640,1510,3641,1510,3642,1511,3650,1519,3657,1528,3658,1529,3659,1531,3661,1538,3666,1541,3669,1543,3671,1545,3672,1546,3673,1547,3676,1548,3677,1552,3677,1553,3677,1554,3678,1555,3679,1556,3687,1565,3696,1568,3697,1569,3697,1569,3703,1576,3713,1579,3715,1580,3716,1581,3725,1593,3732,1603,3735,1607,3739,1609,3746,1614,3752,1621,3754,1623,3754,1626,3754,1630,3753,1632,3750,1634,3747,1638,3741,1647,3743,1661,3743,1666,3746,1669,3747,1669,3749,1669,3754,1669,3759,1667,3763,1665,3766,1663,3770,1660,3773,1656,3793,1635,3799,1607,3800,1603,3806,1599,3807,1598,3809,1596,3804,1590,3797,1584,3796,1584,3795,1583,3794,1582,3793,1581,3792,1579,3790,1578,3766,1561,3744,1542,3735,1534,3728,1526,3726,1523,3725,1519,3706,1504,3698,1484,3693,1475,3697,1463,3698,1459,3702,1455,3705,1453,3708,1451,3710,1450,3712,1452,3713,1452,3715,1453,3720,1456,3721,1460,3727,1479,3735,1497,3740,1509,3747,1516,3748,1517,3749,1518,3750,1520,3751,1520,3761,1529,3774,1531,3784,1533,3793,1538,3811,1547,3825,1560,3827,1562,3826,1571,3825,1579,3826,1588,3826,1594,3832,1597,3834,1598,3835,1599,3835,1600,3836,1601,3837,1601,3838,1602,3840,1602,3840,1604,3840,1605,3840,1606,3845,1611,3850,1613,3857,1615,3859,1619,3860,1621,3861,1623,3868,1634,3874,1645,3880,1656,3886,1665,3892,1675,3896,1685,3897,1686,3897,1688,3898,1689,3898,1689,3904,1689,3908,1686,3917,1680,3925,1672,3928,1670,3931,1668,3924,1661,3921,1653,3918,1646,3920,1638,3923,1618,3933,1601,3938,1594,3944,1588,3948,1584,3953,1583,3954,1583,3954,1582,3957,1581,3962,1579,3965,1578,3967,1579,3976,1587,3982,1597,3986,1604,3988,1611,3991,1621,3991,1631,3991,1644,3995,1656,3996,1663,4003,1666,4018,1674,4029,1685,4037,1693,4040,1706,4041,1711,4041,1715,4041,1716,4041,1716,4042,1716,4042,1715,4043,1715,4043,1715,4044,1713,4047,1710,4052,1704,4050,1699,4050,1697,4049,1695,4048,1691,4047,1688,4046,1685,4044,1683,4044,1682,4044,1680,4045,1673,4046,1668,4048,1660,4053,1657,4056,1654,4058,1654,4070,1650,4083,1648,4086,1647,4088,1643,4088,1641,4089,1639,4090,1634,4097,1635,4101,1635,4105,1637,4110,1638,4115,1638,4123,1638,4131,1638,4144,1639,4158,1637,4162,1636,4166,1632,4167,1631,4167,1630,4176,1621,4189,1623,4195,1624,4199,1628,4201,1629,4204,1630,4204,1630,4205,1631,4214,1640,4223,1649,4224,1649,4225,1650,4234,1652,4243,1652,4244,1653,4245,1652,4249,1652,4252,1651,4253,1651,4255,1651,4280,1649,4305,1649,4317,1649,4325,1646,4329,1645,4330,1647,4330,1648,4332,1648,4333,1649,4333,1649,4334,1653,4337,1656,4338,1656,4338,1657,4339,1659,4340,1660,4344,1664,4349,1665,4351,1666,4351,1668,4357,1670,4363,1671,4365,1672,4366,1672,4370,1672,4373,1672,4377,1673,4379,1675,L,4381,1677,Q,4381,1678,4381,1679,4382,1681,4382,1682,4383,1682,4383,1681,4386,1674,4387,1667,4387,1665,4387,1664,4387,1663,4387,1662,4387,1661,4386,1659,4385,1655,4385,1649,4386,1648,4386,1647,4386,1640,4387,1635,4388,1634,4388,1632,4389,1630,4393,1630,4395,1630,4396,1630,4403,1632,4410,1636,4415,1638,4419,1639,4422,1639,4422,1638,4426,1627,4426,1614,4427,1605,4430,1597,4432,1592,4431,1587,4431,1585,4431,1584,4430,1579,4431,1576,4433,1572,4435,1572,4460,1572,4484,1574,4486,1575,4487,1575,4493,1577,4500,1577,4504,1577,4504,1581,4504,1587,4502,1589,4502,1590,4502,1591,4500,1596,4499,1600,4500,1601,4500,1601,4503,1601,4505,1601,4519,1601,4533,1601,4542,1601,4551,1603,4553,1603,4554,1604,4563,1607,4574,1608,4580,1608,4586,1608,4612,1609,4637,1606,4644,1605,4643,1598,4643,1595,4643,1591,4644,1584,4644,1581,4644,1573,4641,1565,4641,1565,4641,1564,4642,1558,4636,1556,4628,1554,4622,1548,4617,1541,4620,1535,4624,1527,4633,1522,4643,1517,4653,1513,4656,1512,4657,1509,4659,1506,4661,1504,4666,1499,4669,1493,4670,1491,4671,1489,4674,1484,4678,1478,4681,1473,4684,1469,4687,1465,4687,1460,4687,1458,4688,1456,4688,1454,4688,1453,4687,1441,4691,1431,4691,1429,4691,1427,4690,1423,4690,1420,4688,1411,4687,1401,4685,1386,4684,1371,4684,1365,4684,1358,4688,1354,4688,1347,4688,1347,4688,1346,4688,1330,4688,1314,4688,1312,4687,1310,4687,1303,4684,1299,4684,1299,4683,1297,4680,1289,4678,1280,4678,1279,4677,1277,4677,1274,4677,1270,4678,1270,4678,1269,4678,1267,4679,1266,4679,1265,4679,1264,4679,1249,4686,1241,4687,1240,4688,1239,4693,1237,4698,1237,4700,1237,4701,1236,4716,1236,4730,1233,4740,1232,4748,1227,4758,1223,4766,1216,4780,1205,4789,1189,4795,1181,4799,1171,4807,1148,4800,1125,4795,1109,4789,1093,4787,1085,4787,1077,4789,1063,4795,1051,4798,1046,4802,1041,4813,1029,4825,1021,4832,1016,4841,1013,4849,1011,4858,1010,4864,1009,4870,1005,4876,1003,4880,999,4883,999,4884,997,4888,995,4890,991,4893,988,4895,984,4902,973,4908,963,4913,954,4923,945,4928,941,4933,936,4934,934,4935,932,4936,931,4936,929,4936,923,4934,918,4934,916,4934,915,4933,908,4934,903,4939,887,4933,871,4927,854,4913,848,4912,847,4911,847,4901,846,4894,841,4893,840,4892,840,4889,840,4889,836,4890,830,4895,826,4896,826,4896,825,4905,817,4915,808,4923,799,4933,791,4939,786,4942,783,4943,782,4944,781,4946,779,4949,775,4957,762,4964,748,4964,748,4964,747,4964,745,4964,744,4965,742,4965,740,4966,740,4966,739,4967,738,4968,736,4971,728,4968,720,4966,715,4961,713,4947,708,4933,702,4927,699,4922,693,4919,689,4917,687,4907,679,4893,667,4889,664,4889,659,4888,645,4883,632,4879,625,4873,619,4867,614,4865,604,4861,587,4853,575,4853,573,4852,572,4852,561,4842,556,4836,553,4829,555,4808,559,4784,561,4776,560,4770,556,4770,556,4769,556,4766,557,4762,558,4760,559,4758,560,Q,4757,561,4756,562,Z],[M,4726,405,Q,4721,405,4715,405,4709,405,4703,405,4700,407,4697,407,4696,407,4695,408,4694,408,4693,409,4692,410,4690,411,4688,416,4684,418,4680,421,4676,424,4669,424,4662,424,4660,425,4659,425,4654,425,4649,425,4646,428,4644,430,4642,433,4638,432,4637,432,4635,432,4630,432,4627,429,4625,428,4623,427,4619,425,4616,424,4613,424,4609,424,4608,425,4607,426,4607,431,4606,435,4603,436,4601,438,4599,437,4598,436,4597,435,4594,434,4589,436,4586,439,4581,442,4578,443,4577,444,4576,444,4573,445,4569,444,4567,444,4565,445,4562,447,4560,448,4559,449,4558,450,4558,451,4556,451,4554,453,4552,455,4553,460,4550,460,4545,461,4541,461,4539,461,4537,462,4535,462,4534,463,4532,465,4530,466,4524,466,4520,467,4515,468,4517,471,4520,473,4522,474,4523,477,4522,478,4527,477,4529,480,4529,484,4526,483,4525,483,4523,483,4521,483,4519,483,4518,483,4517,484,4515,487,4515,489,4513,494,4513,497,4509,500,4505,502,4504,504,4503,507,L,4503,507,Q,4501,508,4500,508,4499,509,4497,510,4492,512,4488,512,4486,513,4486,514,4486,516,4489,515,4493,515,4493,517,4494,521,4495,524,4495,526,4493,527,4490,531,4486,530,4485,530,4483,529,4481,529,4479,529,4475,530,4474,531,4472,533,4472,537,4472,539,4471,541,4466,540,4462,542,4461,543,4461,544,4461,546,4463,546,4464,547,4466,548,4471,547,4470,552,4468,554,4468,554,4466,556,4467,559,4468,562,4465,562,4462,561,4460,562,4460,564,4458,564,4457,565,4455,565,4450,565,4447,565,4445,568,4443,571,4442,573,4444,576,4446,579,4448,582,4449,587,4451,587,4455,588,4456,586,4459,583,4461,582,4462,580,4465,580,4468,581,4470,583,4473,584,4475,586,4476,587,4478,587,4481,589,4485,589,4486,593,4488,594,4489,595,4491,595,4494,595,4494,597,4495,600,4493,601,4489,600,4487,601,4490,605,4495,608,4496,609,4497,609,4502,609,4504,612,4505,613,4505,613,4508,614,4508,612,4512,610,4512,609,4513,608,4515,608,4518,608,4520,608,4523,610,4524,610,4525,611,4526,612,4531,612,4536,612,4538,612,4539,611,4542,611,4542,610,4538,608,4535,605,4534,603,4533,602,4529,598,4525,594,4520,589,4517,583,4516,581,4515,579,4513,577,4513,577,4514,575,4513,574,4513,563,4513,553,4514,552,4514,551,4517,548,4520,546,4523,544,4524,542,4528,538,4527,534,4528,531,4528,530,4529,528,4530,528,4532,527,4535,525,4537,523,4538,522,4539,518,4541,518,4544,517,4544,516,4545,514,4545,511,4550,510,4549,507,L,4549,507,Q,4549,505,4548,504,4548,502,4548,502,4553,501,4556,499,4558,501,4560,500,4565,499,4565,496,4566,492,4566,489,4571,489,4573,487,4575,482,4579,482,4582,482,4584,483,4586,483,4587,482,4588,481,4589,481,4592,478,4594,476,4596,474,4597,472,4599,470,4600,469,4604,467,4608,466,4611,466,4613,465,4616,464,4619,463,4622,461,4623,460,4627,457,4633,455,4637,454,4640,454,4643,453,4644,452,4648,451,4651,449,4653,448,4654,448,4657,446,4660,446,4661,446,4662,445,4664,445,4666,444,4667,444,4669,443,4673,441,4676,440,4678,440,4680,440,4683,440,4685,439,4691,439,4694,438,4701,435,4706,434,4710,434,4714,432,4715,432,4716,432,4717,431,4718,430,4720,430,4722,429,4728,428,4735,424,4738,423,4740,419,4742,416,4739,414,4736,412,4734,410,4733,408,4731,407,Q,4729,405,4726,405,Z],[M,4665,236,Q,4658,236,4650,240,4649,241,4647,242,4645,244,4641,244,4640,245,4639,248,4638,250,4638,253,4640,254,4642,255,4643,256,4644,257,4649,258,4654,258,4657,258,4661,255,4663,254,4665,253,4668,251,4672,252,4674,252,4676,252,4680,253,4680,250,4681,246,4675,246,4672,246,4671,243,4674,243,4675,242,4674,240,4672,237,Q,4669,237,4665,236,Z],[M,4649,222,Q,4650,221,4648,220,4644,220,4638,221,4636,221,4636,222,4636,223,4637,225,4639,225,4640,225,4645,227,4651,226,Q,4649,224,4649,222,Z],[M,4557,219,Q,4555,220,4555,223,4558,223,4561,223,4561,225,4563,224,4564,224,4566,223,4571,223,4575,221,4574,220,4573,219,4571,217,4569,218,Q,4564,219,4557,219,Z],[M,4543,226,Q,4540,228,4537,230,4537,232,4537,234,4537,235,4533,235,4532,236,4530,238,4529,239,4526,239,4525,239,4524,241,4521,242,4520,240,4519,240,4515,241,4515,243,4516,244,4525,245,4533,245,4534,241,4541,242,4542,242,4543,242,4546,243,4551,242,4553,240,4553,235,4555,235,4558,234,4561,235,4561,233,4560,232,4555,231,4556,229,4554,228,4554,228,4553,227,4553,227,4551,226,Q,4548,226,4543,226,Z]],label:"Europe",shortLabel:"EU",labelPosition:[424.8,122.8],labelAlignment:[CEN,MID]},AS:{outlines:[[M,5058,2392,Q,5056,2394,5055,2397,5052,2402,5052,2411,5052,2414,5051,2417,5051,2422,5051,2426,5051,2431,5051,2437,L,5051,2448,Q,5051,2453,5052,2455,5055,2467,5066,2467,5067,2466,5068,2466,5072,2465,5086,2464,5087,2464,5089,2463,5091,2462,5094,2460,5099,2456,5100,2453,5100,2452,5100,2451,5100,2444,5100,2439,5100,2438,5100,2437,5100,2429,5098,2425,5097,2423,5096,2422,5091,2419,5086,2410,L,5086,2410,Q,5080,2407,5079,2402,5078,2395,5074,2393,5071,2392,5069,2390,5068,2386,5062,2381,5060,2380,5057,2378,5061,2384,5061,2390,Q,5059,2391,5058,2392,Z],[M,5404,2465,Q,5401,2471,5404,2475,5406,2478,5409,2481,5415,2488,5420,2492,5424,2494,5426,2497,5427,2498,5428,2499,5438,2510,5445,2522,5447,2524,5449,2526,5459,2535,5467,2547,5468,2548,5468,2549,5471,2555,5475,2562,5480,2570,5487,2578,5495,2587,5504,2597,5515,2607,5522,2620,5530,2633,5537,2647,5545,2662,5555,2676,5565,2689,5576,2699,5587,2710,5597,2721,5615,2738,5635,2753,5637,2754,5638,2755,5648,2761,5654,2768,5656,2771,5659,2772,5661,2772,5662,2772,5665,2771,5668,2771,5672,2771,5675,2771,5682,2769,5688,2771,5691,2772,5694,2773,5701,2776,5711,2775,5717,2774,5722,2773,5729,2771,5731,2774,5736,2781,5742,2786,5744,2787,5745,2788,5751,2792,5762,2791,5763,2791,5766,2790,5769,2790,5772,2789,5775,2788,5779,2789,5781,2789,5782,2789,5788,2790,5795,2790,5802,2789,5806,2792,5809,2793,5813,2794,5817,2794,5821,2796,5823,2798,5824,2799,5828,2802,5833,2802,5842,2802,5844,2799,5848,2793,5843,2786,5833,2773,5819,2764,5806,2755,5791,2749,5767,2740,5742,2752,5739,2753,5733,2753,5732,2753,5731,2753,5726,2756,5721,2753,5714,2747,5706,2742,5699,2737,5690,2735,5672,2729,5652,2727,5647,2727,5645,2724,5639,2719,5639,2710,5640,2691,5643,2673,5644,2672,5643,2670,5642,2665,5638,2661,5635,2657,5633,2651,5632,2650,5632,2649,5628,2646,5627,2639,5626,2633,5623,2628,5614,2618,5605,2612,5604,2610,5602,2610,5593,2607,5588,2602,5588,2601,5587,2600,5587,2597,5586,2594,5586,2593,5586,2592,5585,2579,5583,2567,5583,2567,5582,2566,5582,2565,5580,2564,5575,2561,5570,2559,5568,2558,5567,2558,5537,2550,5516,2528,5516,2527,5515,2526,5515,2525,5517,2523,5516,2518,5511,2514,5505,2509,5499,2504,5491,2496,5482,2488,5470,2478,5456,2469,5445,2463,5433,2456,5428,2453,5421,2453,5413,2452,5408,2456,5408,2457,5407,2458,Q,5406,2462,5404,2465,Z],[M,5888,2405,Q,5883,2409,5878,2416,5872,2425,5870,2435,5869,2437,5868,2440,5866,2443,5864,2446,5864,2447,5863,2448,5862,2451,5861,2452,5847,2461,5833,2471,5823,2478,5814,2486,5807,2492,5801,2500,5795,2508,5787,2513,5776,2521,5763,2524,5754,2527,5749,2532,5745,2536,5740,2537,5733,2540,5728,2538,5727,2538,5726,2538,5717,2540,5715,2549,5713,2560,5715,2572,5716,2573,5716,2575,5716,2577,5715,2578,5711,2587,5708,2596,5705,2604,5705,2613,5705,2615,5708,2616,5714,2616,5718,2618,5719,2619,5720,2619,5727,2618,5730,2622,5733,2626,5733,2630,5733,2632,5733,2633,5736,2645,5739,2654,5741,2657,5745,2658,5746,2658,5747,2659,5751,2662,5757,2661,5758,2661,5759,2661,5763,2659,5767,2658,5771,2657,5772,2660,5773,2661,5773,2662,5777,2664,5780,2668,5780,2669,5782,2669,5787,2670,5790,2668,5805,2660,5820,2657,5832,2655,5844,2659,5846,2660,5847,2660,5848,2661,5849,2662,5853,2664,5859,2664,5866,2664,5869,2659,5870,2658,5871,2657,5876,2651,5880,2639,5881,2634,5882,2630,5883,2629,5883,2627,5885,2620,5888,2613,5892,2605,5898,2601,5900,2599,5902,2597,5913,2587,5919,2574,5923,2567,5928,2560,5931,2556,5933,2551,5934,2550,5933,2549,5931,2542,5924,2540,5924,2540,5923,2539,5917,2526,5920,2510,5919,2504,5921,2501,5921,2501,5922,2499,5923,2496,5924,2492,5925,2489,5924,2487,5924,2486,5924,2485,5926,2479,5931,2475,5943,2468,5937,2458,5936,2457,5934,2457,5932,2456,5930,2455,5925,2452,5919,2450,5913,2449,5911,2443,5909,2436,5906,2432,5906,2431,5906,2429,5906,2425,5907,2421,5907,2418,5908,2415,5908,2412,5906,2411,5897,2409,5889,2405,Q,5888,2405,5888,2405,Z],[M,5933,2111,Q,5936,2110,5930,2109,5929,2109,5927,2110,5922,2112,5923,2118,5924,2119,5924,2120,5927,2126,5929,2132,5931,2137,5934,2140,5934,2141,5935,2142,5935,2143,5935,2144,5936,2155,5935,2165,5935,2166,5935,2167,5933,2172,5932,2177,5932,2178,5932,2178,5930,2183,5928,2186,5926,2188,5924,2190,5917,2201,5910,2212,5905,2222,5900,2232,5900,2234,5898,2235,5890,2242,5881,2250,5878,2252,5877,2254,5876,2257,5875,2261,5874,2264,5874,2266,5875,2273,5873,2277,5872,2279,5871,2282,5871,2284,5871,2285,5870,2290,5873,2295,5877,2302,5886,2300,5889,2299,5890,2298,5900,2290,5907,2281,5911,2276,5915,2271,5917,2268,5919,2265,5924,2258,5928,2251,5931,2243,5935,2238,5938,2233,5941,2228,5951,2214,5958,2198,5963,2189,5965,2178,5966,2175,5965,2171,5964,2167,5963,2164,5963,2160,5963,2157,5963,2144,5955,2139,5948,2134,5948,2127,5948,2126,5948,2125,5948,2118,5940,2115,Q,5935,2113,5933,2111,Z],[M,5887,2034,Q,5887,2035,5887,2036,5889,2041,5892,2045,5892,2046,5893,2046,5898,2048,5903,2049,5905,2050,5906,2049,5915,2048,5919,2037,5921,2031,5924,2027,5931,2019,5925,2008,5921,2007,5916,2005,5912,2003,5906,2005,5904,2006,5902,2006,5901,2007,5900,2007,5891,2013,5888,2022,Q,5885,2027,5887,2034,Z],[M,6295,1543,Q,6293,1543,6290,1544,6281,1546,6278,1555,6272,1573,6272,1594,6273,1607,6268,1621,6266,1627,6262,1630,6261,1631,6259,1632,6256,1635,6251,1637,6246,1640,6242,1647,6239,1653,6233,1652,6229,1651,6227,1653,6217,1661,6208,1671,6205,1674,6202,1679,6202,1680,6201,1681,6199,1684,6195,1686,6192,1689,6187,1688,6176,1687,6166,1690,6158,1692,6151,1695,6146,1697,6142,1700,6135,1708,6130,1714,6126,1719,6128,1725,6130,1725,6131,1724,6137,1723,6143,1721,6146,1719,6149,1717,6150,1716,6151,1715,6163,1709,6177,1705,6183,1703,6190,1704,6199,1704,6207,1708,6215,1712,6218,1719,6222,1728,6223,1738,6223,1739,6223,1741,6229,1737,6235,1731,6239,1726,6240,1722,6242,1719,6243,1716,6245,1711,6250,1708,6256,1703,6264,1703,6265,1703,6267,1703,6268,1703,6268,1703,6278,1707,6288,1705,6290,1705,6292,1704,6295,1704,6297,1703,6306,1702,6311,1696,6322,1684,6325,1668,6327,1657,6324,1646,6322,1636,6318,1627,6317,1619,6322,1607,6326,1600,6329,1593,6332,1586,6331,1579,6330,1570,6325,1562,6321,1555,6315,1550,6310,1546,6304,1544,6301,1544,6298,1544,6298,1544,6297,1544,Q,6296,1543,6295,1543,Z],[M,6297,1417,Q,6291,1424,6288,1432,6281,1448,6278,1464,6278,1468,6278,1471,6278,1476,6277,1480,6274,1487,6271,1493,6268,1499,6268,1505,6268,1507,6269,1508,6270,1509,6271,1510,6274,1511,6278,1513,6279,1513,6280,1514,6284,1517,6290,1515,6291,1515,6291,1514,6295,1508,6307,1508,6309,1508,6311,1508,6317,1509,6320,1512,6321,1514,6324,1514,6325,1515,6325,1515,6330,1515,6335,1515,6336,1515,6336,1514,6338,1510,6341,1507,6353,1490,6369,1481,6373,1479,6375,1477,6378,1475,6379,1470,6380,1462,6375,1459,6375,1459,6374,1458,6372,1456,6369,1456,6358,1455,6347,1451,6335,1448,6325,1441,6317,1436,6310,1429,6306,1425,6301,1420,Q,6298,1418,6297,1417,Z],[M,6010,543,Q,6004,541,5997,542,5994,542,5990,543,5983,544,5976,543,5975,543,5973,543,5967,543,5962,545,5960,546,5959,547,5953,555,5949,562,5943,571,5936,575,5936,576,5935,576,5927,577,5920,579,5918,579,5916,580,5915,580,5913,580,5908,581,5902,581,5887,581,5872,580,5871,580,5869,580,5846,575,5823,577,5811,578,5800,586,5791,593,5779,595,5771,597,5766,594,5766,593,5765,592,5764,588,5762,586,5749,568,5739,549,5738,546,5737,542,5734,534,5729,526,5727,523,5723,518,5723,517,5722,515,5718,507,5712,499,5709,495,5705,493,5701,492,5695,492,5695,492,5694,491,5692,491,5691,490,5682,487,5677,485,5676,485,5675,484,5670,483,5664,484,5662,484,5661,484,5658,486,5652,487,5652,488,5651,488,5649,488,5647,489,5637,493,5628,499,5618,505,5610,514,5596,531,5574,536,5571,539,5569,538,5562,534,5558,528,5554,522,5547,520,5539,519,5531,520,5525,520,5520,518,5518,517,5517,517,5510,515,5502,513,5491,511,5480,509,5478,509,5477,509,5465,505,5450,506,5433,507,5417,510,5406,511,5396,515,5394,516,5393,516,5378,516,5368,509,5362,505,5363,493,5363,489,5366,486,5370,481,5373,473,5377,464,5387,456,5392,453,5397,448,5402,442,5405,435,5409,428,5406,422,5402,414,5392,410,5370,402,5347,399,5327,396,5306,396,5283,396,5261,396,5256,395,5251,393,5235,387,5223,376,5215,369,5207,361,5200,354,5189,353,5183,353,5178,357,5177,358,5176,359,5172,362,5170,368,5165,378,5161,389,5160,394,5157,399,5151,411,5140,417,5134,420,5126,421,5125,421,5124,421,5120,423,5115,423,5113,423,5111,423,5097,428,5086,433,5086,433,5085,433,5080,435,5075,435,5074,435,5072,434,5068,434,5063,433,5050,431,5035,432,5012,432,4989,433,4974,434,4959,437,4946,440,4933,446,4925,451,4918,459,4914,465,4917,468,4920,473,4921,478,4922,484,4923,489,4923,490,4923,490,4922,491,4920,493,4918,496,4916,499,4914,502,4909,504,4901,506,4892,508,4891,509,4889,509,4885,509,4881,509,4849,511,4821,523,4820,524,4818,525,4807,533,4798,544,4794,550,4787,551,4785,552,4783,552,4758,556,4784,561,4808,559,4829,555,4836,554,4842,557,4852,561,4852,573,4853,574,4853,575,4861,588,4865,605,4867,615,4873,620,4879,625,4883,633,4888,645,4889,660,4889,664,4893,667,4907,679,4917,688,4919,690,4922,694,4927,700,4933,702,4947,709,4961,714,4966,716,4968,720,4971,729,4968,737,4967,738,4966,739,4966,740,4965,741,4965,742,4964,745,4964,746,4964,747,4964,748,4964,749,4957,762,4949,775,4946,780,4944,782,4943,783,4942,784,4939,787,4933,791,4923,800,4915,808,4905,818,4896,826,4896,826,4895,827,4890,831,4889,837,4889,840,4892,840,4893,841,4894,841,4901,846,4911,847,4912,848,4913,848,4927,855,4933,871,4939,887,4934,904,4933,909,4934,915,4934,917,4934,918,4936,924,4936,930,4936,931,4935,932,4934,935,4933,936,4928,941,4923,945,4913,954,4908,963,4902,974,4895,984,4893,988,4890,992,4888,995,4884,998,4883,999,4880,1e3,4876,1003,4870,1006,4864,1009,4858,1010,4849,1012,4841,1014,4832,1016,4825,1021,4813,1030,4802,1041,4798,1046,4795,1051,4789,1064,4787,1077,4787,1085,4789,1094,4795,1110,4800,1125,4807,1149,4799,1172,4795,1182,4789,1190,4780,1205,4766,1217,4758,1224,4748,1228,4740,1232,4730,1234,4716,1236,4701,1237,4700,1237,4698,1237,4693,1238,4688,1239,4687,1240,4686,1241,4679,1250,4679,1265,4679,1266,4679,1266,4678,1268,4678,1269,4678,1270,4677,1271,4677,1274,4677,1278,4678,1279,4678,1281,4680,1289,4683,1298,4684,1299,4684,1300,4687,1304,4687,1310,4688,1313,4688,1315,4688,1331,4688,1346,4688,1347,4688,1348,4688,1355,4684,1358,4684,1365,4684,1372,4685,1387,4687,1402,4688,1411,4690,1420,4690,1424,4691,1428,4691,1430,4691,1432,4687,1441,4688,1453,4688,1455,4688,1456,4687,1458,4687,1460,4687,1466,4684,1470,4681,1474,4678,1478,4674,1484,4671,1490,4670,1492,4669,1494,4666,1499,4661,1504,4659,1506,4657,1509,4656,1513,4653,1514,4643,1518,4633,1522,4624,1528,4620,1536,4617,1542,4622,1548,4628,1555,4636,1557,4642,1558,4641,1564,4641,1565,4641,1566,4644,1573,4644,1582,4644,1584,4643,1591,4643,1595,4643,1599,4644,1606,4637,1607,4612,1609,4586,1609,4580,1609,4574,1608,4563,1607,4554,1604,4553,1604,4551,1603,4542,1602,4533,1602,4519,1602,4505,1602,4504,1604,4504,1607,4504,1610,4505,1613,4507,1618,4507,1626,L,4507,1633,Q,4509,1644,4512,1654,4514,1663,4515,1671,4516,1681,4515,1690,4513,1700,4509,1709,4506,1715,4501,1720,L,4501,1719,Q,4500,1721,4499,1722,4497,1716,4493,1714,4493,1714,4492,1714,4484,1713,4476,1711,4476,1711,4475,1711,4473,1710,4470,1710,4462,1709,4461,1702,4459,1690,4452,1681,4446,1671,4435,1671,4429,1671,4424,1680,4418,1691,4412,1700,4412,1701,4411,1701,4406,1700,4403,1697,4402,1696,4401,1696,4393,1696,4385,1696,4382,1690,4381,1685,4380,1680,4381,1678,4381,1678,4381,1677,L,4379,1674,Q,4377,1672,4373,1672,4370,1672,4366,1671,4365,1671,4363,1671,4357,1670,4351,1667,L,4351,1667,Q,4350,1667,4349,1665,4344,1663,4340,1660,4339,1659,4338,1657,4338,1656,4337,1655,4334,1653,4333,1649,4333,1648,4332,1648,4330,1647,4330,1647,4329,1645,4325,1646,4317,1648,4305,1648,4280,1649,4255,1650,4253,1650,4252,1651,4249,1652,4245,1652,4244,1652,4243,1652,4234,1651,4225,1649,4224,1649,4223,1648,4214,1640,4205,1630,4204,1630,4204,1629,4201,1629,4199,1627,4195,1623,4189,1622,4176,1621,4167,1630,4167,1631,4166,1632,4162,1636,4158,1636,4144,1638,4131,1638,4123,1638,4115,1638,4110,1638,4105,1636,4101,1635,4097,1634,4090,1634,4089,1639,4088,1640,4088,1642,4086,1647,4083,1647,4070,1650,4058,1653,4056,1654,4053,1656,4048,1659,4046,1667,4045,1673,4044,1680,4044,1681,4044,1682,4046,1684,4047,1687,4048,1691,4049,1695,4050,1696,4050,1698,4052,1704,4047,1710,4044,1712,4043,1714,4043,1715,4042,1715,4042,1715,4041,1716,4043,1718,4045,1719,4046,1719,4047,1719,4051,1721,4055,1722,4058,1723,4060,1723,4061,1724,4062,1724,4065,1725,4068,1726,4070,1729,4070,1730,L,4070,1728,Q,4074,1734,4081,1738,4082,1738,4084,1739,4087,1740,4091,1742,4098,1746,4108,1750,4109,1751,4109,1751,4112,1755,4117,1756,4120,1757,4122,1758,4125,1760,4126,1762,4127,1763,4128,1764,4129,1765,4131,1766,4137,1770,4143,1775,4146,1778,4148,1784,4148,1784,4149,1784,4155,1785,4157,1783,4158,1783,4159,1782,4162,1781,4165,1778,4169,1774,4171,1771,4172,1771,4172,1770,4177,1765,4185,1758,4187,1756,4191,1757,4192,1757,4192,1757,4196,1756,4196,1760,4196,1761,4196,1761,4197,1765,4195,1768,4194,1770,4194,1771,4192,1783,4191,1795,4191,1797,4191,1798,4193,1821,4188,1843,4186,1851,4181,1858,4175,1866,4171,1875,4165,1886,4164,1898,4164,1906,4163,1914,4163,1915,4163,1917,4163,1928,4158,1933,4157,1934,4156,1935,4156,1936,4156,1939,4155,1941,4155,1944,4155,1948,4162,1954,4169,1960,4180,1970,4192,1980,4195,1990,4198,2001,4195,2017,4195,2022,4197,2024,4200,2027,4206,2028,4206,2028,4207,2028,4207,2029,4207,2029,4207,2030,4208,2031,4209,2032,4208,2032,4212,2035,4215,2038,4220,2044,4221,2051,4222,2059,4220,2068,4219,2077,4221,2086,4222,2093,4227,2097,4240,2107,4248,2121,4249,2122,4249,2123,4250,2124,4250,2125,4253,2131,4258,2133,4259,2133,4261,2134,4271,2138,4276,2147,4277,2148,4278,2149,4283,2159,4288,2169,4289,2171,4290,2171,4299,2178,4305,2190,4306,2192,4306,2193,4307,2198,4307,2202,4309,2222,4315,2242,4319,2255,4324,2266,4332,2285,4347,2295,4353,2300,4354,2307,4355,2309,4355,2310,4356,2311,4357,2312,4360,2315,4363,2313,4366,2311,4368,2309,4375,2303,4383,2298,4396,2291,4409,2285,4415,2282,4420,2278,4430,2271,4440,2264,4457,2253,4474,2241,4480,2238,4485,2235,4506,2225,4523,2213,4525,2212,4527,2211,4533,2207,4540,2205,4544,2203,4547,2202,4571,2196,4594,2190,4597,2189,4600,2188,4601,2188,4602,2186,4603,2186,4603,2185,4605,2180,4610,2177,4611,2177,4612,2177,4616,2177,4618,2176,4619,2175,4620,2175,4621,2173,4626,2174,4627,2174,4628,2173,4634,2170,4636,2165,4638,2158,4640,2151,4640,2149,4641,2149,4644,2146,4646,2142,4647,2142,4647,2141,4652,2139,4655,2136,4664,2129,4670,2119,4671,2118,4671,2117,4672,2110,4674,2104,4675,2100,4673,2096,4666,2084,4655,2079,4646,2075,4637,2071,4636,2070,4635,2069,4633,2063,4627,2061,4620,2058,4613,2054,4612,2054,4610,2053,4605,2051,4603,2047,4603,2046,4602,2045,4602,2044,4601,2042,4599,2036,4600,2028,4600,2027,4599,2025,4597,2019,4590,2018,4589,2018,4588,2019,4585,2022,4581,2024,4574,2030,4566,2032,4551,2036,4535,2038,4521,2039,4508,2038,4505,2038,4502,2033,4502,2033,4502,2031,4501,2026,4501,2024,4502,2023,4502,2021,4502,2010,4493,2007,4488,2005,4484,2002,4477,1996,4473,1988,4471,1985,4469,1982,4463,1975,4457,1970,4450,1964,4442,1954,4438,1950,4437,1944,4436,1940,4436,1936,4434,1919,4446,1907,4449,1904,4455,1904,4456,1904,4458,1905,4462,1907,4465,1908,4478,1915,4487,1927,4499,1943,4510,1959,4518,1971,4525,1983,4526,1984,4525,1984,4525,1988,4529,1987,4535,1985,4540,1986,4542,1986,4543,1986,4547,1987,4551,1989,4557,1993,4559,2e3,4560,2001,4560,2001,4563,2002,4565,2002,4572,2002,4574,1997,4579,1995,4582,1991,4588,1986,4591,1986,4602,1987,4611,1996,4620,2006,4629,2015,4635,2021,4643,2023,4655,2025,4667,2027,4674,2028,4681,2029,4698,2032,4711,2027,4717,2025,4724,2026,4731,2027,4736,2029,4738,2030,4739,2031,4743,2034,4748,2035,4751,2032,4754,2029,4755,2028,4755,2026,4754,2012,4757,1997,4757,1995,4761,1995,4762,1995,4763,1996,4764,1997,4764,1998,4765,1998,4765,1998,4765,1999,4764,1999,4765,2e3,4765,2002,4765,2006,4766,2009,4767,2010,4767,2011,4770,2017,4776,2022,4777,2023,4778,2023,4781,2023,4784,2024,4786,2024,4786,2024,4798,2020,4807,2027,4802,2030,4799,2035,4795,2039,4796,2045,4796,2050,4797,2056,4797,2058,4797,2060,4799,2064,4802,2067,4803,2068,4804,2069,4807,2073,4811,2073,4823,2075,4835,2074,4845,2074,4855,2074,4861,2075,4864,2080,4867,2086,4865,2093,4864,2095,4865,2099,4865,2101,4865,2103,4863,2107,4866,2112,4872,2121,4874,2130,4874,2132,4874,2133,4874,2141,4873,2149,4873,2150,4873,2150,4872,2152,4872,2153,4872,2155,4872,2157,4874,2152,4873,2157,4871,2161,4873,2168,4874,2175,4879,2184,4883,2194,4888,2203,4889,2205,4891,2207,4896,2213,4902,2220,4903,2221,4903,2222,4905,2226,4908,2230,4912,2237,4915,2243,4923,2262,4931,2279,4935,2288,4939,2296,4949,2314,4956,2333,4957,2334,4957,2336,4958,2340,4960,2342,4961,2344,4962,2346,4964,2350,4966,2354,4967,2355,4968,2356,4974,2367,4983,2377,4992,2388,5002,2398,5004,2401,5008,2400,5011,2400,5015,2396,5016,2396,5017,2395,5025,2388,5036,2377,5037,2376,5037,2376,5038,2374,5038,2373,5046,2366,5050,2354,5050,2353,5051,2352,5053,2347,5055,2342,5061,2328,5062,2312,5064,2294,5063,2274,5063,2273,5062,2271,5062,2270,5062,2269,5060,2264,5060,2259,5059,2255,5059,2250,5058,2245,5057,2242,5056,2240,5057,2239,5066,2222,5076,2205,5083,2194,5090,2182,5096,2172,5104,2163,5112,2155,5120,2148,5129,2140,5138,2131,5153,2118,5165,2103,5175,2093,5184,2082,5200,2064,5220,2049,5227,2045,5232,2040,5234,2039,5236,2037,5237,2036,5239,2035,5247,2033,5254,2036,5264,2039,5271,2046,5280,2054,5290,2060,5304,2068,5319,2074,5321,2076,5324,2079,5327,2084,5330,2088,5345,2109,5357,2130,5360,2135,5360,2142,5361,2163,5368,2183,5369,2188,5375,2186,5395,2183,5415,2176,5425,2173,5432,2176,5438,2178,5439,2186,5443,2206,5447,2225,5450,2240,5453,2255,5455,2267,5456,2280,5456,2284,5455,2287,5453,2301,5453,2316,5453,2318,5453,2320,5454,2328,5450,2335,5449,2337,5448,2338,5449,2351,5447,2363,5447,2364,5446,2365,5445,2366,5446,2369,5449,2376,5453,2381,5466,2396,5479,2409,5481,2411,5484,2413,5486,2413,5488,2414,5502,2419,5515,2431,5517,2433,5517,2435,5517,2437,5517,2438,5521,2448,5523,2458,5523,2464,5525,2468,5528,2478,5532,2487,5536,2496,5540,2505,5543,2512,5548,2517,5550,2519,5552,2521,5556,2524,5558,2527,5559,2528,5560,2528,5561,2528,5562,2529,5569,2534,5576,2537,5591,2545,5604,2541,5607,2540,5604,2530,5600,2520,5595,2510,5590,2499,5585,2487,5576,2468,5563,2451,5555,2441,5545,2433,5536,2425,5525,2419,5513,2407,5511,2391,5511,2385,5512,2379,5514,2371,5517,2364,5522,2354,5517,2344,5511,2333,5505,2321,5503,2316,5501,2311,5497,2298,5496,2284,5495,2276,5501,2273,5512,2268,5525,2272,5528,2273,5531,2275,5541,2287,5552,2297,5570,2313,5590,2325,5602,2332,5608,2342,5609,2344,5609,2345,5609,2347,5610,2348,5612,2353,5613,2357,5613,2358,5613,2358,5613,2364,5618,2368,5619,2369,5621,2369,5622,2369,5622,2369,5624,2368,5626,2368,5631,2366,5634,2363,5649,2352,5665,2341,5676,2334,5681,2321,5691,2299,5701,2277,5704,2269,5704,2261,5704,2252,5702,2246,5695,2227,5691,2206,5691,2203,5688,2201,5686,2200,5684,2199,5681,2197,5680,2193,5680,2192,5680,2192,5680,2192,5680,2191,5680,2190,5680,2190,5676,2186,5673,2181,5664,2169,5659,2156,5654,2145,5645,2141,5643,2141,5641,2139,5633,2135,5630,2126,5629,2123,5627,2120,5627,2120,5627,2119,5626,2115,5625,2112,5622,2096,5641,2090,5642,2090,5643,2088,5644,2086,5646,2084,5654,2075,5662,2067,5670,2058,5681,2051,5682,2052,5682,2052,5686,2057,5688,2062,5689,2063,5690,2064,5693,2066,5693,2070,5693,2074,5695,2077,5696,2078,5695,2079,5695,2083,5697,2084,5698,2084,5700,2086,5705,2090,5712,2089,5723,2085,5733,2079,5739,2075,5743,2069,5744,2068,5744,2067,5745,2065,5747,2063,5756,2052,5767,2043,5776,2036,5787,2033,5799,2029,5811,2024,5829,2017,5844,2005,5852,1999,5866,1991,5872,1987,5875,1980,5875,1980,5876,1979,5877,1978,5878,1977,5879,1976,5879,1975,5880,1974,5882,1973,5894,1964,5898,1949,5899,1947,5899,1945,5900,1943,5900,1942,5901,1935,5905,1931,5911,1925,5914,1919,5917,1916,5919,1911,5927,1895,5932,1878,5938,1862,5942,1846,5944,1840,5940,1837,5931,1831,5921,1825,5917,1823,5917,1818,5917,1816,5918,1815,5920,1813,5922,1810,5924,1809,5925,1808,5926,1807,5927,1805,5927,1802,5929,1800,5930,1798,5930,1794,5930,1793,5929,1792,5929,1791,5929,1789,5928,1783,5926,1778,5926,1777,5925,1776,5922,1770,5916,1766,5913,1763,5912,1759,5911,1756,5911,1754,5909,1748,5908,1744,5907,1742,5907,1741,5907,1740,5906,1739,5906,1737,5905,1735,5903,1732,5901,1728,5895,1727,5888,1724,5883,1722,5882,1715,5879,1700,5881,1685,5881,1683,5885,1679,5886,1678,5887,1677,5890,1672,5896,1668,5906,1662,5910,1656,5911,1655,5912,1654,5916,1651,5917,1646,5918,1644,5918,1643,5921,1638,5920,1631,5920,1630,5919,1629,5919,1623,5913,1622,5911,1622,5909,1622,5895,1623,5882,1619,5880,1618,5878,1618,5870,1620,5862,1622,5851,1624,5843,1632,5838,1636,5832,1639,5825,1642,5823,1636,5820,1629,5821,1622,5822,1620,5822,1619,5823,1612,5829,1607,5834,1603,5837,1598,5845,1589,5853,1582,5856,1580,5857,1576,5861,1564,5864,1553,5865,1552,5865,1551,5866,1549,5868,1549,5874,1548,5875,1556,5876,1557,5876,1557,5876,1564,5877,1570,5878,1579,5882,1583,5886,1589,5891,1593,5895,1595,5898,1599,5900,1602,5903,1602,5906,1602,5908,1600,5911,1598,5914,1595,5915,1594,5916,1594,5928,1594,5935,1587,5942,1580,5954,1573,5959,1575,5962,1582,5963,1584,5963,1587,5967,1601,5967,1617,5967,1620,5969,1621,5970,1622,5971,1623,5973,1626,5979,1626,5980,1627,5980,1627,5984,1627,5987,1626,5992,1624,5997,1624,5998,1624,5999,1623,6e3,1623,6001,1623,6005,1629,6009,1636,6011,1640,6010,1644,6010,1646,6009,1647,6009,1661,6009,1674,6009,1676,6009,1677,6013,1687,6015,1698,6016,1701,6017,1702,6019,1708,6020,1713,6020,1714,6021,1716,6022,1719,6026,1719,6031,1720,6036,1720,6043,1720,6050,1720,6052,1721,6053,1720,6061,1720,6065,1722,6066,1723,6067,1722,6071,1718,6073,1712,6078,1699,6081,1686,6084,1674,6082,1662,6081,1655,6076,1648,6060,1625,6043,1603,6039,1597,6033,1593,6032,1592,6031,1590,6028,1587,6026,1585,6025,1585,6025,1583,6023,1574,6027,1569,6028,1567,6029,1566,6040,1556,6054,1543,6056,1541,6056,1536,6056,1531,6056,1527,6057,1527,6057,1526,6057,1520,6057,1515,6057,1506,6058,1496,6059,1493,6062,1490,6073,1481,6089,1483,6102,1485,6111,1481,6131,1471,6150,1458,6157,1453,6161,1446,6164,1443,6166,1438,6169,1434,6171,1430,6171,1429,6172,1428,6175,1425,6176,1419,6177,1414,6179,1410,6180,1408,6181,1407,6186,1404,6191,1402,6199,1400,6200,1393,6201,1383,6205,1373,6205,1372,6205,1371,6209,1359,6211,1348,6214,1337,6214,1325,6214,1319,6215,1314,6215,1313,6215,1312,6216,1307,6216,1302,6217,1295,6217,1288,6218,1273,6215,1258,6213,1247,6209,1236,6206,1226,6208,1216,6209,1211,6215,1209,6216,1209,6216,1209,6217,1210,6218,1211,6220,1215,6222,1218,6227,1225,6232,1231,6239,1238,6242,1246,6247,1259,6250,1272,6253,1285,6257,1297,6259,1304,6261,1308,6262,1309,6263,1309,6264,1310,6264,1311,6267,1317,6270,1321,6271,1322,6271,1322,6271,1327,6271,1331,6269,1344,6268,1359,6268,1361,6267,1363,6266,1365,6267,1368,6270,1379,6275,1388,6279,1394,6285,1398,6286,1399,6287,1399,6294,1399,6297,1395,6298,1394,6298,1393,6301,1379,6297,1368,6296,1366,6296,1365,6294,1358,6292,1353,6291,1349,6292,1347,6291,1338,6285,1333,6285,1333,6284,1332,6284,1331,6283,1329,6282,1326,6282,1323,6282,1319,6285,1316,6293,1310,6297,1302,6299,1298,6296,1291,6281,1262,6271,1231,6269,1225,6267,1222,6256,1206,6247,1194,6244,1189,6242,1185,6236,1174,6230,1169,6226,1166,6224,1171,6223,1177,6222,1184,6221,1197,6221,1209,6221,1210,6221,1210,L,6220,1209,Q,6218,1209,6217,1208,6216,1208,6216,1207,6202,1200,6194,1185,6190,1177,6185,1170,6177,1160,6166,1152,6162,1150,6157,1152,6147,1159,6135,1164,6129,1167,6124,1162,6116,1155,6107,1151,6092,1143,6076,1150,6078,1143,6081,1135,6086,1121,6092,1107,6092,1106,6092,1105,6093,1103,6093,1101,6095,1094,6103,1090,6104,1089,6105,1088,6108,1084,6111,1081,6126,1068,6139,1054,6145,1048,6147,1043,6148,1041,6149,1040,6152,1035,6153,1031,6155,1023,6158,1015,6162,1006,6168,1e3,6174,997,6181,997,6184,997,6186,996,6190,995,6196,996,6218,1001,6241,998,6243,998,6244,999,6250,1e3,6257,999,6270,998,6280,1006,6282,1008,6285,1008,6289,1008,6292,1007,6304,1005,6317,1005,6327,1005,6335,1009,6340,1011,6345,1012,6359,1017,6375,1017,6377,1017,6378,1017,6379,1018,6381,1018,6383,1018,6384,1016,6386,1017,6389,1018,6390,1019,6391,1019,6395,1023,6401,1019,6409,1015,6415,1009,6421,1003,6423,995,6426,987,6427,980,6430,970,6435,960,6439,953,6441,948,6442,947,6442,945,6445,939,6447,932,6448,928,6450,925,6452,920,6458,916,6461,914,6465,917,6466,918,6466,918,6468,918,6468,918,6471,916,6475,916,6480,917,6484,918,6486,918,6486,920,6487,921,6488,921,6494,923,6499,928,6500,929,6500,929,6507,931,6511,934,6514,937,6517,937,6522,937,6526,935,6531,933,6537,931,6542,929,6547,925,6556,917,6560,904,6562,895,6569,893,6572,892,6573,890,6576,889,6576,891,6576,893,6576,893,6579,896,6579,902,6579,905,6578,907,6577,915,6572,924,6569,930,6564,936,6557,942,6550,946,6545,948,6541,952,6525,965,6510,978,6509,979,6508,980,6507,982,6505,984,6499,988,6493,995,6490,998,6489,1001,6488,1002,6487,1003,6486,1005,6485,1006,6478,1016,6472,1025,6471,1026,6471,1027,6472,1039,6472,1051,6472,1059,6472,1068,6473,1069,6473,1071,6477,1103,6486,1133,6486,1135,6487,1136,6489,1143,6494,1150,6495,1152,6495,1154,6496,1158,6500,1161,6505,1166,6510,1176,6519,1192,6529,1206,6536,1216,6546,1222,6555,1228,6566,1231,6569,1232,6570,1228,6575,1218,6579,1210,6584,1200,6591,1194,6594,1193,6595,1190,6597,1186,6600,1182,6605,1174,6609,1165,6615,1151,6619,1135,6620,1131,6622,1129,6622,1128,6623,1127,6629,1122,6630,1112,6630,1111,6631,1109,6639,1091,6636,1074,6636,1072,6635,1071,6631,1060,6625,1056,6621,1052,6617,1047,6612,1040,6611,1032,6610,1030,6610,1028,6609,1024,6608,1021,6604,1007,6607,994,6607,992,6608,991,6614,982,6620,976,6621,975,6622,974,6625,965,6634,964,6637,963,6640,962,6645,961,6649,960,6650,960,6651,960,6667,959,6683,959,6684,959,6686,959,6692,960,6697,961,6709,963,6721,964,6732,964,6741,961,6742,960,6742,960,6743,957,6747,956,6748,956,6748,955,6750,952,6752,950,6755,949,6756,948,6758,947,6759,946,6765,940,6771,932,6772,931,6773,930,6778,925,6785,921,6787,921,6788,919,6793,912,6803,907,6804,907,6805,906,6806,905,6807,905,6810,903,6813,902,6815,901,6817,900,6818,900,6819,899,6824,897,6830,894,6839,890,6849,889,6855,888,6860,891,6870,897,6882,895,6882,894,6882,893,6882,891,6883,890,6884,888,6883,885,6883,881,6881,877,6878,871,6874,864,6868,856,6863,847,6858,838,6857,827,6855,814,6855,801,6855,796,6856,790,6856,789,6856,788,6857,786,6857,784,6860,779,6867,777,6868,777,6870,776,6876,775,6882,776,6900,779,6917,782,6934,785,6949,793,6958,798,6966,804,6977,813,6989,821,6994,824,6997,821,7007,814,7006,805,7005,793,6996,781,7006,779,7015,777,7021,775,7024,771,7024,771,7025,770,7026,769,7028,768,7034,763,7037,755,7038,754,7038,753,7040,750,7037,748,7033,744,7026,743,7023,743,7019,742,7014,741,7011,738,7008,736,7005,734,7004,734,7002,732,6997,728,6986,727,6983,726,6979,726,6974,727,6972,726,6970,726,6969,725,6967,726,6964,726,6957,727,6956,733,6955,734,6955,735,6951,738,6953,746,6954,752,6955,759,6954,759,6953,758,6951,754,6944,752,6937,750,6931,746,6927,744,6926,740,6926,739,6925,738,6922,735,6919,732,6913,725,6907,719,6900,712,6893,708,6882,702,6871,698,6870,697,6868,697,6867,697,6865,696,6862,696,6860,694,6851,690,6842,687,6842,687,6841,686,6828,683,6815,680,6814,680,6812,679,6807,678,6801,677,6800,677,6798,676,6794,676,6791,675,6785,672,6782,665,6780,658,6776,653,6775,652,6774,650,6774,647,6771,646,6760,643,6748,641,6726,638,6704,637,6686,636,6667,635,6652,635,6637,634,6635,634,6633,634,6621,633,6610,634,6604,634,6600,636,6593,641,6588,645,6583,649,6578,651,6577,652,6577,653,6573,656,6566,655,6561,654,6556,654,6552,653,6550,652,6549,651,6549,648,6549,648,6549,647,6549,647,6548,646,6547,645,6546,645,6543,645,6540,644,6537,646,6532,646,6530,646,6528,646,6521,649,6513,647,6499,644,6485,641,6474,638,6462,639,6447,640,6432,642,6418,644,6404,641,6396,640,6389,635,6389,634,6388,633,6381,627,6374,620,6369,616,6367,610,6366,609,6365,607,6365,607,6364,606,6361,605,6357,600,6356,599,6354,598,6352,596,6348,595,6346,593,6344,592,6335,589,6325,587,6325,587,6324,587,6310,586,6295,588,6279,589,6262,592,6250,595,6238,596,6231,597,6224,594,6216,591,6207,586,6190,577,6172,568,6166,565,6161,563,6151,559,6140,557,6139,556,6137,557,6133,557,6128,558,6127,558,6126,558,6116,558,6111,561,6107,559,6103,556,6101,555,6099,555,6098,555,6097,554,6092,554,6086,553,6084,553,6083,553,6080,552,6077,552,6076,552,6074,551,6068,550,6062,548,6052,548,6042,548,6040,548,6039,547,6037,546,6034,546,Q,6021,547,6010,543,Z]],label:"Asia",shortLabel:"AS",labelPosition:[539,129.7],labelAlignment:[CEN,MID]},AU:{outlines:[[M,6388,3582,Q,6387,3583,6387,3584,6386,3594,6391,3601,6391,3602,6392,3603,6392,3606,6394,3609,6394,3610,6395,3611,6396,3612,6396,3613,6399,3620,6398,3627,6398,3629,6399,3634,6399,3639,6400,3644,6400,3646,6400,3647,6401,3648,6402,3649,6409,3656,6419,3655,6423,3654,6426,3654,6429,3653,6431,3652,6437,3649,6440,3644,6440,3643,6441,3641,6446,3635,6451,3628,6453,3627,6454,3626,6459,3622,6464,3618,6466,3616,6467,3614,6467,3614,6467,3613,6468,3611,6469,3610,6470,3610,6470,3608,6471,3608,6471,3607,6471,3606,6472,3604,6473,3600,6472,3594,6471,3589,6468,3584,6468,3584,6467,3583,6464,3581,6459,3579,6456,3578,6451,3577,6450,3578,6448,3578,6447,3577,6446,3578,6445,3578,6444,3578,6432,3579,6420,3579,6419,3579,6419,3578,6414,3576,6409,3574,6409,3573,6407,3573,6406,3573,6405,3572,6404,3571,6401,3571,6401,3571,6400,3571,6397,3572,6396,3573,6394,3575,6393,3576,Q,6389,3579,6388,3582,Z],[M,6960,3600,Q,6948,3610,6934,3617,6925,3623,6916,3631,6906,3641,6897,3650,6887,3661,6876,3671,6876,3671,6870,3676,6866,3678,6860,3681,6839,3689,6828,3710,6827,3713,6827,3715,6827,3723,6835,3723,6837,3723,6838,3723,6855,3723,6862,3734,6865,3739,6870,3741,6876,3744,6876,3743,6877,3742,6879,3742,6881,3742,6882,3741,6895,3729,6908,3717,6917,3710,6922,3702,6927,3697,6930,3689,6936,3675,6947,3663,6949,3661,6952,3660,6963,3655,6972,3650,6983,3645,6985,3635,6986,3632,6989,3630,6990,3629,6991,3628,6996,3621,7006,3616,7011,3613,7014,3608,7017,3603,7018,3600,7019,3592,7012,3587,7008,3559,6984,3571,6975,3576,6969,3588,Q,6966,3596,6960,3600,Z],[M,7051,3379,Q,7046,3376,7043,3383,7043,3385,7043,3387,7044,3393,7047,3398,7051,3406,7053,3413,7055,3419,7056,3426,7056,3434,7060,3440,7063,3445,7070,3448,7072,3449,7073,3449,7074,3454,7074,3458,7076,3471,7072,3477,7071,3479,7071,3481,7070,3492,7067,3501,7064,3510,7057,3514,7051,3518,7042,3520,7035,3521,7028,3525,7024,3527,7026,3531,7027,3533,7026,3534,7025,3549,7035,3553,7037,3553,7039,3553,7047,3553,7048,3561,7048,3564,7047,3564,7040,3568,7036,3575,7036,3576,7035,3577,7035,3580,7037,3584,7040,3584,7042,3588,7047,3594,7055,3594,7061,3593,7061,3587,7062,3574,7076,3567,7083,3564,7090,3563,7099,3563,7095,3552,7093,3548,7094,3544,7097,3533,7105,3529,7110,3526,7119,3529,7119,3526,7120,3522,7121,3520,7121,3518,7124,3510,7126,3499,7126,3497,7125,3496,7124,3495,7122,3494,7118,3491,7108,3493,7100,3495,7101,3488,7103,3476,7100,3469,7099,3468,7098,3467,7095,3465,7092,3464,7090,3464,7087,3463,7085,3463,7083,3462,7081,3461,7079,3459,7076,3455,7076,3449,7076,3447,7076,3445,7076,3442,7077,3440,7082,3433,7081,3422,7079,3411,7072,3407,7070,3406,7068,3404,7065,3402,7063,3396,Q,7061,3386,7051,3379,Z],[M,6451,2806,Q,6448,2810,6449,2815,6450,2815,6450,2814,6450,2816,6450,2817,6450,2816,6449,2815,6448,2819,6446,2822,6444,2827,6443,2832,6441,2840,6439,2848,6437,2856,6432,2863,6430,2866,6429,2868,6427,2871,6424,2877,6424,2878,6423,2878,6421,2879,6422,2882,6424,2886,6425,2889,6426,2890,6426,2891,6428,2894,6427,2898,6427,2900,6428,2901,6429,2903,6430,2906,6431,2907,6431,2908,6433,2911,6434,2914,6438,2918,6434,2923,6433,2924,6433,2924,6433,2927,6431,2927,6431,2928,6430,2928,6430,2930,6429,2930,6428,2931,6427,2933,6421,2948,6412,2961,6411,2963,6409,2964,6408,2965,6407,2965,6405,2966,6402,2967,6402,2968,6401,2968,6399,2969,6396,2969,6394,2969,6392,2970,6391,2970,6390,2970,6389,2971,6387,2971,6386,2972,6384,2972,6383,2972,6381,2972,6381,2973,6380,2973,6379,2973,6377,2973,6377,2973,6376,2972,6374,2972,6371,2971,6371,2971,6370,2971,6369,2971,6368,2970,6366,2968,6363,2966,6356,2960,6349,2954,6341,2947,6334,2939,6326,2932,6316,2926,6306,2920,6298,2912,6294,2908,6293,2902,6291,2890,6290,2878,6289,2875,6291,2873,6299,2867,6306,2861,6313,2855,6314,2848,6315,2843,6310,2837,6306,2834,6301,2833,6290,2832,6279,2831,6264,2831,6250,2828,6244,2827,6237,2825,6236,2825,6235,2825,6234,2824,6232,2824,6229,2824,6226,2823,6222,2823,6219,2826,6213,2833,6206,2839,6200,2843,6192,2846,6191,2846,6190,2847,6189,2847,6188,2847,6186,2848,6184,2849,6183,2849,6181,2850,6181,2850,6180,2850,6176,2852,6173,2855,6164,2868,6157,2882,6157,2883,6156,2884,6156,2886,6156,2887,6156,2888,6155,2888,6155,2891,6153,2893,6153,2894,6153,2894,6152,2896,6152,2896,6149,2898,6147,2900,6147,2900,6146,2900,6139,2904,6132,2903,6123,2903,6115,2897,6109,2892,6103,2887,6095,2881,6086,2879,6079,2877,6072,2880,6063,2886,6053,2893,6051,2894,6049,2896,6048,2896,6047,2897,6046,2898,6044,2899,6040,2902,6038,2907,6038,2908,6038,2908,6035,2918,6032,2927,6032,2928,6031,2929,6024,2937,6020,2948,6019,2951,6016,2953,6014,2954,6012,2957,6011,2958,6009,2959,6008,2959,6006,2959,6002,2960,6e3,2958,5998,2957,5996,2954,5996,2953,5995,2952,5994,2948,5992,2944,5992,2946,5992,2946,5987,2952,5984,2958,5984,2959,5984,2959,5984,2961,5983,2962,5983,2963,5982,2963,5977,2973,5971,2983,5971,2985,5970,2986,5969,2987,5969,2988,5966,2998,5959,3008,5958,3010,5956,3011,5953,3016,5947,3019,5940,3023,5932,3027,5931,3028,5930,3028,5928,3031,5925,3031,5922,3032,5920,3034,5917,3036,5914,3035,5912,3036,5910,3036,5908,3037,5906,3037,5905,3038,5904,3038,5903,3038,5901,3039,5897,3040,5892,3041,5891,3042,5890,3042,5887,3044,5884,3045,5876,3050,5869,3053,5864,3055,5860,3055,5859,3056,5857,3055,5856,3055,5855,3055,5851,3054,5849,3054,5844,3054,5840,3053,5836,3052,5834,3054,5834,3054,5832,3055,5832,3055,5831,3056,5827,3059,5822,3063,5818,3067,5816,3071,5816,3072,5814,3073,5813,3074,5813,3074,5810,3079,5802,3080,5801,3080,5800,3080,5797,3081,5795,3081,5794,3081,5794,3081,5792,3082,5790,3081,5787,3081,5786,3083,5786,3083,5785,3084,5783,3084,5781,3086,5778,3089,5774,3092,5773,3093,5773,3093,5771,3104,5770,3114,5769,3126,5770,3138,5771,3145,5772,3152,5773,3154,5773,3156,5775,3158,5775,3159,5777,3163,5780,3164,5784,3167,5789,3171,5790,3172,5789,3174,5788,3176,5786,3177,5773,3183,5759,3186,5755,3187,5752,3185,5748,3183,5744,3179,5743,3183,5744,3184,5751,3193,5758,3201,5763,3205,5766,3209,5768,3211,5769,3214,5770,3215,5770,3216,5770,3225,5769,3234,5768,3240,5769,3246,5770,3248,5769,3251,5769,3254,5771,3255,5772,3256,5772,3257,5773,3259,5773,3261,5774,3262,5774,3263,5774,3265,5774,3266,5775,3268,5774,3269,5774,3272,5774,3274,5774,3275,5774,3276,5775,3278,5776,3280,5776,3281,5776,3282,5778,3292,5776,3302,5776,3303,5776,3304,5776,3305,5775,3306,5775,3307,5775,3308,5774,3310,5774,3311,5774,3312,5773,3313,5773,3315,5773,3316,5772,3317,5772,3319,5772,3326,5773,3332,5773,3333,5774,3334,5775,3336,5775,3339,5776,3340,5776,3341,5776,3342,5776,3343,5776,3346,5777,3349,5777,3350,5777,3351,5777,3354,5777,3356,5776,3357,5776,3358,5776,3359,5775,3359,5775,3361,5774,3362,5774,3365,5773,3367,5772,3368,5772,3369,5771,3375,5772,3381,5772,3383,5772,3384,5773,3388,5772,3392,5772,3398,5773,3402,5776,3406,5783,3406,5784,3406,5785,3407,5793,3410,5802,3416,5807,3421,5813,3422,5818,3423,5823,3420,5825,3420,5825,3418,5828,3416,5831,3413,5832,3413,5833,3412,5835,3411,5836,3408,5837,3405,5840,3404,5842,3403,5843,3402,5844,3402,5845,3401,5846,3401,5846,3401,5848,3401,5849,3400,5850,3400,5850,3400,5853,3398,5856,3398,5858,3398,5859,3397,5860,3395,5863,3395,5863,3395,5864,3395,5875,3388,5883,3381,5884,3380,5885,3379,5889,3377,5894,3376,5898,3376,5901,3378,5902,3378,5903,3378,5905,3378,5906,3379,5908,3379,5909,3380,5910,3380,5910,3380,5912,3381,5914,3382,5917,3383,5920,3383,5924,3384,5926,3382,5928,3382,5929,3381,5930,3381,5930,3381,5941,3381,5951,3381,5965,3381,5975,3375,5980,3371,5983,3364,5987,3355,5992,3348,5994,3346,5996,3344,5998,3343,6e3,3343,6008,3341,6015,3341,6029,3340,6043,3339,6057,3339,6070,3337,6077,3336,6084,3336,6103,3336,6123,3338,6128,3338,6134,3339,6145,3341,6156,3343,6169,3347,6181,3352,6185,3353,6188,3354,6188,3354,6188,3354,6189,3355,6189,3355,6190,3356,6190,3358,6198,3367,6205,3373,6207,3375,6208,3377,6208,3378,6209,3378,6213,3385,6216,3394,6216,3396,6217,3397,6223,3404,6229,3407,6232,3409,6236,3408,6237,3408,6237,3407,6241,3405,6243,3402,6243,3401,6244,3401,6250,3395,6254,3387,6256,3383,6257,3379,6258,3378,6259,3377,6259,3376,6260,3376,6264,3376,6268,3377,6269,3377,6269,3378,6270,3383,6269,3388,6269,3393,6268,3398,6268,3400,6268,3401,6267,3402,6267,3403,6266,3406,6264,3410,6264,3411,6264,3412,6263,3417,6267,3418,6269,3418,6270,3419,6275,3419,6280,3419,6284,3419,6285,3422,6286,3423,6286,3423,6288,3426,6290,3428,6291,3429,6291,3429,6291,3431,6291,3432,6291,3433,6290,3434,6288,3438,6289,3443,6289,3446,6289,3449,6289,3450,6289,3451,6290,3453,6290,3456,6291,3457,6291,3458,6291,3461,6292,3462,6294,3464,6297,3469,6297,3470,6297,3471,6298,3475,6300,3478,6301,3483,6304,3487,6305,3488,6306,3489,6307,3490,6307,3491,6309,3494,6315,3496,6328,3500,6341,3504,6343,3504,6344,3504,6349,3503,6353,3505,6354,3506,6355,3506,6359,3505,6363,3508,6364,3508,6365,3508,6367,3509,6369,3509,6370,3510,6371,3510,6374,3511,6375,3511,6379,3511,6384,3510,6391,3509,6398,3507,6399,3508,6400,3507,6407,3503,6414,3504,6421,3505,6427,3511,6428,3512,6429,3513,6429,3514,6430,3515,6431,3519,6436,3520,6437,3520,6437,3519,6440,3518,6442,3514,6442,3513,6443,3512,6443,3511,6443,3510,6445,3506,6446,3504,6447,3502,6448,3500,6448,3499,6449,3498,6449,3497,6450,3497,6454,3494,6458,3491,6459,3490,6460,3490,6464,3489,6470,3489,6471,3489,6471,3488,6473,3488,6475,3487,6476,3487,6476,3487,6478,3487,6479,3486,6480,3486,6481,3486,6483,3485,6485,3485,6499,3484,6511,3478,6524,3472,6532,3457,6532,3457,6532,3455,6531,3447,6527,3442,6524,3440,6526,3439,6527,3439,6527,3438,6529,3438,6530,3438,6537,3436,6541,3433,6545,3429,6547,3427,6548,3426,6549,3425,6549,3424,6550,3423,6555,3417,6560,3410,6562,3408,6565,3407,6566,3407,6566,3407,6570,3403,6574,3400,6577,3398,6579,3395,6579,3395,6580,3394,6585,3389,6589,3384,6592,3379,6596,3374,6605,3364,6613,3354,6621,3344,6625,3332,6629,3322,6630,3310,6631,3309,6631,3308,6631,3305,6632,3303,6632,3300,6632,3294,6632,3294,6632,3293,6635,3287,6642,3285,6644,3284,6646,3282,6648,3280,6647,3275,6646,3270,6644,3265,6643,3264,6642,3263,L,6642,3262,Q,6640,3262,6639,3260,6639,3259,6639,3258,6638,3251,6642,3247,6643,3246,6643,3246,6644,3245,6644,3244,6648,3238,6650,3233,6653,3225,6653,3217,6653,3201,6652,3184,6651,3182,6652,3179,6652,3178,6653,3177,6653,3176,6653,3176,6654,3175,6653,3173,6652,3171,6652,3168,6652,3166,6652,3164,6651,3160,6649,3157,6649,3156,6648,3153,6648,3152,6647,3151,6644,3150,6641,3148,6631,3145,6624,3139,6616,3133,6614,3123,6612,3113,6612,3102,6612,3099,6610,3096,6609,3094,6606,3092,6605,3090,6604,3089,6596,3085,6592,3077,6588,3069,6583,3062,6583,3061,6582,3060,6580,3060,6578,3059,6577,3056,6575,3053,6572,3047,6568,3040,6567,3038,6565,3035,6564,3033,6563,3030,6563,3029,6562,3028,6562,3027,6562,3027,6559,3021,6553,3018,6547,3015,6543,3010,6534,2997,6527,2983,6526,2982,6526,2980,6526,2980,6526,2979,6525,2978,6525,2977,6522,2973,6521,2970,6521,2969,6520,2968,6518,2964,6516,2960,6514,2954,6512,2947,6509,2934,6504,2921,6501,2912,6494,2904,6490,2899,6485,2894,6476,2884,6471,2871,6464,2853,6470,2837,6470,2836,6470,2834,6470,2834,6469,2833,6469,2831,6468,2829,6468,2829,6468,2828,6468,2827,6467,2826,6463,2820,6460,2814,6460,2814,6459,2813,6458,2811,6457,2808,6456,2806,6452,2806,Q,6451,2806,6451,2806,Z],[M,6248,2588,Q,6247,2588,6245,2589,6245,2589,6244,2589,6229,2594,6216,2606,6213,2608,6213,2611,6213,2617,6217,2620,6229,2628,6239,2636,6243,2640,6242,2648,6241,2659,6243,2669,6243,2674,6247,2680,6250,2684,6253,2689,6265,2681,6278,2674,6284,2671,6289,2673,6297,2676,6303,2681,6308,2685,6314,2688,6323,2691,6331,2695,6332,2695,6333,2695,6335,2697,6339,2697,6340,2698,6340,2698,6344,2700,6345,2706,6345,2707,6346,2708,6346,2709,6346,2709,6349,2711,6354,2713,6355,2714,6355,2714,6356,2717,6357,2719,6358,2721,6358,2722,6359,2724,6361,2727,6363,2729,6366,2730,6368,2731,6369,2731,6370,2731,6370,2731,6372,2732,6373,2732,6373,2733,6374,2733,6376,2734,6379,2733,L,6379,2733,Q,6380,2739,6380,2744,6380,2745,6379,2746,6377,2749,6377,2754,6378,2758,6376,2760,6375,2761,6374,2762,6370,2765,6371,2769,6376,2776,6385,2779,6391,2781,6399,2781,6401,2780,6402,2779,6403,2778,6404,2778,6405,2778,6405,2777,6408,2774,6411,2769,6412,2767,6412,2764,6412,2763,6412,2762,6413,2758,6412,2754,6412,2754,6412,2753,6411,2752,6411,2751,6411,2748,6408,2747,6407,2747,6406,2746,6404,2743,6401,2742,6407,2742,6413,2743,6414,2743,6415,2744,6416,2745,6416,2746,6416,2746,6416,2747,6419,2749,6419,2752,6420,2753,6420,2753,6422,2754,6422,2755,6423,2756,6424,2757,6425,2758,6425,2758,6427,2761,6430,2761,6437,2761,6444,2760,6445,2760,6447,2760,6448,2759,6449,2759,6456,2760,6462,2756,6472,2751,6481,2743,6482,2743,6483,2742,6487,2737,6490,2735,6491,2735,6491,2733,6492,2732,6494,2729,6498,2725,6503,2726,6507,2726,6509,2728,6510,2728,6511,2729,6515,2729,6519,2731,6522,2733,6525,2735,6527,2736,6528,2737,6529,2738,6530,2738,6528,2737,6528,2739,6528,2740,6529,2741,6530,2743,6533,2744,6539,2749,6545,2753,6546,2754,6546,2754,6548,2757,6551,2757,6552,2758,6553,2758,6558,2760,6563,2761,6563,2761,6564,2762,6567,2765,6569,2769,6572,2774,6576,2778,6577,2780,6579,2780,6581,2782,6584,2782,6585,2783,6586,2783,6591,2784,6596,2785,6597,2785,6598,2785,6601,2787,6605,2787,6609,2787,6612,2785,6613,2785,6613,2783,6613,2783,6613,2782,6613,2781,6613,2781,6612,2774,6608,2771,6606,2770,6605,2768,6605,2768,6604,2767,6602,2766,6601,2763,6600,2760,6599,2758,6587,2735,6579,2711,6576,2701,6573,2692,6569,2683,6562,2676,6555,2669,6546,2665,6544,2663,6540,2663,6540,2663,6539,2662,6538,2662,6536,2662,6530,2661,6528,2657,6526,2652,6525,2647,6524,2642,6522,2638,6519,2634,6515,2632,6514,2632,6513,2631,6512,2631,6511,2631,6508,2630,6506,2630,6505,2629,6504,2629,6500,2628,6500,2624,6500,2624,6499,2623,6495,2619,6489,2618,6482,2616,6475,2616,6469,2616,6464,2619,6462,2621,6462,2624,6453,2630,6447,2637,6444,2640,6441,2644,6438,2643,6436,2642,6429,2636,6423,2631,6422,2631,6420,2629,6416,2627,6410,2626,6409,2626,6408,2625,6407,2625,6405,2624,6396,2618,6385,2618,6382,2618,6378,2618,6374,2619,6373,2620,6373,2621,6371,2621,6367,2623,6363,2624,6361,2625,6360,2625,6359,2626,6358,2626,6353,2628,6346,2631,6346,2631,6345,2632,6343,2634,6341,2636,6339,2639,6335,2641,6331,2643,6326,2643,6318,2645,6317,2653,6317,2656,6315,2658,6314,2660,6314,2660,L,6313,2660,Q,6309,2661,6305,2660,6305,2660,6304,2660,6298,2658,6296,2655,6295,2654,6294,2653,6294,2652,6294,2651,6293,2650,6293,2648,6293,2646,6292,2644,6292,2643,6291,2642,6290,2638,6290,2633,6290,2633,6289,2632,6285,2625,6278,2620,6276,2619,6275,2616,6275,2615,6274,2614,6274,2613,6274,2612,6273,2611,6273,2609,6273,2607,6272,2604,6272,2603,6272,2602,6271,2596,6269,2592,6267,2587,6264,2585,6263,2585,6263,2585,6262,2585,6260,2585,6258,2586,6255,2586,Q,6251,2586,6248,2588,Z]],label:"Australia",shortLabel:"AU",labelPosition:[622.5,314.9],labelAlignment:[CEN,MID]},AF:{outlines:[[M,4457,2936,Q,4451,2935,4449,2938,4449,2940,4448,2941,4446,2943,4445,2944,4445,2946,4444,2947,4442,2949,4441,2952,4439,2954,4439,2957,4436,2968,4429,2977,4429,2978,4428,2978,4424,2985,4419,2988,4416,2991,4412,2994,4411,2995,4410,2995,4405,2997,4403,3001,4403,2997,4400,2996,4400,2996,4399,2996,4396,2997,4393,2999,4380,3006,4368,3015,4362,3019,4356,3024,4355,3025,4353,3026,4349,3027,4345,3028,4345,3029,4344,3029,4343,3029,4343,3030,4339,3035,4335,3041,4333,3044,4332,3048,4330,3058,4329,3069,4329,3083,4329,3096,4329,3097,4329,3098,4329,3101,4330,3104,4330,3106,4330,3107,4330,3109,4331,3110,4334,3118,4336,3127,4336,3128,4336,3129,4337,3137,4337,3144,4337,3147,4336,3149,4336,3151,4336,3152,4335,3153,4335,3154,4333,3159,4332,3163,4332,3165,4331,3166,4329,3169,4329,3174,4329,3176,4329,3177,4328,3180,4328,3184,4328,3186,4327,3188,4326,3193,4326,3198,4327,3209,4333,3214,4335,3216,4338,3221,4339,3221,4339,3222,4344,3233,4350,3243,4351,3245,4351,3246,4352,3252,4357,3253,4361,3255,4365,3255,4370,3255,4373,3253,4377,3251,4380,3249,4381,3249,4382,3248,4387,3246,4392,3244,4395,3243,4400,3240,4401,3239,4401,3238,4402,3237,4403,3236,4406,3230,4409,3226,4419,3211,4427,3193,4427,3192,4428,3191,4430,3189,4430,3184,4430,3184,4430,3183,4431,3179,4432,3176,4434,3171,4435,3167,4436,3159,4437,3151,4437,3150,4437,3149,4437,3147,4437,3146,4437,3145,4437,3143,4438,3141,4438,3139,4439,3138,4439,3137,4439,3136,4439,3134,4440,3130,4440,3124,4440,3123,4441,3122,4441,3121,4441,3121,4442,3117,4443,3113,4444,3108,4445,3103,4447,3096,4450,3090,4451,3089,4452,3087,4453,3083,4455,3082,4456,3081,4456,3081,4457,3080,4457,3079,4461,3073,4460,3063,4460,3058,4462,3053,4462,3053,4462,3052,4463,3051,4463,3049,4464,3049,4464,3048,4465,3047,4466,3046,4470,3042,4470,3037,4470,3036,4471,3034,4471,3033,4471,3032,4472,3031,4472,3029,4472,3029,4472,3028,4472,3023,4474,3018,4476,3016,4477,3014,4477,3013,4478,3013,4480,3012,4482,3011,4482,3010,4482,3009,4484,3003,4483,2996,4480,2984,4475,2972,4472,2963,4469,2953,4467,2947,4464,2943,4463,2942,4462,2939,4462,2938,4461,2937,4461,2937,4459,2937,Q,4458,2936,4457,2936,Z],[M,3801,1832,Q,3796,1841,3788,1847,3783,1851,3776,1851,3761,1852,3747,1849,3722,1843,3699,1831,3685,1823,3670,1816,3663,1814,3655,1812,3633,1806,3617,1792,3608,1784,3610,1770,3613,1742,3611,1714,3610,1711,3609,1708,3608,1707,3607,1705,3606,1704,3606,1703,3604,1700,3602,1697,3598,1687,3589,1682,3587,1681,3583,1681,3577,1682,3571,1683,3569,1683,3566,1684,3559,1685,3552,1687,3539,1691,3526,1692,3525,1692,3523,1693,3520,1694,3516,1693,3516,1693,3515,1693,3512,1692,3509,1692,3508,1692,3506,1691,3496,1690,3488,1693,3487,1693,3468,1696,3449,1699,3419,1693,3389,1688,3379,1688,3368,1688,3347,1697,L,3339,1704,Q,3330,1710,3320,1716,3314,1721,3310,1729,3279,1737,3264,1734,3255,1732,3249,1728,3249,1728,3249,1727,3244,1730,3237,1733,3236,1734,3235,1734,3230,1741,3224,1746,3223,1748,3222,1749,3219,1754,3217,1760,3216,1765,3213,1768,3205,1777,3195,1784,3190,1788,3184,1792,3180,1796,3178,1799,3176,1801,3175,1804,3174,1810,3170,1814,3168,1816,3167,1819,3165,1822,3164,1824,3161,1826,3161,1830,3159,1838,3156,1845,3156,1847,3156,1848,3155,1853,3154,1858,3151,1882,3143,1898,3142,1900,3142,1901,3137,1907,3133,1910,3130,1912,3128,1915,3127,1915,3126,1916,3122,1917,3120,1918,3112,1919,3107,1921,3094,1926,3085,1935,3084,1936,3083,1936,3075,1939,3073,1944,3061,1973,3055,1996,3054,1998,3054,1999,3052,2008,3049,2016,3048,2018,3047,2019,3042,2024,3042,2031,L,3042,2032,Q,3042,2033,3041,2034,3041,2038,3037,2042,3030,2047,3020,2049,3017,2050,3013,2052,3007,2054,3e3,2055,2994,2056,2996,2065,2997,2066,2997,2067,2997,2078,2998,2089,2998,2090,2998,2090,2998,2095,3e3,2099,3002,2105,3006,2112,3009,2116,3009,2122,3011,2136,3012,2150,3013,2168,3012,2186,3011,2195,3008,2204,3005,2217,3e3,2230,2998,2233,2997,2237,2993,2255,2993,2276,2993,2277,2993,2278,2994,2286,2992,2293,2992,2294,2992,2296,2992,2298,2993,2300,2993,2301,2994,2303,2995,2312,3002,2317,3004,2319,3005,2321,3008,2326,3012,2330,3017,2336,3020,2340,3024,2347,3029,2350,3030,2351,3030,2351,3033,2356,3040,2360,3046,2363,3050,2368,3054,2372,3057,2378,3066,2393,3073,2410,3074,2412,3076,2415,3078,2418,3079,2424,3080,2425,3080,2425,3092,2436,3106,2444,3114,2450,3121,2457,3121,2458,3122,2460,3122,2461,3123,2462,3128,2469,3129,2477,3129,2478,3129,2478,3131,2481,3132,2484,3146,2492,3162,2504,3179,2515,3198,2522,3202,2523,3207,2522,3210,2521,3212,2520,3213,2519,3214,2519,3219,2517,3223,2514,3228,2510,3232,2504,3232,2503,3233,2502,3237,2499,3244,2498,3257,2498,3268,2500,3270,2500,3271,2500,3273,2501,3274,2501,3283,2502,3286,2504,3291,2508,3297,2508,3303,2509,3308,2507,3317,2504,3327,2505,3335,2506,3343,2503,3358,2498,3372,2492,3391,2483,3409,2474,3422,2467,3434,2463,3438,2462,3442,2462,3442,2465,3440,2467,3442,2466,3444,2468,3445,2468,3446,2468,3458,2470,3467,2478,3472,2482,3477,2486,3478,2488,3481,2490,3488,2497,3494,2504,3502,2512,3510,2520,3511,2522,3512,2522,3519,2526,3526,2521,3540,2512,3550,2503,3553,2500,3562,2504,3574,2509,3576,2517,3579,2528,3585,2539,3587,2543,3587,2547,3587,2548,3587,2549,3587,2554,3587,2558,3587,2572,3587,2585,3587,2594,3587,2602,3587,2604,3586,2605,3586,2606,3585,2606,3585,2607,3584,2609,3584,2610,3584,2611,3584,2612,3584,2613,3585,2621,3583,2629,3583,2631,3582,2631,3580,2632,3579,2632,3578,2633,3577,2634,3568,2640,3564,2653,3567,2659,3570,2662,3571,2663,3572,2663,3577,2665,3579,2670,3585,2683,3592,2695,3604,2711,3619,2724,3627,2731,3636,2736,3646,2742,3650,2753,3657,2775,3662,2798,3666,2817,3665,2837,3664,2854,3668,2871,3668,2874,3668,2876,3669,2882,3670,2887,3670,2889,3671,2890,3672,2893,3672,2896,3675,2907,3675,2919,3675,2920,3675,2921,3675,2933,3667,2939,3667,2939,3666,2940,3662,2945,3658,2951,3653,2961,3648,2970,3648,2971,3647,2972,3646,2973,3644,2974,L,3644,2974,Q,3644,2977,3644,2979,3643,2981,3643,2983,3641,2996,3639,3009,3636,3034,3634,3060,3633,3070,3637,3078,3640,3088,3647,3096,3656,3108,3663,3116,3667,3120,3669,3125,3670,3127,3671,3128,3674,3132,3678,3135,3679,3136,3680,3137,3681,3138,3682,3140,3685,3144,3685,3150,3686,3155,3687,3159,3688,3160,3689,3161,L,3689,3161,Q,3688,3179,3694,3192,3695,3194,3696,3195,3696,3198,3698,3201,3698,3202,3698,3202,3699,3207,3700,3211,3701,3212,3701,3214,3701,3227,3701,3241,3701,3242,3701,3243,3699,3246,3700,3251,3701,3253,3701,3255,3702,3262,3704,3269,3707,3276,3706,3285,3706,3293,3709,3301,3713,3310,3717,3319,3722,3329,3727,3339,3740,3363,3750,3387,3754,3398,3754,3409,3754,3434,3756,3458,3756,3459,3757,3459,3776,3469,3794,3477,3796,3478,3797,3478,3803,3478,3810,3478,3825,3480,3840,3484,3843,3485,3845,3484,3851,3483,3857,3479,3858,3478,3859,3477,3861,3475,3865,3472,3880,3462,3897,3471,3898,3472,3901,3472,3905,3471,3908,3470,3909,3470,3910,3469,3918,3466,3927,3461,3928,3461,3928,3461,3939,3460,3949,3455,3951,3455,3952,3454,3954,3453,3958,3452,3962,3450,3967,3448,3976,3444,3985,3437,3995,3430,4002,3422,4022,3401,4039,3379,4046,3372,4053,3364,4065,3351,4077,3337,4079,3335,4081,3333,4081,3332,4081,3330,4082,3321,4084,3311,4088,3288,4094,3265,4096,3259,4099,3253,4103,3245,4106,3241,4107,3238,4111,3237,4129,3231,4138,3217,4139,3215,4139,3214,4145,3207,4150,3198,4149,3187,4147,3175,4147,3172,4148,3168,4150,3163,4151,3157,4152,3151,4153,3147,4154,3145,4153,3144,4150,3141,4148,3137,4147,3136,4146,3136,4142,3133,4138,3130,L,4132,3123,Q,4133,3116,4137,3111,4144,3101,4155,3094,4166,3087,4177,3079,4184,3073,4192,3068,4200,3062,4209,3056,4226,3046,4240,3032,4241,3031,4244,3032,4244,3032,4245,3032,4248,3026,4255,3021,4261,3017,4265,3013,4267,3010,4270,3008,4273,3004,4275,3e3,4276,2999,4275,2998,4275,2984,4273,2970,4270,2947,4270,2924,4270,2908,4268,2891,4268,2883,4265,2874,4257,2852,4260,2827,4260,2822,4258,2817,4258,2816,4257,2815,4253,2808,4251,2797,4250,2795,4250,2793,4249,2789,4247,2785,4246,2783,4245,2780,4243,2776,4242,2771,4241,2772,4240,2770,4239,2768,4238,2765,4238,2764,4238,2763,4237,2755,4236,2748,4236,2744,4240,2740,4243,2738,4246,2735,4247,2734,4247,2734,4247,2732,4248,2731,4249,2728,4251,2726,4253,2723,4255,2721,4258,2715,4260,2708,4262,2699,4264,2689,4264,2688,4264,2686,4265,2684,4266,2682,4269,2677,4271,2674,4274,2669,4280,2667,4286,2666,4290,2662,4291,2662,4292,2661,4296,2654,4302,2648,4307,2644,4310,2637,4316,2624,4325,2613,4327,2612,4328,2611,4329,2610,4329,2609,4331,2607,4333,2606,4339,2602,4344,2597,4354,2587,4366,2579,4377,2571,4384,2565,4387,2563,4389,2561,4395,2553,4401,2548,4402,2548,4403,2547,4405,2543,4409,2538,4415,2531,4419,2523,4425,2513,4433,2507,4437,2503,4441,2501,4445,2499,4448,2495,4451,2491,4454,2484,4454,2473,4457,2463,4463,2448,4466,2431,4471,2411,4476,2392,4478,2384,4486,2380,4494,2375,4499,2366,4500,2364,4501,2362,4503,2356,4505,2349,4510,2335,4512,2320,4504,2324,4495,2327,4485,2331,4473,2332,4458,2334,4442,2338,4432,2340,4422,2344,4406,2350,4390,2353,4377,2356,4364,2354,4359,2353,4355,2351,4353,2351,4352,2350,4345,2347,4336,2347,4336,2347,4335,2346,4333,2346,4333,2345,4326,2337,4319,2331,4319,2331,4318,2330,4317,2327,4315,2326,4310,2325,4309,2319,4309,2318,4309,2317,4313,2305,4311,2304,4309,2302,4312,2293,4315,2284,4314,2283,4312,2282,4311,2282,4302,2281,4298,2276,4297,2275,4296,2274,4294,2270,4288,2264,4278,2255,4269,2245,L,4249,2214,4233,2202,4212,2163,Q,4203,2147,4197,2133,4189,2113,4189,2110,4189,2110,4188,2109,4187,2103,4187,2096,L,4187,2096,Q,4186,2094,4185,2092,4184,2089,4183,2085,L,4183,2083,Q,4184,2082,4183,2078,4183,2077,4181,2073,4181,2073,4180,2072,4177,2067,4172,2066,4167,2064,4162,2061,4158,2059,4154,2055,4151,2051,4154,2045,4156,2041,4156,2035,4156,2033,4155,2032,4155,2027,4153,2023,4153,2023,4152,2022,4149,2022,4149,2019,4144,2002,4135,1985,4134,1984,4133,1982,4130,1975,4126,1971,4122,1968,4118,1964,4112,1959,4106,1954,L,4106,1954,4105,1953,Q,4106,1943,4110,1923,L,4126,1922,Q,4145,1985,4159,1984,4174,1983,4159,1951,4158,1949,4156,1948,4155,1947,4155,1946,4155,1941,4156,1937,4156,1937,4156,1936,4157,1934,4158,1933,4163,1928,4163,1917,4163,1916,4163,1914,4164,1907,4164,1899,4164,1896,4171,1875,4150,1893,4138,1892,L,4083,1880,Q,4083,1877,4081,1874,4078,1866,4073,1862,4031,1831,3978,1846,3966,1848,3962,1847,3960,1847,3958,1846,3951,1845,3943,1843,3929,1840,3915,1834,3891,1824,3866,1820,3863,1819,3860,1819,3857,1818,3853,1818,3851,1817,3849,1817,3840,1814,3830,1813,3823,1813,3816,1815,3814,1815,3809,1818,3808,1819,3808,1819,Q,3806,1825,3801,1832,Z]],label:"Africa",shortLabel:"AF",labelPosition:[359.4,213.3],labelAlignment:[CEN,MID]}}}];exports["default"]={extension:geodefinitions,name:"world",type:"maps"}}})}); \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/maps/readme.txt b/graphs/fusioncharts-suite-xt/js/maps/readme.txt new file mode 100755 index 0000000000000000000000000000000000000000..7af3bf248a511f904cc1ffdf32dffabef4f1cd96 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/maps/readme.txt @@ -0,0 +1 @@ +To download all the map definition files (1400+) for other countries/regions, please visit http://www.fusioncharts.com/download/maps/definition \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.candy.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.candy.js new file mode 100755 index 0000000000000000000000000000000000000000..1d6b1a9b57b07613dae023a5a32f807fa9f55ec7 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.candy.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&void 0!==module.exports?module.exports=e:e(FusionCharts)}(function(e){!function(e){var o={};function r(n){if(o[n])return o[n].exports;var a=o[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=o,r.d=function(e,o,n){r.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,o){if(1&o&&(e=r(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var a in e)r.d(n,a,function(o){return e[o]}.bind(null,a));return n},r.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(o,"a",o),o},r.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r.p="",r(r.s=5)}([function(e,o){e.exports=function(e){var o=[];return o.toString=function(){return this.map(function(o){var r=function(e,o){var r=e[1]||"",n=e[3];if(!n)return r;if(o&&"function"==typeof btoa){var a=function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}(n),l=n.sources.map(function(e){return"/*# sourceURL="+n.sourceRoot+e+" */"});return[r].concat(l).concat([a]).join("\n")}return[r].join("\n")}(o,e);return o[2]?"@media "+o[2]+"{"+r+"}":r}).join("")},o.i=function(e,r){"string"==typeof e&&(e=[[null,e,""]]);for(var n={},a=0;a<this.length;a++){var l=this[a][0];"number"==typeof l&&(n[l]=!0)}for(a=0;a<e.length;a++){var s=e[a];"number"==typeof s[0]&&n[s[0]]||(r&&!s[2]?s[2]=r:r&&(s[2]="("+s[2]+") and ("+r+")"),o.push(s))}},o}},function(e,o,r){var n={},a=function(e){var o;return function(){return void 0===o&&(o=e.apply(this,arguments)),o}}(function(){return window&&document&&document.all&&!window.atob}),l=function(e){var o={};return function(e){if("function"==typeof e)return e();if(void 0===o[e]){var r=function(e){return document.querySelector(e)}.call(this,e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}o[e]=r}return o[e]}}(),s=null,t=0,i=[],c=r(2);function h(e,o){for(var r=0;r<e.length;r++){var a=e[r],l=n[a.id];if(l){l.refs++;for(var s=0;s<l.parts.length;s++)l.parts[s](a.parts[s]);for(;s<a.parts.length;s++)l.parts.push(C(a.parts[s],o))}else{var t=[];for(s=0;s<a.parts.length;s++)t.push(C(a.parts[s],o));n[a.id]={id:a.id,refs:1,parts:t}}}}function d(e,o){for(var r=[],n={},a=0;a<e.length;a++){var l=e[a],s=o.base?l[0]+o.base:l[0],t={css:l[1],media:l[2],sourceMap:l[3]};n[s]?n[s].parts.push(t):r.push(n[s]={id:s,parts:[t]})}return r}function g(e,o){var r=l(e.insertInto);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var n=i[i.length-1];if("top"===e.insertAt)n?n.nextSibling?r.insertBefore(o,n.nextSibling):r.appendChild(o):r.insertBefore(o,r.firstChild),i.push(o);else if("bottom"===e.insertAt)r.appendChild(o);else{if("object"!=typeof e.insertAt||!e.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var a=l(e.insertInto+" "+e.insertAt.before);r.insertBefore(o,a)}}function B(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var o=i.indexOf(e);o>=0&&i.splice(o,1)}function u(e){var o=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),p(o,e.attrs),g(e,o),o}function p(e,o){Object.keys(o).forEach(function(r){e.setAttribute(r,o[r])})}function C(e,o){var r,n,a,l;if(o.transform&&e.css){if(!(l=o.transform(e.css)))return function(){};e.css=l}if(o.singleton){var i=t++;r=s||(s=u(o)),n=A.bind(null,r,i,!1),a=A.bind(null,r,i,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(r=function(e){var o=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",p(o,e.attrs),g(e,o),o}(o),n=function(e,o,r){var n=r.css,a=r.sourceMap,l=void 0===o.convertToAbsoluteUrls&&a;(o.convertToAbsoluteUrls||l)&&(n=c(n));a&&(n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */");var s=new Blob([n],{type:"text/css"}),t=e.href;e.href=URL.createObjectURL(s),t&&URL.revokeObjectURL(t)}.bind(null,r,o),a=function(){B(r),r.href&&URL.revokeObjectURL(r.href)}):(r=u(o),n=function(e,o){var r=o.css,n=o.media;n&&e.setAttribute("media",n);if(e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}.bind(null,r),a=function(){B(r)});return n(e),function(o){if(o){if(o.css===e.css&&o.media===e.media&&o.sourceMap===e.sourceMap)return;n(e=o)}else a()}}e.exports=function(e,o){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(o=o||{}).attrs="object"==typeof o.attrs?o.attrs:{},o.singleton||"boolean"==typeof o.singleton||(o.singleton=a()),o.insertInto||(o.insertInto="head"),o.insertAt||(o.insertAt="bottom");var r=d(e,o);return h(r,o),function(e){for(var a=[],l=0;l<r.length;l++){var s=r[l];(t=n[s.id]).refs--,a.push(t)}e&&h(d(e,o),o);for(l=0;l<a.length;l++){var t;if(0===(t=a[l]).refs){for(var i=0;i<t.parts.length;i++)t.parts[i]();delete n[t.id]}}}};var v=function(){var e=[];return function(o,r){return e[o]=r,e.filter(Boolean).join("\n")}}();function A(e,o,r,n){var a=r?"":n.css;if(e.styleSheet)e.styleSheet.cssText=v(o,a);else{var l=document.createTextNode(a),s=e.childNodes;s[o]&&e.removeChild(s[o]),s.length?e.insertBefore(l,s[o]):e.appendChild(l)}}},function(e,o){e.exports=function(e){var o="undefined"!=typeof window&&window.location;if(!o)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var r=o.protocol+"//"+o.host,n=r+o.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(e,o){var a,l=o.trim().replace(/^"(.*)"$/,function(e,o){return o}).replace(/^'(.*)'$/,function(e,o){return o});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(l)?e:(a=0===l.indexOf("//")?l:0===l.indexOf("/")?r+l:n+l.replace(/^\.\//,""),"url("+JSON.stringify(a)+")")})}},,,function(o,r,n){"use strict";var a=function(e){return e&&e.__esModule?e:{default:e}}(n(6));e.addDep(a.default)},function(e,o,r){"use strict";o.__esModule=!0,r(7);o.default={extension:{name:"candy",theme:{base:{chart:{usePlotGradientColor:"0",showPlotBorder:"0",paletteColors:"#36B5D8, #F0DC46, #F066AC, #6EC85A, #6E80CA, #E09653, #E1D7AD, #61C8C8, #EBE4F4, #E64141",showShadow:"0",showHoverEffect:"1",plotHoverEffect:"1",plotFillHoverAlpha:"80",columnHoverAlpha:"80",barHoverAlpha:"80",plotBorderHoverThickness:"0",showBorder:"0",showCanvasBorder:"0",bgAlpha:"100",canvasBgAlpha:"0",bgColor:"#262A33",captionPadding:"15",labelPadding:"6",yAxisValuesPadding:"6",xAxisNamePadding:"8",yAxisNamePadding:"8",showAlternateHGridColor:"0",showAlternateVGridColor:"0",divLineAlpha:"50",divLineColor:"#4B4B4B",divLineThickness:"0.5",vDivLineColor:"#4B4B4B",vDivLineThickness:"0.5",vDivLineAlpha:"50",transposeAxis:"1",crossLineColor:"#4B4B4B",crossLineAnimation:"1",crossLineAlpha:"60",drawCrossLineOnTop:"0",trendlineColor:"#F6F6F6",trendlineThickness:"1",vtrendlineColor:"#F6F6F6",vtrendlineThickness:"1",baseFont:"Fira Sans Light",outCnvBaseFont:"Fira Sans Light",baseFontSize:"13",outCnvBaseFontSize:"13",baseFontColor:"#999CA5",outCnvBaseFontColor:"#999CA5",labelFontColor:"#F6F6F6",captionFontBold:"0",captionFontSize:"18",captionFont:"Fira Sans Regular",captionFontColor:"#F6F6F6",subCaptionFontBold:"0",subCaptionFontSize:"15",subCaptionFont:"Fira Sans Light",subCaptionFontColor:"#999CA5",valueFontColor:"#F6F6F6",valueFontBold:"1",valueFontSize:"14",valueFont:"Fira Sans Regular",xAxisNameFontSize:"14",xAxisNameFontBold:"0",xAxisNameFont:"Fira Sans Regular",xAxisNameFontColor:"#999CA5",yAxisNameFontSize:"14",yAxisNameFontBold:"0",yAxisNameFont:"Fira Sans Regular",yAxisNameFontColor:"#999CA5",sYAxisNameFontSize:"14",sYAxisNameFontBold:"0",sYAxisNameFont:"Fira Sans Regular",sYAxisNameFontColor:"#999CA5",showValues:"0",toolTipColor:"#F6F6F6",toolTipBgColor:"#000000",toolTipBorderAlpha:"0",toolTipBgAlpha:"70",toolTipPadding:"7",toolTipBorderRadius:"2",drawCustomLegendIcon:"1",legendShadow:"0",legendBorderAlpha:"0",legendBorderThickness:"0",legendItemFont:"Fira Sans Regular",legendItemFontColor:"#999CA5",legendIconBorderThickness:"0",legendBgAlpha:"0",legendItemFontSize:"14",legendItemFontBold:"1",legendCaptionFont:"Fira Sans Regular",legendCaptionFontColor:"#F6F6F6",legendCaptionFontSize:"14",legendCaptionFontBold:"0",legendScrollBgColor:"#ABABAB"}},column2d:{chart:{showValues:"1",paletteColors:"#36B5D8"}},column3d:{chart:{paletteColors:"#36B5D8",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},line:{chart:{paletteColors:"#36B5D8",anchorBgColor:"#36B5D8",drawCrossLine:"1",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBgHoverColor:"#262A33",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},area2d:{chart:{drawAnchors:"0",paletteColors:"#36B5D8",drawCrossLine:"1",plotFillAlpha:"85"}},bar2d:{chart:{showValues:"1",paletteColors:"#36B5D8"}},bar3d:{chart:{paletteColors:"#36B5D8",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},pie2d:{chart:{showZeroPies:"1",use3DLighting:"0",showPercentValues:"1",showValues:"1",showPercentInTooltip:"0",useDataPlotColorForLabels:"0",showLegend:"1",legendIconSides:"2",labelFontBold:"0",labelFont:"Fira Sans Light",labelFontColor:"#999CA5",enableMultiSlicing:"0",isSmartLineSlanted:"0",smartLineColor:"#999CA5",smartLineThickness:"1",smartLabelClearance:"0"}},pie3d:{chart:{showZeroPies:"1",showPercentValues:"1",showValues:"1",showPercentInToolTip:"0",use3DLighting:"0",enableMultiSlicing:"0",pieYScale:"55",pieSliceDepth:"10",isSmartLineSlanted:"0",smartLineColor:"#999CA5",smartLineThickness:"1",smartLabelClearance:"0",showLegend:"1",legendIconSides:"2",labelFontBold:"0",labelFont:"Fira Sans Light",labelFontColor:"#999CA5"}},doughnut2d:{chart:{showZeroPies:"1",showPercentValues:"1",showValues:"1",showPercentInToolTip:"0",use3DLighting:"0",enableMultiSlicing:"0",isSmartLineSlanted:"0",smartLineColor:"#999CA5",smartLineThickness:"1",smartLabelClearance:"0",showLegend:"1",legendIconSides:"2",labelFontBold:"0",labelFont:"Fira Sans Light",labelFontColor:"#999CA5",centerLabelFont:"Fira Sans Light",centerLabelBold:"0"}},doughnut3d:{chart:{showZeroPies:"1",showValues:"1",showPercentValues:"1",showPercentInToolTip:"0",use3DLighting:"0",enableMultiSlicing:"0",pieYScale:"55",pieSliceDepth:"10",isSmartLineSlanted:"0",smartLineColor:"#999CA5",smartLineThickness:"1",smartLabelClearance:"0",showLegend:"1",legendIconSides:"2",labelFontBold:"0",labelFont:"Fira Sans Light",labelFontColor:"#999CA5"}},pareto2d:{chart:{paletteColors:"#36B5D8",lineColor:"#F0DC46",lineThickness:"3",drawAnchors:"1",anchorBgColor:"#F0DC46",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverColor:"#262A33",anchorBgHoverAlpha:"100"}},pareto3d:{chart:{paletteColors:"#36B5D8",lineColor:"#F0DC46",canvasBaseDepth:"2",canvasBaseColor:"#4D5058",lineThickness:"3",drawAnchors:"1",anchorBgColor:"#F0DC46",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverColor:"#262A33",anchorBgHoverAlpha:"100"}},mscolumn2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},mscolumn3d:{chart:{showLegend:"1",legendIconSides:"4",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},msline:{chart:{showLegend:"1",legendIconSides:"2",drawCrossLine:"1",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},msbar2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},msbar3d:{chart:{showLegend:"1",legendIconSides:"4",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},msarea:{chart:{showLegend:"1",legendIconSides:"4",plotFillAlpha:"70",drawCrossLine:"1"}},marimekko:{chart:{showLegend:"1",legendIconSides:"4",showSum:"0",valueBgColor:"#262A33",valueBgAlpha:"70",drawCrossLine:"1",showPlotBorder:"1",plotBorderColor:"#262A33",plotBorderThickness:"0.75",plotBorderAlpha:"100"}},zoomline:{chart:{paletteColors:"#36B5D8, #6EC85A, #6E80CA, #E09653, #E1D7AD, #61C8C8, #EBE4F4, #E64141, #F0DC46, #F066AC",crossLineValueFont:"Fira Sans Regular",lineThickness:"2.5",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10",crossLineThickness:"1",crossLineColor:"#4B4B4B",crossLineAlpha:"100",showLegend:"1",legendIconSides:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},zoomlinedy:{chart:{paletteColors:"#36B5D8, #6EC85A, #6E80CA, #E09653, #E1D7AD, #61C8C8, #EBE4F4, #E64141, #F0DC46, #F066AC",crossLineValueFont:"Fira Sans Regular",lineThickness:"2.5",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10",crossLineThickness:"1",crossLineColor:"#4B4B4B",crossLineAlpha:"100",showLegend:"1",legendIconSides:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},stackedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4",drawCrossLine:"1"}},stackedcolumn3d:{chart:{showLegend:"1",legendIconSides:"4",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},stackedbar2d:{chart:{showLegend:"1",legendIconSides:"4",drawCrossLine:"1"}},stackedbar3d:{chart:{showLegend:"1",legendIconSides:"4",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},stackedarea2d:{chart:{showLegend:"1",legendIconSides:"4",plotFillAlpha:"85",drawCrossLine:"1"}},msstackedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}},mscombi2d:{chart:{lineThickness:"3",showLegend:"1",drawCrossLine:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},mscombi3d:{chart:{lineThickness:"3",showLegend:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},mscolumnline3d:{chart:{lineThickness:"3",showLegend:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},stackedcolumn2dline:{chart:{lineThickness:"3",showLegend:"1",drawCrossLine:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},stackedcolumn3dline:{chart:{lineThickness:"3",showLegend:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},mscombidy2d:{chart:{lineThickness:"3",showLegend:"1",drawCrossLine:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},mscolumn3dlinedy:{chart:{lineThickness:"3",showLegend:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},stackedcolumn3dlinedy:{chart:{lineThickness:"3",showLegend:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",canvasBaseDepth:"2",canvasBaseColor:"#4D5058"}},msstackedcolumn2dlinedy:{chart:{lineThickness:"3",showLegend:"1",drawCrossLine:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},scatter:{chart:{showLegend:"1",drawCustomLegendIcon:"0",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",outCnvBaseFontColor:"#F6F6F6",divLineAlpha:"100",vDivLineAlpha:"100"},dataset:[{regressionLineColor:"#F6F6F6",regressionLineThickness:"1"}]},bubble:{chart:{use3DLighting:"0",showLegend:"1",legendIconSides:"2",plotFillAlpha:"50",outCnvBaseFontColor:"#F6F6F6",divLineAlpha:"100",vDivLineAlpha:"100",quadrantLineThickness:"2",quadrantLineColor:"#4B4B4B",quadrantLineAlpha:"100",setAdaptiveYMin:"1",setAdaptiveXMin:"1"}},zoomscatter:{chart:{showLegend:"1",legendIconBorderThickness:"2",outCnvBaseFontColor:"#F6F6F6",divLineAlpha:"100",vDivLineAlpha:"100"},dataset:[{drawLine:"0",anchorRadius:"6",anchorBorderThickness:"0.1",anchorAlpha:"50",hoverColor:"#999CA5",regressionLineColor:"#F6F6F6",regressionLineAlpha:"100",regressionLineThickness:"1"}]},scrollcolumn2d:{chart:{showLegend:"1",legendIconSides:"4",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10"}},scrollline2d:{chart:{showLegend:"1",legendIconSides:"2",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},scrollarea2d:{chart:{showLegend:"1",legendIconSides:"4",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10",plotFillAlpha:"70"}},scrollstackedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10"}},scrollcombi2d:{chart:{lineThickness:"3",showLegend:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10"}},scrollcombidy2d:{chart:{lineThickness:"3",showLegend:"1",drawCrossLine:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#ABABAB",scrollheight:"10"}},angulargauge:{chart:{setAdaptiveMin:"1",adjustTM:"1",tickvaluedistance:"10",placeTicksInside:"0",autoAlignTickValues:"1",showGaugeBorder:"0",minortmnumber:"1",minortmHeight:"5",majorTMHeight:"10",majortmthickness:"1.5",minortmthickness:"1.5",minorTMAlpha:"50",gaugeFillMix:"{light-0}",pivotbgcolor:"#000000",pivotfillmix:"0",showpivotborder:"1",pivotBorderColor:"#F6F6F6",showValue:"0",valueBelowPivot:"1"},dials:{dial:[{bgColor:"#F6F6F6",borderColor:"#262A33",borderThickness:"0.5"}]}},bulb:{chart:{is3D:"0",placeValuesInside:"1",valueFontColor:"#262A33",valueFontBold:"1",valueFontSize:"14",valueFont:"Fira Sans Regular"}},cylinder:{chart:{cylRadius:"50",cylYScale:"13",cylFillColor:"#36B5D8",adjustTM:"1",majorTMColor:"#F6F6F6",minortmnumber:"1",minortmHeight:"5",majorTMHeight:"10",minorTMAlpha:"50",setAdaptiveMin:"1",tickValueDistance:"5"}},hled:{chart:{majorTMColor:"#F6F6F6",minortmnumber:"1",minortmHeight:"5",majorTMHeight:"10",minorTMAlpha:"50",setAdaptiveMin:"1",tickValueDistance:"5",adjustTM:"1",showValue:"0"}},hlineargauge:{chart:{showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",majorTMColor:"#F6F6F6",minortmnumber:"1",minortmHeight:"5",minorTMAlpha:"50",majorTMHeight:"10",tickValueDistance:"5",gaugeFillMix:"{light-0}",baseFontColor:"#262A33",pointerOnTop:"0",valueAbovePointer:"1",pointerRadius:"10",pointerBgAlpha:"100",pointerBgColor:"#F6F6F6",pointerBorderColor:"#262A33",valueBgColor:"#262A33",valueBgAlpha:"70",showPointerShadow:"1"}},thermometer:{chart:{use3DLighting:"0",manageResize:"1",autoScale:"1",showGaugeBorder:"1",placeTicksInside:"0",autoAlignTickValues:"1",majorTMColor:"#F6F6F6",setAdaptiveMin:"1",minortmnumber:"1",minortmHeight:"5",minorTMAlpha:"50",majorTMHeight:"10",tickValueDistance:"5",thmFillColor:"#36B5D8",adjustTM:"1",gaugeBorderColor:"#999CA5",gaugeBorderAlpha:"80",gaugeBorderThickness:"1"}},vled:{chart:{adjustTM:"1",majorTMColor:"#F6F6F6",minortmnumber:"1",setAdaptiveMin:"1",minortmHeight:"5",majorTMHeight:"10",minorTMAlpha:"50",tickValueDistance:"5",showValue:"0"}},realtimearea:{chart:{showLegend:"1",legendIconSides:"4",plotFillAlpha:"70",showRealTimeValue:"0"}},realtimecolumn:{chart:{showLegend:"1",legendIconSides:"4",showRealTimeValue:"0"}},realtimeline:{chart:{showLegend:"1",legendIconSides:"2",setAdaptiveYMin:"1",lineThickness:"2.5",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",showRealTimeValue:"0"}},realtimestackedarea:{chart:{showLegend:"1",legendIconSides:"4",plotFillAlpha:"85",showRealTimeValue:"0"}},realtimestackedcolumn:{chart:{showLegend:"1",legendIconSides:"4",showRealTimeValue:"0"}},realtimelinedy:{chart:{showLegend:"1",legendIconSides:"2",setAdaptiveYMin:"1",lineThickness:"2.5",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",showRealTimeValue:"0"}},sparkline:{chart:{plotFillColor:"#36B5D8",anchorRadius:"4",highColor:"#6EC85A",lowColor:"#E64141",showOpenAnchor:"0",showCloseAnchor:"0",showOpenValue:"0",showCloseValue:"0",showHighLowValue:"0",periodColor:"#4B4B4B",periodAlpha:"50",chartLeftMargin:"15",chartRightMargin:"10"}},sparkcolumn:{chart:{plotFillColor:"#36B5D8",highColor:"#6EC85A",lowColor:"#E64141",periodColor:"#4B4B4B",periodAlpha:"50",chartLeftMargin:"15",chartRightMargin:"10"}},sparkwinloss:{chart:{winColor:"#6EC85A",lossColor:"#E64141",drawColor:"F0DC46",scoreLessColor:"#36B5D8",periodColor:"#4B4B4B",periodAlpha:"50",chartLeftMargin:"15",chartRightMargin:"10"}},hbullet:{chart:{adjustTM:"1",majorTMColor:"#F6F6F6",minortmnumber:"1",setAdaptiveMin:"1",minortmHeight:"5",majorTMHeight:"10",minorTMAlpha:"50",tickValueDistance:"5",showValue:"0",colorRangeFillMix:"{light+0}",targetCapStyle:"round",plotFillColor:"#3A3A3A",targetColor:"#3A3A3A"}},vbullet:{chart:{adjustTM:"1",majorTMColor:"#F6F6F6",minortmnumber:"1",setAdaptiveMin:"1",minortmHeight:"5",majorTMHeight:"10",minorTMAlpha:"50",tickValueDistance:"5",showValue:"0",colorRangeFillMix:"{light+0}",targetCapStyle:"round",plotFillColor:"#3A3A3A",targetColor:"#3A3A3A"}},funnel:{chart:{is2D:"1",isSmartLineSlanted:"0",smartLineColor:"#999CA5",smartLineThickness:"1",smartLabelClearance:"0",streamlinedData:"1",useSameSlantAngle:"1",alignCaptionWithCanvas:"1",showPlotBorder:"1",plotBorderColor:"#262A33",plotBorderThickness:"1",plotBorderAlpha:"100",labelFontColor:"#999CA5"}},pyramid:{chart:{is2D:"1",isSmartLineSlanted:"0",smartLineColor:"#999CA5",smartLineThickness:"1",smartLabelClearance:"0",streamlinedData:"1",useSameSlantAngle:"1",alignCaptionWithCanvas:"1",use3dlighting:"0",showPlotBorder:"1",plotBorderColor:"#262A33",plotBorderThickness:"1",plotBorderAlpha:"100",labelFontColor:"#999CA5"}},gantt:{chart:{taskBarFillMix:"{light+0}",gridBorderAlpha:"100",gridBorderColor:"#4B4B4B",ganttLineColor:"#4B4B4B",ganttLineAlpha:"100",taskBarRoundRadius:"3",flatScrollBars:"1",showHoverEffect:"1",plotHoverEffect:"1",plotFillHoverAlpha:"50",showCategoryHoverBand:"1",categoryHoverBandAlpha:"50",showGanttPaneVerticalHoverBand:"1",showProcessHoverBand:"1",processHoverBandAlpha:"50",showGanttPaneHorizontalHoverBand:"1",showConnectorHoverEffect:"1",connectorHoverAlpha:"50",showTaskHoverEffect:"1",taskHoverFillAlpha:"50",slackHoverFillAlpha:"50",scrollShowButtons:"0",drawCustomLegendIcon:"0",legendShadow:"0",legendBorderAlpha:"0",legendBorderThickness:"0",legendIconBorderThickness:"0",legendBgAlpha:"0"},categories:[{fontcolor:"#F6F6F6",fontsize:"14",bgcolor:"#888A8F",hoverBandAlpha:"45",showGanttPaneHoverBand:"1",bgAlpha:"50",headerbgAlpha:"50",showHoverBand:"1",category:[{fontcolor:"#F6F6F6",fontsize:"14",bgAlpha:"50",bgcolor:"#888A8F"}]}],tasks:{showBorder:"0",showHoverEffect:"0",task:[{color:"#36B5D8"}]},processes:{fontcolor:"#F6F6F6",isanimated:"0",bgcolor:"#888A8F",headerbgAlpha:"50",bgAlpha:"50",headerbgcolor:"#888A8F",headerfontcolor:"#F6F6F6",showGanttPaneHoverBand:"1",showHoverBand:"1"},text:{fontcolor:"#F6F6F6",bgcolor:"#888A8F",bgAlpha:"50"},datatable:{fontcolor:"#F6F6F6",bgcolor:"#888A8F",bgAlpha:"50",datacolumn:[{bgcolor:"#888A8F",bgAlpha:"50"}]},connectors:[{hoverThickness:"2",connector:[{color:"#E09653"}]}],milestones:{milestone:[{color:"#6EC85A"}]}},logmscolumn2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},logmsline:{chart:{showLegend:"1",legendIconSides:"2",drawCrossLine:"1",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},spline:{chart:{paletteColors:"#36B5D8",anchorBgColor:"#36B5D8",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBgHoverColor:"#262A33",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},splinearea:{chart:{drawAnchors:"0",paletteColors:"#36B5D8",plotFillAlpha:"85"}},msspline:{chart:{showLegend:"1",legendIconSides:"2",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},mssplinearea:{chart:{showLegend:"1",legendIconSides:"4",plotFillAlpha:"70"}},errorbar2d:{chart:{showLegend:"1",legendIconSides:"4",errorBarColor:"#999CA5",errorBarThickness:"1"}},errorline:{chart:{showLegend:"1",legendIconSides:"2",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",errorBarColor:"#999CA5",errorBarThickness:"1"}},errorscatter:{chart:{showLegend:"1",drawCustomLegendIcon:"0",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",outCnvBaseFontColor:"#F6F6F6",divLineAlpha:"100",vDivLineAlpha:"100",errorBarColor:"#999CA5",errorBarThickness:"1"},dataset:[{regressionLineColor:"#F6F6F6",regressionLineThickness:"1"}]},inversemsarea:{chart:{showLegend:"1",legendIconSides:"2",plotFillAlpha:"70",drawCrossLine:"1"}},inversemscolumn2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},inversemsline:{chart:{showLegend:"1",legendIconSides:"2",drawCrossLine:"1",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"}},dragcolumn2d:{chart:{showLegend:"1",legendIconSides:"4"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{allowDrag:"1",data:[{alpha:"70"}]}]},dragline:{chart:{showLegend:"1",legendIconSides:"2",drawCrossLine:"1",setAdaptiveYMin:"1",lineThickness:"2",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{allowDrag:"1",data:[{alpha:"70",dashed:"1"}]}]},dragarea:{chart:{showLegend:"1",legendIconSides:"2",plotFillAlpha:"70",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{allowDrag:"1"}]},treemap:{chart:{parentLabelLineHeight:"13",baseFontSize:"11",labelFontSize:"11",showParent:"1",showNavigationBar:"0",plotBorderThickness:"0.75",plotBorderColor:"#4B4B4B",labelGlow:"0",btnBackChartTooltext:"Back",btnResetChartTooltext:"Home",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",toolbarButtonScale:"1.55",legendPointerColor:"#262A33",legendpointerbordercolor:"#F6F6F6",legendPointerAlpha:"80",defaultParentBgColor:"#36B5D8",fontcolor:"#F6F6F6"},data:[{fillColor:"#4A5264",data:[{fillColor:"#4A5264"}]}]},radar:{chart:{showLegend:"1",legendIconSides:"2",lineThickness:"2",drawAnchors:"0",legendIconBorderThickness:"2",plotFillAlpha:"45",anchorBgAlpha:"45",radarBorderColor:"#4B4B4B",radarBorderThickness:"1.5",radarSpikeColor:"#4B4B4B",radarSpikeThickness:"1",radarSpikeAlpha:"50",radarFillColor:"#262A33",outCnvBaseFontColor:"#F6F6F6"}},heatmap:{chart:{labelFontSize:"13",showPlotBorder:"1",plotBorderAlpha:"100",plotBorderThickness:"0.75",plotBorderColor:"#979797",tlFontColor:"#F6F6F6",tlFont:"Fira Sans Light",tlFontSize:"11",trFontColor:"#F6F6F6",trFont:"Fira Sans Light",trFontSize:"11",blFontColor:"#F6F6F6",blFont:"Fira Sans Light",blFontSize:"11",brFontColor:"#F6F6F6",brFont:"Fira Sans Light",brFontSize:"11",captionPadding:"20",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",outCnvBaseFontColor:"#F6F6F6",legendPointerColor:"#262A33",legendpointerbordercolor:"#F6F6F6",legendPointerAlpha:"80"},colorrange:{gradient:"1",code:"#36B5D8"}},boxandwhisker2d:{chart:{paletteColors:"#36B5D8, #8BD4E9, #F0DC46, #F9F1B4, #F066AC, #F8B3D6",drawCustomLegendIcon:"0",showLegend:"1",showDetailedLegend:"1",showAllOutliers:"1",outlierIconShape:"polygon",outlierIconRadius:"6",outlierIconSides:"2",outlierIconColor:"#F6F6F6",outlierIconAlpha:"70",upperWhiskerColor:"#999CA5",upperWhiskerAlpha:"100",upperWhiskerThickness:"1",lowerWhiskerColor:"#999CA5",lowerWhiskerAlpha:"100",lowerWhiskerThickness:"1",medianColor:"#262A33",medianThickness:"1.3",medianAlpha:"100",meanIconShape:"polygon",meanIconSides:"2",meanIconColor:"#F6F6F6",meanIconAlpha:"70",meanIconRadius:"3",SDIconColor:"#F6F6F6",SDIconAlpha:"80",MDIconColor:"#F6F6F6",MDIconAlpha:"80",QDIconColor:"#F6F6F6",QSDIconAlpha:"80",connectNullData:"1"}},candlestick:{chart:{showShadow:"0",showVPlotBorder:"0",bearFillColor:"#E64141",bullFillColor:"#6EC85A",plotLineThickness:"0.5",plotLineAlpha:"100",divLineDashed:"0",showDetailedLegend:"1",legendIconSides:"2",showHoverEffect:"1",plotHoverEffect:"1",showVolumeChart:"0",trendLineColor:"#F6F6F6",trendLineThickness:"1",trendValueAlpha:"100",rollOverBandAlpha:"60",rollOverBandColor:"#4B4B4B",trendlineAlpha:"100",showTrendlinesOnTop:"1"},categories:[{verticalLineColor:"#4B4B4B",verticalLineThickness:"1",verticalLineAlpha:"50"}],trendlines:[{line:[{color:"#F6F6F6"}]}],vTRendlines:[{line:[{color:"#F6F6F6"}]}]},dragnode:{chart:{use3DLighting:"0",plotBorderThickness:"0",plotBorderAlpha:"0",showDetailedLegend:"1",divLineAlpha:"0"},dataset:[{color:"#36B5D8"}],connectors:[{connector:[{color:"#F0DC46",strength:"1"}]}]},msstepline:{chart:{drawAnchors:"0",lineThickness:"2",showValues:"0",legendIconSides:"2",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",setAdaptiveYMin:"1"}},multiaxisline:{chart:{showValues:"0",showLegend:"1",legendIconSides:"2",lineThickness:"2",connectNullData:"1",divLineDashed:"0",divLineColor:"#4B4B4B",divLineAlpha:"50",vDivLineColor:"#4B4B4B",vdivLineAlpha:"50",vDivLineDashed:"0",yAxisNameFontSize:"12",setAdaptiveYMin:"1",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",checkBoxColor:"#262A33"},axis:[{divLineColor:"#4B4B4B",divLineAlpha:"50",setAdaptiveYMin:"1",divLineDashed:"0"}]},multilevelpie:{chart:{valueFontColor:"#F6F6F6",valueFontBold:"1",valueFontSize:"12.5",valueFont:"Fira Sans Light",useHoverColor:"1",hoverFillColor:"#4B4B4B",showHoverEffect:"1",plotHoverEffect:"1"},category:[{color:"#262A33",category:[{color:"#36B5D8",category:[{color:"#36B5D8"}]}]}]},selectscatter:{chart:{showLegend:"1",drawCustomLegendIcon:"0",drawAnchors:"1",legendIconBorderThickness:"2",anchorBgColor:"#262A33",anchorRadius:"4",anchorHoverRadius:"7",anchorBorderHoverThickness:"1",anchorBorderHoverColor:"#ECEBE4",anchorBgHoverAlpha:"100",outCnvBaseFontColor:"#F6F6F6",divLineAlpha:"100",vDivLineAlpha:"100"}},waterfall2d:{chart:{showValues:"0",positiveColor:"#6EC85A",negativeColor:"#E64141",showConnectors:"1",connectorDashed:"1",connectorThickness:"1",connectorColor:"#F6F6F6",connectorAlpha:"40"}},kagi:{chart:{rallyThickness:"2",declineThickness:"2",drawAnchors:"0",rallyColor:"#6EC85A",declineColor:"#E64141",showValues:"0"}},geo:{chart:{showLabels:"0",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",fillColor:"#36B5D8",showEntityHoverEffect:"1",entityFillHoverAlpha:"100",connectorHoverAlpha:"70",markerBorderHoverAlpha:"70",showBorder:"1",borderColor:"#979797",borderThickness:"0.5",nullEntityColor:"#B9B9B9",nullEntityAlpha:"30",entityFillHoverColor:"#36B5D8",legendPointerColor:"#262A33",legendpointerbordercolor:"#F6F6F6",legendPointerAlpha:"80"},colorrange:{gradient:"1",code:"#36B5D8"}},overlappedcolumn2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},overlappedbar2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}}}},name:"candyTheme",type:"theme"}},function(e,o,r){var n=r(8);"string"==typeof n&&(n=[[e.i,n,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};r(1)(n,a);n.locals&&(e.exports=n.locals)},function(e,o,r){(e.exports=r(0)(!1)).push([e.i,"@font-face {\n font-family: 'Fira Sans Light';\n font-style: normal;\n font-weight: 300;\n src: local('Fira Sans Light'), local('FiraSans-Light'), url(https://fonts.gstatic.com/s/firasans/v8/va9B4kDNxMZdWfMOD5VnPKreRhf6Xl7Glw.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: 'Fira Sans Regular';\n font-style: normal;\n font-weight: 400;\n src: local('Fira Sans Regular'), local('FiraSans-Regular'), url(https://fonts.gstatic.com/s/firasans/v8/va9E4kDNxMZdWfMOD5Vvl4jLazX3dA.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}",""])}])}); +//# sourceMappingURL=fusioncharts.theme.candy.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.carbon.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.carbon.js new file mode 100755 index 0000000000000000000000000000000000000000..eaa42e173a1e0681e2db85d5979c217a10e05246 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.carbon.js @@ -0,0 +1,10 @@ +!function(e){"object"==typeof module&&void 0!==module.exports?module.exports=e:e(FusionCharts)}(function(e){!function(e){var o={};function l(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=o,l.d=function(e,o,a){l.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:a})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,o){if(1&o&&(e=l(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(l.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)l.d(a,r,function(o){return e[o]}.bind(null,r));return a},l.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(o,"a",o),o},l.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},l.p="",l(l.s=9)}({10:function(e,o,l){"use strict";o.__esModule=!0; +/**! + * @license Carbon Theme v//? write(JSON.parse(require('fs').readFileSync('./package.json')).version); + * FusionCharts JavaScript Library + * + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + */ +var a={name:"carbon",theme:{base:{chart:{paletteColors:"#444444,#666666,#888888,#aaaaaa,#cccccc,#555555,#777777,#999999,#bbbbbb,#dddddd",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0",toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10",showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#444444",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#444444",entityFillhoverAlpha:"80",connectorColor:"#cccccc",connectorThickness:"1.5",markerFillHoverAlpha:"90"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},doughnut2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",centerLabelFontSize:"12",centerLabelBold:"1",centerLabelFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},line:{chart:{lineThickness:"2"}},spline:{chart:{lineThickness:"2"}},column2d:{chart:{paletteColors:"#444444",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar2d:{chart:{paletteColors:"#444444",valueFontColor:"#ffffff",placeValuesInside:"1"}},column3d:{chart:{paletteColors:"#444444",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar3d:{chart:{paletteColors:"#444444",valueFontColor:"#ffffff",placeValuesInside:"1"}},area2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},splinearea:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},mscolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},mscolumn3d:{chart:{showValues:"0"}},msstackedcolumn2dlinedy:{chart:{showValues:"0"}},stackedcolumn2d:{chart:{showValues:"0"}},stackedarea2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},stackedbar2d:{chart:{showValues:"0"}},msstackedcolumn2d:{chart:{showValues:"0"}},mscombi3d:{chart:{showValues:"0"}},mscombi2d:{chart:{showValues:"0"}},mscolumn3dlinedy:{chart:{showValues:"0"}},stackedcolumn3dline:{chart:{showValues:"0"}},stackedcolumn2dline:{chart:{showValues:"0"}},scrollstackedcolumn2d:{chart:{valueFontColor:"#ffffff"}},scrollcombi2d:{chart:{showValues:"0"}},scrollcombidy2d:{chart:{showValues:"0"}},logstackedcolumn2d:{chart:{showValues:"0"}},logmsline:{chart:{showValues:"0"}},logmscolumn2d:{chart:{showValues:"0"}},msstackedcombidy2d:{chart:{showValues:"0"}},scrollcolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},pareto2d:{chart:{paletteColors:"#444444",showValues:"0"}},pareto3d:{chart:{paletteColors:"#444444",showValues:"0"}},angulargauge:{chart:{pivotFillColor:"#ffffff",pivotRadius:"4",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"12",majorTMThickness:"2",majorTMColor:"#000000",minorTMNumber:"0",tickValueDistance:"10",valueFontSize:"24",valueFontBold:"1",gaugeInnerRadius:"50%",showHoverEffect:"0"},dials:{dial:[{baseWidth:"10",rearExtension:"7",bgColor:"#000000",bgAlpha:"100",borderColor:"#666666",bgHoverAlpha:"20"}]}},hlineargauge:{chart:{pointerFillColor:"#ffffff",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"3",majorTMColor:"#000000",minorTMNumber:"0",valueFontSize:"18",valueFontBold:"1"},pointers:{pointer:[{}]}},bubble:{chart:{use3dlighting:"0",showplotborder:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},scatter:{chart:{use3dlighting:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},boxandwhisker2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},thermometer:{chart:{gaugeFillColor:"#444444"}},cylinder:{chart:{cylFillColor:"#444444"}},sparkline:{chart:{linecolor:"#444444"}},sparkcolumn:{chart:{plotFillColor:"#444444"}},sparkwinloss:{chart:{winColor:"#444444",lossColor:"#666666",drawColor:"#888888",scoreLessColor:"#aaaaaa"}},hbullet:{chart:{plotFillColor:"#444444",targetColor:"#666666"}},vbullet:{chart:{plotFillColor:"#444444",targetColor:"#666666"}}}};o.default={extension:a,name:"carbonTheme",type:"theme"}},9:function(o,l,a){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(a(10));e.addDep(r.default)}})}); +//# sourceMappingURL=fusioncharts.theme.carbon.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.fint.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.fint.js new file mode 100755 index 0000000000000000000000000000000000000000..b54566ac3fb2687e4a821a97f40e9223166e2cf1 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.fint.js @@ -0,0 +1,10 @@ +!function(e){"object"==typeof module&&void 0!==module.exports?module.exports=e:e(FusionCharts)}(function(e){!function(e){var o={};function l(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=o,l.d=function(e,o,a){l.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:a})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,o){if(1&o&&(e=l(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(l.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)l.d(a,r,function(o){return e[o]}.bind(null,r));return a},l.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(o,"a",o),o},l.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},l.p="",l(l.s=11)}({11:function(o,l,a){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(a(12));e.addDep(r.default)},12:function(e,o,l){"use strict";o.__esModule=!0; +/**! + * @license Fint Theme v//? write(JSON.parse(require('fs').readFileSync('./package.json')).version); + * FusionCharts JavaScript Library + * + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + */ +var a={name:"fint",theme:{base:{chart:{paletteColors:"#0075c2,#1aaf5d,#f2c500,#f45b00,#8e0000,#0e948c,#8cbb2c,#f3de00,#c02d00,#5b0101",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0",toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10",showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#0075c2",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#0075c2",entityFillhoverAlpha:"80",connectorColor:"#cccccc",connectorThickness:"1.5",markerFillHoverAlpha:"90"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},doughnut2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",centerLabelFontSize:"12",centerLabelBold:"1",centerLabelFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},line:{chart:{lineThickness:"2"}},spline:{chart:{lineThickness:"2"}},column2d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar2d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1"}},column3d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar3d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1"}},area2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},splinearea:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},mscolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},mscolumn3d:{chart:{showValues:"0"}},msstackedcolumn2dlinedy:{chart:{showValues:"0"}},stackedcolumn2d:{chart:{showValues:"0"}},stackedarea2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},stackedbar2d:{chart:{showValues:"0"}},msstackedcolumn2d:{chart:{showValues:"0"}},mscombi3d:{chart:{showValues:"0"}},mscombi2d:{chart:{showValues:"0"}},mscolumn3dlinedy:{chart:{showValues:"0"}},stackedcolumn3dline:{chart:{showValues:"0"}},stackedcolumn2dline:{chart:{showValues:"0"}},scrollstackedcolumn2d:{chart:{valueFontColor:"#ffffff"}},scrollcombi2d:{chart:{showValues:"0"}},scrollcombidy2d:{chart:{showValues:"0"}},logstackedcolumn2d:{chart:{showValues:"0"}},logmsline:{chart:{showValues:"0"}},logmscolumn2d:{chart:{showValues:"0"}},msstackedcombidy2d:{chart:{showValues:"0"}},scrollcolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},pareto2d:{chart:{paletteColors:"#0075c2",showValues:"0"}},pareto3d:{chart:{paletteColors:"#0075c2",showValues:"0"}},angulargauge:{chart:{pivotFillColor:"#ffffff",pivotRadius:"4",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"12",majorTMThickness:"2",majorTMColor:"#000000",minorTMNumber:"0",tickValueDistance:"10",valueFontSize:"24",valueFontBold:"1",gaugeInnerRadius:"50%",showHoverEffect:"0"},dials:{dial:[{baseWidth:"10",rearExtension:"7",bgColor:"#000000",bgAlpha:"100",borderColor:"#666666",bgHoverAlpha:"20"}]}},hlineargauge:{chart:{pointerFillColor:"#ffffff",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"3",majorTMColor:"#000000",minorTMNumber:"0",valueFontSize:"18",valueFontBold:"1"},pointers:{pointer:[{}]}},bubble:{chart:{use3dlighting:"0",showplotborder:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0",plotFillHoverColor:"#2b8ecf"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},scatter:{chart:{use3dlighting:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},boxandwhisker2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},thermometer:{chart:{gaugeFillColor:"#0075c2"}},cylinder:{chart:{cylFillColor:"#0075c2"}},sparkline:{chart:{linecolor:"#0075c2"}},sparkcolumn:{chart:{plotFillColor:"#0075c2"}},sparkwinloss:{chart:{winColor:"#0075c2",lossColor:"#1aaf5d",drawColor:"#f2c500",scoreLessColor:"#f45b00"}},hbullet:{chart:{plotFillColor:"#0075c2",targetColor:"#1aaf5d"}},vbullet:{chart:{plotFillColor:"#0075c2",targetColor:"#1aaf5d"}}}};o.default={extension:a,name:"fintTheme",type:"theme"}}})}); +//# sourceMappingURL=fusioncharts.theme.fint.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.fusion.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.fusion.js new file mode 100755 index 0000000000000000000000000000000000000000..701ec60711a7665c517638170f4a81aa7c78d5ef --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.fusion.js @@ -0,0 +1,2 @@ +!function(e){"object"==typeof module&&void 0!==module.exports?module.exports=e:e(FusionCharts)}(function(e){!function(e){var o={};function r(n){if(o[n])return o[n].exports;var a=o[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=o,r.d=function(e,o,n){r.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,o){if(1&o&&(e=r(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var a in e)r.d(n,a,function(o){return e[o]}.bind(null,a));return n},r.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(o,"a",o),o},r.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r.p="",r(r.s=13)}([function(e,o){e.exports=function(e){var o=[];return o.toString=function(){return this.map(function(o){var r=function(e,o){var r=e[1]||"",n=e[3];if(!n)return r;if(o&&"function"==typeof btoa){var a=function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}(n),s=n.sources.map(function(e){return"/*# sourceURL="+n.sourceRoot+e+" */"});return[r].concat(s).concat([a]).join("\n")}return[r].join("\n")}(o,e);return o[2]?"@media "+o[2]+"{"+r+"}":r}).join("")},o.i=function(e,r){"string"==typeof e&&(e=[[null,e,""]]);for(var n={},a=0;a<this.length;a++){var s=this[a][0];"number"==typeof s&&(n[s]=!0)}for(a=0;a<e.length;a++){var t=e[a];"number"==typeof t[0]&&n[t[0]]||(r&&!t[2]?t[2]=r:r&&(t[2]="("+t[2]+") and ("+r+")"),o.push(t))}},o}},function(e,o,r){var n={},a=function(e){var o;return function(){return void 0===o&&(o=e.apply(this,arguments)),o}}(function(){return window&&document&&document.all&&!window.atob}),s=function(e){var o={};return function(e){if("function"==typeof e)return e();if(void 0===o[e]){var r=function(e){return document.querySelector(e)}.call(this,e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}o[e]=r}return o[e]}}(),t=null,l=0,c=[],i=r(2);function d(e,o){for(var r=0;r<e.length;r++){var a=e[r],s=n[a.id];if(s){s.refs++;for(var t=0;t<s.parts.length;t++)s.parts[t](a.parts[t]);for(;t<a.parts.length;t++)s.parts.push(v(a.parts[t],o))}else{var l=[];for(t=0;t<a.parts.length;t++)l.push(v(a.parts[t],o));n[a.id]={id:a.id,refs:1,parts:l}}}}function h(e,o){for(var r=[],n={},a=0;a<e.length;a++){var s=e[a],t=o.base?s[0]+o.base:s[0],l={css:s[1],media:s[2],sourceMap:s[3]};n[t]?n[t].parts.push(l):r.push(n[t]={id:t,parts:[l]})}return r}function u(e,o){var r=s(e.insertInto);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var n=c[c.length-1];if("top"===e.insertAt)n?n.nextSibling?r.insertBefore(o,n.nextSibling):r.appendChild(o):r.insertBefore(o,r.firstChild),c.push(o);else if("bottom"===e.insertAt)r.appendChild(o);else{if("object"!=typeof e.insertAt||!e.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var a=s(e.insertInto+" "+e.insertAt.before);r.insertBefore(o,a)}}function F(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var o=c.indexOf(e);o>=0&&c.splice(o,1)}function g(e){var o=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),p(o,e.attrs),u(e,o),o}function p(e,o){Object.keys(o).forEach(function(r){e.setAttribute(r,o[r])})}function v(e,o){var r,n,a,s;if(o.transform&&e.css){if(!(s=o.transform(e.css)))return function(){};e.css=s}if(o.singleton){var c=l++;r=t||(t=g(o)),n=w.bind(null,r,c,!1),a=w.bind(null,r,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(r=function(e){var o=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",p(o,e.attrs),u(e,o),o}(o),n=function(e,o,r){var n=r.css,a=r.sourceMap,s=void 0===o.convertToAbsoluteUrls&&a;(o.convertToAbsoluteUrls||s)&&(n=i(n));a&&(n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */");var t=new Blob([n],{type:"text/css"}),l=e.href;e.href=URL.createObjectURL(t),l&&URL.revokeObjectURL(l)}.bind(null,r,o),a=function(){F(r),r.href&&URL.revokeObjectURL(r.href)}):(r=g(o),n=function(e,o){var r=o.css,n=o.media;n&&e.setAttribute("media",n);if(e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}.bind(null,r),a=function(){F(r)});return n(e),function(o){if(o){if(o.css===e.css&&o.media===e.media&&o.sourceMap===e.sourceMap)return;n(e=o)}else a()}}e.exports=function(e,o){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(o=o||{}).attrs="object"==typeof o.attrs?o.attrs:{},o.singleton||"boolean"==typeof o.singleton||(o.singleton=a()),o.insertInto||(o.insertInto="head"),o.insertAt||(o.insertAt="bottom");var r=h(e,o);return d(r,o),function(e){for(var a=[],s=0;s<r.length;s++){var t=r[s];(l=n[t.id]).refs--,a.push(l)}e&&d(h(e,o),o);for(s=0;s<a.length;s++){var l;if(0===(l=a[s]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete n[l.id]}}}};var f=function(){var e=[];return function(o,r){return e[o]=r,e.filter(Boolean).join("\n")}}();function w(e,o,r,n){var a=r?"":n.css;if(e.styleSheet)e.styleSheet.cssText=f(o,a);else{var s=document.createTextNode(a),t=e.childNodes;t[o]&&e.removeChild(t[o]),t.length?e.insertBefore(s,t[o]):e.appendChild(s)}}},function(e,o){e.exports=function(e){var o="undefined"!=typeof window&&window.location;if(!o)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var r=o.protocol+"//"+o.host,n=r+o.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(e,o){var a,s=o.trim().replace(/^"(.*)"$/,function(e,o){return o}).replace(/^'(.*)'$/,function(e,o){return o});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(s)?e:(a=0===s.indexOf("//")?s:0===s.indexOf("/")?r+s:n+s.replace(/^\.\//,""),"url("+JSON.stringify(a)+")")})}},,,,,,,,,,,function(o,r,n){"use strict";var a=function(e){return e&&e.__esModule?e:{default:e}}(n(14));e.addDep(a.default)},function(e,o,r){"use strict";o.__esModule=!0,r(15);o.default={extension:{name:"fusion",theme:{base:{chart:{paletteColors:"#5D62B5, #29C3BE, #F2726F, #FFC533, #62B58F, #BC95DF, #67CDF2",showShadow:"0",showPlotBorder:"0",usePlotGradientColor:"0",showValues:"0",bgColor:"#FFFFFF",canvasBgAlpha:"0",bgAlpha:"100",showBorder:"0",showCanvasBorder:"0",showAlternateHGridColor:"0",divLineColor:"#DFDFDF",showXAxisLine:"0",yAxisNamePadding:"15",sYAxisNamePadding:"15",xAxisNamePadding:"15",captionPadding:"15",xAxisNameFontColor:"#999",yAxisNameFontColor:"#999",sYAxisNameFontColor:"#999",yAxisValuesPadding:"15",labelPadding:"10",transposeAxis:"1",toolTipBgColor:"#FFFFFF",toolTipPadding:"6",toolTipBorderColor:"#E1E1E1",toolTipBorderThickness:"1",toolTipBorderAlpha:"100",toolTipBorderRadius:"2",baseFont:"Source Sans Pro",baseFontColor:"#5A5A5A",baseFontSize:"14",xAxisNameFontBold:"0",yAxisNameFontBold:"0",sYAxisNameFontBold:"0",xAxisNameFontSize:"15",yAxisNameFontSize:"15",sYAxisNameFontSize:"15",captionFontSize:"18",subCaptionFontSize:"13",captionFontBold:"1",subCaptionFontBold:"0",subCaptionFontColor:"#999",valueFontColor:"#000000",valueFont:"Source Sans Pro",drawCustomLegendIcon:"1",legendShadow:"0",legendBorderAlpha:"0",legendBorderThickness:"0",legendItemFont:"Source Sans Pro",legendItemFontColor:"#7C7C7C",legendIconBorderThickness:"0",legendBgAlpha:"0",legendItemFontSize:"15",legendCaptionFontColor:"#999",legendCaptionFontSize:"13",legendCaptionFontBold:"0",legendScrollBgColor:"#FFF",crossLineAnimation:"1",crossLineAlpha:"100",showHoverEffect:"1",plotHoverEffect:"1",plotFillHoverAlpha:"90",barHoverAlpha:"90"}},column2d:{chart:{paletteColors:"#5D62B5",placeValuesInside:"0"}},column3d:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",showShadow:"0",chartTopMargin:"35",paletteColors:"#5D62B5"}},line:{chart:{lineThickness:"2",paletteColors:"#5D62B5",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",drawCrossLine:"1"}},area2d:{chart:{paletteColors:"#5D62B5",drawCrossLine:"1"}},bar2d:{chart:{placeValuesInside:"0",showAlternateVGridColor:"0",yAxisValuesPadding:"10",paletteColors:"#5D62B5"}},bar3d:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",showAlternateVGridColor:"0",yAxisValuesPadding:"10",paletteColors:"#5D62B5"}},pie2d:{chart:{use3DLighting:"0",showPercentValues:"1",showValues:"1",showPercentInTooltip:"0",useDataPlotColorForLabels:"0",showLegend:"1",legendIconSides:"2",labelFontColor:"#666"}},pie3d:{chart:{use3DLighting:"0",showPercentValues:"1",showValues:"1",useDataPlotColorForLabels:"0",showLegend:"1",legendIconSides:"2",pieSliceDepth:"15",pieYScale:"60",labelFontColor:"#666",labelDistance:"20",showPercentInTooltip:"0"}},doughnut2d:{chart:{use3DLighting:"0",showPercentValues:"1",showValues:"1",useDataPlotColorForLabels:"0",showLegend:"1",legendIconSides:"2",showPlotBorder:"0",labelFontColor:"#666",centerLabelColor:"#666",centerLabelFontSize:"14",showPercentInTooltip:"0"}},doughnut3d:{chart:{use3DLighting:"0",showPercentValues:"1",showValues:"1",useDataPlotColorForLabels:"0",showLegend:"1",legendIconSides:"2",pieSliceDepth:"15",pieYScale:"60",labelFontColor:"#666",centerLabelColor:"#666",centerLabelFontSize:"14",showPercentInTooltip:"0"}},pareto2d:{chart:{paletteColors:"#5D62B5",lineThickness:"2",anchorRadius:"4",lineColor:"#5D5D5D",anchorBgColor:"#5D5D5D",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},pareto3d:{chart:{paletteColors:"#5D62B5",lineThickness:"2",anchorRadius:"4",lineColor:"#5D5D5D",anchorBgColor:"#5D5D5D",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1",showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",showAlternateVGridColor:"0"}},mscolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}},mscolumn3d:{chart:{showLegend:"1",legendIconSides:"4",showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",showAlternateVGridColor:"0"}},msline:{chart:{lineThickness:"2",anchorRadius:"4",drawCrossLine:"1",showLegend:"1",legendIconSides:"2",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},msbar2d:{chart:{placeValuesInside:"0",showAlternateVGridColor:"0",showLegend:"1",legendIconSides:"4",yAxisValuesPadding:"10"}},msbar3d:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",showAlternateVGridColor:"0",showLegend:"1",legendIconSides:"4",yAxisValuesPadding:"10"}},msarea:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},marimekko:{chart:{legendIconSides:"4",valueBgColor:"#FFFFFF",valueBgAlpha:"65"}},zoomline:{chart:{lineThickness:"2",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#FFF",scrollheight:"10",crossLineThickness:"1",crossLineColor:"#F2F2F2",showLegend:"1",legendIconSides:"2",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},zoomlinedy:{chart:{lineThickness:"2",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#FFF",scrollheight:"10",crossLineThickness:"1",crossLineColor:"#F2F2F2",showLegend:"1",legendIconSides:"2",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},stackedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}},stackedcolumn3d:{chart:{showLegend:"1",legendIconSides:"4",showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",showAlternateVGridColor:"0"}},stackedbar2d:{chart:{placeValuesInside:"0",showAlternateVGridColor:"0",legendIconSides:"4",yAxisValuesPadding:"10"}},stackedbar3d:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",showAlternateVGridColor:"0",showLegend:"1",legendIconSides:"4",yAxisValuesPadding:"10"}},stackedarea2d:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"4"}},msstackedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}},mscombi2d:{chart:{lineThickness:"2",anchorRadius:"4",drawCrossLine:"1",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},mscombi3d:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},mscolumnline3d:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},stackedcolumn2dline:{chart:{showLegend:"1",lineThickness:"2",anchorRadius:"4",drawCrossLine:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},stackedcolumn3dline:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},mscombidy2d:{chart:{lineThickness:"2",anchorRadius:"4",drawCrossLine:"1",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},mscolumn3dlinedy:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",placeValuesInside:"0",showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},stackedcolumn3dlinedy:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},msstackedcolumn2dlinedy:{chart:{placeValuesInside:"0",showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"},lineset:[{color:"#5D5D5D",anchorBgColor:"#5D5D5D"}]},scatter:{chart:{showCanvasBase:"0",canvasBaseDepth:"0",showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverColor:"#AFAFAF",anchorBorderHoverThickness:"1.5",showLegend:"1",drawCustomLegendIcon:"0"}},zoomscatter:{chart:{showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",anchorBorderHoverColor:"#AFAFAF",showLegend:"1",drawCustomLegendIcon:"0"}},bubble:{chart:{use3DLighting:"0",showLegend:"1",legendIconSides:"2",plotFillAlpha:"80"}},scrollcolumn2d:{chart:{showLegend:"1",legendIconSides:"4",showCanvasBase:"0",canvasBaseDepth:"0",showShadow:"0",adjustDiv:"1",flatScrollBars:"1",scrollShowButtons:"0",scrollheight:"10",scrollColor:"#EBEBEB"}},scrollline2d:{chart:{showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",legendIconSides:"2",flatScrollBars:"1",scrollShowButtons:"0",scrollheight:"10",scrollColor:"#EBEBEB",drawCrossLine:"1",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},scrollarea2d:{chart:{showShadow:"0",adjustDiv:"1",lineThickness:"2",drawAnchors:"0",showLegend:"1",legendIconSides:"2",flatScrollBars:"1",scrollShowButtons:"0",scrollheight:"10",scrollColor:"#EBEBEB"}},scrollstackedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4",flatScrollBars:"1",scrollShowButtons:"0",scrollheight:"10",scrollColor:"#EBEBEB"}},scrollcombi2d:{chart:{lineThickness:"2",anchorRadius:"4",showLegend:"1",flatScrollBars:"1",scrollShowButtons:"0",scrollheight:"10",scrollColor:"#EBEBEB",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},scrollcombidy2d:{chart:{lineThickness:"2",anchorRadius:"4",showLegend:"1",flatScrollBars:"1",scrollShowButtons:"0",scrollheight:"10",scrollColor:"#EBEBEB",drawCustomLegendIcon:"0",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},angulargauge:{chart:{setAdaptiveMin:"1",adjustTM:"1",tickvaluedistance:"10",placeTicksInside:"0",autoAlignTickValues:"1",showGaugeBorder:"0",minortmnumber:"0",majorTMHeight:"8",gaugeFillMix:"{light-0}",pivotbgcolor:"#000000",pivotfillmix:"0",showpivotborder:"1",pivotBorderColor:"#FFFFFF",showValue:"0",valueBelowPivot:"1"},dials:{dial:[{bgColor:"#000000",borderThickness:"0"}]}},bulb:{chart:{is3D:"0",placeValuesInside:"1",valueFont:"Source Sans Pro"}},cylinder:{chart:{cylRadius:"50",cylYScale:"13"}},hled:{chart:{ledGap:"0",showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50"}},hlineargauge:{chart:{showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",minorTMnumber:"0",majorTMHeight:"8",majorTMAlpha:"50",gaugeFillMix:"{light-0}",valueAbovePointer:"1"}},thermometer:{chart:{use3DLighting:"0",manageResize:"1",autoScale:"1",showGaugeBorder:"1",gaugeBorderAlpha:"40",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50"}},vled:{chart:{ledGap:"0",showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50"}},realtimearea:{chart:{showLegend:"1",legendIconSides:"2"}},realtimecolumn:{chart:{showLegend:"1",legendIconSides:"2"}},realtimeline:{chart:{lineThickness:"2",anchorRadius:"4",showLegend:"1",legendIconSides:"2",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},realtimestackedarea:{chart:{showLegend:"1",legendIconSides:"2"}},realtimestackedcolumn:{chart:{showLegend:"1",legendIconSides:"4"}},realtimelinedy:{chart:{lineThickness:"2",anchorRadius:"4",showLegend:"1",legendIconSides:"2",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},sparkline:{chart:{plotFillColor:"#5D62B5",anchorRadius:"4",highColor:"#29C3BE",lowColor:"#F2726F",captionPosition:"top",showOpenAnchor:"0",showCloseAnchor:"0",showOpenValue:"0",showCloseValue:"0",showHighLowValue:"0",periodColor:"#F3F3F3"}},sparkcolumn:{chart:{plotFillColor:"5D62B5",highColor:"#29C3BE",lowColor:"#F2726F",captionPosition:"middle",periodColor:"#F3F3F3"}},sparkwinloss:{chart:{winColor:"#29C3BE",lossColor:"#F2726F",captionPosition:"middle",drawColor:"#FFC533",scoreLessColor:"#5D62B5",periodColor:"#F3F3F3"}},hbullet:{chart:{plotFillColor:"#5D5D5D",colorRangeFillMix:"{light+0}",tickValueDistance:"3",tickMarkDistance:"3"}},vbullet:{chart:{plotFillColor:"#5D5D5D",colorRangeFillMix:"{light+0}",tickValueDistance:"3",tickMarkDistance:"3"}},funnel:{chart:{is2D:"1",smartLineThickness:"1",smartLineColor:"#B1AFAF",smartLineAlpha:"70",streamlinedData:"1",useSameSlantAngle:"1",alignCaptionWithCanvas:"1"}},pyramid:{chart:{is2D:"1",smartLineThickness:"1",smartLineColor:"#B1AFAF",smartLineAlpha:"70",streamlinedData:"1",useSameSlantAngle:"1",alignCaptionWithCanvas:"1",use3dlighting:"0"}},gantt:{chart:{taskBarFillMix:"{light+0}",gridBorderAlpha:"100",gridBorderColor:"#EAEAEA",ganttLineColor:"#EAEAEA",ganttLineAlpha:"100",taskBarRoundRadius:"2",flatScrollBars:"1",showHoverEffect:"1",plotHoverEffect:"1",plotFillHoverAlpha:"50",showCategoryHoverBand:"1",categoryHoverBandAlpha:"50",showGanttPaneVerticalHoverBand:"1",showProcessHoverBand:"1",processHoverBandAlpha:"50",showGanttPaneHorizontalHoverBand:"1",showConnectorHoverEffect:"1",connectorHoverAlpha:"50",showTaskHoverEffect:"1",taskHoverFillAlpha:"50",slackHoverFillAlpha:"50",scrollShowButtons:"0",drawCustomLegendIcon:"0",legendShadow:"0",legendBorderAlpha:"0",legendBorderThickness:"0",legendIconBorderThickness:"0",legendBgAlpha:"0"},categories:[{fontcolor:"#5D5D5D",fontsize:"14",bgcolor:"#F3F3F3",hoverBandAlpha:"50",showGanttPaneHoverBand:"1",showHoverBand:"1",category:[{fontcolor:"#5D5D5D",fontsize:"14",bgcolor:"#F3F3F3"}]}],tasks:{showBorder:"0",showHoverEffect:"0"},processes:{fontcolor:"#5D5D5D",isanimated:"0",bgcolor:"#FFFFFF",bgAlpha:"100",headerbgcolor:"#F3F3F3",headerfontcolor:"#5D5D5D",showGanttPaneHoverBand:"1",showHoverBand:"1"},text:{fontcolor:"#5D5D5D",bgcolor:"#FFFFFF"},datatable:{fontcolor:"#5D5D5D",bgcolor:"#FFFFFF",bgAlpha:"100",datacolumn:[{bgcolor:"#FFFFFF"}]},connectors:[{hoverThickness:"1.5"}],milestones:{milestone:[{color:"#FFC533"}]}},logmscolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}},logmsline:{chart:{lineThickness:"2",anchorRadius:"4",drawCrossLine:"1",showLegend:"1",legendIconSides:"2",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},spline:{chart:{lineThickness:"2",paletteColors:"#5D62B5",anchorBgColor:"#5D62B5",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},splinearea:{chart:{paletteColors:"#5D62B5",drawAnchors:"0"}},msspline:{chart:{lineThickness:"2",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1",showLegend:"1",legendIconSides:"2"}},mssplinearea:{chart:{showLegend:"1",legendIconSides:"2",drawAnchors:"0"}},errorbar2d:{chart:{legendIconSides:"4",errorBarColor:"#5D5D5D",errorBarThickness:"0.7",errorBarAlpha:"80"}},errorline:{chart:{lineThickness:"2",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1",showLegend:"1",legendIconSides:"2",errorBarColor:"#5D5D5D",errorBarThickness:"0.7",errorBarAlpha:"80"}},errorscatter:{chart:{showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",showLegend:"1",legendIconSides:"2",errorBarColor:"#5D5D5D",errorBarThickness:"0.7",errorBarAlpha:"80",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},inversemsarea:{chart:{drawCrossLine:"1",showLegend:"1",legendIconSides:"2"}},inversemscolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}},inversemsline:{chart:{lineThickness:"2",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1",drawCrossLine:"1",showLegend:"1",legendIconSides:"2"}},dragcolumn2d:{chart:{showLegend:"1",legendIconSides:"4"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{data:[{allowDrag:"1",alpha:"80"}]}]},dragline:{chart:{lineThickness:"2",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"1.5",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1",drawCrossLine:"1",showLegend:"1",legendIconSides:"2"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{data:[{allowDrag:"1",alpha:"80",dashed:"1"}]}]},dragarea:{chart:{showLegend:"1",legendIconSides:"2",drawAnchors:"0"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{data:[{allowDrag:"1",alpha:"80",dashed:"1"}]}]},treemap:{chart:{parentLabelLineHeight:"16",baseFontSize:"14",labelFontSize:"14",showParent:"1",showNavigationBar:"0",plotBorderThickness:"0.5",plotBorderColor:"#EAEAEA",labelGlow:"1",labelGlowIntensity:"100",btnBackChartTooltext:"Back",btnResetChartTooltext:"Home",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",toolbarButtonScale:"1.55",plotToolText:"$label, $dataValue, $sValue"},data:[{fillColor:"#FAFAFA",data:[{fillColor:"#FAFAFA"}]}]},radar:{chart:{showLegend:"1",legendIconSides:"2",plotFillAlpha:"20",drawAnchors:"0"}},heatmap:{chart:{baseFontSize:"14",labelFontSize:"14",showPlotBorder:"1",plotBorderAlpha:"100",plotBorderThickness:"0.5",plotBorderColor:"#EAEAEA",tlFontColor:"#FDFDFD",tlFont:"Source Sans Pro Light",tlFontSize:"13",trFontColor:"#FDFDFD",trFont:"Source Sans Pro Light",trFontSize:"13",blFontColor:"#FDFDFD",blFont:"Source Sans Pro Light",blFontSize:"13",brFontColor:"#FDFDFD",brFont:"Source Sans Pro Light",brFontSize:"13",captionPadding:"20",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0"},colorrange:{gradient:"1",code:"#FFC533"}},boxandwhisker2d:{chart:{drawCustomLegendIcon:"0",showLegend:"1",showDetailedLegend:"1",legendIconSides:"2",showPlotBorder:"0",upperBoxBorderAlpha:"0",lowerBoxBorderAlpha:"0",lowerQuartileAlpha:"0",upperQuartileAlpha:"0",upperWhiskerColor:"#5D5D5D",upperWhiskerThickness:"0.7",upperWhiskerAlpha:"80",lowerWhiskerColor:"#5D5D5D",lowerWhiskerThickness:"0.7",lowerWhiskerAlpha:"80",medianColor:"#5D5D5",medianThickness:"0.7",medianAlpha:"100",outliericonshape:"spoke",outliericonsides:"9",meaniconcolor:"#5D5D5D",meanIconShape:"spoke",meaniconsides:"9",meaniconradius:"5"}},candlestick:{chart:{showShadow:"0",showVPlotBorder:"0",bearFillColor:"#F2726F",bullFillColor:"#62B58F",plotLineThickness:"0.3",plotLineAlpha:"100",divLineDashed:"0",showDetailedLegend:"1",legendIconSides:"2",showHoverEffect:"1",plotHoverEffect:"1",showVolumeChart:"0",trendLineColor:"#5D5D5D",trendLineThickness:"1",trendValueAlpha:"100",rollOverBandAlpha:"100",rollOverBandColor:"#F2F2F2"},categories:[{verticalLineColor:"#5D5D5D",verticalLineThickness:"1",verticalLineAlpha:"35"}]},dragnode:{chart:{use3DLighting:"0",plotBorderThickness:"0",plotBorderAlpha:"0",showDetailedLegend:"1",legendIconSides:"2"},dataset:[{color:"#5D62B5"}],connectors:[{connector:[{color:"#29C3BE"}]}]},msstepline:{chart:{drawAnchors:"0",lineThickness:"2",drawCustomLegendIcon:"0"}},multiaxisline:{chart:{showLegend:"1",lineThickness:"2",allowSelection:"0",connectNullData:"1",drawAnchors:"0",divLineDashed:"0",divLineColor:"#DFDFDF",vDivLineColor:"#DFDFDF",vDivLineDashed:"0",yAxisNameFontSize:"13",drawCustomLegendIcon:"0"},axis:[{divLineColor:"#DFDFDF",setAdaptiveYMin:"1",divLineDashed:"0"}]},multilevelpie:{chart:{useHoverColor:"1",hoverFillColor:"#EDEDED",showHoverEffect:"1",plotHoverEffect:"1"},category:[{color:"#EDEDED",category:[{color:"#5D62B5",category:[{color:"#5D62B5"}]}]}]},selectscatter:{chart:{showShadow:"0",adjustDiv:"1",lineThickness:"2",anchorRadius:"4",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverColor:"#FFFFFF",anchorBorderHoverThickness:"1.5",showLegend:"1",legendIconSides:"2"}},waterfall2d:{chart:{paletteColors:"#5D62B5, #29C3BE, #F2726F, #FFC533, #62B58F, #BC95DF, #67CDF2",positiveColor:"62B58F",negativeColor:"#F2726F",showConnectors:"1",connectorDashed:"1",connectorThickness:"0.7",connectorColor:"#5D5D5D"}},kagi:{chart:{rallyThickness:"2",declineThickness:"2",legendIconSides:"2",drawAnchors:"0",rallyColor:"#62B58F",declineColor:"#F2726F"}},geo:{chart:{showLabels:"0",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",fillColor:"#FDFDFD",showEntityHoverEffect:"1",entityFillHoverAlpha:"90",connectorHoverAlpha:"90",markerBorderHoverAlpha:"90",showBorder:"1",borderColor:"#5D5D5D",borderThickness:"0.1",nullEntityColor:"5D5D5D",nullEntityAlpha:"50",entityFillHoverColor:"#5D5D5D"},colorrange:{gradient:"1",code:"#FFC533"}},overlappedbar2d:{chart:{placeValuesInside:"0",showAlternateVGridColor:"0",showLegend:"1",legendIconSides:"4",yAxisValuesPadding:"10"}},overlappedcolumn2d:{chart:{showLegend:"1",legendIconSides:"4"}}}},name:"fusionTheme",type:"theme"}},function(e,o,r){var n=r(16);"string"==typeof n&&(n=[[e.i,n,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};r(1)(n,a);n.locals&&(e.exports=n.locals)},function(e,o,r){(e.exports=r(0)(!1)).push([e.i,"@font-face {\n font-family: 'Source Sans Pro';\n font-style: normal;\n font-weight: 400;\n src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v11/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7lujVj9w.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n/* latin */\n@font-face {\n font-family: 'Source Sans Pro Light';\n font-style: normal;\n font-weight: 300;\n src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v11/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu3cOWxw.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n",""])}])}); +//# sourceMappingURL=fusioncharts.theme.fusion.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.gammel.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.gammel.js new file mode 100755 index 0000000000000000000000000000000000000000..82bcc1a605c66f5fa5a34cfb9429e91f75d5993c --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.gammel.js @@ -0,0 +1,2 @@ +!function(o){"object"==typeof module&&void 0!==module.exports?module.exports=o:o(FusionCharts)}(function(o){!function(o){var e={};function r(a){if(e[a])return e[a].exports;var l=e[a]={i:a,l:!1,exports:{}};return o[a].call(l.exports,l,l.exports,r),l.l=!0,l.exports}r.m=o,r.c=e,r.d=function(o,e,a){r.o(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:a})},r.r=function(o){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},r.t=function(o,e){if(1&e&&(o=r(o)),8&e)return o;if(4&e&&"object"==typeof o&&o&&o.__esModule)return o;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:o}),2&e&&"string"!=typeof o)for(var l in o)r.d(a,l,function(e){return o[e]}.bind(null,l));return a},r.n=function(o){var e=o&&o.__esModule?function(){return o.default}:function(){return o};return r.d(e,"a",e),e},r.o=function(o,e){return Object.prototype.hasOwnProperty.call(o,e)},r.p="",r(r.s=17)}({17:function(e,r,a){"use strict";var l=function(o){return o&&o.__esModule?o:{default:o}}(a(18));o.addDep(l.default)},18:function(o,e,r){"use strict";e.__esModule=!0;var a={name:"gammel",theme:{base:{chart:{paletteColors:"#7CB5EC, #434348, #8EED7D, #F7A35C, #8085E9, #F15C80, #E4D354, #2B908F, #F45B5B, #91E8E1",usePlotGradientColor:"0",showPlotBorder:"0",showShadow:"0",showBorder:"0",showCanvasBorder:"0",bgColor:"#FFFFFF",bgAlpha:"100",canvasBgAlpha:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0",divLineAlpha:"100",divLineColor:"#E6E6E6",divLineThickness:"1",yAxisValuesPadding:"10",labelPadding:"10",canvasPadding:"10",valuePadding:"0",adjustDiv:"1",labelDisplay:"AUTO",transposeAxis:"1",showCanvasBase:"0",tooltipColor:"#333333",toolTipBgColor:"#F6F6F6",toolTipBgAlpha:"85",toolTipPadding:"8",toolTipBorderColor:"#999999",toolTipBorderRadius:"3",toolTipBorderThickness:"1",tooltipBorderAlpha:"90",showToolTipShadow:"1",baseFontSize:"11",baseFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif",baseFontColor:"#666666",outCnvBaseFontSize:"11",outCnvBaseFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif",outCnvBaseFontColor:"#666666",captionFontSize:"18",captionFontBold:"0",captionFontColor:"#333333",subCaptionFontSize:"12",subCaptionFontBold:"0",subCaptionFontColor:"#666666",valueFontBold:"1",valueFontSize:"11",valueFontColor:"#000000",placeValuesInside:"0",xAxisNameFontBold:"0",xAxisNameFontSize:"12",xAxisNameFontColor:"#666666",yAxisNameFontBold:"0",yAxisNameFontSize:"12",yAxisNameFontColor:"#666666",sYAxisNameFontBold:"0",sYAxisNameFontSize:"12",sYAxisNameFontColor:"#666666",xAxisNamePadding:"8",yAxisNamePadding:"8",sYAxisNamePadding:"8",captionPadding:"10",centerLabelFontSize:"11",centerLabelColor:"#666666",centerLabelBgOval:"1",useEllipsesWhenOverflow:"1",showLegend:"1",legendBgAlpha:"0",legendBorderThickness:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"12",legendItemFontColor:"#333333",legendItemFontBold:"1",legendPosition:"bottom",legendNumColumns:"4",drawCustomLegendIcon:"1",legendIconSides:"2",legendIconBorderThickness:"0",legendItemHiddenColor:"#CCCCCC",drawCrossLineOnTop:"0",crossLineThickness:"1",crossLineColor:"#E6E6E6",crossLineAlpha:"60",showHoverEffect:"1",plotHoverEffect:"1",plotFillHoverAlpha:"95",columnHoverAlpha:"95",scrollColor:"#808080",scrollHeight:"11",flatscrollbars:"1",scrollshowbuttons:"1"}},column2d:{chart:{plotToolText:"$label: <b>$dataValue</b>",paletteColors:"#7CB5EC"}},column3d:{chart:{plotToolText:"$label: <b>$dataValue</b>",paletteColors:"#7CB5EC"}},line:{chart:{paletteColors:"#7CB5EC",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",plotToolText:"$label: <b>$dataValue</b>",showValues:"0",anchorBgColor:"#7CB5EC",anchorBorderHoverColor:"#D8D8D8",drawCrossLine:"1",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},area2d:{chart:{paletteColors:"#7CB5EC",plotBorderColor:"#7CB5EC",showPlotBorder:"1",plotBorderAlpha:"100",plotBorderThickness:"1.5",plotFillAlpha:"70",drawAnchors:"0",plotToolText:"$label: <b>$dataValue</b>",showValues:"0",drawCrossLine:"1"}},bar2d:{chart:{plotToolText:"$label: <b>$dataValue</b>",paletteColors:"#7CB5EC"}},bar3d:{chart:{plotToolText:"$label: <b>$dataValue</b>",paletteColors:"#7CB5EC"}},pie2d:{chart:{showZeroPies:"1",plotToolText:"$label: <b>$dataValue</b>",showPercentValues:"1",showPercentInToolTip:"0",labelSepChar:": ",use3DLighting:"0",enableMultiSlicing:"0",isSmartLineSlanted:"0",smartLineColor:"#434348",smartLineThickness:"1",smartLabelClearance:"0"},data:function(o,e,r){return e=window.Math,{alpha:100-(50<r?e.round(100/e.ceil(r/10)):20)*e.floor(o/10)}}},pie3d:{chart:{showZeroPies:"1",plotToolText:"$label: <b>$dataValue</b>",showPercentValues:"1",showPercentInToolTip:"0",labelSepChar:": ",use3DLighting:"0",enableMultiSlicing:"0",pieYScale:"75",pieSliceDepth:"10",isSmartLineSlanted:"0",smartLineColor:"#434348",smartLineThickness:"1",smartLabelClearance:"0"},data:function(o,e,r){return e=window.Math,{alpha:100-(50<r?e.round(100/e.ceil(r/10)):20)*e.floor(o/10)}}},doughnut2d:{chart:{showZeroPies:"1",plotToolText:"$label: <b>$dataValue</b>",showPercentValues:"1",showPercentInToolTip:"0",labelSepChar:": ",use3DLighting:"0",enableMultiSlicing:"0",isSmartLineSlanted:"0",smartLineColor:"#434348",smartLineThickness:"1",smartLabelClearance:"0"},data:function(o,e,r){return e=window.Math,{alpha:100-(50<r?e.round(100/e.ceil(r/10)):20)*e.floor(o/10)}}},doughnut3d:{chart:{showZeroPies:"1",plotToolText:"$label: <b>$dataValue</b>",showPercentValues:"1",showPercentInToolTip:"0",labelSepChar:": ",use3DLighting:"0",enableMultiSlicing:"0",pieYScale:"75",pieSliceDepth:"10",isSmartLineSlanted:"0",smartLineColor:"#434348",smartLineThickness:"1",smartLabelClearance:"0"},data:function(o,e,r){return e=window.Math,{alpha:100-(50<r?e.round(100/e.ceil(r/10)):20)*e.floor(o/10)}}},pareto2d:{chart:{paletteColors:"#434348",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",plotToolText:"$label: <b>$dataValue</b>",showValues:"0",lineColor:"#7CB5EC",anchorBgColor:"#7CB5EC",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2"}},pareto3d:{chart:{paletteColors:"#434348",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",plotToolText:"$label: <b>$dataValue</b>",showValues:"0",lineColor:"#7CB5EC",anchorBgColor:"#7CB5EC",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2"}},mscolumn2d:{chart:{showValues:"0",drawCrossLine:"1"}},mscolumn3d:{chart:{showValues:"0"}},msline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",drawCrossLine:"1",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},msbar2d:{chart:{showValues:"0",drawCrossLine:"1"}},msbar3d:{chart:{showValues:"0"}},msarea:{chart:{showPlotBorder:"1",plotBorderAlpha:"100",plotBorderThickness:"1.5",plotFillAlpha:"70",drawAnchors:"0",showValues:"0",drawCrossLine:"1"}},marimekko:{chart:{plotToolText:"$seriesName - <b>$label: $dataValue</b>"}},zoomline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},zoomlinedy:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},stackedcolumn2d:{chart:{showValues:"0",showSum:"1"}},stackedcolumn3d:{chart:{showValues:"0",showSum:"1"}},stackedbar2d:{chart:{showValues:"0",showSum:"1"}},stackedbar3d:{chart:{showValues:"0",showSum:"1"}},stackedarea2d:{chart:{showValues:"0",showSum:"0",drawCrossLine:"1",plotFillAlpha:"70"}},msstackedcolumn2d:{chart:{showValues:"0",showSum:"0",drawCrossLine:"0"}},mscombi2d:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",drawCrossLine:"1",legendIconBorderThickness:"1"}},mscombi3d:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},mscolumnline3d:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},stackedcolumn2dline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",drawCrossLine:"1",legendIconBorderThickness:"1"}},stackedcolumn3dline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},mscombidy2d:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",drawCrossLine:"1",legendIconBorderThickness:"1"}},mscolumn3dlinedy:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},stackedcolumn3dlinedy:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},msstackedcolumn2dlinedy:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",drawCrossLine:"1",legendIconBorderThickness:"1"}},scatter:{chart:{drawCustomLegendIcon:"0",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"7",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2"}},bubble:{chart:{quadrantLineThickness:"2",quadrantLineColor:"#000000",quadrantLineDashed:"1",quadrantLineAlpha:"100",setAdaptiveYMin:"1",setAdaptiveXMin:"1",quadrantLineDashGap:"3.5",quadrantLineDashLen:"2",use3dlighting:"0",plotFillAlpha:"80"}},zoomscatter:{chart:{drawCustomLegendIcon:"0",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"7",showValues:"0"}},scrollcolumn2d:{chart:{showLegend:"1",showShadow:"0",adjustDiv:"1",flatScrollBars:"1",scrollShowButtons:"1",scrollHeight:"15",scrollColor:"#F3F3F3"}},scrollline2d:{chart:{showValues:"0",showShadow:"0",lineThickness:"2",anchorRadius:"4",showLegend:"1",adjustDiv:"1",flatScrollBars:"1",scrollShowButtons:"1",scrollHeight:"15",scrollColor:"#F3F3F3",anchorHoverEffect:"1",anchorHoverRadius:"6",anchorBorderHoverThickness:"2",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},scrollarea2d:{chart:{showValues:"0",showCanvasBase:"0",canvasBaseDepth:"0",showShadow:"0",chartTopMargin:"35",adjustDiv:"1",lineThickness:"2",drawAnchors:"0",showLegend:"1",flatScrollBars:"1",scrollShowButtons:"1",scrollHeight:"15",scrollColor:"#F3F3F3"}},scrollstackedcolumn2d:{chart:{showLegend:"1",showValues:"0",flatScrollBars:"1",scrollShowButtons:"1",scrollHeight:"15",scrollColor:"#F3F3F3"}},scrollcombi2d:{chart:{showValues:"0",lineThickness:"2",anchorRadius:"4",showLegend:"1",flatScrollBars:"1",scrollShowButtons:"1",scrollHeight:"15",scrollColor:"#F3F3F3",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"2",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},scrollcombidy2d:{chart:{showValues:"0",lineThickness:"2",anchorRadius:"4",showLegend:"1",flatScrollBars:"1",scrollShowButtons:"1",scrollHeight:"15",scrollColor:"#F3F3F3",anchorHoverEffect:"1",anchorHoverRadius:"4",anchorBorderHoverThickness:"2",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},angulargauge:{chart:{setAdaptiveMin:"1",adjustTM:"1",tickvaluedistance:"10",placeTicksInside:"0",autoAlignTickValues:"1",showGaugeBorder:"0",minortmnumber:"0",majorTMHeight:"8",gaugeFillMix:"{light-0}",pivotbgcolor:"#000000",pivotfillmix:"0",showpivotborder:"1",pivotBorderColor:"#FFFFFF",showValue:"0",valueBelowPivot:"1"},dials:{dial:[{bgColor:"#000000",borderThickness:"0",rearExtension:"13"}]}},bulb:{chart:{is3D:"0",placeValuesInside:"1",valueFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif"}},cylinder:{chart:{cylRadius:"50",cylYScale:"30"}},hled:{chart:{showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50"}},hlineargauge:{chart:{showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50",gaugeFillMix:"{light-0}"}},thermometer:{chart:{use3DLighting:"0",manageResize:"1",autoScale:"1",showGaugeBorder:"1",gaugeBorderAlpha:"40",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50"}},vled:{chart:{showGaugeBorder:"0",setAdaptiveMin:"1",adjustTM:"1",placeTicksInside:"0",autoAlignTickValues:"1",minortmnumber:"0",majorTMHeight:"8",majorTMAlpha:"50"}},realtimearea:{chart:{showLegend:"1",showValues:"0"}},realtimecolumn:{chart:{showLegend:"1",showValues:"0"}},realtimeline:{chart:{showValues:"0",lineThickness:"2",anchorRadius:"4",showLegend:"1",anchorHoverEffect:"1",anchorHoverRadius:"6",anchorBorderHoverThickness:"2",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},realtimestackedarea:{chart:{showLegend:"1",showValues:"0",showSum:"0",plotFillAlpha:"80"}},realtimestackedcolumn:{chart:{showLegend:"1",showValues:"1",showSum:"1"}},realtimelinedy:{chart:{lineThickness:"2",anchorRadius:"4",showLegend:"1",anchorHoverEffect:"1",anchorHoverRadius:"6",anchorBorderHoverThickness:"2",anchorBgHoverColor:"#FFFFFF",legendIconBorderThickness:"1"}},sparkline:{chart:{plotFillColor:"#7CB5EC",anchorRadius:"4",highColor:"#8EED7D",lowColor:"#F45B5B",captionPosition:"top",showOpenAnchor:"0",showCloseAnchor:"0",showOpenValue:"0",showCloseValue:"0",showHighLowValue:"0",periodColor:"#C0C0C0"}},sparkcolumn:{chart:{plotFillColor:"#7CB5EC",highColor:"#8EED7D",lowColor:"#F45B5B",captionPosition:"top",periodColor:"#C0C0C0"}},sparkwinloss:{chart:{winColor:"#7CB5EC",lossColor:"#F45B5B",captionPosition:"top",drawColor:"#E4D354",scoreLessColor:"#8085E9",periodColor:"#C0C0C0"}},hbullet:{chart:{plotFillColor:"#434348",showTickMarks:"0",showTickValues:"1",showLimits:"1"}},vbullet:{chart:{plotFillColor:"#434348",showTickMarks:"0",showTickValues:"1",showLimits:"1"}},funnel:{chart:{is2D:"1",isSmartLineSlanted:"0",smartLineColor:"#434348",smartLineThickness:"1",smartLabelClearance:"0",streamlinedData:"1",useSameSlantAngle:"1",alignCaptionWithCanvas:"1",showPlotBorder:"1",plotBorderColor:"#FFFFFF",plotBorderThickness:"1.5",plotBorderAlpha:"100"}},pyramid:{chart:{is2D:"1",isSmartLineSlanted:"0",smartLineColor:"#434348",smartLineThickness:"1",smartLabelClearance:"0",streamlinedData:"1",useSameSlantAngle:"1",alignCaptionWithCanvas:"1",use3dlighting:"0",showPlotBorder:"1",plotBorderColor:"#FFFFFF",plotBorderThickness:"1.5",plotBorderAlpha:"100"}},gantt:{chart:{taskBarFillMix:"{light+0}",gridBorderAlpha:"100",gridBorderColor:"#E6E6E6",ganttLineColor:"#E6E6E6",ganttLineAlpha:"100",taskBarRoundRadius:"2",flatScrollBars:"1",showHoverEffect:"1",plotHoverEffect:"1",plotFillHoverAlpha:"50",showCategoryHoverBand:"1",categoryHoverBandAlpha:"50",showGanttPaneVerticalHoverBand:"1",showProcessHoverBand:"1",processHoverBandAlpha:"50",showGanttPaneHorizontalHoverBand:"1",showConnectorHoverEffect:"1",connectorHoverAlpha:"50",showTaskHoverEffect:"1",taskHoverFillAlpha:"50",slackHoverFillAlpha:"50",scrollShowButtons:"0",drawCustomLegendIcon:"0",legendShadow:"0",legendBorderAlpha:"0",legendBorderThickness:"0",legendIconBorderThickness:"0",legendBgAlpha:"0"},categories:[{fontcolor:"#434348",fontsize:"11",bgcolor:"#F4F4F4",hoverBandAlpha:"50",showGanttPaneHoverBand:"1",showHoverBand:"1",category:[{fontcolor:"#434348",fontsize:"11",bgcolor:"#F4F4F4"}]}],tasks:{showBorder:"0",showHoverEffect:"0"},processes:{fontcolor:"#434348",isanimated:"0",bgcolor:"#FFFFFF",bgAlpha:"70",headerbgcolor:"#F4F4F4",headerfontcolor:"#434348",showGanttPaneHoverBand:"1",showHoverBand:"1"},text:{fontcolor:"#434348",bgcolor:"#FFFFFF"},datatable:{fontcolor:"#434348",bgcolor:"#FFFFFF",bgAlpha:"100",datacolumn:[{bgcolor:"#FFFFFF"}]},connectors:[{hoverThickness:"1.5"}],milestones:{milestone:[{color:"#8EED7D"}]}},logmscolumn2d:{chart:{showValues:"0",drawCrossLine:"1"}},logmsline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",drawCrossLine:"1",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},spline:{chart:{paletteColors:"#7CB5EC",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBgColor:"#7CB5EC",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",plotToolText:"$label: <b>$dataValue</b>",legendIconBorderThickness:"1"}},splinearea:{chart:{paletteColors:"#7CB5EC",drawAnchors:"0",showValues:"0",plotFillAlpha:"70",plotToolText:"$label: <b>$dataValue</b>"}},msspline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",drawCrossLine:"1",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},mssplinearea:{chart:{showValues:"0",showLegend:"1",drawAnchors:"0",plotFillAlpha:"70"}},errorbar2d:{chart:{paletteColors:"#7CB5EC, #8EED7D, #F7A35C, #8085E9, #F15C80, #E4D354, #2B908F, #F45B5B, #91E8E1",errorBarColor:"#434348",errorBarThickness:"1.3",showValues:"0"}},errorline:{chart:{paletteColors:"#7CB5EC, #8EED7D, #F7A35C, #8085E9, #F15C80, #E4D354, #2B908F, #F45B5B, #91E8E1",errorBarColor:"#434348",errorBarThickness:"1.3",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},errorscatter:{chart:{paletteColors:"#7CB5EC, #8EED7D, #F7A35C, #8085E9, #F15C80, #E4D354, #2B908F, #F45B5B, #91E8E1",errorBarColor:"#434348",errorBarThickness:"1.3",drawCustomLegendIcon:"0",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"7",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2"}},inversemsarea:{chart:{showValues:"0",drawCrossLine:"1",showLegend:"1",plotFillAlpha:"70"}},inversemscolumn2d:{chart:{showLegend:"1",showValues:"0"}},inversemsline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",drawCrossLine:"1",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},dragcolumn2d:{chart:{showValues:"0",showLegend:"1"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{data:[{allowDrag:"1",alpha:"70"}]}]},dragline:{chart:{drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{data:[{allowDrag:"1",alpha:"70",dashed:"1"}]}]},dragarea:{chart:{showValues:"0",showLegend:"1",drawAnchors:"0",plotFillAlpha:"70"},categories:[{category:[{fontItalic:"1"}]}],dataset:[{data:[{allowDrag:"1",dashed:"1"}]}]},treemap:{chart:{parentLabelLineHeight:"13",baseFontSize:"11",labelFontSize:"11",showParent:"1",showNavigationBar:"0",plotBorderThickness:"0.5",plotBorderColor:"#FFFFFF",labelGlow:"0",labelGlowIntensity:"100",btnBackChartTooltext:"Back",btnResetChartTooltext:"Home",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",toolbarButtonScale:"1.50",plotToolText:"$label, $dataValue, $sValue"},data:[{fillColor:"#F4F4F4",data:[{fillColor:"#F4F4F4"}]}]},radar:{chart:{showLegend:"1",plotFillAlpha:"40",anchorBgAlpha:"40",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"6",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2",legendIconBorderThickness:"1"}},heatmap:{chart:{baseFontSize:"11",labelFontSize:"11",showPlotBorder:"1",plotBorderAlpha:"100",plotBorderThickness:"0.5",plotBorderColor:"#FFFFFF",tlFontColor:"#FDFDFD",tlFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif",tlFontSize:"10",trFontColor:"#FDFDFD",trFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif",trFontSize:"10",blFontColor:"#FDFDFD",blFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif",blFontSize:"10",brFontColor:"#FDFDFD",brFont:"Lucida Grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif",brFontSize:"10",captionPadding:"20",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0"},colorrange:{gradient:"1",code:"#7CB5EC"}},boxandwhisker2d:{chart:{drawCustomLegendIcon:"0",showLegend:"1",showDetailedLegend:"1",showValues:"0",showPlotBorder:"1",plotBorderColor:"#7CB5EC",plotBorderAlpha:"100",plotBorderThickness:"1.5",upperBoxBorderAlpha:"0",lowerBoxBorderAlpha:"0",lowerQuartileAlpha:"0",upperQuartileAlpha:"0",upperWhiskerColor:"#7CB5EC",upperWhiskerThickness:"1.5",lowerWhiskerColor:"#7CB5EC",lowerWhiskerThickness:"1.5",medianColor:"#7CB5EC",medianThickness:"0.7",medianAlpha:"100",outliericonshape:"spoke",outliericonsides:"9",meaniconcolor:"#7CB5EC",meanIconShape:"spoke",meaniconsides:"9",meaniconradius:"5"}},candlestick:{chart:{showShadow:"0",showVPlotBorder:"0",bearFillColor:"#F45B5B",bullFillColor:"#8EED7D",plotLineThickness:"0.3",plotLineAlpha:"100",divLineDashed:"0",showDetailedLegend:"1",showHoverEffect:"1",plotHoverEffect:"1",showVolumeChart:"0",trendLineColor:"#434348",trendLineThickness:"1",trendValueAlpha:"100",rollOverBandAlpha:"100",rollOverBandColor:"#E6E6E6"},categories:[{verticalLineColor:"#434348",verticalLineThickness:"1",verticalLineAlpha:"35"}]},dragnode:{chart:{use3DLighting:"0",plotBorderThickness:"0",plotBorderAlpha:"0",showDetailedLegend:"1",divLineThickness:"0"},dataset:[{color:"#7CB5EC"}],connectors:[{connector:[{color:"#434348",strength:"1.5"}]}]},msstepline:{chart:{drawAnchors:"0",lineThickness:"2",showValues:"0",plotToolText:"$label: <b>$dataValue</b>"}},multiaxisline:{chart:{showValues:"0",showLegend:"1",lineThickness:"2",connectNullData:"1",drawAnchors:"0",divLineDashed:"0",divLineColor:"#E6E6E6",vDivLineColor:"#E6E6E6",vDivLineDashed:"0",yAxisNameFontSize:"11",drawCustomLegendIcon:"0",legendIconBorderThickness:"1"},axis:[{divLineColor:"#E6E6E6",setAdaptiveYMin:"1",divLineDashed:"0"}]},multilevelpie:{chart:{useHoverColor:"1",hoverFillColor:"#8087E5",showHoverEffect:"1",plotHoverEffect:"1"},category:[{color:"#8087E5",category:[{color:"#7CB5EC",category:[{color:"#7CB5EC"}]}]}]},selectscatter:{chart:{drawCustomLegendIcon:"0",drawAnchors:"1",anchorRadius:"4",anchorHoverRadius:"7",showValues:"0",anchorBorderHoverColor:"#D8D8D8",anchorHoverEffect:"1",anchorBgHoverAlpha:"95",anchorBorderHoverThickness:"2"}},waterfall2d:{chart:{showValues:"0",paletteColors:"#7CB5EC, #434348, #8085E9, #F15C80, #E4D354, #2B908F, #F45B5B, #91E8E1",positiveColor:"#8EED7D",negativeColor:"#F7A35C",showConnectors:"1",connectorDashed:"1",connectorThickness:"1.5",connectorColor:"#434348"}},kagi:{chart:{rallyThickness:"2",declineThickness:"2",drawAnchors:"0",rallyColor:"#8EED7D",declineColor:"#F45B5B",showValues:"0"}},geo:{chart:{showLabels:"0",legendScaleLineThickness:"0",legendaxisborderalpha:"0",legendShadow:"0",fillColor:"#E6E6E6",showEntityHoverEffect:"1",entityFillHoverAlpha:"70",connectorHoverAlpha:"70",markerBorderHoverAlpha:"70",showBorder:"1",borderColor:"#434348",borderThickness:"0.3",nullEntityColor:"434348",nullEntityAlpha:"30",entityFillHoverColor:"#434348"},colorrange:{gradient:"1",code:"#7CB5EC"}}}};e.default={extension:a,name:"gammelTheme",type:"theme"}}})}); +//# sourceMappingURL=fusioncharts.theme.gammel.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.ocean.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.ocean.js new file mode 100755 index 0000000000000000000000000000000000000000..11f08374ac275fdd100bd89e427309d3a1748026 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.ocean.js @@ -0,0 +1,10 @@ +!function(e){"object"==typeof module&&void 0!==module.exports?module.exports=e:e(FusionCharts)}(function(e){!function(e){var o={};function l(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=o,l.d=function(e,o,a){l.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:a})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,o){if(1&o&&(e=l(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(l.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)l.d(a,r,function(o){return e[o]}.bind(null,r));return a},l.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(o,"a",o),o},l.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},l.p="",l(l.s=19)}({19:function(o,l,a){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(a(20));e.addDep(r.default)},20:function(e,o,l){"use strict";o.__esModule=!0; +/**! + * @license Ocean Theme v//? write(JSON.parse(require('fs').readFileSync('./package.json')).version); + * FusionCharts JavaScript Library + * + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + */ +var a={name:"ocean",theme:{base:{chart:{paletteColors:"#04476c,#4d998d,#77be99,#a7dca6,#cef19a,#0e948c,#64ad93,#8fcda0,#bbe7a0,#dcefc1",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0",toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10",showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#04476c",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#04476c",entityFillhoverAlpha:"80",connectorColor:"#cccccc",connectorThickness:"1.5",markerFillHoverAlpha:"90"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},doughnut2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",centerLabelFontSize:"12",centerLabelBold:"1",centerLabelFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},line:{chart:{lineThickness:"2"}},spline:{chart:{lineThickness:"2"}},column2d:{chart:{paletteColors:"#04476c",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar2d:{chart:{paletteColors:"#04476c",valueFontColor:"#ffffff",placeValuesInside:"1"}},column3d:{chart:{paletteColors:"#04476c",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar3d:{chart:{paletteColors:"#04476c",valueFontColor:"#ffffff",placeValuesInside:"1"}},area2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},splinearea:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},mscolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},mscolumn3d:{chart:{showValues:"0"}},msstackedcolumn2dlinedy:{chart:{showValues:"0"}},stackedcolumn2d:{chart:{showValues:"0"}},stackedarea2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},stackedbar2d:{chart:{showValues:"0"}},msstackedcolumn2d:{chart:{showValues:"0"}},mscombi3d:{chart:{showValues:"0"}},mscombi2d:{chart:{showValues:"0"}},mscolumn3dlinedy:{chart:{showValues:"0"}},stackedcolumn3dline:{chart:{showValues:"0"}},stackedcolumn2dline:{chart:{showValues:"0"}},scrollstackedcolumn2d:{chart:{valueFontColor:"#ffffff"}},scrollcombi2d:{chart:{showValues:"0"}},scrollcombidy2d:{chart:{showValues:"0"}},logstackedcolumn2d:{chart:{showValues:"0"}},logmsline:{chart:{showValues:"0"}},logmscolumn2d:{chart:{showValues:"0"}},msstackedcombidy2d:{chart:{showValues:"0"}},scrollcolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},pareto2d:{chart:{paletteColors:"#04476c",showValues:"0"}},pareto3d:{chart:{paletteColors:"#04476c",showValues:"0"}},angulargauge:{chart:{pivotFillColor:"#ffffff",pivotRadius:"4",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"12",majorTMThickness:"2",majorTMColor:"#000000",minorTMNumber:"0",tickValueDistance:"10",valueFontSize:"24",valueFontBold:"1",gaugeInnerRadius:"50%",showHoverEffect:"0"},dials:{dial:[{baseWidth:"10",rearExtension:"7",bgColor:"#000000",bgAlpha:"100",borderColor:"#666666",bgHoverAlpha:"20"}]}},hlineargauge:{chart:{pointerFillColor:"#ffffff",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"3",majorTMColor:"#000000",minorTMNumber:"0",valueFontSize:"18",valueFontBold:"1"},pointers:{pointer:[{}]}},bubble:{chart:{use3dlighting:"0",showplotborder:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},scatter:{chart:{use3dlighting:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},boxandwhisker2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},thermometer:{chart:{gaugeFillColor:"#04476c"}},cylinder:{chart:{cylFillColor:"#04476c"}},sparkline:{chart:{linecolor:"#04476c"}},sparkcolumn:{chart:{plotFillColor:"#04476c"}},sparkwinloss:{chart:{winColor:"#04476c",lossColor:"#4d998d",drawColor:"#77be99",scoreLessColor:"#a7dca6"}},hbullet:{chart:{plotFillColor:"#04476c",targetColor:"#4d998d"}},vbullet:{chart:{plotFillColor:"#04476c",targetColor:"#4d998d"}}}};o.default={extension:a,name:"oceanTheme",type:"theme"}}})}); +//# sourceMappingURL=fusioncharts.theme.ocean.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.zune.js b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.zune.js new file mode 100755 index 0000000000000000000000000000000000000000..b98d9e9a88c274548a5ee386d4233c7ea6d5eea5 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/js/themes/fusioncharts.theme.zune.js @@ -0,0 +1,10 @@ +!function(e){"object"==typeof module&&void 0!==module.exports?module.exports=e:e(FusionCharts)}(function(e){!function(e){var o={};function l(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=o,l.d=function(e,o,a){l.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:a})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,o){if(1&o&&(e=l(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(l.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)l.d(a,r,function(o){return e[o]}.bind(null,r));return a},l.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(o,"a",o),o},l.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},l.p="",l(l.s=21)}({21:function(o,l,a){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(a(22));e.addDep(r.default)},22:function(e,o,l){"use strict";o.__esModule=!0; +/**! + * @license Zune Theme v//? write(JSON.parse(require('fs').readFileSync('./package.json')).version); + * FusionCharts JavaScript Library + * + * Copyright FusionCharts Technologies LLP + * License Information at <http://www.fusioncharts.com/license> + */ +var a={name:"zune",theme:{base:{chart:{paletteColors:"#0075c2,#1aaf5d,#f2c500,#f45b00,#8e0000,#0e948c,#8cbb2c,#f3de00,#c02d00,#5b0101",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0",toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10",showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#0075c2",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#0075c2",entityFillhoverAlpha:"80",connectorColor:"#cccccc",connectorThickness:"1.5",markerFillHoverAlpha:"90"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},doughnut2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",centerLabelFontSize:"12",centerLabelBold:"1",centerLabelFontColor:"#333333",captionPadding:"15"},data:function(e,o,l){var a=window.Math;return{alpha:100-(l>50?a.round(100/a.ceil(l/10)):20)*a.floor(e/10)}}},line:{chart:{lineThickness:"2"}},spline:{chart:{lineThickness:"2"}},column2d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar2d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1"}},column3d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar3d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1"}},area2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},splinearea:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},mscolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},mscolumn3d:{chart:{showValues:"0"}},msstackedcolumn2dlinedy:{chart:{showValues:"0"}},stackedcolumn2d:{chart:{showValues:"0"}},stackedarea2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},stackedbar2d:{chart:{showValues:"0"}},msstackedcolumn2d:{chart:{showValues:"0"}},mscombi3d:{chart:{showValues:"0"}},mscombi2d:{chart:{showValues:"0"}},mscolumn3dlinedy:{chart:{showValues:"0"}},stackedcolumn3dline:{chart:{showValues:"0"}},stackedcolumn2dline:{chart:{showValues:"0"}},scrollstackedcolumn2d:{chart:{valueFontColor:"#ffffff"}},scrollcombi2d:{chart:{showValues:"0"}},scrollcombidy2d:{chart:{showValues:"0"}},logstackedcolumn2d:{chart:{showValues:"0"}},logmsline:{chart:{showValues:"0"}},logmscolumn2d:{chart:{showValues:"0"}},msstackedcombidy2d:{chart:{showValues:"0"}},scrollcolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},pareto2d:{chart:{paletteColors:"#0075c2",showValues:"0"}},pareto3d:{chart:{paletteColors:"#0075c2",showValues:"0"}},angulargauge:{chart:{pivotFillColor:"#ffffff",pivotRadius:"4",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"12",majorTMThickness:"2",majorTMColor:"#000000",minorTMNumber:"0",tickValueDistance:"10",valueFontSize:"24",valueFontBold:"1",gaugeInnerRadius:"50%",showHoverEffect:"0"},dials:{dial:[{baseWidth:"10",rearExtension:"7",bgColor:"#000000",bgAlpha:"100",borderColor:"#666666",bgHoverAlpha:"20"}]}},hlineargauge:{chart:{pointerFillColor:"#ffffff",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"3",majorTMColor:"#000000",minorTMNumber:"0",valueFontSize:"18",valueFontBold:"1"},pointers:{pointer:[{}]}},bubble:{chart:{use3dlighting:"0",showplotborder:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},scatter:{chart:{use3dlighting:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},boxandwhisker2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},thermometer:{chart:{gaugeFillColor:"#0075c2"}},cylinder:{chart:{cylFillColor:"#0075c2"}},sparkline:{chart:{linecolor:"#0075c2"}},sparkcolumn:{chart:{plotFillColor:"#0075c2"}},sparkwinloss:{chart:{winColor:"#0075c2",lossColor:"#1aaf5d",drawColor:"#f2c500",scoreLessColor:"#f45b00"}},hbullet:{chart:{plotFillColor:"#0075c2",targetColor:"#1aaf5d"}},vbullet:{chart:{plotFillColor:"#0075c2",targetColor:"#1aaf5d"}}}};o.default={extension:a,name:"zuneTheme",type:"theme"}}})}); +//# sourceMappingURL=fusioncharts.theme.zune.js.map \ No newline at end of file diff --git a/graphs/fusioncharts-suite-xt/license/FusionCharts Suite License Agreement - Evaluation.rtf b/graphs/fusioncharts-suite-xt/license/FusionCharts Suite License Agreement - Evaluation.rtf new file mode 100755 index 0000000000000000000000000000000000000000..cae5a3c90fa39840bd1840d80455baf0818372d4 --- /dev/null +++ b/graphs/fusioncharts-suite-xt/license/FusionCharts Suite License Agreement - Evaluation.rtf @@ -0,0 +1,219 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\paperw11900\paperh16840\margl1440\margr1440\vieww36180\viewh18740\viewkind0 +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 + +\f0\b\fs24 \cf0 FusionCharts Suite Software Licensing Agreement - Trial License +\b0 \ +\ +IMPORTANT \'96 PLEASE READ THIS SOFTWARE LICENSE AGREEMENT (\'93AGREEMENT\'94 or "LICENSE") CAREFULLY BEFORE ATTEMPTING TO DOWNLOAD OR USE ANY SOFTWARE, DOCUMENTATION, OR OTHER MATERIALS MADE AVAILABLE THROUGH THIS WEB SITE (FusionCharts.com). THIS AGREEMENT CONSTITUTES A LEGALLY BINDING AGREEMENT BETWEEN YOU OR THE COMPANY WHICH YOU REPRESENT AND ARE AUTHORIZED TO BIND (the \'93Licensee\'94 or \'93You\'94), AND FUSIONCHARTS TECHNOLOGIES. (\'93FusionCharts\'94 or \'93Licensor\'94). IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, DO NOT DOWNLOAD, INSTALL OR USE THE SOFTWARE. THIS AGREEMENT DOES NOT SUPERSEDE ANY OTHER WRITTEN AGREEMENT BETWEEN YOU AND FUSIONCHARTS.\ +\ +THIS AGREEMENT SHALL APPLY ONLY TO THE SOFTWARE MENTIONED IN EXHIBIT A REGARDLESS OF WHETHER OTHER SOFTWARE IS REFERRED TO OR DESCRIBED HEREIN.\ +\ + +\b 1. Definitions +\b0 \ +(a) "FusionCharts" means InfoSoft Global Private Limited and its licensors, if any.\ +\ +(b) "Software" or "FusionCharts Software" means only the software program(s) developed by FusionCharts. They are FusionCharts Suite XT (comprising of FusionCharts XT, FusionWidgets XT, PowerCharts XT, FusionMaps XT) in source or object form, including all JavaScript libraries, documentation, code samples, demos, GUIs and tools and FusionCharts JavaScript Library. Additional details are described in Exhibit A.\ +\ +(c) "Source Code" shall include computer programming code or any computer instructions necessary to compile the Software.\ +\ +(d) "Derivative Works" means any software programs which are developed by Licensee and which incorporate or contain modifications of any part of Source Code, and including any revision, modification, translation (including compilation or recapitulation by computer), abridgment, condensation, expansion or any other form in which Source Code, may be recast, transformed or adapted.\ +\ +(e) \'93Documentation\'94 means all end user and developer documentation supplied by FusionCharts for the FusionCharts Software, including subsequent revisions and updates thereto.\ +\ +(f) \'93Minor Version Upgrade\'94 means an upgrade to the current version of the FusionCharts Software, as indicated by a change in version number to the right of the decimal point (eg. Version 3.1 to Version 3.2).\ +\ +(g) \'93Major Version Upgrade\'94 means an upgrade to a new version of the FusionCharts Software, as indicated by a change in version number to the left of the decimal point (eg. Version 3.0 to Version 4.0).\ +\ +(h) "Trial Version" means a version, so identified, of the Software to be used to review and evaluate the Software only. \ +\ +(i) "Not For Resale Version" means a version, so identified, of the Software to be used to review and evaluate the Software only.\ +\ +(j) \'93Internal website or application" refers to a website or web application belonging to your corporation or an application located on any corporate Intranet, or for use by a corporation, that you have developed.\ +\ +(k) "Personal or non-commercial website or application" refers to a website or web application belonging to an individual and not a company or organization. The website does not charge its end users any fees on the website, but can have commercial advertisements. \ +\ +(l) "SaaS (software as a service) Application" shall mean a product or an application on a remote server offered to users under the terms of a subscription or other financial agreement.\ +\ +(m) "Packaged software product" refers to a single application or suite of commercial applications built by you to be used by many customers, businesses or consumers and is installed on the customer's premises or infrastructure.\ +\ +(n) "Domain" refers to a top level domain at the highest level in the hierarchical Domain Name System of the Internet e.g, www.domain.com.\ +\ +(o) "Sub-domain" refers to a domain that is part of a larger domain e.g, a.domain.com and b.domain.com are two different sub-domains, so are a1.a.domain.com and a2.a1.domain.com.\ +\ +(p) \'93Intellectual Property Rights\'94 means patents, trade or service marks, registered designs or applications for any of the foregoing, copyright, design rights, database right and any other industrial or intellectual property right.\ +\ + +\b 2. Ownership & License Grant\ + +\b0 Subject to the terms and conditions of this Agreement, FusionCharts hereby grants to you, and you accept, a non-exclusive, non-transferable license to use, copy and modify the Software only as authorized below. This License is effective until terminated as provided below. You may terminate this License by destroying the Software and any copies of the Software in your possession. This License will terminate automatically upon any violation of its terms by you.\ +\ +This is a license agreement and not an agreement for sale. FusionCharts continues to own the copyright of the Software. Your rights to the Software are specified in this Agreement, and FusionCharts retains all rights not expressly granted to you in this Agreement. This software is protected by copyright laws and international treaty provisions. Except for the rights expressly granted in this Agreement, this License transfers to you no right, tide, or interest in the Software, or any copyright, patent, trademark, trade secret, or other intellectual property or proprietary right in the Software. FusionCharts retains sole and exclusive title to all portions of the Software and any copies thereof. You agree not to disclose the Software to anyone.\ +\ + +\b 3. Trial Version +\b0 \ +If you download the free Trial License, then, subject to the terms and conditions set forth in this agreement, FusionCharts hereby grants to you and you hereby accept a license for evaluation purposes only.\ +\ +(a) You are authorized to install, copy, and use the Trial Version of Software for the sole purpose of testing its functionality and performance in demonstrations, design time evaluations and running a product tour.\ +\ +(b) You are not allowed to integrate it in end products or use it for any commercial or production purposes. \ +\ +(c) You are not allowed to use the Trial Version for any application deployment or production purposes.\ +\ +(d) You agree to not remove, obscure, or alter the messages from Trial Version of the Software.\ +\ +(e) The trial versions of Software may have limited features and evaluation messages at the top of each chart. It may also contain links to FusionCharts website.\ +\ + +\b 4. Permitted Uses +\b0 \ +This Agreement grants you a limited, non-transferable, perpetual and non-exclusive right to the following:\ +\ +(a) Use the software for trial or evaluation purpose as set forth in section 3\ +\ +(b) Distribute the trial version without any modification, whatsoever.\ +\ +(c) Make copies of the software for backup purpose.\ +\ + +\b 5. Prohibited Uses +\b0 \ +You may NOT, without the prior written permission of FusionCharts:\ +\ +(a) Use the software for any commercial or production purpose, including, but not limited to, website, web applications or Intranet.\ +\ +(b) Use the software or part of software as part of a SaaS application. FusionCharts SaaS License is required for such usage.\ +\ +(c) Use or distribute the Software or part of software as part of a commercial packaged Software product, framework, component, library or plug-in. FusionCharts OEM license is required for such usage.\ +\ +(d) Disassemble, decompile, decode or otherwise reverse translate or engineer, or attempt in any manner to reconstruct or discover any source code or underlying algorithms of Software, if provided in object code form only.\ +\ +(e) Use, copy, modify, or merge copies of the Software and any accompanying documents except as permitted in this Agreement.\ +\ +(f) Sell, lease, assign, transfer, sublicense, disseminate, translate, duplicate, reproduce or copy the Software (or permit any of the foregoing) or any information pertaining thereto to any other party.\ +\ +(g) Transfer, rent, lease, or sublicense the Agreement.\ +\ + +\b 6. Source Code +\b0 \ +Provided you have purchased a license to the source code as part of the Enterprise, SaaS, OEM or a custom license, you may make modifications, enhancements, derivative works and/or extensions to that licensed source code provided to you under the terms set forth in this section.\ +\ +You will not grant, either expressly or impliedly, any rights, title, interest, or licenses to any such modifications, enhancements, derivative works and/or extensions to any third party. You will, however, be entitled to use such modifications, enhancements, derivative works and/or extensions under the terms set forth in this agreement. \ +\ +(a) You may not distribute the FusionCharts Software source code, or any modification, enhancement, derivative work and/or extension thereto, in source code form.\ +\ +(b) The source code contained herein and in related files is provided to the registered developer for the purposes of modification, education and troubleshooting. Under no circumstances may any portion of the source code be distributed, disclosed or otherwise made available to any third party without the express, prior written consent of FusionCharts.\ +\ +(c) Under no circumstances may the source code be used in whole or in part, as the basis for creating a product that provides the same, or substantially the same, functionality as any FusionCharts product. You will not take any action, or assist or otherwise aid anyone else in taking any action, that would limit FusionCharts\'92 independent development, sale, assignment, licensing or use of its own software or any modification, enhancement, derivative work and/or extension thereto.\ +\ +(d) You will not modify or delete, in whole or part, any copyright, trade secret, proprietary, confidential or other notice thereon or therein without the express, prior written consent of FusionCharts.\ +\ +YOU UNDERSTAND AND ACKNOWLEDGE THAT SOURCE CODE IS LICENSED AS IS, AND THAT FUSIONCHARTS DOES NOT PROVIDE ANY TECHNICAL SUPPORT FOR SOURCE CODE.\ +\ + +\b 7. Academic License Eligibility +\b0 \ +FusionCharts offers qualified Educational Institutions or Organizations and eligible Academic End Users the ability to buy educational licenses of FusionCharts Software for educational instruction purposes. Educational versions of FusionCharts Software can not be used for any commercial purpose. Programs and prices are subject to change without notice. Please contact us at sales@fusioncharts.com for eligibility requirements or if you have any other questions about the academic License Eligibility. \ +\ + +\b 8. Copyright +\b0 \ +All title and copyrights in and to the Software (including but not limited to any images, photographs, animation, video, audio, music, text and "SWFs" incorporated into the Software) and the accompanying printed materials are owned by FusionCharts or its suppliers. The software is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The software is licensed, not sold. Title to the software shall at all times remain with FusionCharts. You must treat the Software like any other copyrighted material, except that you may, in addition to the copies permitted in this license agreement, make one copy of the Software solely for backup or archival purposes. \ +\ + +\b 9. Termination +\b0 \ +This Agreement and the License granted hereunder shall last as long as you use the Software in compliance with this Agreement. FusionCharts may terminate this Agreement and the License granted hereunder if you fail to comply with any of the terms and conditions of this Agreement. Upon termination of this Agreement for any reason the License granted to you hereunder shall terminate automatically and you shall immediately cease use and distribution of the Software. You must also destroy all copies of the Software, documentation and demos provided by FusionCharts in connection with this Agreement.\ +\ + +\b 10. Confidentiality +\b0 \ +You acknowledge that the Software and any source code provided to you pursuant to this Agreement, as well as any modification, enhancement, derivative work and/or extension thereto includes valuable trade secrets of FusionCharts. You agree to maintain in confidence the FusionCharts Source Code, and any modification, enhancement, derivative work and/or extension thereto, by using at least the same physical and other security measures as you use for your own confidential technical information and documentation, but in no event less than a commercially reasonable standard of care. You further agree not to disclose the FusionCharts Source Code, or any aspect thereof, or any modification, enhancement, derivative work and/or extension thereto, or any aspect thereof, to anyone other than employees or contractors who have a need to know or obtain access to such information in order to support your authorized use of the Software and who are bound to protect such information against any other use or disclosure. You agree to assume full responsibility for such employees' or contractors' use, or misuse, of such disclosed source code as if it was your use. These obligations shall not apply to any information generally available to the public, independently developed or obtained without reliance on FusionCharts' information, or approved in writing for release by FusionCharts without restriction.\ +\ + +\b 11. Limited Warranty\ + +\b0 (a) Except with respect to source code, which is provided "as is," without warranty of any kind, FusionCharts warrants that the Software will perform substantially in accordance with the accompanying materials for a period of thirty (30) days from the date of download. FusionCharts does not warrant that the Software will be error-free. Source code is licensed "as is". FusionCharts does not provide any technical support for source code.\ +\ +(b) The Software may be provided with third-party components or plug-ins or other third-party software as set forth in Section 13. FusionCharts has acquired and conformed to the requisite licenses for such third-party software for embedding within FusionCharts and warrants that such third-party plug-ins or components will perform substantially in accordance with the expected behavior for a period of thirty (30) days from the date of download. FusionCharts does not warrant that the third-party Software will be error-free.\ +\ +(c) FusionCharts' and its suppliers' entire liability, in contract, tort or otherwise, and your exclusive remedy under the performance warranty shall be, at FusionCharts' option, either (a) return of the purchase price paid, or (b) repair or replacement of the defective Software. Software purchased other than directly from FusionCharts shall be returned to the place it was purchased. This limited warranty is void if failure of the Software has resulted from accident, abuse, or misapplication. Any replacement Software will be warranted for the remainder of the original thirty (30) day period.\ +\ +(d) EXCEPT AS EXPRESSLY SET FORTH IN THIS SECTION 11, FUSIONCHARTS AND ITS SUPPLIERS DISCLAIM ALL OTHER WARRANTIES, EITHER EXPRESS OR IMPLIED, WHETHER ARISING BY STATUTE OR OTHERWISE IN LAW OR FROM A COURSE OF DEALING OR USAGE OR TRADE, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF ACCURACY, COMPLETENESS, PERFORMANCE, CURRENCY, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE WITH REGARD TO THE SOFTWARE.\ +\ +Some jurisdictions do not allow the exclusion or limitation of implied warranties, so the above exclusions might not apply to you.\ +\ + +\b 12. Limitation of Liabilities +\b0 \ +FusionCharts' liability, whether in contract, tort, or otherwise, arising out of Licensee's use of, or in connection with, the SOFTWARE, or otherwise under this Agreement, shall not exceed the amount of the license fee paid by you to FusionCharts. IN NO EVENT SHALL FUSIONCHARTS OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF FUSIONCHARTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\ +\ + +\b 13. Third party Components +\b0 \ +The Software includes third party components licensed by FusionCharts for purpose of embedding within the Software. FusionCharts has reviewed, acquired and conformed to licenses of all such third party components, thereby not requiring you to separately acquire the same. The terms of such license will apply in lieu of the terms of this Agreement, and FusionCharts hereby represents and warrants that the license granted to such Components will be no less broad than the license granted in this Agreement. The Components are provided \'93as is\'94 by the third party licensors who disclaim all liabilities, damages, (even if they have been advised of the possibility of such damages), warranties, indemnities and other obligations of any kind, express or implied, with regard to the components. The components are excluded from any indemnity provided by FusionCharts in this license. Nothing in the foregoing affects any performance warranty provided by FusionCharts with regard to the Software as a whole.\ +\ +A list of included Components and their respective licenses shall be provided upon request. \ +\ + +\b 14. General +\b0 \ +(a) Relationship of Parties. The parties are independent contractors, and not agents, employees or joint venturers of one another, and do not have any authority to bind the other party by contract or otherwise to any obligation. Neither party will represent to the contrary, either expressly, implicitly, by appearance or otherwise. \ +\ +(b) Governing Law. This Agreement will be governed by the law of the State of California, U.S.A., without regard to the conflict of laws principles thereof. The Uniform Computer Information Transactions Act and the United Nations Convention on the International Sale of Goods shall not apply to this Agreement. If any provision of this Agreement is to be held unenforceable, such holding will not affect the validity of the other provisions hereof. Failure of a party to enforce any provision of this Agreement shall not constitute or be construed as a waiver of such provision or of the right to enforce such provision.\ +\ +(c) Compliance with Export Laws. Each party shall comply with the laws. Neither party shall export or re-export directly or indirectly (including via remote access) any part of the FusionCharts Software to any country for which a license is required under the Export Laws without first obtaining a license.\ +\ +(d) Trademark Usage and Publicity. FusionCharts may use Licensee's name and logos in its marketing, promotion and website, as is reasonably necessary to describe and promote FusionCharts software. \ +\ +(e) Complete Agreement. This Agreement, including all Exhibits, constitutes the entire agreement between the parties with respect to the subject matter hereof, and supersedes and replaces all prior or contemporaneous understandings or agreements, written or oral, regarding such subject matter. No amendment to or modification of this Agreement will be binding unless in writing and signed by a duly authorized representative of both parties.\ +\ + +\b 15. Upgrades & Updates +\b0 \ +You are eligible to receive all Major Upgrades and Minor Updates for the version of the Software as a part of licensed version only. Under the trial license agreement, you may download the latest version from FusionCharts.com website. FusionCharts Priority Support & Upgrade pack gives access to updates for the entire duration of the valid subscription. For information on FusionCharts subscription, please visit www.fusioncharts.com\ +\ +Updates replace and/or supplement (and may disable) the version of the Software that formed the basis for your eligibility for the Update. You may use the resulting updated Software only in accordance with the terms of this License.\ +\ + +\b 16. Support\ + +\b0 FusionCharts offers two types of support:\ +\ +(a) Self-serve Support: This support is available online on FusionCharts Software website (www.fusioncharts.com) and includes articles, tips and documentation on how to use FusionCharts Software. You can access this support option through FusionCharts Knowledge Base (KB), Community Forums and Documentation hosted on FusionCharts website at www.fusioncharts.com. There may be short periods of downtime due to maintenance and possible internet outage. FusionCharts offers self-serve support 'as-is' and does not guarantee any specific level of uptime or warranty of any kind. \ +\ +(b) Personalized Priority Support: Personalized Priority support will be provided by FusionCharts Support Staff via telephone and email. Personalized Priority Support is available to FusionCharts customers with active FusionCharts Support & Upgrade subscription period as part of their license, or as a result of purchase of additional support subscription for the duration of the period of subscription. \ +\ +Based on the license of FusionCharts purchased, you are entitled to a specified period of \'93Priority\'94 Support from the date of purchase. Additional support can be purchased as part of FusionCharts Support & Upgrade Subscription from www.fusioncharts.com\ +\ +FusionCharts Support Staff will provide support to FusionCharts Software licensees only, and not their end customers. FusionCharts will support only the last three versions of those products released. At its discretion, it can provide free upgrades to the latest version of FusionCharts Software to help resolve any problem. FusionCharts Support Staff will provide support only on FusionCharts Software, thereby not extending to technologies or products in whose conjunction the licensee is using FusionCharts Software. \ +\ +Support hours are IST 9.30am to 7.30pm (IST = +5.30 GMT), Monday to Friday excluding statutory holidays and company holidays. Official support email is support@fusioncharts.com. \ +\ +The procedure for getting support is:\ +- You send an email with details of your technical problem to support@fusioncharts.com\ +- The support system will assign your ticket a unique ID using which you will refer to the ticket\ +- The ticket is then reviewed and analyzed by FusionCharts Support Staff and any further information is requested based on the nature of problem\ +- FusionCharts Support Staff will then give you an answer based on their understanding of the problem. If that answer is not satisfactory, you can revert to the Staff with additional details of the problem.\ +- If FusionCharts Support Staff determines that the support ticket is of a complex nature involving any coding, or it entails a bug fix, it will escalate the ticket to FusionCharts Development team for resolution. \ +- FusionCharts Development team, in tandem with the Support Staff, will finally reply and help you resolve the problem\ +- If the query still remains unresolved and/or you are unsatisfied with the response quality or time, you can send an email to support.complaint@fusioncharts.com for further remedy\ +\ +FusionCharts does not guarantee results under this agreement but merely agrees to use reasonable diligence in attempting to accomplish its obligations. FusionCharts shall not be liable for any damages caused by delay in delivering or furnishing any services referred to in this Agreement. The support subscription is non-transferrable, except in case of acquisition or sale of licensee company. \ +\ + +\b Exhibit A: Description of Licensed Software +\b0 \ +- FusionCharts Suite, in source or object form, including all JavaScript libraries, documentation, code samples, demos, GUIs and tools comprising of the following products:\ + - FusionCharts XT (v3.x)\ + - FusionWidgets XT (v3.x)\ + - FusionMaps XT (v3.x)\ + - PowerCharts XT (v3.x)\ +\ +YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, THAT YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF THE SOFTWARE PRODUCT, BY LOADING OR RUNNING THE SOFTWARE PRODUCT, OR BY PLACING OR COPYING THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE, YOU AGREE TO BE BOUND BY THIS AGREEMENT\'92S TERMS AND CONDITIONS. YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN FUSIONCHARTS AND YOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES.} \ No newline at end of file diff --git a/graphs/test.php b/graphs/test.php new file mode 100644 index 0000000000000000000000000000000000000000..0cbc06f2ed75e387b3f4dd63319f8e574ffa806f --- /dev/null +++ b/graphs/test.php @@ -0,0 +1,84 @@ +<?php +/* Include the `fusioncharts.php` file that contains functions to embed the charts. */ +include("fusioncharts-suite-xt/integrations/php/fusioncharts-wrapper/fusioncharts.php"); +require_once('../API_Twitter/tweetInfosFunctions.php'); + +?> + + + +<html> + +<head> + <title>FusionCharts | My First Chart</title> + +<script type="text/javascript" src="fusioncharts-suite-xt/js/fusioncharts.js"></script> +<script type="text/javascript" src="fusioncharts-suite-xt/js/themes/fusioncharts.theme.fusion.js"></script> +</head> + +<body> + <?php + // Nombre de tweets + $count = 150; + + // Chart Configuration stored in Associative Array + $arrChartConfig = array( + "chart" => array( + "caption" => "Evolution of likes : Last ".$count." tweets", + //"subCaption" => "In MMbbl = One Million barrels", + "xAxisName" => "Tweet", + "yAxisName" => "Likes", + "lineThickness" => "2", + "theme" => "fusion" + ) + ); + + // An array of hash objects which stores data + $arrChartData = []; + + $likes = getNbLikesOfUserByScreenName('Bts_twt', $count); + + $likeMoyen = 0; + + $count = count($likes); + for ($i=0; $i<$count; $i++) { + $arrChartData[] = [ + 'label' => $i, + 'value' => $likes[$i] + ]; + $likeMoyen += $likes[$i]; + } + $likeMoyen = $likeMoyen/$count; + + // An array which stores trend-lines + $arrTrendLines = []; + $arrTrendLines[] = [ + "line" => [ + [ + "startvalue" => $likeMoyen, + "color" => "#1aaf5d", + "displayvalue" => "Like moyen = ".$likeMoyen, + "valueOnRight" => "1", + "thickness" => "2" + ] + ] + ]; + + $arrChartConfig["data"] = $arrChartData; + $arrChartConfig["trendLines"] = $arrTrendLines; + + // JSON Encode the data to retrieve the string containing the JSON representation of the data in the array. + $jsonEncodedData = json_encode($arrChartConfig); + + // chart object + $Chart = new FusionCharts("line", "MyFirstChart" , "700", "400", "chart-container", "json", $jsonEncodedData); + + // Render the chart + $Chart->render(); + ?> + + <center> + <div id="chart-container">Chart will render here!</div> + </center> +</body> +</html> \ No newline at end of file